折腾了一天,最后终于成了
1 安装 wsig:sudo apt install libapache2-mod-wsgi-py3(我的 python版本为 python3.5)
2 修改 apache 配置( apache2.4)
# 末尾添加,我的路径为 /var/www/project/django/mysite
Alias /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.py
WSGIPythonPath /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 os
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))#3
import sys
sys.path.insert(0,PROJECT_DIR)
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings"
from django.core.wsgi import get_wsgi_application
application = 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/….. 即可正常进行。