在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意。

1、首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依赖要报错。这是第一个坑。

apt-get install python python-dev pip

2、安装uwsgi要先安装gcc的编译环境。这是第二个坑。如果不安装gcc运行uwsgi也不会报错,后台进程就是不启动。

我被这个坑了很久。

apt-get install gcc

3、找一个目录,上传你Django程序。我习惯打成zip上传,那么服务器上再安装一个unzip

apt-get install unzip

4、在Django项目目录下安装依赖。

pip install -r XXX.txt

5、安装uwsgi

pip install uwsgi

6、在项目目录下新建一个uwsgi.ini文件,写入以下代码。

[uwsgi]

socket=外网ip:端口(使用nginx连接时,使用socket)

http=外网ip:端口(直接做web服务器,使用http)

chdir=项目根目录

wsgi-file=项目中wsgi.py文件的目录,相对于项目根目录

processes=4

threads=2

master=True

pidfile=uwsgi.pid

daemonize=uswgi.log

7、测试时注释掉socket,用http方式能否运行Django成功。如果不能,那么很可能是你程序上有问题,要调试成功后才开始配置nginx。否则到时候报错,你不知道到底是哪个环节出了问题。

启动:uwsgi --ini uwsgi.ini

停止:uwsgi --stop uwsgi.pid

重启:uwsgi --reload uwsgi.pid

8、uwsgi通过http配置成功后,就开始安装nginx。

apt-get install nginx

9、这种方式安装好nginx后,一般情况下进入/etc/nginx/sites-available编辑,修改以下代码为你网站的相关信息。

server_name localhost blog.com; #在这里配置你的域名或是IP访问地址。

location / {

uwsgi_pass 127.0.0.1:8000;

include /etc/nginx/uwsgi_params;

}

location /media {

alias /home/media; #你的项目media静态文件目录。

}

location /static {

alias /home/static; #你的项目static静态文件目录。

}

10、配置后nginx,那么要修改uwsgi.ini文件,协议使用stock方式,注释掉http。

service nginx start

对外暴露访问端口

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

11、到这里大功告成!!后续优化:

A. 其实每次重启服务器还要运行nginx和uwsgi的启动命令挺麻烦,我们可以写一个sh脚本。比如start.sh,代码如下:

uwsgi --ini /home/uwsgi.ini #你的配置文件绝对路径。

service nginx start

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

B. vim etc/rc.local 文件写入以下代码。

sudo sh /home/start.sh #你的脚本绝对路径。

这样每次重启服务器,网站就自动运行了。呵呵。

本文来自:http://herostore.cn/article/11/