flask+uwsgi+nginx部署網站

1.寫在前面        

       本文重要介紹,flask框架寫的web網站若是正確部署在正常環境中。由於flask自帶的web服務不足以支持實際使用狀況。只是方便開發人員調試開發,並不具有可靠的性能。 如下介紹適用於實際生產環境所使用的部署方式。python

       flask+uwsgi+nginx,這種模式,首先分別介紹一下。是什麼,分別起到什麼做用。flask,是一種python開發web的一種框架,相似的還有django,flask比較輕量,django適合大型項目。 flask框架寫的web,一般能夠直接運行起來就能夠訪問web了。可是這種方式只適合開發調試,前面已經提過。實際是它內部有一個web服務,叫wsgi。這個東西不是很全,只是做爲部分被提供在flask框架內。生產環境中,須要另外的web服務來掛起flak寫的網站。一般這個web服務就是uwsgi。稍後咱們會講到,怎麼去安裝配置uwsgi; 而對於nginx,它扮演的是反向代理角色。在大型項目裏面經常扮演者反向代理和負載均衡的角色。  什麼意思呢,就是用戶發送的請求,所有經過這個nginx服務,nginx會去請求真正的內容服務器,也就是咱們部署好的,uwsgi服務。uwsgi服務將用戶須要的網頁和數據,送到nginx服務那,再由nginx推送給用戶。這個過程,對於用戶來講,只和uwsgi服務發生關係。真正的內容服務器是不可見的。 因此從安全的角度來講,這無疑更安全。 另一個緣由選擇nginx,是因爲nginx服務性能很穩定,高併發能力強。nginx

       接下來,說說部署步驟web

2.安裝步驟

a.部署flask+uwsgi

這一步,我在前面的文章裏面已經寫過了。不在複述。連接以下:django

https://my.oschina.net/RabbitXiao/blog/1583662flask

b.安裝nginx

#經過yum安裝nginx
sudo yum install nginx

#啓動nginx服務
sudo systemctl start nginx


#設置開機自啓動

sudo systemctl enable nginx

 

若是上面安裝沒有錯誤的話。此時在你客戶端瀏覽器上輸入你的服務器ip,回車,便可出現nginx的默認歡迎首界面。這就說明咱們配置成功了。接下來就是該nginx的配置文件,將咱們的uwsgi服務和nginx關聯起來,起到一個反向代理的做用。vim

 

c.配置nginx

若是你是經過yum進行安裝,沒有改變yum的安裝路徑的狀況下,通常nginx的配置文件會在/etc/nginx/nginx.conf這兒。這個就是咱們須要修改的配置文件瀏覽器

輸入指令安全

vim /etc/nginx/nginx.conf

以下圖bash

說明: include /etc/nginx/conf.d/*.conf;這個地方的意思是,咱們能夠在/etc/nginx/conf.d/目錄下,自定義咱們本身的配置文件,文件名以xxxx.conf命名便可。對於多個網站同時掛載在ngnix上的時候,能夠講不通的站點配置文件,分別存放。服務器

 

server_name 對應的是你的公網ip地址,固然也能夠填寫域名。均可以!

圈起來的部分,目的就是配置uwsgi與nginx的關係,創建起聯繫。這樣nginx就代理了uwsgi。

安裝圖中圈起來的填寫便可。可是有一點須要注意的是,uwsgi_pass  127.0.0.1:8001這個地方的內容填寫是根據uwsgi的配置文件來的。若是你的配置文件裏面配置的不是這個地址,那麼你還這麼填將會致使失敗。樓主的uwsgi的配置文件以下:

1 [uwsgi]
  2 #uwsgi啓動時,所使用的地址和端口(這個是http協議的)
    #此處能夠填寫0.0.0.0:5050,這樣外網就能夠訪問了,可是若是咱們用了代理服務器,好比nginx,那麼處於安全考慮,這個
    #地址不能夠暴露出去,因此填寫的127.0.0.1:5050.這樣,用戶只能訪問nginx代理服務器,而不直接與uwsgi服務器發生關係
  3 http=127.0.0.1:5050
  4
  5 #uwsgi 啓動時所使用的地址與端口(這個是socke協議)
  6 socket=127.0.0.1:8001
  7
  8
  9 #指向網站目錄
 10 chdir=/home/rabbit/package/OnlyVideoSourceModel
 11
 12 #python 啓動程序文件
 13
 14 wsgi-file=manage.py
 15
 16 #python 程序內用以啓動的application 變量名
 17
 18 callable=app
 19
 20
 21 #處理器數
 22
 23 processes=4
 24
 25 #線程數
 26
 27 threads=2
 28
 29 #狀態檢測地址
 30
 31 stats=0.0.0.0:9195
 32
 33
~
~

咱們能夠看到上面的配置文件有一個socket=0.0.0.0:8001。這個就是上面配置nginx時候,須要對應填寫的。因此應我的環境而異。不要直接粘貼。

配置完後,中止nginx,而後重啓nginx。

#中止nginx
systemctl stop nginx.service

#啓動nginx

systemctl start nginx.service

 

而後再本地瀏覽器上輸入服務器的公網ip地址(不須要帶端口,nginx默認就是80端口),不出意外,就能夠看到咱們部署好flask網站了。

好比下面:

祝你們能一次配置成功!!!。若是有什麼問題,在下面評論,或者加本人qq:739462304

或者微信

相關文章
相關標籤/搜索