在Linux系統上通過uWSGI配置Nginx+Python環境的教程

來源:互聯網
上載者:User
1.安裝ubuntu有uwsgi的ppa:

add-apt-repository ppa:stevecrozz/ppa apt-get update apt-get install uwsgi 

2. 用uwsgi代替mod_wsgi

Nginx 的整體配置這裡不說了,假設已經明白 Nginx的基本配置,那麼uwsgi就類似這麼配置:

  location / {    include uwsgi_params    uwsgi_pass 127.0.0.1:9090   } 

再比如django就是:

 .......  from django.core.handlers.wsgi import WSGIHandler  application = WSGIHandler() 

然後運行uwsgi監聽9090,其中-w後跟模組名,也就是剛才配置的myapp

 uwsgi -s :9090 -w myapp 

運行網站發現已經部署完成了。

3.uwsgi的參數

以上是單個project的最簡單化部署,uwsgi還是有很多令人稱讚的功能的,例如:

並發4個線程:

 uwsgi -s :9090 -w myapp -p 4 

主控制線程+4個線程:

 uwsgi -s :9090 -w myapp -M -p 4 

執行超過30秒的client直接放棄:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 

限制記憶體空間128M:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 

服務超過10000個req自動respawn:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 

後台運行等:

 uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log 

4.為uwsgi配置多個網站

為了讓多個網站共用一個uwsgi服務,必須把uwsgi運行成虛擬網站:去掉“-w myapp”加上”–vhost”:

 uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log --vhost 

然後必須配置virtualenv,virtualenv是Python的一個很有用的虛擬環境工具,這樣安裝:

 apt-get install Python-setuptools easy_install virtualenv 

然後設定一個/多個app基準環境:

 virtualenv /var/www/myenv 

應用環境,在此環境下安裝的軟體僅在此環境下有效:

 source /var/www/myenv/bin/activate  pip install django  pip install mako  ... 

最後配置nginx,注意每個網站必須單獨佔用一個server,同一server不同location定向到不同的應用不知為何總是失敗,估計也 算是一個bug。

    server {      listen    80;      server_name app1.mydomain.com;      location / {          include uwsgi_params;          uwsgi_pass 127.0.0.1:9090;          uwsgi_param UWSGI_PYHOME /var/www/myenv;          uwsgi_param UWSGI_SCRIPT myapp1;          uwsgi_param UWSGI_CHDIR /var/www/myappdir1;      }    }    server {      listen    80;      server_name app2.mydomain.com;      location / {          include uwsgi_params;          uwsgi_pass 127.0.0.1:9090;          uwsgi_param UWSGI_PYHOME /var/www/myenv;          uwsgi_param UWSGI_SCRIPT myapp2;          uwsgi_param UWSGI_CHDIR /var/www/myappdir2;      }    } 

這樣,重啟nginx服務,兩個網站就可以共用一個uwsgi服務了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.