您的位置:首页 > 运维架构 > Nginx

Nginx + uwsgi + Django 简单上线配置

2017-06-12 18:23 981 查看
先放上我线上部署结果:

http://47.94.4.96:8080

所有的注释自己手动删除,我忘了具体哪个是哪个的注释方法

没用过这种高级玩意,折腾好一阵子了,可算基本能用了.记录一下~

参考资料:http://code.ziqiangxuetang.com/django/django-nginx-deploy.html  自强学堂

线上环境

Ubuntu Python 2.7 Django 1.8  nginx 1.10.0, uWSGI 2.0.15  supervisord 3.3.2

目录结构(为什么好多人的教程不告诉我目录结构新手不懂啊- -)

假设有

/home/xxx/.../myblog

   myblog

    |__blog

        |__static

        |__media

    |

    |__mysite

    |
    |__uwsgi.ini

(不带后缀的是文件夹)

uWSGI部分

uwsgi.ini

[uwsgi]
socket = 127.0.0.1:28080    #这个地方和下面的那个地方一样的!!!这个端口就是写28080不是8080,可以随便写可用的端口号
chdir = /home/xxx/.../myblog
wsgi-file = /home/xxx/.../myblog/mysite/wsgi.py
touch-reload = /home/xxx/.../myblog/reload    #自己touch一个就行


//可以用这个先测试下项目是否能运行
uwsgi --http :8080 --chdir /home/xxx/.../myblog/blog --wsgi-file  /home/xxx/.../myblog/mysite/wsgi.py

在浏览器中输入地址  IP:8080 能运行就是项目没有问题

最终
创建一个supervisord.conf文件echo_supervisord_conf \> ~/supervisord.conf
并在最后添加如下
[program:blog]
;uWSGI不知道用which uWSGI查看试试
command=/uWSGI的安装地址/uwsgi --ini /home/xxx/.../myblog/uwsgi.ini ;指定ini的地址
directory=/home/xxx/.../myblog ;工程目录
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
使用如下命令启动
supervisord -c ~/supervisord.conf


nginx部分

在自己的xxx/nginx/sites-available/下, 创建myblog.conf

地址举例: /etc/nginx/sites-available/mybog.conf

server{
listen 8080;
server_name 192.168.0.1;#这个地方可以是自己的ip也可以是www.xxxx.com
charset utf-8;

client_max_body_size 75M;

location /media {
alias  /home/xxx/.../myblog/blog/media;
}

location /static {
alias /home/xxx/.../myblog/blog/static;
}

location / {
uwsgi_pass 127.0.0.1:28080;   #这个地方和上面的一样的!!!
include /etc/nginx/uwsgi_params;
}
}
将sites-available/myblog.conf 软连接到 sites-enable/myblog.conf

如:ln -s /etc/nginx/sites-available/mmyblog.conf /etc/nginx/sites-enable/myblog.conf

执行nginx -t 出来如下成功

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果不成功在不修改默认log的情况下

nginx的log查看

查看nginx 默认log: /var/log/nginx/error.log

运行时候可以使用tail -100f /var/log/nginx/error.log进行查看

网页浏览时,无法打开static的内容(即error.log 中13: Permission denied 错误)

另外nginx默认用户为www-data,可能会导致权限不足,因为很有可能你是用root权限操作的

那么需要在 /etc/ngixn/nginx.conf 中的user www-data改成root,或者其他有权限操作的用户
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django python