本文假设你已经在CentOS下使用Python manage.py runserver 0.0.0.0:8080,能够顺利跑起来,并且被外网访问到了。项目名假设为:blog_project
安装nginx
yum -y install nginx
如果安装不了或者找不到nginx的源,则手动添加文件:/etc/yum.repos.d/nginx.repo
在里面填入:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
然后再执行一次
yum -y install nginx
配置成开机启动,并手动启动nginx服务:
chkconfig nginx on
service nginx start
打开80端口
假如80端口没有打开,需要打开80端口
centos开启80端口
1、开启80端口命令:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
2、保存配置 命令:/etc/rc.d/init.d/iptables save
3、重启服务命令 :/etc/rc.d/init.d/iptables restart
4、查看已经开放的端口: /etc/init.d/iptables status
使用浏览器访问下,看下能不能出现nginx的欢迎页。若能成功访问,则进入下面的过程。
安装gunicorn
pip install gunicorn
在项目文件夹下新建nginx的配置文件nginx.conf
server{
listen 80;
resolver 8.8.8.8;
access_log /home/webroot/www/public/blog_project/nginx.access.log;
error_log /home/webroot/www/public/blog_project/nginx.error.log;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
若涉及到静态文件和上传文件夹,在server节点下,增加如下节点。路径名要改成你自己的目录地址
location /media {
alias /root/mysite.com/media/;
}
location /static {
alias /root/mysite.com/static/;
}
将其链接到 /etc/nginx/conf.d/blog_project.conf (需要root帐号权限或者sudo)
sudo ln -s /home/shawn/blog_project/nginx.conf /etc/nginx/conf.d/blog_project.conf
注意:此处也有朋友使用的是将/etc/nginx/sites-available/default文件,修改成如上步骤的配置。
这里作用是一样的。后来我部署新的服务器,就是用的这个方法。
同时,必须把nginx.conf里server_name后面的内容(localhost)加入到 settings.py里的ALLOWED_HOSTS,或者用*代替
ALLOWED_HOSTS = ['*']
确认源代码目录文件权限
最后一点,确认源代码文件夹的访问权限,最后一步在把所有文件的权限设置为777。nginx运行的时候,是在nginx.conf中配置的用户来运行的,不是你当前登录的用户,权限也会导致比较诡异的问题。这个最后一步要格外注意下。
运行
先将nginx restart一下:
service nginx restart
运行如下命令后,使用浏览器看看吧
nohup gunicorn blog_project.wsgi:application -b 127.0.0.1:8080 >gunicorn_out.log &
开机启动
gunicorn运行,需要加入到开机启动中:
并且加入到开机启动相关的 /etc/rc.local
中,
在exit 0的前面填入:
nohup /root/.virtualenvs/django/bin/gunicorn --chdir /var/ftp_root/web/scrapy_smzdm_web scrapy_smzdm_web.wsgi:application -b 127.0.0.1:8080>gunicorn_out.log &
其中gunicorn,一定要把目录也要跟上,否则系统找不到目录。一般目录时位于项目所用虚拟目录的bin下。我这里是:/root/.virtualenvs/django/bin/gunicorn
--chdir /var/ftp_root/web/scrapy_smzdm_web 意思是切换到项目所在的目录
关于部署的流程这篇文章讲的也比较详细,请参考:
http://blog.csdn.net/autoliuweijie/article/details/50286463
关于配置服务器的整个流程,这篇文章写的相当详细,不过是基于Ubuntu的,从0开始配置:
http://zmrenwu.com/post/20/
本文配置文件参考
http://blog.csdn.net/zhu_free/article/details/50522868