Flask采用Virtualenv+Supervisor+Nginx部署應用


Flask采用Virtualenv+Supervisor+Nginx部署應用

--

首先是概念解釋

  1. WSGI服務器,負責我們的app與服務器的交互,常用的有Gunicorn
  2. Web服務器,是個HTTP服務器,就相當於tomacat於Java,常用的有Nginx

Web服務器中,Nginx是一款面向性能設計的HTTP服務器,相較於Apache、lighttpd具有占有內存少,穩定性高等優勢。

部署工具:

  1. Virtualenv,用戶創建獨立的虛擬的Python運行環境,可以解決版本,依賴等問題
  2. Supervisor,負責管理應用:應用的開啟,關閉,以及多應用的管理等

Virtualenv

安裝
sudo pip install virtualenv
使用
#創建虛擬環境
virtualenv venv

#啟動虛擬環境
source venv/bin/activate

#停止虛擬環境
deactivate

Supervisor

安裝
sudo apt-get install supervisor
使用

配置Supervisor的配置文件的路徑:/etc/supervisor/conf.d/*conf

cd /etc/supervisor/conf.d/*conf

在這里目錄下,我們創建我們應用的配置文件,這樣Supervisor才能讀取到

sudo vim app.conf

里面的內容輸入(內容其實就是執行我們的Python文件):

[program:app]
command = python /home/tengfei/api01/test/TestTo/TODO-orm/app.py


//注,這個配置是和后文中Nginx配置好后對象的9000的轉發端口執行的操作
[program:todo]
command = /home/tengfei/api01/test/TestTo/TODO-orm/venv/bin/gunicorn -b 127.0.0.1:9000 app:app
directory = /home/tengfei/api01/test/TestTo/TODO-orm

更改配置文件后,要讓supervisor的配置文件生效,執行

supervisorctl reload

啟動supervisor:

sudo service supervisor start

重啟:

sudo service supervisor restart	

查看supervisor程序當前的狀態

sudo supervisorctl

這里面可以使用status指令來查看程序的運行狀態

app名字:就是剛才配置配置文件中[program:app]的,比如我這里輸入 start app就可以了,以后同上:
start app名字 # 啟動app
stop app # 停止app

需要注意的是supervisor發生錯誤的話,需要它的日志中才能看到

supervisor錯誤日志地址:
/var/log/supervisor/supervisord.log

參考 ubuntu安裝和使用supervisor

Ubuntu安裝Curl的方法

Nginx

安裝
	sudo apt-get update
	sudo apt-get install nginx
配置

nginx的也是把程序運行需要的配置文件放到指定的目錄下即可

cd /etc/nginx

/etc/nginx子目錄下,有兩個文件要格外關注關注一下:

sites-available  :可用的配置文件
sites-enabled		:生效的配置文件

1:先在sites-available 目錄下創建配置文件vim api_app

里面寫上:

# api_app內容
server {
        listen 81;

        location /static {
                alias /home/tengfei/api01/test/TestTo/TODO-orm/;
        }

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

注,listen 81;:意思是nginx監聽的是81端口,我開始監聽80端口,結果和默認的沖突了;location /static:是把靜態文件轉發到后文中的目錄下;location / :是把動態請求轉發到本機(服務器)的9000端口,上面文件的內容的格式可自行百度。我開始

然后創建軟連接到sites-enabled

sudo ln -s ../sites-available/api01_app .

然后重新啟動nginx

sudo service nginx reload

//這代表nginx重啟成功
 * Reloading nginx configuration nginx                                                       [ OK ] 
使用

啟動

sudo service nginx restart

重啟

sudo service nginx reload

查看nginx的狀態

sudo service nginx status		

參考:How To Install Nginx on Ubuntu 14.04 LTS

gunicorn

安裝

apt-get install gunicorn

使用

gunicorn -b 0.0.0.0:8080 run:app

嘗試在虛擬環境中運行一下程序,看看是否可以成功
//注意下面語句前面的run是指運行的python文件的的名字為run.py的話,執行run:app,如果為app.py那就是app:app

參考文檔

Ubuntu 安裝mysql和簡單操作

“error: command 'x86_64-linux-gnu-gcc' failed with exit status 1” in virtualenv

ubuntu下mysql-python模塊的安裝

how to install the SQLALchemy on the ubuntu?


聲明本文內容來源於:Flask應用部署與運維

特地感謝極客學院的shin0922老師,真的受益匪淺,如果涉嫌侵權,請告知我,我將刪除文章


免責聲明!

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



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