百度云的ubuntu16.04.1部署Apache服务器+Django项目

使用Apachemod_wsgi部署Django 是一种久经考验的将Django投入生产的方法。

mod_wsgi是一个Apache模块,可以托管任何Python WSGI应用程序,包括Django。

Django将使用任何支持mod_wsgi的Apache版本。

配置环境及使用模块:

  Ubuntu 16.04.1 + Django 1.11.15 + Apache 2.4.18 + python 3.5

我的Django项目文件结构如下:(仅供参考)

tip
├── db.sqlite3
├── manage.py
├── mytip
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   ├── 0001_initial.py
│   │   ├── __init__.py
│   │   └── __pycache__
│   │       ├── 0001_initial.cpython-36.pyc
│   │       └── __init__.cpython-36.pyc
│   ├── models.py
│   ├── __pycache__
│   │   ├── admin.cpython-35.pyc
│   │   ├── admin.cpython-36.pyc
│   │   ├── __init__.cpython-35.pyc
│   │   ├── __init__.cpython-36.pyc
│   │   ├── models.cpython-35.pyc
│   │   ├── models.cpython-36.pyc
│   │   ├── urls.cpython-36.pyc
│   │   └── views.cpython-36.pyc
│   ├── templatetags
│   │   ├── __init__.py
│   │   ├── pagetag.py
│   │   └── __pycache__
│   │       ├── __init__.cpython-36.pyc
│   │       └── pagetag.cpython-36.pyc
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── static
│   └── tip
│       ├── css
│       │   ├── bootstrap.css
│       │   ├── bootstrap.css.map
│       │   ├── bootstrap.min.css
│       │   ├── bootstrap.min.css.map
│       │   ├── bootstrap-theme.css
│       │   ├── bootstrap-theme.css.map
│       │   ├── bootstrap-theme.min.css
│       │   ├── bootstrap-theme.min.css.map
│       │   └── test.css
│       ├── fonts
│       │   ├── glyphicons-halflings-regular.eot
│       │   ├── glyphicons-halflings-regular.svg
│       │   ├── glyphicons-halflings-regular.ttf
│       │   ├── glyphicons-halflings-regular.woff
│       │   └── glyphicons-halflings-regular.woff2
│       ├── image
│       │   ├── blog.jpg
│       │   ├── books.jpg
│       │   ├── challenge.jpg
│       │   ├── logo.png
│       │   ├── lun.png
│       │   ├── online_coding.jpg
│       │   ├── qa.jpg
│       │   ├── share.jpg
│       │   └── u=1917532917,3371716064&fm=27&gp=0.jpg
│       ├── js
│       │   ├── bootstrap.js
│       │   ├── bootstrap.min.js
│       │   ├── jquery.js
│       │   └── npm.js
│       └── web
│           └── jquery-1.8.3.min.js
├── templates
│   └── index
│       ├── index.html
│       ├── shuati.html
│       └── shuati_info.html
└── tip
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-35.pyc
    │   ├── __init__.cpython-36.pyc
    │   ├── settings.cpython-35.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

一.安装

  1.apache2的安装

sudo apt-get install apache2

    验证apache是否安装成功

查看版本

apachectl -v
Server version: Apache/2.4.18 (Ubuntu)
Server built: 2017-09-18T15:09:02

    打开浏览器 输入 127.0.0.1或localhost

出现 Apache2 Ubuntu Default Page

或It works!

则成功

  2.安装apache2解析python的包 wsgi程序包

sudo apt-get install libapache2-mod-wsgi-py3

安装完成后 进入 /usr/lib/apache2/modules 目录
cd /usr/lib/apache2/modules
查看是否存在mod_wsgi.so-3.5

二.配置apache

  1.编辑配置文件

编辑配置文件
sudo vim /etc/apache2/apache2.conf

在文件的最后 添加

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so-3.5

  2.创建网站配置文件

编辑网站配置文件 没有则自动新建,这里相当于新建
sudo vim /etc/apache2/sites-available/tip.conf

配置内容:
<VirtualHost *:80>
#这里就是配置域名的地方,有域名就写上,没有就注释掉 #ServerName www.pyweb.cn
# 服务器管理地址,可以不写 ServerAdmin py@163.cn
#wsgi文件目录 WSGIDaemonProcess python-path=/var/www/tip WSGIScriptAlias / /var/www/tip/tip/wsgi.py <Directory /var/www/tip/tip> <Files wsgi.py> Require all granted </Files> </Directory>
#项目文件目录 DocumentRoot /var/www/tip <Directory /var/www/tip> Require all granted </Directory>
#静态文件目录 Alias /static/ /var/www/tip/static/ <Directory /var/www/tip/static/> Require all granted </Directory>
#错误日志 这两份文件在报错的时候会自动生成 在/var/log/apache2/文件夹下
   ErrorLog ${APACHE_LOG_DIR}/django-tip-error.log
   CustomLog ${APACHE_LOG_DIR}/myproject-tip.log combined
</VirtualHost>

  3.将当前的配置文件创建一个软连接到/etc/apache2/sites-enabled

cd /etc/apache2/sites-enabled

sudo ln -s ../sites-available/tip.conf ./

  4.执行命令 生效当前配置

 sudo a2ensite tip.conf

如果需要让这个配置失效,可以执行 sudo a2dissite myproject.conf

三.配置django配置文件

  1.修改seeting.py文件

首先把myproject项目目录拷贝至 /var/www/目录下

在将其ALLOWED_HOSTS=[]改为

ALLOWED_HOSTS=['www.pyweb.cn'],多个域名可以通过逗号隔开。

  2.修改wsgi.py文件

import os
# 项目名.settings os.environ["DJANGO_SETTINGS_MODULE"] = "tip.settings" #os.environ.setdefault("DJANGO_SETTINGS_MODULE", "pyjfive.settings") from os.path import join,dirname,abspath PROJECT_DIR = dirname(dirname(abspath(__file__))) import sys # 4 sys.path.insert(0,PROJECT_DIR) from django.core.wsgi import get_wsgi_application application = get_wsgi_application()

四.最重要的一步

  重启apache

sudo service apache2 restart

  启动 : service apache2 start

  停止 : service apache2 stop

五.打开浏览器。输入云主机的地址,有域名就输入域名,不过上面需要配置域名

  我这里就输入IP地址

106.12.40.48

按道理来说,到这里就可以显示出项目的首页了

不过,按照正常的剧情,重启服务器或者输入地址查看的时候会报错

关于apache报错信息,请参考:apache报错信息及解决方案