一直用python manage.py方式跑项目代码,因涉及到http api接口,现需要用nginx+uwsgi代理访问...... 这个东西不弄不知道,一弄吓一跳;;崩溃的心都有啊........
版本:
nginx: 1.2.1
uwsgi: 1.9.20
django: 1.6.4
工程目录:/var/www/oms
工程APP目录: /var/www/oms/asset
uwsgi配置文件目录: /var/www/oms/uwsgi
1.工程目录放置正确,不然就无厘头事件各种有
/var/www/oms
//因采用ini配置文件,在配置文件中有一项chdir配置,在刚开始设置报错提示chdir权限拒绝,查了下,说没有执行权限,需要chmo -R +x,但是有那么点不好,就有人推荐放在/var/www、/home/xxx目录,那我就选择了放在/var/www,之前是放在/opt/www
2.配置uwsgi,采用ini配置文件
cat /var/www/oms/uwsgi/uwsgi.ini
[uwsgi]
chdir=/var/www/oms //工程目录
module=oms.wsgi:application //加载的wsgi模块,使用默认的
master=True //开启master process
pidfile=/var/run/oms.pid //pid文件位置
vacuum=True //服务器退出时自动清除通用文件和socket
max-requests=5000 //最大请求
daemonize=/opt/log/uwsgi/oms.log //后台运行日志输出位置
socket = :9090 //监听于全局9090端口,可以改为socket运行,比较快!~
上述配置好,就剩下nginx vhost配置文件了
3.配置nginx,代理uwsgi
cat /usr/local/nginx/conf/vhost/oms.conf
server
{
listen 10086;
server_name X.X.X.X;
location /static/ {
root /var/www/oms;
}
location / {
root /var/www/oms;
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
}
access_log /opt/log/nginx/oms.log;
}
启动nginx: /etc/init.d/nginx start ; 确保nginx无误
4. 启动uwsgi
cat /etc/init.d/uwsgi
#!/bin/bash
PID=/var/run/oms.pid
LOG=/opt/log/uwsgi
CONF=/var/www/oms/uwsgi/uwsgi.ini
case "$1" in
start)
echo "Starting uwsgi"
uwsgi --ini $CONF --uid 501 &> /dev/null
;;
stop)
echo "Stopping uwsgi"
killall -QUIT uwsgi &> /dev/null
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "usage: $0 {start|stop|restart}"
esac
exit 0
/etc/init.d/uwsgi start
cat /opt/log/uwsgi/oms.log,查看是否有错误
ps -ef | grep uwsgi, 是否启动成功
最后直接可以访问了,http://X.X.X.X:10086