ubuntu下django和apache的部署

1,环境

os:                  ubuntu14.04 x64
python:          2.7.6
apache:         2.4
django:          1.8.7
mysql:            5.6

2,安装组件

django安装:sudo pip install Django==1.8.7
apache安装:sudo aptitude install apache2
mysql安装:sudo aptitude install mysql-server-5.6
wsgi安装: sudo aptitude install libapache2-mod-wsgi
python mysql库:sudo aptitude install python-mysqldb

3,创建一个django工程:

工程创建及DB配置详见各大django教程

4,创建工程里的wsgi文件

假设你创建的工程叫rush
那么在rush这个工程下可能会存在这些目录
manage.py  rush  rush_app  static  static_root  templates
manage.py  rush这两个目录是自动生成的
那么就在自动生成的rush目录里创建一个名为wsi_apache.py的文件
其代码如下:
import os
import sys
HERE_PATH_ABS = os.path.dirname(os.path.abspath(__file__))
sys.path.append('%s/../' % HERE_PATH_ABS)
os.environ['DJANGO_SETTINGS_MODULE'] = 'rush.settings'
#import django.core.handlers.wsgi                          below django1.6
#application = django.core.handlers.wsgi.WSGIHandler()
from django.core.wsgi import get_wsgi_application         #upper django1.7
application = get_wsgi_application()
最后四行如注释所言,django版本低于1.6的开启上面两行,高于1.7的开启下面两行

5,配置apache

1,修改 /etc/apache2/apache2.conf
注释156行追加157行
153<Directory />
154         Options FollowSymLinks
155         AllowOverride None
156         #Require all denied
157         Allow from all
158 </Directory>
不这么干就访问不了站点

2,将工程拷贝到你喜欢的路径,比如将rush这个工程cp到/opt下

3,启动一个你喜欢的访问网站的端口号:
修改/etc/apache2/ports.conf
Listen 80
Listen 8080

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
默认开启了80,你可以如上追加8080端口监听

4,创建站点
进入/etc/apache2/sites-available目录
新建一个文件名为rush.conf的文件
<VirtualHost *:8080>
    #ServerName hello.djangoserver
    DocumentRoot /opt/rush
    <Directory /opt/rush>
        Order allow,deny
        Allow from all
    </Directory>
    WSGIScriptAlias / /opt/rush/rush/wsgi_apache.py
    Alias /static /opt/rush/static
</VirtualHost>
如上创建一个站点,里面的路径根据实际情况修改

重要:
WSGIScriptAlias / /opt/rush/rush/wsgi_apache.py
这句话就是当访问站点接口时将路径是"/" 的请求转发给/opt/rush/rush/wsgi_apache.py,这个文件就是刚刚我们创建的
Alias /static /opt/rush/static
这句话是将静态文件的访问路径,django明确指出不建议用django来处理静态资源,所以使用apache来接管静态资源分发

配置完成后在/etc/apache2/sites-available目录下使用命令
sudo a2ensite mysite
sudo service apache2 reload
sudo service apache2 restart
就完事了

5,简单讲解

如上例子,当访问了某个接口,如http://127.0.0.1:8080/index,那么apache会把这个请求丢给/opt/rush/rush/wsgi_apache.py,假设你的index接口会返回一个html,而这个页面里面有个css文件如/static/css/page.css,那么浏览器再次请求这个css文件,而这个Alias /static /opt/rush/static就起作用了,apache把这个来自/static请求映射到/opt/rush/static下,不再走django来处理了,完成了整个页面访问





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值