1.安裝ubuntu有uwsgi的ppa:
add-apt-repository ppa:stevecrozz/ppa apt-get update apt-get install uwsgi
2. 用uwsgi代替mod_wsgi
Nginx 的整體配置這里不說了,假設(shè)已經(jīng)明白 Nginx的基本配置,那么uwsgi就類似這么配置:
location / { include uwsgi_params uwsgi_pass 127.0.0.1:9090 }
再比如django就是:
....... from django.core.handlers.wsgi import WSGIHandler application = WSGIHandler()
然后運(yùn)行uwsgi監(jiān)聽9090,其中-w后跟模塊名,也就是剛才配置的myapp
uwsgi -s :9090 -w myapp
運(yùn)行網(wǎng)站發(fā)現(xiàn)已經(jīng)部署完成了。
3.uwsgi的參數(shù)
以上是單個(gè)project的最簡單化部署,uwsgi還是有很多令人稱贊的功能的,例如:
并發(fā)4個(gè)線程:
uwsgi -s :9090 -w myapp -p 4
主控制線程+4個(gè)線程:
uwsgi -s :9090 -w myapp -M -p 4
執(zhí)行超過30秒的client直接放棄:
uwsgi -s :9090 -w myapp -M -p 4 -t 30
限制內(nèi)存空間128M:
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128
服務(wù)超過10000個(gè)req自動respawn:
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000
后臺運(yùn)行等:
uwsgi -s :9090 -w myapp -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log
4.為uwsgi配置多個(gè)站點(diǎn)
為了讓多個(gè)站點(diǎn)共享一個(gè)uwsgi服務(wù),必須把uwsgi運(yùn)行成虛擬站點(diǎn):去掉“-w myapp”加上”?Cvhost”:
uwsgi -s :9090 -M -p 4 -t 30 --limit-as 128 -R 10000 -d uwsgi.log --vhost
然后必須配置virtualenv,virtualenv是Python的一個(gè)很有用的虛擬環(huán)境工具,這樣安裝:
apt-get install Python-setuptools easy_install virtualenv
然后設(shè)置一個(gè)/多個(gè)app基準(zhǔn)環(huán)境:
virtualenv /var/www/myenv
應(yīng)用環(huán)境,在此環(huán)境下安裝的軟件僅在此環(huán)境下有效:
source /var/www/myenv/bin/activate pip install django pip install mako ...
最后配置nginx,注意每個(gè)站點(diǎn)必須單獨(dú)占用一個(gè)server,同一server不同location定向到不同的應(yīng)用不知為何總是失敗,估計(jì)也 算是一個(gè)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服務(wù),兩個(gè)站點(diǎn)就可以共用一個(gè)uwsgi服務(wù)了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
