django+nginx+uwsgi的生产环境部署(Ubuntu16.04)

一,准备工作:

代码一定要能本地跑起来!

各种基础包的安装略默认已经安装python3,nginx,uwsgi等基础依赖,注意版本问题。

本地setting.py文件修改如下(改为生产模式,把debug关闭,添加host和静态文件地址):

 项目目录内随便什么地方新建一个uwsgi.ini配置文件:

# dongpouu_uwsgi.ini file
[uwsgi]

# Django-related settings

socket = :8000
#真实服务的端口

# Django项目根目录 (绝对路径)
chdir           = /home/dongpouu

# wsgi.py文件在项目中的位置
module          = dongpouu.wsgi

# process-related settings
# master
master          = true

# 运行的进程数
processes       = 1

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

然后打一个zip包,通过ftp上传到服务器,注意上传路径要与uwsgi.ini内的地址一致:

然后在项目根目录,运行一条命令来收集静态文件(因为在生产模式下,django不会再自动管理静态路径。后面会通过配置交给nginx来管理):

python3 manager.py collectstatic

配置nginx。在/etc/nginx/目录下,找到nginx.conf文件,用vim打开它,然后在http{ }内部加入下面内容。这不是唯一的配置方式,其他的也试过很多坑,最终这一种成功!、

server {
        #这里是nginx用到的端口,注意不要与django的搞混了,所有配置里边只有这个端口是与其他地方不一样的!!!
        listen       80;
        server_name  dongpouu.com;

        charset UTF-8;
        #这块存让日志文件
        access_log  /var/log/nginx/dongpouu_access.log;
        error_log   /var/log/nginx/dongpouu_error.log;

        location /static/ {
            autoindex on;
            alias /home/dongpouu/static/; #这里按照自己的实际情况来,包括下面的
        }

        location /media/ {
            autoindex on;
            alias /home/dongpouu/media/;#这里按照自己的实际情况来,包括下面的
    } 
    client_max_body_size 75M;
    location
/ {
      include uwsgi_params;
#同uwsgi内容
      uwsgi_pass 127.0.0.1:8000; #链接超时时间
      uwsgi_read_timeout 30; }
}

最后三条命令,部署生效(失败的自己排查肯定是配置问题):

killall -9 uwsgi # 杀死正在运行的uwsgi服务
uwsgi --ini dongpouu_uwsgi.ini # 注意要cd到该文件对应目录下,这条命令成功代表django项目顺利跑起来了!

service nginx reload # 重新加载nginx

最后访问www.dongpouu.com(你自己的网址,或者直接访问服务器的公网IP)看效果。

猜你喜欢

转载自www.cnblogs.com/thinheader/p/9363417.html
今日推荐