在網(wǎng)上搜索了一下發(fā)現(xiàn)有些方法因?yàn)榘姹具^時的原因已經(jīng)不適用了,在這簡單記錄一下我自己的部署過程。
騰訊云服務(wù)器 Ubuntu 16.04 LTS
初學(xué)web開發(fā)不久,如果有錯誤的地方請各位聚聚指正
1) 安裝 nginx
首先安裝nginx,在ubuntu終端執(zhí)行:
ubuntu@VM-252-231-ubuntu:~$ sudo apt install nginx
安裝成功后,訪問云服務(wù)器域名或者ip應(yīng)該就會出現(xiàn)nginx的默認(rèn)頁面了。
2) 安裝 uwsgi
如果要使用虛擬環(huán)境,假設(shè)你的虛擬環(huán)境目錄在項(xiàng)目文件夾下面,并且各個需要安裝的包都已經(jīng)安裝好了,名字為venv:
首先安裝 python-dev
ubuntu@VM-252-231-ubuntu:~$ sudo apt install python-dev
然后激活虛擬環(huán)境:
ubuntu@VM-252-231-ubuntu:~$ source venv/bin/activate```
我這里的項(xiàng)目名字是 N ,虛擬環(huán)境激活后就可以開始安裝uwsgi了
針對pip安裝速度慢的問題,可以加上 -i 參數(shù),指定使用國內(nèi)的豆瓣鏡像
`(venv) ubuntu@VM-252-231-ubuntu:~/N$ pip install uwsgi -i https://pypi.douban.com/simple`
##### 3) 配置 uwsgi
安裝好以后就可以開始配置uwsgi了,我的 uwsgi 配置文件放在了 項(xiàng)目文件夾下面,這里把配置內(nèi)容貼上來:
[uwsgi]
master = true
home = venv
Flask 應(yīng)用實(shí)例所在的模塊
wsgi-file = manage.py
Flask 應(yīng)用實(shí)例的名字
callable = app
socket = 127.0.0.1:5000
stats = 127.0.0.1:9191
根據(jù)你系統(tǒng) CPU 的核心數(shù)決定
processes = 4
threads = 4
buffer-size = 32768```
我的配置文件的名字就是uwsgi.ini,啟動uwsgi的命令為:
(venv) ubuntu@VM-252-231-ubuntu:~/N$ uwsgi uwsgi.ini
啟動成功會出現(xiàn)提示信息:
*** Operational MODE: preforking+threaded ***
WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x154fed0 pid: 3423 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 3423)
spawned uWSGI worker 1 (pid: 3428, cores: 4)
spawned uWSGI worker 2 (pid: 3429, cores: 4)
spawned uWSGI worker 3 (pid: 3430, cores: 4)
spawned uWSGI worker 4 (pid: 3431, cores: 4)
*** Stats server enabled on 0.0.0.0:9191 fd: 15 ***```
###### 注: 如果關(guān)閉了終端窗口后需要手動停止后臺運(yùn)行的 uwsgi 的話,可以使用下面的方法
先找到 uwsgi 主進(jìn)程的 id :
`buntu@VM-252-231-ubuntu:~$ N ps -ef | grep uwsgi`
根據(jù)返回的信息可以看到這里主進(jìn)程的 id 為 119911
tete 119911 117227 8 12:01 pts/20 00:00:01 uwsgi uwsgi.ini
tete 119916 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
tete 119917 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
tete 119918 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
tete 119922 119911 0 12:01 pts/20 00:00:00 uwsgi uwsgi.ini
tete 119987 119933 0 12:01 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn uwsgi```
給這個進(jìn)程發(fā)送 SIGQUIT 就可以關(guān)閉 uwsgi 了:
buntu@VM-252-231-ubuntu:~$ kill -s SIGQUIT 119911
4) 配置 nginx
現(xiàn)在uwsgi這個 Web Server 已經(jīng)啟動起來了,接下來設(shè)置 nginx 。最簡單的辦法就是直接編輯 /etc/nginx/sites-enabled/default 這個文件,刪除里面所有內(nèi)容,替換成下面的內(nèi)容:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /path/to/your/project;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
uwsgi_pass 127.0.0.1:5000;
include uwsgi_params;
}
}```
服務(wù)靜態(tài)文件這個暫時不討論了,重新載入配置,就成功了
`ubuntu@VM-252-231-ubuntu:~$ sudo /etc/init.d/nginx reload`