Django部署

2018-04-16  本文已影响47人  yzbwork

环境: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
上一篇下一篇

猜你喜欢

热点阅读