安装Python,mod_wsgi,Apache
使用Apache直接部署Django,版本搭配很重要。
在好心人已经帮我们编译好之后的包的发布网站可以找到需要的版本。
因为我的系统是64位,Python是35,所以选择mod_wsgi‑4.5.17+ap24vc14‑cp35‑cp35m‑win_amd64.whl
下载之后,用pip命令安装,可以在python的安装目录下找到\lib\site-packages\mod_wsgi\server\mod_wsgi.cp35-win_amd64.pyd。
注意到安装的这个版本的mod_wsgi的是指定ap24vc14,于是我们到Apache官网找找到对应的版本,下载解压。
找到httpd.conf文件,加入LoadModule wsgi_module "path\to\python\lib\site-packages\mod_wsgi\server\mod_wsgi.cp35-win_amd64.pyd"
,这将使Apache能使用该模块。
单站点配置
将项目文件拷贝到服务器后,需要运行命令python manage.py collectstatic
,这将把项目需要的静态文件拷贝到在项目setting.py中设置的STATIC_ROOT的目录中,包括django自带的admin的静态文件。
然后在httpd.conf文件中需要添加以下代码
WSGIPythonHome /path/to/python
WSGIPythonPath /path/to/DjangoProject
WSGIScriptAlias / /path/to/DjangoProject/ProjectName/wsgi.py
<Directory /path/to/DjangoProject/ProjectName>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /robots.txt /path/to/DjangoProject/static/robots.txt
Alias /favicon.ico /path/to/DjangoProject/static/favicon.ico
Alias /static/ /path/to/DjangoProject/static/
<Directory /path/to/DjangoProject/static>
Require all granted
</Directory>
Alias /media/ /path/to/DjangoProject/media/
<Directory /path/to/DjangoProject/media>
Require all granted
</Directory>
接下来运行Apache目录下bin中httpd.exe文件,单个项目的部署就结束了。
多站点配置
对于多个Django项目部署,我们可以从单个项目出发。
WSGIPythonHome /path/to/python
决定了Django项目运行的Python版本。
而WSGIPythonPath /path/to/DjangoProject
决定了Apache部署的Django项目目录。
很容易知道我们只需要增加WSGIPythonPath
的值,用分号隔开。
如同这样
WSGIPythonPath /path/to/DjangoProject_0;/path/to/DjangoProject_1;
再将原本写在httpd.conf文件的配置删去。在extra/httpd-vhosts.conf文件中添加需要添加的站点。需要在httpd.conf中增加一行Include conf/extra/httpd-vhosts.conf
以引用该文件。
<VirtualHost *:80>
DocumentRoot "path/to/project"
ServerName domain
ServerAlias domain
ErrorLog "logs/domain-error.log"
CustomLog "logs/domain-access.log" common
WSGIScriptAlias / path/to/project/projectName/wsgi.py
<Directory path/to/project/projectName>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
以上是基本配置,静态文件或其他文件的配置如同单项目配置一样。