一、效果演示
首頁展示

播放頁面

該項目部署只為學習,所以用的服務器是騰訊雲服務器10元/月,域名也是在騰訊雲買的.com 55元/年 因為本人比較窮 哈哈😁

這個服務器純粹是為新手准備的,1M帶寬 速度堪稱蝸牛,不過價格是真心便宜,適合練手。。。
廢話不多說下面我們開始項目部署
二、准備雲服務器
服務器鏡像我們選擇CentOS 7.2 64位
服務器買完后點擊控制台進入如下頁面

找到我們購買的服務器查看公網ip地址,我的這里為49.232.24.154 端口默認為22
那么22端口又是干什么的呢?

說白了就是我們用於連接liunx服務器的,我用的連接工具是xshell 點擊下載 😎
打開后界面如下:

在這里我們輸入連接服務器的命令
# root為默認的主機名 ssh root@49.232.24.154
接下來會讓我們輸入服務器的密碼

如果忘記密碼需要重置密碼

三、環境准備
成功連接服務器后接下來就要准備運行Flask項目所需要的必備環境了;

mongodb安裝
yum install mongodb-server
yum install mongodb 啟動服務端 systemctl start mongod 查看端口 netstat -tunlp 默認端口為27017 查看進程 ps -ef|grep mongo
在部署項目之前需要我們將Windows上的mongodb數據庫中的數據導出
導出命令
# 在cmd命令行執行 mongoexport -d [數據庫名] -c [表名] -o [文件名字] 文件后綴為json格式
四、上傳項目文件
Windows與liunx文件互傳需要用到lrzsz
在服務器上安裝
yum install lrzsz # 安裝完直接從win拖到liunx指定目錄即可 # 通常我們將項目文件放在opt下
我們需要將Windows中的項目文件壓縮成zip文件上傳至服務器opt的目錄下

在服務器上我們需要將項目的壓縮文件解壓縮
# 解壓縮命令 unzip 【項目名.zip】
項目所依賴的python模塊
# 安裝命令 pip3 install 模塊名
將Windows上mongodb的數據文件【json格式】上傳到服務器並導入mongodb中
# 導入命令 mongoimport -d [數據庫名] -c [表名] --upsert [需要導入的文件路徑]
至此我們就將部署項目所依賴的環境和數據都上傳到了服務器,接下來開始表演。。。
五、安裝gunicorn啟動Flask服務
在生產環境中,flask自帶的服務器,無法滿足性能要求,我們這里采用Gunicorn做wsgi容器,來部署flask程序。
Gunicorn(綠色獨角獸)是一個Python WSGI的HTTP服務器。從Ruby的獨角獸(Unicorn )項目移植。該Gunicorn服務器與各種Web框架兼容,實現非常簡單,輕量級的資源消耗。Gunicorn直接用命令啟動,不需要編寫配置文件,相對uWSGI要容易很多。 Gunicorn 服務器與許多 Web 框架廣泛兼容,簡單實現,輕松服務器資源並且速度相當快。
區分幾個概念:
WSGI:全稱是Web Server Gateway Interface(web服務器網關接口),它是一種規范,它是web服務器和web應用程序之間的接口。它的作用就像是橋梁,連接在web服務器和web應用框架之間。
uwsgi:是一種傳輸協議,用於定義傳輸信息的類型。
uWSGI:是實現了uwsgi協議WSGI的web服務器。
我們的部署方式: nginx + gunicorn + flask

Gunicorn 服務器作為 wsgi app 的容器,能夠與各種 Web 框架兼容(flask,django 等),得益於 gevent 等技術,使用 Gunicorn 能夠在基本不改變 wsgi app 代碼的前提下,大幅度提高 wsgi app 的性能。
安裝命令
# 在liunx命令行執行 pip3 install gunicorn
基於Gunicorn啟動我們的Flask項目
gunicorn -w 4 -b 127.0.0.1:5001 manage:app 用gunicorn啟動flask服務 -w 4 [開啟4個進程] -b 127.0.0.1:5001 [啟動flask服務的ip+端口] manage [啟動flask服務的文件名.py] app [項目實例]
這里注意:想要用gunicorn啟動你的項目,需要先把項目所依賴的python模塊下載下來例如:pymongo
啟動Flask項目后查看Gunicorn進程命令

這樣我們的項目就在服務器上跑起來了 開森 ~~~ 😝😝😝
你以為這樣就完事兒了么,no no no 我們的項目指定的是本地回環地址【127.0.0.1】,也就是只有本機才可以訪問這個項目;
為了我們的項目能夠實現高並發我們還需要配置nginx;
六、Nginx反向代理Flask項目
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特點是占有內存少,並發能力強,事實上nginx的並發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
nginx配置文件配置
# 進入opt目錄下 進入nginx配置文件 cd tngx231/conf/ vim nginx.conf # 進行如下配置 server { # 監聽80端口 listen 80; # 本機 server_name localhost; # 默認請求的url location / { #請求轉發到gunicorn服務器 proxy_pass http://127.0.0.1:5001; # 這里的ip+端口就是我們啟動flak的ip和端口 #設置請求頭,並將頭信息傳遞給服務器端 proxy_set_header Host $host; } }
配置完nginx需要重啟nginx配置文件才會生效,選用平滑重啟
七、配置雲服務器的安全組防火牆
默認是方通全部端口,我們選擇第二個

端口說明
22 端口 【ssh連接服務器】 80 端口 【瀏覽網頁服務默認的端口號】 443 端口 【網頁瀏覽端口,主要是用於HTTPS服務,是提供加密和通過安全端口傳輸的另一種HTTP】 3389 端口 【Windows 2000(2003) Server遠程桌面的服務端口,可以通過這個端口,用"遠程桌面"等連接工具來連接到遠程的服務器,如果連接上了,輸入系統管理員的用戶名和密碼后,將變得可以像操作本機一樣操作遠程的電腦,因此遠程服務器一般都將這個端口修改數值或者關閉。】 ICMP 協議 【ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義。 [3] 它屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。】
至此我們就完成了Flask項目部署到雲服務器上的所有流程,可以通過公網ip訪問我們的項目了,但是ip太長了不好記,我這個記憶力。。。。。。so 決定買一個域名綁定我們的ip,這樣我們以后就可以直接在瀏覽器上輸入域名來訪問我們的項目了;
八、綁定域名
網域名稱系統(DNS,Domain Name System,將域名和IP地址相互映射的一個分布式數據庫)是因特網的一項核心服務,它作為可以將域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便地訪問互聯網,而不用去記住能夠被機器直接讀取的IP地址數串。

購買前需要查詢你要注冊的域名是否已經被注冊

購買后點擊雲產品下的移動解析httpDNS

需要進行實名認證,按照提示照做就行

進入域名解析列表點擊默認是沒有記錄的,點擊添加記錄

解析域名

ok大功告成,按照我的步驟一步一步操作就可以輕松將你的web項目部署到雲服務器上;
最后因路徑問題找不到文件,因為我在本地把路徑寫死了,沒有寫死的可自行忽略
項目中涉及路徑查找 import os # 跟目錄 MOVIE_TXT_PATH=os.path.dirname(os.path.dirname(os.path.abspath(__name__)))
嘀 嘀 嘀 歡迎訪問我的第一個網站http://www.flaskvideo.com😎😎😎 至於為什么域名用這個,因為我用的Flask框架搭建的視頻網站,剛開始想做影評網站的,一不小心做成視頻了。。。
九、防止被黑客攻擊
修改ssh連接端口
# 不要讓22號端口暴露在公網中 [root@VM_0_6_centos ssh]# vim sshd_config

修改后重新連接

數據庫創建密碼
自行百度
注意:在我們用nginx做反向代理的時候一定要看看端口我們是否在安全組中有配置放行,只有放行的端口才可以訪問
