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

Apache/2.4.18 (Ubuntu)  apt-get install apache2

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

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

一,安装python 和django。这个很简单,django用pip安装就可以。就不解释了。

二,安装apache2 和 wsgi。

这里用的是apt-get.

sudo apt-get install apache2

sudo apt-get install libapache2-mod-wsgi

需要注意的是,如果之前安装配置过apache2的并且配置很乱,无法修复,建议还是完全卸载之后在安装。完全卸载的命令:

$ 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文件.

三、配置apache 和 wsgi

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

1、apache的配置:

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

<VirtualHost *:>

ServerName testproject.djangoserver 

 #ServerName这个无所谓,只要在host中把你的ip地址映射到这个上面就可以了。不想改host最简单的方法就是 
#用 sudo a2dissite -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= threads= display-name=%{GROUP} WSGIProcessGroup testproject.djangoserver #这里的testproject.djangoserver 对应前面的ServerName WSGIScriptAlias / /var/www/mysite/testproject/apache/wsgi.py # (/和/var...中间是有空格的)是将后面的那个路径指向网站的根目录。第一个“/”表示外部访问时的网站根目录,当有新的requset的时候,apache从这里开始解析。 </VirtualHost>

2、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就可以了

Ubuntu16.04 apache2 wsgi 部署django的更多相关文章

  1. ubuntu apache2 wsgi 部署django

    入题 分为如下几步 1.安装python 2.安装django 3.安装wsgi,如有问题请参照上一篇 ubuntu 编译安装 mod_wsgi 4.与apache集成这里主要讲这部分 环境apach ...

  2. Apache2.4部署django出现403 Forbidden错误解决办法

    前言:Apache2.4部署django出现403 Forbidden错误最好要结合apache中的错误日志来观察出现何种错误导致出现403错误 下午百度了一下午没找到解决办法,试了n种方法,简直坑爹 ...

  3. Ubuntu16.04 下docker部署web项目

    概念性的请戳 第一步:更新apt-get update 第二步:安装环境 apt-get install \ apt-transport-https \ ca-certificates \ curl ...

  4. ubuntu16.04 用devstack部署安装OpenStack ocata

    原文链接 之所以再重复一下,是因为踩坑的过程,希望能帮助有需要的人. 介绍:        宿主机win10,在vmware下创建两台ubuntu16.04虚拟机,一台作为控制节点,一台作为计算节点, ...

  5. Windows + Apache + WSGI 部署Django

    注意Python Apache和mod_wagi的版本要一致哦 1.安装Apache服务器(下载后,解压即可,目录不能有中文) 2.安装mod_wsgi (pip install 它的路径) 3.打开 ...

  6. 阿里云 Ubuntu16.04 apache2 ssl证书下载与安装(必须有域名)

    阿里云申请免费SSL证书并下载(包含xxx.key|xxx._root_bundle.crt|xxx._public.crt三个文件) 用https是自己的网站收到保护,不易被攻克,所以保护自己的网站 ...

  7. Ubuntu16.04 apache2+php7.0+mysql5.7环境搭建

    今天配置一下web环境,很常见的apache+php+mysql的网站环境: 步骤一:安装apache sudo apt install apache2 步骤二:安装php7 1.安装PHP7和响应的 ...

  8. ubuntu12.04 server + apache2 + wsgi + django1.6 部署

    最近在学Python和Django,想自己部署一个服务器试试 环境:ubuntu12.04 server | apache2 | django1.6 | python2.7 | mod_wsgi 在网 ...

  9. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)

    由于用的新版本系统,和旧的稍有差别,在网上搜了很多相关资料,搞了三天终于搞好在Ubuntu16.04下的部署,接下来就详细写写步骤以及其中遇到的问题.前提是安装有虚拟环境pyenv+virtualen ...

随机推荐

  1. sqlserver字段类型

    bit    整型 bit数据类型是整型,其值只能是0.1或空值.这种数据类型用于存储只有两种可能值的数据,如Yes 或No.True 或False .On 或Off. 注意:很省空间的一种数据类型, ...

  2. linux创建动态库

    [1]新建源程序sharelib.c /************************************************************************* > F ...

  3. Spring使用ThreadLocal技术来处理这些问题

    过去我习惯于从左到右的思考,因为这符合书写的习惯,对于“好”得前端工程师,我们首先可能会去思考什么是好,好的定义和范围,标准和要求?但现在我习惯于从右到左的思考,因为我觉得越是抽象越难以定义,从粒度更 ...

  4. get------引用接口

    关于引用接口   1.    通过get方式 2.   String  poiUrl="http://接口地址?接口ID=接口给你的ID&参数1=?&参数2=?&参数 ...

  5. 51nod 1228 序列求和 ( 1^k+2^k+3^k+...+n^k )

    C为组合数,B为伯努利数 具体推到过程略 参考博客:http://blog.csdn.net/acdreamers/article/details/38929067# (我的式子和博客中的不一样,不过 ...

  6. PHPExcel 导出时乱码

    今天遇到了个奇怪的问题..猜测应该是因为php文件的编码造成的,但是没有解决办法. 问题是,用PHPEXCEL导出文件的时候,相同的代码在一个文件中可以导出,在另一个文件中却不行.. 最后没有办法,只 ...

  7. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

  8. Unity进阶技巧 - 动态创建UGUI

    前言 项目中有功能需要在代码中动态创建UGUI对象,但是在网上搜索了很久都没有找到类似的教程,最后终于在官方文档中找到了方法,趁着记忆犹新,写下动态创建UGUI的方法,供需要的朋友参考 你将学到什么? ...

  9. 【python】多进程锁multiprocess.Lock

    [python]多进程锁multiprocess.Lock 2013-09-13 13:48 11613人阅读 评论(2) 收藏 举报  分类: Python(38)  同步的方法基本与多线程相同. ...

  10. Reed-Solomon码,QR

    原文: Reed–Solomon codes for coders参考: AN2407.pdfWIKI: 里德-所罗门码实现:Pypi ReedSolo #译注:最近看到了RS码,发现还挺有意思的,找 ...