Ubuntu16.04 apache2 wsgi 部署django

在Ubuntu16.04上部署django其实还算简单直观,最重要的问题就是路径设置正确,而且保证版本统一,这个测试是在python

Apache/2.4.18 (Ubuntu)  apt-get install apache2apache

    Python/2.7.11 wget  https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz django

    mod_wsgi/4.3.0   apt-get install libapache2-mod-wsgiubuntu

一,安装python 和django。这个很简单,django用pip安装就能够。就不解释了。浏览器

二,安装apache2 和 wsgi。服务器

这里用的是apt-get.app

sudo apt-get install apache2测试

sudo apt-get install libapache2-mod-wsgi网站

须要注意的是,若是以前安装配置过apache2的而且配置很乱,没法修复,建议仍是彻底卸载以后在安装。彻底卸载的命令:ui

$ sudo apt-get --purge remove apache-common

$ sudo apt-get --purge remove apache*

安装完之后,去 /etc/apache2/ 下的 mods-available 和mods-enabled 中查看是否都存在 wsgi.conf 和wsgi.load 两个文件。

注意检查:/etc/apache2/mods-enabled/wsgi.load连接文件是否存在,而且检查文件内容:

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

要chmod 755 mod_wsgi.so文件.

3、配置apache 和 wsgi

(PS.假设你是在目录/var/www/mysite 下面 django-admin.py startproject testproject ).

一、apache的配置:

在/etc/apache2/sites-available中新建一个文件 testdjango.conf (PS.写的时候把中文注释都删除)

<VirtualHost *:80>

ServerName testproject.djangoserver 

 #ServerName这个无所谓,只要在host中把你的ip地址映射到这个上面就能够了。不想改host最简单的方法就是 
#用
sudo a2dissite 000-default.conf 等虚拟主机给disable掉,只留 testdjango.conf。(PS.在site-enabled中的site是enable的,能够根据这个来查看) DocumentRoot /var/www/mysite/testproject # 这一条是指向网站的根目录 <Directory /var/www/mysite/testproject> Order allow,deny Allow from all </Directory> WSGIDaemonProcess .djangoserver processes=2 threads=15 display-name=%{GROUP} WSGIProcessGroup testproject.djangoserver #这里的testproject.djangoserver 对应前面的ServerName WSGIScriptAlias / /var/www/mysite/testproject/apache/wsgi.py # (/和/var...中间是有空格的)是将后面的那个路径指向网站的根目录。第一个“/”表示外部访问时的网站根目录,当有新的requset的时候,apache从这里开始解析。 </VirtualHost>

 

二、wsgi的配置

在 /var/www/mysite/testproject/下新建dir:apache 。在./apache下新建文件wsgi.py。(文件名对应前面的WSGIScriptAlias第二个路径下的文件名)

import os

import sys

path = '/var/www/mysite'

if path not in sys.path:

sys.path.insert(0, '/var/www/mysite/testproject') #将网站工程目录临时加入ubuntu系统环境中

os.environ['DJANGO_SETTINGS_MODULE'] = ' testproject.settings'

 #新建一个环境变量DJANGO_SETTINGS_MODULE,目的是指向网站工程的settings.py,这里

#用' testproject.settings'

import django.core.handlers.wsgi

application = django.core.handlers.wsgi.WSGIHandler()

 

配置完成之后 

sudo a2ensite testdjango.conf

sudo service apache2 reload

而后浏览器http://127.0.0.1 就能够看见django的初始页面了。

PS.出错的话,必定要多看看apache2的err log。

命令行输入: tail /var/log/apache2/error.log

 

$ sudo dpkg -l libapache2-mod-wsgi           #查看wsgi的版本
                   结果: libapache2-mod 3.3-4build1

$ a2enmod wsgi                               #验证模块安装正常 
                    Module wsgi already enabled

 

若是遇到服务器403的错误,那么多是你的"/"目录被禁止访问(默认)
修改一下apache2.conf文件(位于/etc/apache2/)
把Require all denied改成Allow from all就能够了

相关文章
相关标签/搜索