阿里雲部署Flask+Nginx+gunicorn實現外網訪問


一、購買雲服務器ECS

https://promotion.aliyun.com/ntms/act/campus2018.html?spm=5176.8789780.7y9jhqsfz.78.249255caHyINh9&aly_as=7OJ4QMucX

9.5元一個月真香
操作系統選Ubuntu

二、服務器配置

遠程連接推薦用阿里雲自帶的,用putty的話后面gunicorn連接的時候老是有蜜汁錯誤
然后添加新用戶,改python3,升級pip,改pip源啥的就不具體說了

三、添加Flask工程

main.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run()

requirements.txt

click==7.1.1
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.1
MarkupSafe==1.1.1
Werkzeug==1.0.1

目錄結構:

                          - main.py
/home/xxx/code/helloflask - 
                          - requirements.txt

四、創建虛擬環境

pip install virtualenv
cd /home/xxx/code/helloflask
virtualenv venv

這樣就在helloflask文件夾下創建了叫venv的虛擬環境
進入虛擬環境:
source venv/bin/activate

五、安裝依賴

pip install -r requirements.txt

六、運行一下看看

python main.py

正常運行,安心退出程序

七、gunicorn

pip install gunicorn

然后就能用gunicorn運行程序了:

gunicorn -w worker數量 -b ip:端口號 運行文件名:flask實例名
例:
gunicorn -w 3 -b 127.0.0.1:5000 main:app

八、外網訪問

在阿里雲服務器管理控制台中,左邊那一欄中找到網絡與安全-安全組

添加安全組規則:
https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.25b84df5shveJP#allowHttp

改這三個地方就行
建議開放80端口和任何你想開放的端口
80端口是HTTP端口
訪問xxx.xxx.xxx.xxx:80 = 訪問http://xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx是公網ip)

然后在終端中

gunicorn -w 3 -b 0.0.0.0:8080 main:app

這樣就能在外網訪問xxx.xxx.xxx.xxx:8080了
其他端口同理

九、Nginx

sudo apt-get install nginx
sudo rm /etc/nginx/sites-available/default
sudo vim /etc/nginx/sites-available/default

然后輸入

server {
    listen 80;
    server_name xxx.xxx.xxx.xxx;    # 公網ip

    location /{
        proxy_pass http://127.0.0.1:5000; }
}

保存退出
:wq

這樣當執行

gunicorn -w 3 -b 127.0.0.1:5000 main:app

的時候,也能通過訪問xxx.xxx.xxx.xxx來訪問網站

十、綁定域名

買了域名后,域名解析下就行
域名解析中記錄值填公網ip
接着訪問域名就跟訪問公網ip效果一樣了
接着就會發現沒有備案不讓你訪問啦
接着就是漫長的等備案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM