Ubuntu+Flask+uwsig+supervisor+Nginx

新弄了一臺(tái)阿里云的主機(jī),于是琢磨這把原有的一個(gè)Flask寫項(xiàng)目遷移過(guò)來(lái),下面總結(jié)下部署的步驟。

一,購(gòu)買服務(wù)器

阿里云上購(gòu)買一臺(tái)Ubuntu系統(tǒng)的主機(jī),獲得一個(gè)外網(wǎng)ip,本機(jī)ssh連接到主機(jī)

  • ping 外網(wǎng)ip 提示 Request timeout
1. 進(jìn)入阿里云后臺(tái)配置安全組規(guī)則
2. 添加協(xié)議 ICMP
  • ssh無(wú)法通過(guò)帳號(hào)root登錄
1.  cat /etc/ssh/sshd_config
2. 修改PasswordAuthentication no
3. 重啟/bin/systemctl restart sshd.service
二,安裝virtualenv

該臺(tái)服務(wù)器準(zhǔn)備用于部署多個(gè)應(yīng)用,需要各自擁有一套獨(dú)立的Python運(yùn)行環(huán)境,對(duì)每個(gè)應(yīng)用的Python環(huán)境進(jìn)行隔離

sudo pip install virtualenv
三,創(chuàng)建Flask項(xiàng)目應(yīng)用

項(xiàng)目目錄一般放在/home文件夾下。創(chuàng)建一個(gè)yys_server的項(xiàng)目,同時(shí)始化項(xiàng)目虛擬環(huán)境

mkdir /home/yys_server
virtualenv venv
. venv/bin/activate

使用git clone上傳應(yīng)用程序到服務(wù)器中,并安裝項(xiàng)目依賴

git clone http://url/of/you/git/repo
pip install -r requirements.txt

其中我的項(xiàng)目代碼

from flask_script import Manager
from app.api import api
import os
manager = Manager(api)
@manager.command
def runserver():
    port = int(os.environ.get('PORT', 33333))
    api.run(host='0.0.0.0', port=port)
if __name__ == "__main__":
    manager.run()

執(zhí)行python manage.py runserver,在瀏覽器輸入公網(wǎng)ip地址,加端口號(hào)33333即可成功訪問(wèn)。

四,安裝 uwsgi服務(wù)器

由于Flask自帶的wsgi性能低下,生產(chǎn)環(huán)境中使用uwsgi作為服務(wù)器

# 安裝uwsgi
sudo pip install uwsgi
# 新建配置文件`/home/yys_server/uwsgi.ini`
[uwsgi]
wsgi-file = manage.py
module = runserver
callable = api
master = true
processes = 3
chdir = /home/yys_server
socket = /var/sock/yys.sock
chmod-socket = 666
vacuum = true
buffer-size = 232768
uid = www-data
gid = www-data
# 創(chuàng)建目錄,用于存放uwsgi啟動(dòng)后生成的sock文件,用來(lái)和Nginx 通信 
sudo mkdir /var/sock
# 根據(jù)uwsgi.ini配置修改文件夾的所有權(quán)
sudo chown -R www-data:www-data /var/sock

執(zhí)行uwsgi uwsgi.ini即可通過(guò)服務(wù)器訪問(wèn)應(yīng)用

五,安裝Supervisor

上面命令運(yùn)行uwsgi的方式,如果進(jìn)程異常退出后,服務(wù)就無(wú)法訪問(wèn),使用supervisor來(lái)管理進(jìn)程,對(duì)異常終端的服務(wù)進(jìn)行自動(dòng)重啟

apt-get install supervisor
/etc/supervisor/conf.d/*.conf

它的配置路徑在/etc/supervisord/supervisord.conf, 項(xiàng)目的配置文件在/etc/supervisor/conf.d目錄下,新建一個(gè)yys.conf文件

# /etc/supervisor/conf.d/yys.conf
[program:yys]
autorestart=True
autostart=True
redirect_stderr=True
;environment=PATH="/home/yys_server/venv"
;command=python manage.py runserver
command=uwsgi uwsgi.ini
user=www-data
directory=/home/yys_server/

配置后即可啟動(dòng)項(xiàng)目

service supervisor start
六,安裝Nginx作為反向代理
apt-get install nginx

項(xiàng)目nginx的配置文件在/etc/nginx/conf.d目錄下,新建一個(gè)yys.conf文件

server {
    listen      33333;
    server_name 120.79.81.232;
    charset     utf-8;
    client_max_body_size 75M;

    location / { try_files $uri @yys; }
    location @yys {
        include uwsgi_params;
        uwsgi_pass unix:/var/sock/yys.sock;
    }
}

配置表明Nginx會(huì)將收到的端口為33333的所有請(qǐng)求都轉(zhuǎn)發(fā)到uwsgi服務(wù)器上

# 重啟nginx服務(wù)器
service nginx restart

大功告成~~~

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

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

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