环境: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