先说一下个人的部署环境,分别部署过两次(ubuntu13.04+apache2+django1.4.5和ubuntu12.04+apache2+django1.4.5)
介绍一下背景,django站点已经开发完毕,只需要部署
为了叙述得清楚点,所以从安装环境开始介绍
首先安装apache2和wsgi
sudo apt-get install apache2 libapache2-mod-wsgi
1、使用apt-get直接安装
sudo apt-get install python-django
首先安装所需的setuptools
sudo apt-get install python-setuptools
解压,并安装
tar zxvf Djangoxxxx cd Djangoxxxxx sudo python setup.py install完成安装后,先进入将Django工程拷入apache目录下
sudo cp webserver/ /var/www
更改一下webserver的权限,这一步一定注意,我就被权限问题坑了两天,最后才发现时工程目录的权限问题
sudo chmod -R 755 webserver
由于开发时是用的django1.4.5因此已经自带wsgi文件,工程目录下叫做django.wsgi
直接用它即可
为了后面的方便,在DNS缓存/etc/hosts中加入下面一行
www.example.com 127.0.0.1
然后采用虚拟站点的方式进行配置
进入/etc/apache2/site-availble
创建虚拟站点文件myweb,并配置,输入以下内容(关于静态文件的处理写了下注释)
也可以直接把下面的内容覆盖到default,如果这样就不用去改hosts了
<VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/webserver Alias /static/ /var/www/webserver/static/ #用来解决css/js/img等静态文件的问题,css.js.img均存在webserver/static下 <Directory /var/www/webserver/static/> Order deny,allow Allow from all </Directory> WSGIScriptAlias / /var/www/webserver/django.wsgi <Directory /var/www/webserver> Order allow,deny Allow from all </Directory> </VirtualHost>用a2ensite使虚拟主机生效
sudo a2ensite myweb
让apache2重新加载一下
sudo service apache2 reload
打开浏览器,输入www.example.com(如果直接覆盖的default则输入127.0.0.1),一切运行正常
但仍然存在一个问题,Django的admin模块的静态文件失效,下面解决这个问题,进入工程目录webserver,输入collectstatic命令,导出静态文件
python manage.py collectstatic把导出的css js img整理到static文件夹下对应的文件夹里即可
再重新加载一下apache2,打开浏览器,一切正常!