目录[-]
系统环境:Ubuntu 16.04.2 LTS
完整网站:放在/home/wwwroot下,myblog
一、运行流程
1、运行原理
2、相关包安装
#安装 apache2 sudo apt-get install apache2 # Python 2 安装mod_wsgi sudo apt-get install libapache2-mod-wsgi # Python 3 安装mod_wsgi sudo apt-get install libapache2-mod-wsgi-py3 #确认安装的apache2版本号,最好在2.4以上 apachectl -v
二、Apache2配置
ubuntu的apache2所有配置文件在 /etc/apache2/ 下,在sites-available下自定义myblog.conf配置文件,名称myblog可自定义:
sudo vi /etc/apache2/sites-available/myblog.conf
配置文件如下:
<VirtualHost *:80> ServerName www.isky.top ServerAlias isky.top ServerAdmin 123@163.com #上传文件存储文件夹 Alias /media/ /home/wwwroot/myblog/media/ #网站静态文件夹,通过collectstatic命令收集的CSS、JS、IMAGE等文件 Alias /static/ /home/wwwroot/myblog/static/ <Directory /home/wwwroot/myblog/media> Require all granted </Directory> <Directory /home/wwwroot/myblog/static> Require all granted </Directory> #配置Django网站的wsgi.py文件路径, #把Apache2和你的Django网站项目联系起来 WSGIScriptAlias / /home/wwwroot/myblog/myblog/wsgi.py <Directory /home/wwwroot/myblog/myblog> <Files wsgi.py> Require all granted </Files> #如果使用virtualenvs部署网站, #需配置 WSGIDaemonProcess 和WSGIProcessGroup两项 # WSGIDaemonProcess isky.top python-path= /home/wwwroot/myblog # WSGIProcessGroup isky.top </Directory> </VirtualHost>
三、wsgi配置
注意:如果使用virtualenvs部署网站,这一步可以跳过,即可以不配置 wsgi.py 文件。
import os from os.path import join,dirname,abspath PROJECT_DIR = dirname(dirname(abspath(__file__))) #3 import sys # 4 sys.path.insert(0,PROJECT_DIR) # 5 os.environ["DJANGO_SETTINGS_MODULE"] = "blog.settings" # 7 from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
第 #3,#4,#5 行为新加的内容,作用是让脚本找到django项目的位置;如果一台服务器有多个django project时,一定要添加第 #7 行内容,加载项目配置,避免不同网站项目之间访问混乱。
四、文件夹权限
注意:如果在配置FTP服务器时,已经设置了权限,可跳过此步。否则需要添加写的权限。
cd /home/tu/ sudo chmod -R 755 myblog
如果考虑安全性问题,可另外设置账户。
五、激活网站
使用以下命令,即可启动网站
sudo a2ensite myblog.conf
六、错误处理
如果访问网站出错,这时你可以把settings.py更改
DEBUG = True
重启服务器
sudo service apache2 restart
再访问网站,来查看具体的出错信息。
1、Apache2配置文件加载失败
如果访问网站显示Apache默认界面(如下),表示Apache安装正确可运行,但配置未加载:
可根据启动网站时的提示,查看错误日志:
journalctl -xe
也可以查看apache2的错误日志
vi /var/log/apache2/error.log
2、界面显示混乱
网站打开很乱,没有布局,多半是静态文件没有生效。
1. 确保你的配置文件中的路径是正确的
2. 确保你的settings.py中的文件设置正确
3. 确保已经收集静态文件
python manage.py collectstatic
七、扩展
部署时文件对应关系:
myblog.conf --> wsgi.py --> settings.py
明白了上面的关系, 一个 Django project 使用多个域名或让app使用子域名很简单,只要新建一个 wsgi.py 文件,更改里面对应的settings文件,新的settings文件可以对应新的urls.py,从而做到访问与原来不同的地址!
