【Django】如何在apache上部署Django项目

根据官方描述,Django是一个web框架,而不是一个web服务,因此计划在apache部署Django项目

软件及环境信息

    python3

    Django v1.11.8

    Apache v2.4.18

    libapache2-mod-wsgi-py3

    Ubuntu 16.04.4

安装 apache2 和 mod_wsgi

mod_wsgi是一个Apache模块,可以托管任何Python WSGI应用程序,包括Django, Django能使用支持mod_wsgi的任何Apache版本。

另外之所以选择mod_wsgi,而不使用mod_python,主要有2点:

    1. 高版本的Django已经不再支持mod_python,而用mod_wsgi不影响以后的编码;

    2. 性能更好

执行安装

    sudo apt-get install apache2

    sudo apt-get install libapache2-mod-wsgi-py3

小提示:

    查看apache版本: apachectl -v

    对于python2用户,安装libapache2-mod-wsgi

检查项目配置文件

部署在生产环境,特别需要检查安全设置、资源访问策略等,官方提供了一份检查清单,见部署前的checklist,通过执行python3 manage.py check --deploy 可得到检测报告,在此之前,需要注意:

    DEBUG,默认是True,当报错时可得到详情,部署在生产环境,容易暴露关键信息,因此一定记得设置为False

    ALLOWED_HOSTS ,限制请求中的host,以防止黑客构造包来发送请求,只有在列表中的host才能通过,另外当设置DEBUG=False时,必须设置,否则报错

    STATIC_ROOT ,部署在生产环境,必须配置,然后通过执行collectstatic 收集所有的静态资源到该环境中,否则会发现找不到资源而报404错误

      STATIC_URL,可理解成访问静态文件的URL前缀,类似别名,可简短使用

      MEDIA_ROOT 和 MEDIA_URL,定义用户上传文件的路径,对于上传的文件,本身是不可信任的,例如上传一个.php 文件,服务器不应该执行

    ADMINS,是一个二元元组,记录开发人员的姓名和email,当view发生500错误时通知

    AUTH_USER_MODEL,如果使用了auth的User的扩展对象,需要告诉程序User模型在哪里,即引引用app.model形式

如何在Apache和mod_wsgi中使用Django

在/etc/apache2/sites-available目录下(centos 用户在 /etc/httpd目录)新建网站配置文件,这里取名:myDjangoProject.conf

#网站端口

    ServerName  *  #My site Name

    WSGIDaemonProcess * python-path=*  #Demon process for multiple virtual hosts

    WSGIScriptAlias / *#Pointing wsgi script to config file

    WSGIProcessGroup *

    #Your static files location

    Alias /static * #django对应STATIC_ROOT路径

    Alias /media  *  #django对应MEDIA_ROOT路径

    #对静态资源文件的授权

      Require all granted

   

 

    Require all granted

 

  #项目目录

   

    #Order deny,allow  aphache 2.2.* use

    #Allow from all

    Require all granted

   

    ErrorLog  *#定义错误日志文件

    CustomLog * common #定义接口请求记录文件 

设置目录及文件权限

一般目录权限设置为 755,文件权限设置为 644

    设置项目权限(假设项目为mysite)

    sudo chmod -R 644 mysite

    sudo find mysite -type d -exec chmod 755 \{\} \;

/etc/apache2/envvars 是apache程序的参数配置文件,通过文件中的

    export APACHE_RUN_USER=www-data

    export APACHE_RUN_GROUP=www-data

可知,apache的用户和组为www-data,上传静态资源时,需要将文件夹授权为该组,否则会被拒绝

    设置上传文件夹目录【-R,包括子文件夹,因为需要动态创建文件夹,所以使用了-R】

    sudo chgrp -R www-data **

    sudo chmod -R g+w **

激活新网站

    sudo a2ensite myDjangoProject或 sudo a2ensite myDjangoProject.conf#前面的编辑好的网站配置文件

重启apache

    service apache2 restart

你可能感兴趣的:(【Django】如何在apache上部署Django项目)