Get新知識:
nginx + gunicorn + flask 部署web項目
nginx 的安裝和配置
一、安裝編譯工具及庫檔案
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
二、安裝 PCRE(讓 Nginx 支援 Rewrite 功能)
#下載下傳最新版本的,注意不要用pcre2
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -xvf pcre-8.42.tar.gz
cd pcre-8.42
#安裝編譯
./configure
make && make install
#檢視pcre版本
pcre-config --version
三、安裝nginx
#下載下傳
wget https://nginx.org/download/nginx-1.15.9.tar.gz
tar -xvf nginx-1.15.9.tar.gz
cd nginx-1.15.9
#編譯安裝
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.42
make && make install
#檢視版本
/usr/local/webserver/nginx/sbin/nginx -v
三、nginx配置
#建立 Nginx 運作使用的使用者 www
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www
# 也可以不建立使用者,而是使用root使用者即可
#設定包含多個配置檔案,在nginx.conf底部添加
include vhost/*.conf;
#啟動
/usr/local/webserver/nginx/sbin/nginx
/usr/local/webserver/nginx/sbin/nginx -s reload # 重新載入配置檔案
/usr/local/webserver/nginx/sbin/nginx -s reopen # 重新開機 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop # 停止 Nginx
# /usr/local/webserver/nginx/conf/vhost/demo.tilesrow.com.conf
server
{
# nginx 預設監聽80 端口号,可以自定義
listen 80;
#listen [::]:80;
# server_name 就是本機位址
server_name xx.com;
# 預設通路的靜态檔案資源
index index.html index.htm index.php default.html default.htm default.php;
root /data/project/demo1;
access_log /usr/local/webserver/nginx/logs/xx.com.log;
}
内網映射端口配置
server
{
listen 80;
#listen [::]:80;
server_name demo.xx.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://127.0.0.1:8001;
}
access_log /usr/local/webserver/nginx/logs/demo.xx.com.log;
}
結果配置如下:
server{
listen 8000;
server_name 192.168.123.201;
location {
include uwsgi_params;
# uwsgi_pass 127.0.0.1:9000;
proxy_pass http://127.0.0.1:9000/;
}
}
gunicorn 的安裝配置
注意下python 項目的虛拟環境下。
使用pip install gunicorn 安裝 gunicorn
安裝好之後就可通過指令來啟停服務。
項目的啟動
使用下面指令進行項目的啟動
gunicorn -w 5 -b 127.0.0.1:9000 wsgi:application
其中 127.0.0.1:9000 是flask應用程式的啟動端口和IP,wsgi 是項目根目錄下的一個啟動項目檔案名為wsgi.py application 是 flask執行個體對象名。
或者使用自定義的gunicorn.py 配置檔案
gunicorn -c app/gunicorn_config.py wsgi:application
其中.py 是自定義的配置檔案
如下:
import multiprocessing
bind = '0.0.0.0:9000' #綁定ip和端口号
backlog = 512 #監聽隊列
chdir = '/usr/local/webserver/nginx/software_project' #gunicorn要切換到的目的>工作目錄
timeout = 40 #逾時
worker_class = 'gevent' #使用gevent模式,還可以使用sync 模式,預設的是sync模式
workers = multiprocessing.cpu_count() * 2 #程序數
threads = 2 #指定每個程序開啟的線程數
# 設定最大并發量
worker_connections = 2000
# 設定程序檔案目錄
pidfile = '/var/run/gunicorn.pid'
centos 使用 yum 線上安裝python3
步驟:
- 安裝epel
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 安裝 epel-release 工具
yum install epel-release
- 找到庫裡面支援的 python3 版本
yum list | grep python3 | more
- 安裝python3
yum install python36
- 測試安裝是否成功
python3
Linux下安裝Python虛拟環境Virtualenv
需要先安裝好python3 的環境。
1、首先,使用pip指令安裝virtualenv子產品:
# pip3 install virtualenv
測試是否安裝成功
# virtualenv --version
安裝成功,則會列印安裝的virtualenv的版本号
3、建立獨立運作環境,并命名
# virtualenv --no-site-packages venv
venv是虛拟環境的名稱,可以根據自己的需要進行命名。
其中 直接使用指令 virtualenv 就可以建立一個獨立的Python運作環境,加上參數**–no-site-packages**,可以将已經安裝到系統Python環境中的第三方包都不制到獨立環境中,這樣我們就可以得到一個不帶任何第三方包的Python環境了。
4、建立的Python環境被放到了目前目錄下的venv目錄,有了venv這個Python環境,我們就可以開始使用這個虛拟環境了,需将其激活:
# source venv/bin/activate
需要注意的是source 虛拟環境下的bin目錄下的activate ,激活成功後,我們可以看到終端指令提示符前多了虛拟環境的名稱
5、如果暫時不用此虛拟環境了,退出venv環境
(venv) # deactivate
6、其他指令
① 檢視目前虛拟機環境目錄
# worken
②切換虛拟環境
# workon venv2
③退出虛拟環境
# deactivate
④删除虛拟環境
# rmvirtualenv venv
安裝并配置好 python 虛拟環境 virtualenv 好 之後i,就是安裝好項目所需的第三方包,就可以将項目部署到伺服器上了。