[TOC]
Ubuntu下nginx+uwsgi部署Django項(xiàng)目
項(xiàng)目環(huán)境
ubuntu 18.04
django 2.1.7
Python 3.6.6
一、安裝uwsgi,及配置
- Xshell連接遠(yuǎn)程服務(wù)器,進(jìn)入虛擬環(huán)境,輸入命令
pip install uwsgi
或者通過pycharm安裝也可以,打開settings選項(xiàng)卡
通過pycharm安裝
- 在項(xiàng)目目錄下創(chuàng)建配置文件 wang_blog/uwsgi.ini
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx連接時(shí)使用,和我一樣就行
# socket = 127.0.0.1:8000
# 項(xiàng)目的絕對(duì)路徑,在命令行輸入pwd查看
chdir = /home/pyvip/wang
# 直接做web服務(wù)器使用,寫你自己的服務(wù)器ip地址
http = 192.168.159.128:8000
# 項(xiàng)目名.wsgi
module = lublog.wsgi
# settings文件所在路徑
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定啟動(dòng)的工作的進(jìn)程數(shù)
processes = 4
# 指定工作進(jìn)程中的線程數(shù)
threads = 2
#monitor uwsgi status 通過該端口可以監(jiān)控 uwsgi 的負(fù)載情況
stats = 127.0.0.1:9191
# 后臺(tái)運(yùn)行,并輸出日志
daemonize = /var/log/uwsgi.log
# 設(shè)置虛擬環(huán)境路徑
virtualenv = /home/pyvip/.virtualenvs/my_blog/
請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!
請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!
請(qǐng)反復(fù)確認(rèn)路徑是否正確,ip地址是否正確?。?!
- 進(jìn)入項(xiàng)目目錄,使用uwsgi命令啟動(dòng)項(xiàng)目
注:uwsgi.ini一定要在項(xiàng)目目錄下
(wang) pyvip@VIP:~$ cd /home/pyvip/wang
(wang) pyvip@VIP:~/wang$ ls
db.sqlite3 manage.py my_blog static templates uwsgi.ini wang
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini
看到下面開啟了4個(gè)進(jìn)程就成功了,根據(jù)配置不同,顯示的進(jìn)程數(shù)也不同
(wang) pyvip@VIP:~$ ps aux | grep uwsgi
laowang 483 0.0 0.1 14428 1072 pts/0 S+ 12:31 0:00 grep --color=auto uwsgi
laowang 29873 0.3 6.2 189196 59272 ? S 12:28 0:00 uwsgi --ini uwsgi.ini
laowang 29895 0.0 5.3 262928 50592 ? Sl 12:28 0:00 uwsgi --ini uwsgi.ini
laowang 29897 0.0 5.3 262928 50592 ? Sl 12:28 0:00 uwsgi --ini uwsgi.ini
laowang 29899 0.1 6.3 273896 59836 ? Sl 12:28 0:00 uwsgi --ini uwsgi.ini
laowang 29900 0.0 6.2 273896 59260 ? Sl 12:28 0:00 uwsgi --ini uwsgi.ini
在瀏覽器輸入ip地址加端口號(hào),啟動(dòng)成功?。?!
這個(gè)時(shí)候是沒有圖片顯示的,如果有就是你瀏覽器緩存沒清除,接下來配置nginx就可以顯示圖片了
- uwsgi停止命令
sudo pkill -f uwsgi -9
二、安裝nginx,及配置
- xshell 中輸入命令
sudo apt-get update
sudo apt-get install nginx
- 添加配置文件到項(xiàng)目目錄下,除了修改注釋的內(nèi)容,其他和我一樣就行
# /home/pyvip/wang/mysite_nginx.conf
server {
listen 80;
# 寫你的IP地址,或者域名 .xxxxx.com 都行;域名解析備案什么的不說了
server_name 192.168.159.128;
charset utf-8;
location /static {
# 寫你靜態(tài)文件的目錄
alias /home/pyvip/wang/static;
}
location / {
uwsgi_pass 127.0.0.1:8000;
include /etc/nginx/uwsgi_params;
}
}
- 在 /etc/nginx/sites-enabled 目錄下創(chuàng)建本文件的連接,使nginx能夠使用它:
(wang) pyvip@VIP:~/wang$ sudo ln -s /home/pyvip/wang/mysite_nginx.conf /etc/nginx/sites-enabled/
(wang) pyvip@VIP:~/wang$ ls /etc/nginx/sites-enabled/
default mysite_nginx.conf
- 修改uwsgi.ini,啟動(dòng)socket,關(guān)閉http
# wang_blog/uwsgi.ini
[uwsgi]
# 使用nginx連接時(shí)使用
socket = 127.0.0.1:8000
# 項(xiàng)目的絕對(duì)路徑,在命令行輸入pwd查看
chdir = /home/pyvip/wang
# 直接做web服務(wù)器使用
# http = 192.168.159.128:8000
# 項(xiàng)目名.wsgi
module = wang.wsgi
# settings文件所在路徑
wsgi-file = /home/pyvip/wang/wang/wsgi.py
# 不用修改
master = true
# 指定啟動(dòng)的工作的進(jìn)程數(shù)
processes = 4
# 指定工作進(jìn)程中的線程數(shù)
threads = 2
# 設(shè)置虛擬環(huán)境路徑
virtualenv = /home/pyvip/.virtualenvs/my_blog/
- 修改項(xiàng)目settings文件,和我一樣
DEBUG = False
ALLOWED_HOSTS = ['*']
# 這個(gè)文件路徑原來配置過就不用配置了,或者用我這個(gè),把你的注釋掉
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
- 在項(xiàng)目文件夾下輸入命令
python manage.py collectstatic,以保證靜態(tài)文件都在static下,如果后面圖片顯示不正確,可能就是沒輸入此命令 - 檢測(cè)nginx配置是否出錯(cuò),然后重啟nginx,如果報(bào)錯(cuò)請(qǐng)看文末
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ sudo service nginx restart
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ ps aux | grep nginx
root 3510 0.0 0.0 140628 1532 ? Ss 09:11 0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
www-data 3511 0.0 0.3 143332 6168 ? S 09:11 0:00 nginx: worker process
www-data 3512 0.0 0.3 143332 6168 ? S 09:11 0:00 nginx: worker process
pyvip 3514 0.0 0.0 21536 1004 pts/0 S+ 09:11 0:00 grep --color=auto nginx
配置成功,重啟成功
三、啟動(dòng)uwsgi,訪問域名或ip地址
- 進(jìn)入項(xiàng)目目錄,命令行輸入啟動(dòng)命令
(wang) pyvip@VIP:/etc/nginx/sites-enabled$ cd /home/pyvip/wang/
(wang) pyvip@VIP:~/wang$ uwsgi --ini uwsgi.ini
[uWSGI] getting INI configuration from uwsgi.ini
- 訪問ip
注:不需要輸入端口號(hào)
成功!圖片也可以加載了,到此部署就完成了。
寫在最后:
- 作者踩過的坑,nginx報(bào)錯(cuò)
(wang) pyvip@VIP:/etc/init.d$ sudo nginx -t
nginx: [emerg] open() "/etc/nginx/sites-enabled/mysite_nginx.conf" failed (2: No such file or directory) in /etc/nginx/nginx.conf:62
nginx: configuration file /etc/nginx/nginx.conf test failed
sudo nginx -t 失敗可能是配置出錯(cuò),確認(rèn)mysite_nginx.conf配置無問題,再檢查 /etc/nginx/sites-enabled/ 下的配置文件和項(xiàng)目目錄下的配置文件是否一致,藍(lán)色文件名則說明是一致的。

作者原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!我的博客地址 www.bloglu.cn 專注技術(shù)文章,風(fēng)景美圖,學(xué)習(xí)資源分享。
如果本文對(duì)你有幫助,點(diǎn)個(gè)贊支持一下作者吧!有任何問題歡迎下方留言。
