天天看點

# ubuntu16.04+nginx+gunicorn部署flask項目ubuntu16.04+nginx+gunicorn部署flask項目

ubuntu16.04+nginx+gunicorn部署flask項目

前期準備配置伺服器上的環境:

1.我們部署項目需要使用到虛拟環境,是以下載下傳一個虛拟環境包

sudo apt-get install python-dev python-pip python-virtualenv
           

如果不行使用這兩種方法試試

python2/3建立方法;

1.pip install python3-env 安裝虛拟環境包

2.python3 -m venv <虛拟環境檔案名> 或者 python -m venv <虛拟環境名字>

3.進入該虛幻環境 并激活 激活指令activate

4.退出虛拟環境直接就是 deactivate

python2/3建立方法:

1.pip install virtualenv

2.virtualenv <虛拟環境名>

3.進入該虛幻環境 并激活 激活指令 進入bin檔案内 source activate

(進入成功的話有個标志(venv))

# ubuntu16.04+nginx+gunicorn部署flask項目ubuntu16.04+nginx+gunicorn部署flask項目

4.退出虛拟環境直接就是 deactivate

2.安裝nginx

sudo apt-get install nginx

3.進入虛拟環境安裝gunicorn

(venv) $ pip install gunicorn

安裝完之後就是上傳項目檔案

1.使用xftp傳檔案到伺服器,項目就放到之前建立的虛拟環境目錄内。

進入虛拟環境,安裝第三方庫,使用清單的方式。

2.先生成我們所需要安裝的第三方庫

pip freeze >> requirements.txt

說明:>>這個符号意思是增加内容,這裡是将需要安裝的第三方庫安裝到requirements.txt中

還有一個符号> 是覆寫的意思。

3.使用清單方式安裝庫

pip install -r requirements.txt

4.配置nginx

進入 /etc/nginx/sites-available

将default删除,重新寫一個配置檔案

這裡寫的是基本配置

注意“ ; ”不能省略

#負載均衡,說明本地項目運作的路徑
upstream upstream_name{
	ip_hash;
	server 127.0.0.1:5000; #這裡是自己項目運作的伺服器+端口
}
server{

​		listen 80;    #你需要監聽的端口
		listen 443 ssl; #裝證書需要https時候添加 端口号一定是443 
		server_name  zhangsan.com  ;   #填寫域名或者這裡填你的伺服器的公網ip ,那麼最後打開網址 zhangsan.com:80就能打開你的項目,80可以不寫,如果監聽其他端口不得省略。

​		location  /static{                        
				alias  /home/venv/flask-test/app/static;  #這裡配置靜态檔案的位址    如果通路的連結是以/static結尾的,那麼伺服器就會自動從 /home/venv/falsk-test/app/static/上面找檔案資源                           
		}

​		location /{
				proxy_pass  http://upstream_name;  #使用upstream
				proxy_set_header Host $host;                                 #這裡就是預設的一樣就可以。
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
		}

		#需要ssl證書的時候添加 以下配置
		ssl_certificate /etc/myapp/ssl/ssl.crt; # 改為自己申請得到的 crt 證書檔案的絕對路徑  pem檔案也如此
 		ssl_certificate_key   /etc/myapp/ssl/ssl.key; # key檔案證書的絕對路徑
 
}

#這裡是重定向跳轉,監聽80端口預設是http的連結,那麼我們就跳轉到https
server{
        listen 80;
        server_name zhangsan.com;
        rewrite ^/(.*)$ https://zhangsan.com:443/$1 permanent;
    }

           

5.啟動gunicorn

進入虛拟環境啟動,還有進入到目前項目的啟動程式的目錄

(venv) $ gunicorn -w 4 -b 127.0.0.1:9000 run:application

That’s all! 它的安裝就這麼簡單。不過這裡得作一個解釋。就是最後的那個參數

run:application

表示啟動flask程式。 run是這個項目啟動程式的檔案名,application是flask項目執行個體,即application=Flask(_name__)

6.結束

當然,就使用gunicorn啟動完程式之後就可以了,不過也可以使用supervisor程序管理工具,使得項目可以更好的管理。

還可以參考:https://www.cnblogs.com/ray-liang/p/4837850.html

7.注意

如果不能啟動,可能是你端口被占用,或者防火牆開啟了,或者端口沒有打開。

nginx基本使用

程序檢視 ps aux|grep nginx

1.基本指令:

nginx 啟動nginx服務

nginx -s reload 重新開機nginx

nginx -s quit 優雅退出 (此時執行此指令之時,若是有人在通路資源,要等到其通路完之後,nginx就會停止)

nginx -s stop 強行停止服務

2.nginx配置檔案在

/etc/nginx/

sites-available 配置檔案,在這裡配置,然後連結檔案到sites-enabled

sites-enabled 是sites-availablez中的檔案執行的配置檔案

3.基本的配置

進入 /etc/nginx/sites-available

将default删除,重新寫一個配置檔案

這裡寫的是基本配置

注意“ ; ”不能省略

server{

​ listen 80; //你需要監聽的端口

​ server_name zhangsan.com ; //填寫域名或者這裡填你的伺服器的公網ip

​ location /static{

​ alias /home/venv/flask-test/app/static ; //這裡配置靜态檔案的位址

}

​ location /{

​ proxy_pass http://127.0.0.1:9000 //這裡http一定不能省略 還有自己執行這個項目運作的端口

​ proxy_set_header Host $host; //這裡就是預設的一樣就可以。

​ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

4.日志記錄

nginx伺服器執行日志在

/var/log/nginx中,

gunicorn說明

這是一個支援wsgi協定的一個伺服器,他能能夠與各種wsgi web架構協作。而flask是一個基于wsgi協定的web架構,是以我們這裡使用了gunicorn。。 還有支援wsgi協定的伺服器。比如uwsgi。不過不建議使用,比較複雜。

重新開機gunicorn

先查詢gunicorn程序号關閉

ps -aux| grep gunicorn
           

根據pid殺死程序

kill -9  pid号
           

supervisor

一個程序管理工具。

supervisor指令行啟動

supervisorctl -c /etc/supervisor/supervisord.conf.dpkg-new
           

一些指令

start <需要運作的程序>

stop 《需要停止的程序》

reload 重新加載