使用Apache服务器mod_wsgi模式部署Django

使用Apache服务器mod_wsgi模式部署Django

目前部署Django有多种模式,官方推荐wsgi方式。根据本次部署,现总结部署过程。

部署目标

使用virtualenv环境,mod_wsgi及virtualHost部署Django应用

部署过程

1.  安装Apache服务器(略)

2.  安装mod_wsgi模块(略)

本次部署使用CentOS7,Apache 2.4.6,安装完成后配置文件位置为/etc/httpd下,其中conf文件夹中为主配置文件,conf.module.d文件夹中为模块配置文件,成功安装mod_wsgi模块后会出现相应的配置文件.

3.  安装virtualenv(略)

4.  新建virtualenv运行环建django-env并安装依赖包(略)

5.  上传网站文件和处理静态文件

在服务器新建文件夹,上传所有网站文件到该文件夹。并且新建文件夹S用于提取静态文件(建议该文件夹建在网站文件夹下),修改django的setting.py文件,增加配置项

STATIC_ROOT = '/data/XXXXX'

将路劲指向新建的静态文件夹S,在网站根目录运行

python manage.py collectstatic

命令,将所有静态文件提取至该目录。

6.  配置Apache服务器

由于本次配置准备使用virtualhost方式,故首先编辑/etc/httpd/conf/httpd.conf文件,在文件最后增加

Include conf/vhosts/*.conf

之后再/etc/httpd/conf文件夹下新建文件夹vhosts,再在该文件夹下新建XXX.conf文件。编辑XXX.conf文件,输入以下内容:

WSGISocketPrefix /var/run/wsgi
<VirtualHost 101.200.234.0:80>
Alias /static "/S"
WSGIDaemonProcess SmileDataWeb user=djangouser group=webuser processes=1 threads=15 maximum-requests=10000
WSGIScriptAlias / "/x/xx/xxx/Web/wsgi.py"
WSGIProcessGroup SmileData
WebWSGIApplicationGroup %{GLOBAL}
ServerName 1.2.3.4:80
DocumentRoot /X/XX/SmileDataWeb
<Directory "/X/XX/SmileDataWeb">
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

</VirtualHost>其中WSGISocketPrefix必须设置,否则可能出现

503 Service Temporarily Unavailable

错误,Alias为静态路径设置,指向之前新建的文件夹S,WSGIScriptAlias设置指向网站的wsgi文件,WSGIApplicationGroup必须设置,另注意对于不同版本Apache的Directory设置有所不同,2.4及其以上使用上文设置,2.4以下使用

<Directory "/your_wsgi/your_app/static "> 
Options Indexes FollowSymLinks 
Order allow,deny 
Allow from all
</Directory>

7.编辑wsgi.py文件

activate_this = '/x/xxx/python-env-django/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

import os

from django.core.wsgi import get_wsgi_application


sys.path.insert(0, '/x/xx/SmileDataWeb')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Web.settings")

application = get_wsgi_application()

其中第一行指向路径virtualenv的python激活脚本,第二行激活virtualenv环境。

sys.path.insert(0, '/data/django/SmileDataWeb')语句指定网站运行根目录,可以设置为相对路径。


8.  favicon图标配置

favicon图标有多种设置方式,但目前测试使用favicon.ico.png命名无法正常显示,推荐使用favicon.ico或favicon.png进行命名

注:在更改静态文件部署时需要重新运行

python manage.py collectstatic


你可能感兴趣的:(apache,python,django,wsgi)