ubuntu python apache2 wsgi django框架
在ubuntu上通过apatch2和wsgi部署django
(亲手做过!!!)
一,我的python、django、apatch2版本:
python:python -V
2.7.3
django:python -c "import django; print(django.VERSION)"
(1, 9, 4, 'final', 0)
apache2:/usr/sbin/apachectl -v
Server version: Apache/2.2.22 (Ubuntu)
Server built: Jul 24 2015 17:25:52
二,安装python 和django。
三,安装apache2 和 wsgi。
sudo apt-get insall apache2
sudo apt-get install libapache2-mod-wsgi
如果之前安装配置过apache2的并且配置很乱,无法修复,建议还是完全卸载之后再安装。完全卸载的命令:
sudo apt-get --purge remove apache*
sudo apt-get --purge remove apache-common
安装完以后,去 /etc/apache2/ 下的 mods-available 和mods-enabled 中查看是否都存在 wsgi.conf 和wsgi.load 两个文件。有则说明wsgi模块加载到apache2成功。
四,配置apache 和 wsgi
(PS 假设你是在目录/var/www/mysite 下面 django-admin.py startproject testproject )
我项目的tree:

1、apache的配置:
在/etc/apache2/site-available中新建一个文件 testdjango.conf (PS中文注释都删除)
<VirtualHost *:80>
ServerName testdjango.com #ServerName这个无所谓,只要在host中把你的ip地址映射到这个上面就可以了。不想改host最简单的方法就是用 sudo a2dissite 000-default.conf 等虚拟主机给disable掉,只留 testdjango.conf。(PS.site-enabled中的文件是link site-availabel下的文件,如果存在link文件则是enable的,可以根据这个来查看)
DocumentRoot /var/www/mysite/testproject #这一条是指向网站的根目录
<Directory /var/www/mysite/testproject>
Order allow,deny
Allow from all
</Directory>
WSGIDaemonProcess testdjango.com processes=2 threads=15 display-name=%{GROUP}
WSGIProcessGroup testdjango.com #对应前面的ServerName
WSGIScriptAlias / /var/www/mysite/testproject/apache/django.wsgi #将后面的那个路径指向网站的根目录。第一个“/”表示外部访问时的网站根目录,当有新的requset的时候,apache从这里开始解析。 </VirtualHost>
2、wsgi的配置
在/var/www/mysite/testproject/下新建dir:apache 。在./apache下新建文件django.wsgi。(文件名对应前面的WSGIScriptAlias第二个路径下的文件名)
#coding:utf-8
import os
import sys path = '/var/www/mysite'
if path not in sys.path:
sys.path.insert(0, '/var/www/mysite/testproject') #将模块路径加到当前模块扫描的路径。或sys.path.apend('/var/www/mysite/testproject')
os.environ['DJANGO_SETTINGS_MODULE'] = 'testproject.settings' #新建一个环境变量DJANGO_SETTINGS_MODULE,目的是指向django工程的settings.py,这里
#import django.core.handlers.wsgi #old version use
#application = django.core.handlers.wsgi.WSGIHandler() from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
五,验证
sudo a2ensite testdjango.conf #enable testjango.conf
sudo service apache2 reload (PS 如果reload时出现 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName。虽然不影响但有个warning让人不爽,可以在/etc/apatch2/httpd.conf 中加入ServerName localhost)
最后浏览器 http://127.0.0.1或localhost或你ubunt的IP 就可以看见django的初始页面了。
其它机器的浏览器也可以通过你的ubuntu的IP来查看你django的项目的页面。
六,常见错误及log:
apache2的error log文件:/var/log/apache2/error.log
错误1:Internal Server Error 如下图

应该是django.wsgi里用了我注释的 django.core.handlers.wsgi 这个方法。用下面的那个get_wsgi_application 就没问题了。
ubuntu python apache2 wsgi django框架的更多相关文章
- Python必学Django框架,入门到精通学习视频教程全都在这可以领
“人生苦短,我用python”,学python的小伙伴应该都了解这句话的含义.但是,学python,你真正了了解强大的Django框架吗!? 据说Django还是由吉普赛的一个吉他手的名字命名的呢,有 ...
- Python中的Django框架中prefetch_related()函数对数据库查询的优化
实例的背景说明 假定一个个人信息系统,需要记录系统中各个人的故乡.居住地.以及到过的城市.数据库设计如下: Models.py 内容如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
- 6月13日 python学习总结 Django框架
1. 内容回顾 1. 基础必会三件套 from django.shortcuts import HttpResponse, render, redirect - HttpResponse(" ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- ubuntu apache2 wsgi 部署django
入题 分为如下几步 1.安装python 2.安装django 3.安装wsgi,如有问题请参照上一篇 ubuntu 编译安装 mod_wsgi 4.与apache集成这里主要讲这部分 环境apach ...
- Django框架学习——python模拟Django框架(转载)
原贴来源 http://wiki.woodpecker.org.cn/moin/ObpLovelyPython/AbtWebModules python实现web服务器 web开发首先要有web服务器 ...
- Windows上python开发--2安装django框架
Windows上python开发--2安装django框架 分类: 服务器后台开发2014-05-17 21:22 2310人阅读 评论(2) 收藏 举报 python django 上一篇文章中讲了 ...
- Python的Web应用框架--Django
一:简介 python的web框架有很多,个人查了一下,有Django.Pylons. Tornado.Bottle和Flask等,其中使用人数最多的是Django,而我学习Django也是因为ope ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
随机推荐
- shell编程之函数
一.函数定义和调用 函数是Shell脚本中自定义的一系列执行命令,一般来说函数应该设置有返回值(正确返回0,错误返回非0).对于错误返回,可以定义其他非0正值来细化错误.使用函数最大的好处是可避免出现 ...
- ASP 基础一 基本语法
一 声明变量 二 给变量赋值 三 循环 四 case <html> <head title="test hello world"> </head> ...
- php利用自定义key,对数据加解密的方法
客户端和服务端通信时,有个场景很常见,通过一个id作为url参数来回传递.假设现在业务上只有这个id标识,那么需要稍微安全一点的通信,对这个id进行加密传输,到服务端再进行解密.这里需要一个服务端进行 ...
- 【数据库摘要】10_Sql_Create_Index
CREATE INDEX 语句 CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下.索引使数据库应用程序能够更快地查找数据. 索引 您能够在表中创建索引,以便更加高速高效地查询 ...
- C#实现一张塔松叶
前段时间,Insus.NET有实现一组字符串在输出时,靠左或靠右对齐.<输出的字符靠右对齐>http://www.cnblogs.com/insus/p/7953304.html 现在In ...
- .Net Core 系列之一 hello world
OS: win10 企业版 中文环境 .Net Core: 切记不要装64版本,否则可能会出现vs2017无法生成.net core 2.0的项目 dotnet-sdk-2.0.0-win-x86.e ...
- [Oracle]如何在Oracle中设置Event
为了调查Oracle 的故障,可以通过设置event ,来了解详细的状况.方法如下: ■ 如果使用 SPFILE, =============To enable it: 1. Check the cu ...
- 【JVM.1】java内存区域与内存溢出
鲁迅曾说过:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进来,墙里面的人想出去. 一.虚拟机内存分布 Java虚拟机在执行Java程序的过程中会把它所管理的内存 ...
- Docker容器学习梳理 - 容器时间跟宿主机时间同步
在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 宿主机时间 [root@slave-1 ~]# date Fri M ...
- Ceph常规操作及常见问题梳理
Ceph集群管理 每次用命令启动.重启.停止Ceph守护进程(或整个集群)时,必须指定至少一个选项和一个命令,还可能要指定守护进程类型或具体例程. **命令格式如 {commandline} [opt ...