flask項目部署到雲服務器+域名綁定

  • 2019 年 10 月 3 日
  • 筆記

一、效果演示

首頁展示

播放頁面

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

 

這個服務器純粹是為新手準備的,1M帶寬 速度堪稱蝸牛,不過價格是真心便宜,適合練手。。。

廢話不多說下面我們開始項目部署

二、準備雲服務器

服務器鏡像我們選擇CentOS 7.2 64位

服務器買完後點擊控制台進入如下頁面

找到我們購買的服務器查看公網ip地址,我的這裡為49.232.24.154 端口默認為22

那麼22端口又是幹什麼的呢?

說白了就是我們用於連接liunx服務器的,我用的連接工具是xshell 點擊下載 ?

打開後界面如下:

在這裡我們輸入連接服務器的命令

# root為默認的主機名  ssh [email protected]

接下來會讓我們輸入服務器的密碼

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

三、環境準備

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

點擊查看python3.6編譯安裝 

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更多說明

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

修改後重新連接

數據庫創建密碼

自行百度