Ubuntu 16.04中 Django + apache + wsgi 配置

来源:互联网 发布:男生眼中美女脸 知乎 编辑:程序博客网 时间:2024/05/16 04:13

折腾了一天,最后终于成了
1 安装 wsig:sudo apt install libapache2-mod-wsgi-py3(我的 python版本为 python3.5)
2 修改 apache 配置( apache2.4)

# 末尾添加,我的路径为 /var/www/project/django/mysiteAlias /media/ /var/www/project/django/mysite/media/Alias /static/ /var/www/project/django/mysite/static/<Directory /var/www/project/django/mysite/media>    Require all granted</Directory><Directory /var/www/project/django/mysite/media>    Require all granted</Directory>WSGIScriptAlias / /var/www/project/django/mysite/mysite/wsgi.pyWSGIPythonPath /var/www/project/django/mysite# WSGIDaemonProcess ziqiangxuetang.com python-path=/home/tu/blog:/home/tu/.virtualenvs/blog/lib/python2.7/site-packages# WSGIProcessGroup ziqiangxuetang.com<Directory /var/www/project/django/mysite/mysite><Files wsgi.py>    Require all granted</Files></Directory>

3 项目 wsgi.py 文件

import osfrom os.path import join,dirname,abspathPROJECT_DIR = dirname(dirname(abspath(__file__)))#3import syssys.path.insert(0,PROJECT_DIR)os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"from django.core.wsgi import get_wsgi_applicationapplication = get_wsgi_application()

4 同时搭建两个 django 项目
(1)首先改 apache.conf 配置
方法大致与上面一样,但 static(media) 和 WSGIScriptAlias 后要加上项目的名称,其它无须改动

# 第一个项目 wechat Alias /wechat/static/ /var/www/django/wechat/static/ <Directory /var/www/django/wechat/static>    Require all granted </Directory> WSGIScriptAlias /wechat /var/www/django/wechat/weixin/wsgi.py WSGIPythonPath /var/www/django/wechat <Directory /var/www/django/wechat/weixin> <Files wsgi.py>    Require all granted </Files> </Directory># 第二个项目 tf Alias /tf/static/ /var/www/django/tf/static/ <Directory /var/www/django/tf/static>    Require all granted </Directory> WSGIScriptAlias /tf /var/www/django/tf/tf/wsgi.py WSGIPythonPath /var/www/django/tf <Directory /var/www/django/tf/tf> <Files wsgi.py>    Require all granted </Files> </Directory>

(2)修改 setting.py
项目中 url.py 与 wsgi.py 等不必修改,仅须在 seeting.py 项目中的 static 路径改一下,不然无法引用静态文件。若有 media 也一样。
(看别的博客urls.py还需要修改,但自己测试后发现并不用,反而改了之后会影响使用)

# 修改前(分别为上面对应的两个项目,但实际上是一样的)STATIC_URL = '/static/'STATICFILES_DIRS = (    os.path.join(BASE_DIR, 'static'),)STATIC_URL = '/static/'STATICFILES_DIRS = (    os.path.join(BASE_DIR, 'static'),)# 修改后STATIC_URL = '/wechat/static/'STATICFILES_DIRS = (    os.path.join(BASE_DIR, 'static'),)STATIC_URL = '/tf/static/'STATICFILES_DIRS = (    os.path.join(BASE_DIR, 'static'),)

(3)修改完成,重启 apache 服务即可。修改后项目的访问路径也加上 apache2.conf 中添加的项目名称。在我的项目中即为;

# wechat配置:WSGIScriptAlias /wechat /var/www/django/wechat/weixin/wsgi.py原:localhost/library新:localhost/wechat/library# tf配置:WSGIScriptAlias /tf /var/www/django/tf/tf/wsgi.py原:localhost/boys新:localhost/tf/boys

5 php 等项目的部署
WSGIScriptAlias 后加具体的项目名后,域名后跟此项目名才行执行该项目,若加别的名称则会采用默认的方式(即该目录下的文件)。用此方法即可恢复其它项目的配置
如若有 ThinkPHP 的项目在根目录下,则 localhost/index.php/….. 即可正常进行。

0 0