你需要登錄雲伺服器管理控制台,記錄被我打馬賽克位置的公網ip。
登錄伺服器
windows推薦下putty進行連接遠程伺服器,linux和macos不需要那麼麻煩,ssl就行了。
putty
在下圖的host name中輸入你的公網IP,點擊open。
putty界面
輸入密碼,看不見輸入不要慌,linux就是這樣保護安全的。
Paste_Image.png
登錄成功界面見下圖,然後想怎麼操作就怎麼操作了。
登陸成功界面
運行我的python文件
推薦FileZilla進行文件傳輸(不具體說明了),我上傳了我的flask網站項目
我的項目
記住伺服器同時有Python2和Python3,
python
運行的時候記得使用合適的版本,我用的是虛擬環境(自行網路如何創建虛擬環境)
在運行python之前先安裝一個screen,他可以將一個程序在後台運行
sudo apt-get install screen
運行python文件,成功後按下ctrl+A和ctrl+D可以隱藏。隱藏後可以輸入screen -r 恢復。
運行成功
Ⅱ flask-socketio 怎麼部署到nginx
如題使用flask-socketio寫了一個簡單的基於websocket的聊天室,現在如果想要將其部署到nginx,配置文件應該怎麼寫? SegmentFault flask-
Ⅲ Python3+Gunicorn+Nginx 部署Flask項目
前言: 之前在本地測試項目的過程中一直使用python app.py的方式來啟動項目,這種方式在本地測試的話還可以,但是在生產環境的話就不能使用這種方式。
原因:
1.可能會出現無響應情況
2.無法支持高並發和多線程
3.無法合理利用伺服器資源
生產環境: Centos7、Python3
需要模塊: Gunicon、Nginx、Flask
一、安裝Gunicorn
Gunicorn是一個高效的Web伺服器,地位相當於Java中的Tomcat。簡單來說gunicorn封裝了HTTP的底層實現,我們通過gunicorn啟動服務,用戶請求與服務相應都經過gunicorn傳輸。
1.創建虛擬環境
項目上傳到伺服器指定目錄下,然後創建python3的虛擬環境,激活並進去虛擬環境,在虛擬環境下可以看到命令前有虛擬環境的名稱。(之前在使用Gunicorn模塊的過程中,沒有使用虛擬環境,導致我啟動項目有一直提示沒有找到gunicorn這個命令,可能是我在使用python全局環境的過程中,有某些模塊影響到這個gunicorn模塊,後面在使用虛擬環境就沒有出現這個問題。)
2.安裝項目所需的模塊
3.安裝gunicorn
二、項目配置啟動
1.創建一個簡易的web程序
2.啟動服務
4--啟動4個進程來分配服務
0.0.0.0--允許任意主機訪問
5000--啟動埠(與nginx轉發的埠一致)
app:目標文件
app:指定模塊
補充部分: gunicorn和nginx關系
gunicorn 可以單獨提供服務,但生產環境一般不這樣做。首先靜態資源(jscssimg)會佔用不少的請求資源,而對於 gunicorn 來講它本身更應該關注實際業務的請求與處理而不應該把資源浪費在靜態資源請求上;此外,單獨運行 gunicorn 是沒有辦法起多個進程多個埠來負載均衡的。
nginx 的作用就是彌補以上問題,首先作為前端伺服器它可以處理一切靜態文件請求,此時 gunicorn 作為後端伺服器,nginx 將會把動態請求轉發給後端伺服器,因此我們可以起多個 gunicorn 進程,然後讓 nginx 作均衡負載轉發請求給多個 gunicorn 進程從而提升伺服器處理效率與處理能力。最後,nginx 還可以配置很多安全相關、認證相關等很多處理,可以讓你的網站更專注業務的編寫,把一些轉發規則等其它業務無關的事情交給 nginx 做。
參考鏈接: https://www.jianshu.com/p/da28ec28ef4b
Ⅳ 阿里雲伺服器部署flask項目
當我們執行下面的hello.py時,使用的flask自帶的伺服器,完成了web服務的啟動。在生產環境中,flask自帶的伺服器,無法滿足性能要求,我們這里採用Gunicorn做wsgi容器,來部署flask程序。Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP伺服器。從Ruby的獨角獸(Unicorn )項目移植。該Gunicorn伺服器與各種Web框架兼容,實現非常簡單,輕量級的資源消耗。Gunicorn直接用命令啟動,不需要編寫配置文件,相對uWSGI要容易很多。
區分幾個概念 :
WSGI:全稱是Web Server Gateway Interface(web伺服器網關介面),它是一種規范,它是web伺服器和web應用程序之間的介面。它的作用就像是橋梁,連接在web伺服器和web應用框架之間。
uwsgi:是一種傳輸協議,用於定義傳輸信息的類型。
uWSGI:是實現了uwsgi協議WSGI的web伺服器。
我們的部署方式: nginx + gunicorn + flask
web開發中,部署方式大致類似。簡單來說,前端代理使用Nginx主要是為了實現分流、轉發、負載均衡,以及分擔伺服器的壓力。Nginx部署簡單,內存消耗少,成本低。Nginx既可以做正向代理,也可以做反向代理。
正向代理 :請求經過代理伺服器從區域網發出,然後到達互聯網上的伺服器。
特點 :服務端並不知道真正的客戶端是誰。
反向代理 :請求從互聯網發出,先進入代理伺服器,再轉發給區域網內的伺服器。
特點 :客戶端並不知道真正的服務端是誰。
區別 :正向代理的對象是客戶端。反向代理的對象是服務端。
查看命令行選項 : 安裝gunicorn成功後,通過命令行的方式可以查看gunicorn的使用信息。
直接運行 :
指定進程和埠號 : -w: 表示進程(worker)。 -b:表示綁定ip地址和埠號(bind)。--access-logfile:表示指定log文件的路徑
作為守護進程後台運行 :
阿里雲伺服器默認安裝到 /user/sbin/ 目錄,進入目錄,啟動 ngnix:
Ubuntu 上配置 Nginx 也是很簡單,不要去改動默認的 nginx.conf 只需要將/etc/nginx/sites-available/default文件替換掉就可以了。
新建一個 default 文件,添加以下內容:
修改完成後重啟nginx即可。
Ubuntu 上配置 Nginx 另一種方法,cd 到 /etc/nginx/conf.d 文件夾,新建 xxx.conf 文件(xxx 可以是項目名,只要是 .conf 文件即可),寫入以下內容:
需要監聽 https 請求時,寫入以下內容:
Ⅳ 如何部署簡單python + flask應用
我們先寫一個最基本的flask應用:
demo.py
from flask import Flask
app = Flask(**name**)
@app.route('\')
def index():
return 'Hello World.'
if __name__ == __main__:
app.run()
運行這個py文件,打開瀏覽器訪問127.0.0.1:5000就能看到顯示Hello World的頁面 .
如果讓這個flask引用監聽來自公網ip的請求,理論上你跑此程序的機器就相當於一個伺服器了,然而這個伺服器並不完美,所以我們需要nginx和gunicorn來增加它的功能,讓它真刀真槍上生產環境的時候能按要求運行。
flask自帶的WSGI框架性能很差勁,只能適用於開發環境調試使用。我們用專業一點的gunicorn(還有很多其他優秀的框架)替代flask自帶的WSGI框架。
配置完後,通過命令』/usr/local/bin/gunicorn -b127.0.0.1:5000『啟動應用。打開瀏覽器訪問127.0.0.1:5000,同樣能夠得到返回頁面
然而gunicorn也僅僅是一個python的WSGI框架而已,要讓它真正處理來自互聯網的各類訪問功能還是有點欠缺,這時候就需要用到大名鼎鼎的nginx 伺服器來替gunicorn遮風擋雨了。
Ubuntu下安裝nginx可以用命令
sudo apt-get install nginx
安裝後需要進行下配置:
cd /etc/nginx/sites-available
sudo vi test (test為配置名稱,可以根據自己項目進行命名)
test文件的配置為:
server {
listen 80; # 監聽80埠
location / {
proxy_pass http://127.0.0.1:5000; # 代理本機127.0.0.1:5000的服務
}
location /static {
alias /home/ubuntu/myproject/myblog/app/static; # 負載均衡
}
}
cd ..
cd sites-enable
sudo ln -s ../sites-available/lwhile . (創建軟鏈接,別漏掉最後的.)
sudo service nginx reload
sudo service nginx restart
這樣nginx的基本配置文件就寫好了 接下來我們配置進程管理工具supervisor supervisor可以在後面啟動你的python進程,這樣很方便
1.cd /etc/supervisor/conf.d
2.sudo vi test.conf (test為文件名)
[program:test]
command = /usr/local/bin/gunicorn -b127.0.0.1:5000 /home/ubuntu/myproject/test.py
3.sudo supervisorctl
4.reload
5.start test
如果一切正常,做完這所有步驟之後,現在公網的ip訪問你的主機,就可以打開你的flask應用了