美文网首页
Django部署

Django部署

作者: yzbwork | 来源:发表于2018-04-16 17:47 被阅读47次

    环境:Ubuntu 16.04.4, Django 2.0.4, Python 3.6.1, Nginx 1.10.3, uWSGI 5.4.0

    为避免多个项目环境相互影响,部署在virtualenv下

    一、安装

    注意:建议先不要安装python-dev

    sudo apt-get install  nginx 
    sudo pip install virtualenv
    pip install virtualenvwrapper
    

    注意安装顺序。

    二、配置

    1、virtualenvwrapper相关配置

    安装virtualenvwrapper之后不能直接使用,需要配置路径,首先找到对应的virtualenvwrapper.sh文件的路径:

     find / -name virtualenvwrapper.sh
    

    路径为:/usr/local/bin/virtualenvwrapper.sh
    找到路径之后在/etc/profile中添加:

    export WORKON_HOME=/home/virtualenvs 
    source /usr/local/bin/virtualenvwrapper.sh
    

    保存之后:

    source /etc/profile
    

    接下来就可以使用相关命令来操作。

    2、uWSGI相关配置

    安装uWSGI在虚拟环境下安装,
    注意:如果python3环境下如果安装不上,在服务器上安装

    sudo apt-get install libpython3.6-dev  
    

    安装完之后,再在虚拟环境下安装uWSGI,之后运行的时候也需要在虚拟环境下运行
    在项目目录下新建uwsgi.ini

    [uwsgi]
    chdir=/home/sites/mysite/
    module=mysite.wsgi:application
    workers=5
    pidfile=/home/sites/mysite/script/uwsgi.pid
    http=0.0.0.0:8080
    static-map=/statics=/home/sites/mysite/statics
    
    uid=root
    gid=root
    
    master=true
    vacuum=true
    thunder-lock=true
    enable-threads=true
    harakiri=30
    post-buffering=4096
    daemonize=/home/sites/mysite/script/uwsgi.log
    socket=/home/sites/mysite/script/uwsgi.sock  # 要跟nginx里面的uwsgi_pass一样
    

    uwsgi部分常用命令:

    uwsgi --ini uwsgi.ini   # 启动uwsgi配置
    uwsgi --stop uwsgi.pid  # 关闭uwsgi
    uwsgi --reload uwsgi.pid  #重新加载配置
    
    3、Nginx相关配置

    创建一个name.conf配置文件(nginx的默认配置目录为/etc/nginx/conf.d)

    nano /etc/nginx/conf.d/xxx.conf
    

    配置文件信息如下:

    server {
        listen      80;
        server_name server_name;
        access_log  /var/log/nginx/access.log;  # Nginx日志配置
        error_log  /var/log/nginx/error.log;
        charset     utf-8;
        gzip on;  # 启用压缩
        gzip_types text/plain application/x-javascript text/css text/java$
        error_page  404           /404.html;  # 错误页面
        error_page   500 502 503 504  /50x.html;  # 错误页面
        client_max_body_size 75M;
        location / {
                include     uwsgi_params;
                uwsgi_connect_timeout 30;
                uwsgi_pass  unix:///home/sites/mysite/script/uwsgi.sock;
                }
        location /static/ {
                alias  静态文件路径;
                index 首页路径;
        }
    }
    

    检查nginx语法问题:

    nginx -t  
    

    正确的话会出现:

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    

    nginx部分常用命令:

    /etc/init.d/nginx start  #启动
    /etc/init.d/nginx stop  #关闭
    /etc/init.d/nginx restart  #重启
    
    killall nginx   
    /etc/init.d/nginx reload
    
    4、Django setting.py更改设置
    DEBUG = False
    STATIC_ROOT = os.path.join(BASE_DIR, 'statics')
    

    三、启动

    打开虚拟环境,cd到uwsgi.ini所在目录下,

    uwsgi --ini uwsgi.ini 
    /etc/init.d/nginx start
    

    正常的话,就可以访问网站了
    静态文件收集:cd到manage.py所在目录下,

    python manage.py collectstatic

    相关文章

      网友评论

          本文标题:Django部署

          本文链接:https://www.haomeiwen.com/subject/xhmekftx.html