环境:ubuntu 14.04 64bit + django 1.8.0 + nginx 1.80 + virtualenv + gunicorn
1.准备工作
安装nginx
这里安装的nginx1.80。
安装教程:http://www.jikexueyuan.com/course/1470_2.html?ss=1创建virtualenv
# mkdir ~/mysite.com/www.dataliu.com # cd ~/mysite.com/www.dataliu.com # virtualenv env # source ./env/bin/activate # pip install django==1.8 # pip install gunicorn # pip install MySQL-python #如果用到mysql的话 # pip install pillow #示例用得到
配置django项目为生产模式
这里厚颜无耻地推荐一下我的blog项目:
https://github.com/autoliuweijie/dataLiu.com# cd ~/mysite.com/www.dataliu.com # git clone git@github.com:autoliuweijie/dataLiu.com.git
clone完该django项目以后,需要对该项目进行一些修改,以适应生产环境;
1. 将setting.py里的DEBUG改为False 2. 设置setting.py里的ALLOWED_HOSTS = ['*',] 3. 添加静态文件目录,STATIC_ROOT = os.path.join(BASE_DIR, 'collected_static') 4. 收集静态文件# python manage.py collectstatic
这样该django项目要用到的静态文件就全部收集到collected_static目录下了。
2. 用gunicorn启动django
这一步用来实现the clint -> gunicorn -> django。
在8002端口监听:
#nohup gunicorn vmaig_blog.wsgi:application -b 127.0.0.1:8002 &
测试是否成功, 用如下命令看看有没有返回预期的html,如果有则表示成功。
#curl 127.0.0.1:8002
3. 用nginx创建虚拟主机
用nginx创建一个虚拟主机,实现如下代理功能:
对于静态文件: the clint -> nginx -> collected_static
对于django的内容: the clint -> nginx -> gunicorn -> django
配置nginx
# vim /usr/local/nginx/conf/nginx.conf
注意:有些版本的不是是用/usr/local/nginx/conf/nginx.conf,而是/etc/nginx/nginx.conf,可以用如下指令查看使用的是哪个nginx.conf
# nginx -t
添加如下虚拟主机设置
# liuweijie site
server {
listen 80;
server_name www.dataliu.com;
location /media {
alias /root/mysite.com/www.dataliu.com/dataLiu.com/collected_static/;
}
location /static {
alias /root/mysite.com/www.dataliu.com/dataLiu.com/collected_static/;
}
location / {
proxy_pass http://127.0.0.1:8002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
检查是否有配置错误,然后启动nginx
# nginx -t #检查错误
# nginx #启动
大功告成,可以在浏览器访问www.dataliu.com界面了。
4.其他
常用到的指令
查看在8002端口的进程 #lsof -i:8002 关闭进程 #kill -9 进程id 关闭ngix #nginx -s stop 重启nginx #nginx -s reload
参考文章
1.gunicorn+gnix:http://www.cnblogs.com/tk091/p/3859514.html
2.自强学堂:http://www.ziqiangxuetang.com/django/django-nginx-deploy.html
3.django官方部署教程:https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/gunicorn/