【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

<VirtualHost *:80>#网站端口

    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路径

    <Directory *> #对静态资源文件的授权

      Require all granted

    </Directory>

  <Directory *>

    Require all granted

  </Directory>

  <Directory * >#项目目录

    <Files wsgi.py>

    #Order deny,allow  aphache 2.2.* use

    #Allow from all

    Require all granted

    </Files>

</Directory>

    ErrorLog  *#定义错误日志文件

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

</VirtualHost>

设置目录及文件权限

一般目录权限设置为 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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容