百度云的ubuntu16.04.1部署Apache服务器+Django项目
使用Apache和mod_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报错信息及解决方案