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