【Django】Apache上运行多个Django项目
运行单个项目的步骤参考:这里
1 安装环境
操作系统:Ubuntu 12.04 LTS 32 位(安装在VMware虚拟机中)
python 版本:
- Python 2.7.3
Django版本
- >>> django.VERSION
- (1, 6, 2, 'final', 0)
mod_wsgi版本
- mod_wsgi3.x
apache版本及查看命令
- x@x:~/program$ /usr/sbin/apachectl -v (版本查看命令)
- /usr/sbin/apachectl: 87: ulimit: error setting limit (Operation not permitted)
- Server version: Apache/2.2.22 (Ubuntu)
- Server built: Mar 19 2014 21:10:40
2 配置
①修改port.conf
- x@x:/etc/apache2$ sudo vim ports.conf
添加以下代码 :
NameVirtualHost *:8080
Listen 8080
- NameVirtualHost *:80
- Listen 80
- # add you code here for multiple Django code
NameVirtualHost *:8080- Listen 8080
② 新建两个Django项目
我新建的项目的目录是 x@x:~/program/django$ (这个目录可以自定)
- django-admin.py startproject mywork
- django-admin.py startproject mywork1
- ├── mywork
- │ ├── apache (后加的)
- │ │ └── django.wsgi (后加的)
- │ ├── manage.py
- │ ├── mywork
- │ │ ├── __init__.py
- │ │ ├── settings.py
- │ │ ├── urls.py
- │ │ └── wsgi.py
- │ └── static (后加的)
- ├── mywork1
- │ ├── apache (后加的)
- │ │ └── django.wsgi (后加的)
- │ ├── manage.py
- │ ├── mywork1
- │ │ ├── __init__.py
- │ │ ├── settings.py
- │ │ ├── urls.py
- │ │ └── wsgi.py
- │ └── static (后加的)
- └── UserWeb.tgz
③ 修改httpd.conf 文件
啊
- x@x:/etc/apache2$ sudo vim httpd.conf
添加如下代码
- # add code for multiple Django projects run in Apache
- #LoadModule wsgi_module modules/mod_wsgi.so
- #setting for Django projedt1 ****
- <VirtualHost *:80>
- ServerName 127.0.0.1
- DocumentRoot /home/x/program/django/mywork
- Alias /admin_media /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static
- <Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
- AllowOverride None
- Options None
- Order allow,deny
- Allow from all
- </Directory>
- WSGIScriptAlias / /home/x/program/django/mywork/apache/django.wsgi
- <Directory /home/x/program/django/mywork>
- Order deny,allow
- Allow from all
- </Directory>
- <Directory /home/x/program/django/mywork/apache>
- Allow from all
- </Directory>
- <Location "/static/">
- #配置静态文件,网站中所有静态文件的路径为"/static/xxxx"
- SetHandler None
- </Location>
- </VirtualHost>
- <VirtualHost *:8080>
- ServerName 127.0.0.1
- DocumentRoot /home/x/program/django/mywork1
- Alias /admin_media /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static
- <Directory "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/static">
- AllowOverride None
- Options None
- Order allow,deny
- Allow from all
- </Directory>
- WSGIScriptAlias / /home/x/program/django/mywork1/apache/django.wsgi
- <Directory /home/x/program/django/mywork1>
- Order deny,allow
- Allow from all
- </Directory>
- <Directory /home/x/program/django/mywork1/apache>
- Allow from all
- </Directory>
- <Location "/static/">
- #配置静态文件,网站中所有静态文件的路径为"/static/xxxx"
- SetHandler None
- </Location>
- </VirtualHost>
④在Django项目中添加文件夹及文件
在项目文件根目录下添加
目录apache 和static
并在apache中新建文件django.wsgi
文件目录如下:
- ├── mywork
- │ ├── apache
- │ │ └── django.wsgi
- │ ├── manage.py
- │ ├── mywork
- │ │ ├── __init__.py
- │ │ ├── settings.py
- │ │ ├── urls.py
- │ │ └── wsgi.py
- │ └── static
- ├── mywork1
- │ ├── apache
- │ │ └── django.wsgi
- │ ├── manage.py
- │ ├── mywork1
- │ │ ├── __init__.py
- │ │ ├── settings.py
- │ │ ├── urls.py
- │ │ └── wsgi.py
- │ └── static
mywork/apache/ 中的django.wsgi文件如下
- import os, sys
- sys.path.append('/home/x/program/django/mywork')
- os.environ['DJANGO_SETTINGS_MODULE'] = 'mywork.settings'
- os.environ['PYTHON_EGG_CACHE'] = '/tmp'
- import django.core.handlers.wsgi
- application = django.core.handlers.wsgi.WSGIHandler()
- #print >> sys.stderr, sys.path
mywork1/apache/ 中的django.wsgi文件如下
- import os, sys
- sys.path.append('/home/x/program/django/mywork1')
- os.environ['DJANGO_SETTINGS_MODULE'] = 'mywork1.settings'
- os.environ['PYTHON_EGG_CACHE'] = '/tmp'
- import django.core.handlers.wsgi
- application = django.core.handlers.wsgi.WSGIHandler()
- #print >> sys.stderr, sys.path
⑤重启apache服务器,访问Django项目
- sudo service apache2 restart
通过ip地址访问即可
- 127.0.0.1:80
- 127.0.0.1:8080
如图所示
参考文章
1 ubuntu下部署django+apache2+mod_wsgi(配置多个站点)
2 Linux下安装apache,配置mod_wsgi,运行Django项目(挺详细的)
【Django】Apache上运行多个Django项目的更多相关文章
- 【Django】Apache上运行单个Django项目,mod_wsgi配置
1 安装环境 操作系统:Ubuntu 12.04 LTS 32 位(安装在VMware虚拟机中) python 版本: Python 2.7.3 Django版本 >>> djang ...
- 在传统.NET Framework 上运行ASP.NET Core项目
新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...
- Genymotion上运行ARM架构Android项目
问题 Genymotion是x86的模拟器,在集成一些第三方的SDK时需要添加一些放在armeabi.armeabi-64文件夹下面的.so文件,这些文件在arm架构下才能运行.这时模拟器就不能用了. ...
- apache 上配置多个django工程
我的环境是win7+python2.7.8+django1.6.4+apache2.2 废话不多说,直接进入正题: 下载对应的版本的mod_wsgi.so 第一步:添加mod_wsgi.so(记得对应 ...
- [Django] Window上通过IIS发布Django网站
网上的教程坑实在多,以下是本人亲测通过的: 需要解决的问题: 1.使用 python manage.py runserver 来运行服务器,只适用测试环境中使用,正式发布的服务,需要一个可以稳定而持续 ...
- 在lnmp1.3布置的web服务器上运行thinkphp3.2.3项目pathinfo路径模式
通过我的经历希望能给大家带来一些帮助: 我是在Linux系统上通过https://lnmp.org/install.html设置Nginx服务器,使用的是lnmp1.3版本,之后将一个thinkphp ...
- django搭建完毕运行显示hello django
1.使用pycharm打开工程,进入工程配置解释器路径 2.视图和url 视图:处理我们从业务的地方,可以理解为函数 url:进行路由匹配的地方,先在主工程bookpro中进行匹配,如果匹配ok,那么 ...
- 本机运行.net 2.0项目报错,解决方案
本机在iis上运行.net 2.0项目时,报以下错误“请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”: 本机环境配置: 安装有以下几个.net 版本:v1.0.3705,v1.1.4322 ...
- 【DSP开发】【计算机视觉】EMCV:可在DSP上运行的OpenCV
EMCV:可在DSP上运行的OpenCV EMCV项目主页: http://sf.net/projects/emcv EMCV全称为Embedded Computer Vision Library,是 ...
随机推荐
- Java中1000==1000为false而100==100为true
public static void main(String[] args) { int z1 = 0; int z2 = 0; System.out.println(z1==z2);//TRUE I ...
- Map集合的遍历方式:
迭代器来遍历 : entrySet() ; keySet(); values(); eg.HashMap<String,String> map = new HashMap<Strin ...
- VC++2005下的ADO SQL语句(like,count,distinct)和操作(转)
http://blog.sina.com.cn/s/blog_56fd66a70100hxjf.html http://timke.blog.163.com/blog/#m=0 环境:MFC Dia ...
- 2014款Macbook Air安装单独X64 Win7系统
之所以写出来,是因为网上大多是用BootCamp安装双系统的,安装单独Win7的教程少之又少,然后大多数还写得不清不楚,所以折腾了一阵子.其实装好之后,还是觉得挺简单的. 我主要参考了两篇文章,链接如 ...
- 强大的内网劫持框架之MITMf
Mitmf 是一款用来进行中间人攻击的工具.它可以结合 beef 一起来使用,并利用 beef 强大的 hook 脚本来控制目标客户端.下面让我们一起看看如何在 Kali2.0上安装使用 Mitmf ...
- unity3d学习重点记录
本文主要是记录在学习unity3d中遇到的重点功能的实现,以及一些API的使用方法.以便在以后使用到的时候查找. 1,给一个UIButton添加执行的事件 // Use this for initia ...
- JavaScript内置对象
对象概述 JavaScript是一种基于对象的脚本语句,而不是面向对象的编程语言.对象就是客观世界存在的实体,具有属性和方法两方面特性. 访问对象的属性和方法的方式如下: 对象名.属性 对象名.方法名 ...
- Flex 三态复选框
在周末挤出了一点时间,写了一个三态复选框的组件,单独使用没有价值,不过集成到树之中可以很好的实现三态树,今天上午便把三态树组件也完成了,Flex自定义组件基本无所不能,此组件基于最新的Flex4.6( ...
- ceph--磁盘和rbd、rados性能测试工具和方法
我在物理机上创建了5台虚拟机,搭建了一个ceph集群,结构如图: 具体的安装步骤参考文档:http://docs.ceph.org.cn/start/ http://www.centoscn.com/ ...
- 循环链表Josephus问题(c,cpp)
问题描述: 设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m个的人出列,然后从出列的下一个人重新开始报数,数到第m个的人又出列,.......,如此反复直到所有的人出列为止. Joseph ...