网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意。
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 #你的脚本绝对路径。
这样每次重启服务器,网站就自动运行了。呵呵。