Apache部署Django

最后更新时间: 2018-02-10 | 作者: AberSheeran | 捐助

安装Python,mod_wsgi,Apache

使用Apache直接部署Django,版本搭配很重要。

在好心人已经帮我们编译好的mod_wsgi发布网站可以找到需要的版本。

因为我的系统是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文件,加入

1
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文件中需要添加以下代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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的值,用分号隔开。
如同这样

1
WSGIPythonPath /path/to/DjangoProject_0;/path/to/DjangoProject_1;

再将原本写在httpd.conf文件的配置删去。在extra/httpd-vhosts.conf文件中添加需要添加的站点。需要在httpd.conf中增加一行Include conf/extra/httpd-vhosts.conf以引用该文件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<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>

以上是基本配置,静态文件或其他文件的配置如同单项目配置一样。

标签: DjangoApache
收录于#杂记