簡單的方法部署Flask + uwsgi + nginx到ubuntu 16.04服務(wù)器

在網(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`
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容