nginx+gunicorn項目部署

來源:互聯網
上載者:User

標籤:clone   turn   gre   service   npm   load   建立   procs   多個   

1.1安裝虛擬環境建立檔案夾
mkdir data          目錄檔案夾cd data             進入data檔案夾mkdir nginx         建立安裝nginx的檔案夾mkdir server        存放代碼的檔案夾    mkdir logs          存放日誌的檔案夾mkdir backup        備份代碼的檔案夾mkdir softs         軟體存放的位置mkdir virtual       虛擬環境的位置mkdir scripts       指令碼的運行位置mkdir scp_codes     上傳的代碼
安裝虛擬環境
apt-get install python-virtualenv (ubuntu已經安裝過,可省略)virtualenv -p /usr/bin/python3 api_server (採用他,安裝在本檔案夾,)mkvirtualenv api_server(不要用它,它會自己安裝到其他地方)source api_server/bin/activate   (在虛擬環境的active進入虛擬環境)安裝的軟體會在虛擬環境下的bin目錄下
安裝nginx的環境
解壓cd ~/data/softs/   tar xf pcre-8.39.tar.gz配置cd ~/data/softs/pcre-8.39./configure編譯make安裝sudo make install
安裝nginx
解壓cd ~/data/softs/tar xf nginx-1.10.2.tar.gz配置cd nginx-1.10.2/./configure --prefix=/root/data/nginx    安裝在root/data下面的nginx檔案夾編譯make安裝make install查看進程ps aux | grep nginx
nginx簡單基礎操作
檢查sudo ~/data/nginx/sbin/nginx -t開啟sudo ~/data/nginx/sbin/nginx關閉sudo ~/data/nginx/sbin/nginx -s stop重載sudo ~/data/nginx/sbin/nginx -s reload
1、首先安裝Gunicorn
pip install gunicorn複製代碼
2、在入口檔案的app.run()加上以下內容
from werkzeug.contrib.fixers import ProxyFixapp.wsgi_app = ProxyFix(app.wsgi_app)複製代碼

例:

from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world():    return 'Hello World!'if __name__ == '__main__':    from werkzeug.contrib.fixers import ProxyFix    app.wsgi_app = ProxyFix(app.wsgi_app)    app.run()複製代碼
3、啟動Gunicorn

最簡單的方式為

gunicorn 入口檔案名稱:app複製代碼

預設是監聽127.0.0.1:8000

如果是要處理高並發則要開多個進程和修改監聽連接埠的畫

gunicorn -w 4 -b 127.0.0.1:8000 入口檔案名稱:app複製代碼儲存在supervisord 裡面的etc/supervisord.d目錄下添加一個logo.ini設定檔
添加設定檔

vim /etc/supervisord.d/logo.ini

[program:logo_api_server]directory = /data/api-service #代碼存放的地方command = /usr/local/python3/bin/gunicorn -w 4 -b :5005 LogoSeverApi:app  #-w的參數根據CPU的核心數來定,不要超過CPU的核心數#process_name = %(process_num)s  ; process_name expr (default %(program_name)s)#process_name = %(process_num)s#numprocs = 4                    ; number of processes copies to start (def 1)numprocs_start = 1autostart = true                ; start at supervisord start (default: true)autorestart = unexpected        ; whether/when to restart (default: unexpected)startsecs = 10                  ; number of secs prog must stay running (def. 1)startretries = 3                ; max # of serial start failures (default 3)user = devredirect_stderr = truestdout_logfile_maxbytes = 20MBstdout_logfile_backups = 20stdout_logfile = /data/api-service/logs/supervisor.log

這樣就可以啟動4個進程同時處理HTTP請求,提高系統的使用效率及效能。 還可以把連接埠8000改為其他

而在實際應用中,應使用後台執行的方式啟動服務

nohup 啟動服務的命令 &複製代碼

nohup gunicorn -w 4 -b 127.0.0.1:8000 入口檔案名稱:app &複製代碼

這時你可以在原生瀏覽器上訪問127.0.0.1:8000,瀏覽器上就會出現Hello World!

注意:如果是想通過外網訪問的話就要把ip改為內網的ip

4、配置nginx

配置改為

server {    listen 80;    server_name example.org; # 這是HOST機器的外部網域名稱,用地址也行    location / {        proxy_pass http://127.0.0.1:8000; # 這裡是指向 gunicorn host 的服務地址        proxy_set_header Host $host;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    } }複製代碼

這樣啟動之後80連接埠就可以轉寄到8000連接埠了

5、檢查配置
nginx -t複製代碼

若出現一下內容,則表示配置成功

nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful複製代碼
6、更新nginx配置
nginx -s reload複製代碼

在已經運行了Gunicorn的前提下,在瀏覽器訪問127.0.0.1就會出現Hello World!了

7、重啟Gunicorn

輸入命令

pstree -ap|grep gunicorn
1.2:安裝wget(如果已經安裝跳過)
yum install wget 
1.3:安裝python3.6(如果已經安裝跳過)

2.1.下載python3.6

wget http://cdn.npm.taobao.org/dist/python/3.6.5/Python-3.6.5.tgz

2.2.解壓安裝包

tar -zxvf Python-3.6.5.tgz

---------------------

2.3安裝python3.6的依賴包
yum install -y gcc zlib*yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 

---------------------

2.4.配置安裝路徑為/usr/local/python3
./configure --prefix=/usr/local/python3 --with-sslmake && make install
2.5.將python3.6的路徑加入到PATH中
echo "export PATH=$PATH:/usr/local/python3/bin/" >>/etc/profilesource /etc/profile
2.6.建立軟串連
ln -s /usr/local/python3/bin/python3 /usr/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

---------------------

2.7.安裝supervisor
yum install supervisor -y

如果報如下錯誤,安裝yum的擴充源

安裝yum的擴充源

yum install epel-*
2.8.添加supervisor的配置

在/etc/supervisord.d目錄下添加一個logo.ini設定檔

vim /etc/supervisord.d/logo.ini

內容如下:

[program:logo_api_server]directory = /data/api-service #代碼存放的地方command = /usr/local/python3/bin/gunicorn -w 4 -b :5005 LogoSeverApi:app  #-w的參數根據CPU的核心數來定,不要超過CPU的核心數\#process_name = %(process_num)s  ; process_name expr (default %(program_name)s)\#process_name = %(process_num)s\#numprocs = 4                    ; number of processes copies to start (def 1)numprocs_start = 1autostart = true                ; start at supervisord start (default: true)autorestart = unexpected        ; whether/when to restart (default: unexpected)startsecs = 10                  ; number of secs prog must stay running (def. 1)startretries = 3                ; max # of serial start failures (default 3)user = devredirect_stderr = truestdout_logfile_maxbytes = 20MBstdout_logfile_backups = 20stdout_logfile = /data/api-service/logs/supervisor.log
2.9建立data目錄
mkdir /data
2.10從git上面將代碼下載下來,git在內網,如果是線上請將git下載下來然後通過ftp上傳到線上壞境
cd /datagit clone http://zhangxiaoyang:[email protected]:3000/graphics/logo_api api-servicels -
2.11安裝程式依賴包
cd /data/api-service/yum install cairo-develpip3 install --upgrade pippip3 install -r requirements.txt

nginx+gunicorn項目部署

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.