UWSGI配置中文說明

uWSGI參考資料(1.0版本的配置選項列表)

下面的內(nèi)容包含了大部分uWSGI的配置選項,這些配置選項的列舉沒有特定的順序。每一個選項都可以使用在任何一種支持的配置方式里(如命令行參數(shù)、環(huán)境變量、xml文件、ini文件、yaml格式文件以及LDAP)。有些選項的使用需要某些插件的支持,這些插件的名字都會在文檔里有說明。

文檔中的例子使用了多種形式的配置方式來讓使用者更好的理解uwsgi的工作方式。

如果你剛開始接觸uWSGI,你最好是先看一下快速開始例子,這些對實際使用過程的中的一些選項做了舉例說明,另外下面列舉的非常多的配置選項說明對于新手的閱讀可能有一點吃力。

配置風格的簡單介紹

當使用某一種配置風格或者將一種風格轉(zhuǎn)換另一個風格時,需要注意一下規(guī)則:

命令行參數(shù)(command line args):需要給選項增加“--”前綴

例如socket選項:

--socket

環(huán)境變量(environment variable):選項名都要換成大寫,并且加上“UWSGI_”前綴,所有原來選項名中的“-”都要換成下劃線“_”

例如max-vars選項將變成:

UWSGI_MAX_VARS=""

xml文件:xml文件中的根結(jié)點應(yīng)該是,所有的選項值是作為文本節(jié)點。標識符類型的選項可以沒有對應(yīng)的值。

socket選項和master選項可以如下配置:

127.0.0.1:3031

ini文件:配置域應(yīng)該是uwsgi,標識符類型的選項的值可以設(shè)為true或者1。

socket選項和master選項可以如下配置:

[uwsgi]socket =127.0.0.1:3031master =true

yaml格式文件:根元素需要設(shè)置為uwsgi,標識符類型的選項的值可以設(shè)為true或者1。

socket選項和master選項可以如下配置:

uwsgi:? socket:127.0.0.1master:1

lda格式:這個格式比較復雜,你應(yīng)該查閱專門的wiki文檔。見useLDAP

無盡的選項列表...

深呼吸,現(xiàn)在我們開始。

socket or uwsgi-socket

指定uwsgi的客戶端將要連接的socket的路徑(使用UNIX socket的情況)或者地址(使用網(wǎng)絡(luò)地址的情況)。你最多可以同時指定8個socket選項。當使用命令行變量時,可以使用“-s”這個縮寫。

--socket /tmp/uwsgi.sock

以上配置將會綁定到 /tmp/uwsgi.sock 指定的UNIX socket

-s127.0.0.1:1717

以上配置會綁定到ipv4地址127.0.0.1的1717端口

[uwsgi]socket =127.0.0.1:1717socket =127.0.0.1:2626

以上配置會綁定到ipv4地址127.0.0.1的1717端口以及ipv4地址127.0.0.1的2626端口。

protocol

設(shè)置默認的通信協(xié)議(uwsgi,http,fastcgi)

--protocol

processes or workers

為預先派生模式設(shè)置工作進程的數(shù)量。這個設(shè)置是你的app能實現(xiàn)簡單并且安全的并發(fā)能力的基礎(chǔ)。你設(shè)置的工作進程越多,你就能越快的處理請求。每一個工作進程都等同于一個系統(tǒng)進程,它消耗內(nèi)存,所以需要小心設(shè)置工作進程的數(shù)量。如果你設(shè)置的數(shù)量太多,就有可能是系統(tǒng)崩潰。

當你使用命令行參數(shù)時,你可以使用簡化命令“-p”

--processes8

以上配置會產(chǎn)生8個工作進程

--workers4

以上配置會產(chǎn)生4個工作進程

-p8

以上會產(chǎn)生8個工作進程

3

這個配置會產(chǎn)生3個工作進程

harakiri

這個選項會設(shè)置harakiri超時時間(可以看wiki首頁的相關(guān)內(nèi)容)。如果一個請求花費的時間超過了這個harakiri超時時間,那么這個請求都會被丟棄,并且當前處理這個請求的工作進程會被回收再利用(即重啟)。

--harakiri60

這個設(shè)置會使uwsgi丟棄所有需要60秒才能處理完成的請求。

harakiri-verbose

When a request is killed by harakiri you will get a message in the uWSGI log. Enabling this option will print additional info (for example in Linux will be reported the current syscall)

當一個請求被harakiri殺掉以后,你將在uWSGI日志中得到一條消息。激活這個選項會打印出額外的信息(例如,在linux中會打印出當前的syscall)。

--harakiri-verbose

以上配置會開啟harakiri的額外信息。

spooler-harakiri

set the harakiri mode for spooler tasks

為spooler任務(wù)設(shè)置harakiri模式

--spooler-harakiri option

mule-harakiri

為mule進程設(shè)置harakiri模式

--mule-harakiri

xmlconfig or xml

加載指定的xml配置文件。當使用命令行參數(shù)時,可以使用簡化命令“-x”。在xml配置文件中,你可以有多個“”節(jié),不同的節(jié)之間用id屬性區(qū)分。通過在文件名后面增加id(使用冒號分隔)來選擇應(yīng)用哪個“”節(jié)。

--xml /etc/myapp.xml

以上配置會加載/etc/myapp.xml這個配置文件。

--xml /etc/myapp.xml:django

以上命令會使用/etc/myapp.xml這個配置文件中的“django”這個節(jié)作為配置選項

這個文件內(nèi)容可以像如下這樣:

/tmp/tg.sock/tmp/django.sock>

這種情況下,根節(jié)點可以是任何你想要的名字(這就允許你可以將uwsgi這個配置節(jié)加到其他xml文件中)

如果在命令行的最后一個參數(shù)以“.xml”結(jié)尾,那么就隱含將加載該xml文件作為配置。

/usr/bin/uwsgi /etc/myapp.xml

以上命令會使uWSGI自動加載 /etc/myapp.xml配置文件。

set

設(shè)置一個占位符

--setKEY=VALUE

daemonize

使進程在后臺運行,并將日志打到指定的日志文件或者udp服務(wù)器

--daemonize /var/log/uwsgi.log

這個指令會讓uWSGI在后臺運行并將日志打到 /var/log/uwsgi.log文件中。

[uwsgi]daemonize =192.168.0.100:4000

這個配置將會使uWSGI在后臺運行,并且將日志消息發(fā)送給監(jiān)聽192.168.0.100:4000這個地址的udp服務(wù)器。見UdpLogging

stop

發(fā)送一個SIGINT信號給文件中的pid標識的uWSGI

--stop

reload

發(fā)送一個SIGHUP信號給文件中的pid標識的uWSGI

--reload

listen

設(shè)置socket的監(jiān)聽隊列大小(默認:100)。

每一個socket都有一個相關(guān)聯(lián)的隊列,請求會被放入其中等待進程來處理。當這個隊列慢的時候,新來的請求就會被拒絕。

隊列大小的最大值依賴于系統(tǒng)內(nèi)核。

max-vars

設(shè)置uwsgi客戶端能夠傳遞給uwsgi的變量的最大數(shù)量值。這只是一個安全相關(guān)的值,大多數(shù)情況下你是不需要設(shè)置它的。

buffer-size

設(shè)置用于uwsgi包解析的內(nèi)部緩存區(qū)大小。默認是4k。

如果你打算接受一個擁有很多請求頭的大請求,你可以增加這個值到64k。

--buffer-size32768

這個命令會允許uWSGI服務(wù)器接收最大為32k的uwsgi包,再大的包就會被拒絕。

memory-report

enable memory usage report. This will print in the request log information about RSS and address space usage.

開啟內(nèi)存使用情況報告。這將打印請求相關(guān)的內(nèi)存和虛擬內(nèi)存的使用情況。

cgi-mode

開啟cgi模式。響應(yīng)將不再是HTTP可用的響應(yīng),而是cgi響應(yīng)(會增加Status:這個請求頭)

abstract-socket

chmod-socket or chmod

unix socket是個文件,所以會受到unix系統(tǒng)的權(quán)限限制。如果你的uwsgi客戶端沒有權(quán)限訪問uWSGI socket,你可以用這個選項設(shè)置unix socket的權(quán)限。

當在xml配置文件中只是用這個選項作為一個標識符,那么會將權(quán)限設(shè)為666,否則就是設(shè)置為指定的權(quán)限值。

這個配置會將socket文件的權(quán)限設(shè)為666

644

這個配置會將socket文件的權(quán)限設(shè)為644

freebind (Linux only)

允許綁定到一個不存在的網(wǎng)絡(luò)地址。

map-socket

當你將一個uWSGI實例綁定到多個socket,你可以指定某些工作進程到某些socket來提高服務(wù)質(zhì)量。

[uwsgi]

socket = /tmp/uwsgi0.sock

socket = /tmp/uwsgi1.sock

workers = 5

map-socket = 0:1,2,3

map-socket = 1:4,5

這個配置會使工作進程1,2和3綁定到第一個socket,而工作進程4和5綁定到第二個socket。

如果你讓多個app都由同一個uWSGI實例來處理,你可以很方便地為每一個app分配資源。

enable-threads

允許用內(nèi)嵌的語言啟動線程。這將允許你在app程序中產(chǎn)生一個子線程。

single-interpreter

一些語言(比如python)有“多解釋器”的概念。他們允許在同一個進程中獨立存在不同的app。如果你不想用這個特性,你可以使用該選項。

auto-procname

這個選項將自動給uWSGI的進程設(shè)置一些有意義的名字,例如“uWSGI master”, “uWSGI worker 1”, “uWSGI worker 2”。

procname-prefix

這個選項為進程名指定前綴。

--procname-prefix

例如:

--procname-prefix test

那么,進程名將變成“testuWSGI master”、“testuWSGI worker 1”、“testuWSGI worker 2”等,test與uWSGI之間是連在一起的,可讀性較差。

procname-prefix-spaced

用這個選項給進程名指定前綴時,前綴和進程名之間有空格分隔。

--procname-prefix-spaced

例如:

--procname-prefix-spaced test

那么,進程名將變成“test uWSGI master”、“test uWSGI worker 1”、“test uWSGI worker 2”等,比procname-prefix的可讀性好一點。

多次使用,后一次使用將覆蓋前一次,即以最后一次使用為準。

procname-append

這個選項為進程名增加指定的后綴。

--procname-append

例如:

--procname-append test

那么,進程名將變成“uWSGI mastertest”、“uWSGI worker 1test”、“uWSGI worker 2test”等,test與master或者1、2是連在一起的,可讀性也比較差。

多次使用,后一次使用將覆蓋前一次,即以最后一次使用為準。

procname

為進程指定名字。

--procname

例如:

--procname test

那么,所有進程的名字(包括主進程和工作進程)都變成了“test”。只能根據(jù)PPID來判斷哪個是主進程(主進程的PPID為1)。

注意,使用procname-prefixprocname-prefix-spaced以及procname-append都能在當前選項修改生效的基礎(chǔ)上增加前綴和后綴。

多次使用,后一次使用將覆蓋前一次,即以最后一次使用為準。

procname-master

指定主進程的名字。

--procname-master

例如:

--procname-master test

那么,主進程的名字就變成了“test”。

注意,使用procname-prefixprocname-prefix-spaced以及procname-append都能在當前選項修改生效的基礎(chǔ)上增加前綴和后綴。

多次使用,后一次使用將覆蓋前一次,即以最后一次使用為準。

另外,該選項將覆蓋procname對主進程名字的修改。所有可以把procname和procname-master配合使用,達到修改所有進程的名字的同時又能將主進程和工作進程區(qū)分開的效果。

master

啟動主進程。

emperor

開啟uWSGI的Emperor模式。

emperor-tyrant

開啟emperor的tyrant模式。見tyrant

emperor-stats or emperor-stats-server

為emperor模式開啟一個uWSGI的統(tǒng)計服務(wù)器。見stats server

--emperor-stats

early-emperor

start the emperor before jailing and privileges drop

emperor-broodlord

為emperor開啟bloodlord模式。見broodlord

emperor-amqp-vhost

set virtualhost name in AMQP emperor mode

emperor-amqp-username

set username name in AMQP emperor mode

emperor-amqp-password

set password name in AMQP emperor mode

emperor-throttle

set the number of milliseconds (default 1000) to wait before each vassal's fork()

vassals-start-hook

will be executed when the emperor starts the vassals

--vassals-start-hook

vassals-stop-hook

will be executed when the emperor stop the vassals

--vassals-stop-hook

auto-snapshot

UNKNOWN

--auto-snapshot1

reload-mercy

設(shè)置在平滑的重啟(直到接收到的請求處理完才重啟)一個工作子進程中,等待這個工作結(jié)束的最長秒數(shù)。

--reload-mercy8

這個配置會使在平滑地重啟工作子進程中,如果工作進程結(jié)束時間超過了8秒就會被強行結(jié)束(忽略之前已經(jīng)接收到的請求而直接結(jié)束)。

exit-on-reload

迫使在重啟過程中結(jié)束uWSGI的棧。這個選項只在某系特殊情況有用。

help or usage

打印幫助信息到標準輸出,然后退出。

reaper

開啟reaper模式。沒處理一個請求,服務(wù)器就會調(diào)用waitpid(-1)來清除所有的僵尸進程。如果你在你的app中生成了子進程,結(jié)束后又成為了很多僵尸進程,那么你可以開啟這個選項。但遇到這種情況你更應(yīng)該修復你這種子進程的使用方式(如果可以的話)。

max-requests

為每個工作進程設(shè)置請求數(shù)的上限。當一個工作進程處理的請求數(shù)達到這個值,那么該工作進程就會被回收重用(重啟)。你可以使用這個選項來默默地對抗內(nèi)存泄漏(盡管這類情況使用reload-on-as和reload-on-rss選項更有用)。

[uwsgi]max-requests =1000

上述配置設(shè)置工作進程沒處理1000個請求就會被回收重用。

socket-timeout

為所有的socket操作設(shè)置內(nèi)部超時時間(默認4秒)。

--socket-timeout10

這個配置會結(jié)束那些處于不活動狀態(tài)超過10秒的連接。

locks

create locks for you to use. seelocks

創(chuàng)建n個鎖以供使用。見locks

--locks

sharedarea

這個選項將開啟SharedArea。這將允許一個比較低級的內(nèi)存共享。如果你希望用一個更好用更友好的共享系統(tǒng),可以看CachingFramework

--sharedarea10

這個配置將創(chuàng)建一個10個頁的共享內(nèi)存區(qū)。

cache

開啟共享cache。見CachingFramework

cache-blocksize

設(shè)置cache的塊大小,默認為65536字節(jié)。最好設(shè)置為4096的倍數(shù)。

cache-store

開啟該選項,使uWSGI的cache中的內(nèi)容能夠被長久的保存。

cache-store-sync

設(shè)置msync()這個函數(shù)的調(diào)用頻率,調(diào)用msync()這個函數(shù)能夠?qū)ache中的內(nèi)容寫到磁盤上。

queue

UNDOCUMENTED

queue-blocksize

UNDOCUMENTED

queue-store

UNDOCUMENTED

queue-store-sync

UNDOCUMENTED

spooler

在指定的目錄下建立一個Spooler

[uwsgi]

spooler = /home/foo/spooler

這個配置會將spooler文件保存到/home/foo/spooler directory目錄下。

spooler-chdir

這個選項允許你為每一個spooler任務(wù)定義一個公共的目錄。

--spooler-chdir

mule

增加一個mule進程。見Mules

disable-logging

不記錄請求信息的日志。只記錄錯誤以及uWSGI內(nèi)部消息到日志中。

pidfile

在失去權(quán)限前,將pid寫到指定的pidfile文件中。

pidfile2

在失去權(quán)限后,將pid寫到指定的pidfile文件中。

chroot

使用chroot()改變默認目錄到指定目錄。

gid

在uWSGI服務(wù)器將要運行的情況下,設(shè)置gid。

uid

在uWSGI服務(wù)器將要運行的情況下,設(shè)置uid。

ini

設(shè)置ini配置文件的路徑。

--ini

yaml or yml

設(shè)置yaml配置文件的路徑。

--yaml

json

設(shè)置json格式的配置文件的路徑。

格式遵循的規(guī)則跟其他支持的配置格式一樣(支持正整數(shù),布爾數(shù)和數(shù)組):

{"uwsgi":? {? ? ? "http": ":8080",? ? ? "master":true,? ? ? "module": "werkzeug.testapp:test_app",? ? ? "workers": 8,? ? ? "pythonpath":? [ "/foo", "/bar" ]? ? ? }}

為了使用JSON,你需要jansson庫。默認情況下,會自動檢測到庫的所在位置,但是你也可以buildconf或者默認ini配置文件來指定。emperor已經(jīng)被擴展支持.js文件了。

--json

ldap

從ldap服務(wù)器加載配置文件。見UseLdap(目前無文檔)。

ldap-schema

dump the LDAP schema (old-style format)

ldap-schema-ldif

dump the LDAP schema in LDIF format (new openldap)

no-server

初始化uWSGI服務(wù)器,然后當初始化工作完成時立即結(jié)束(可以用來作測試)。

no-defer-accept

默認情況下(這個配置有效的情況下)uWSGI會延遲調(diào)用accept()去獲取請求,直到客戶端發(fā)送請求數(shù)據(jù)過來(這種方法能夠提高性能和安全性)。可以使用這個選項來禁用這個特性。

limit-as

通過使用POSIX/UNIX的setrlimit()函數(shù)來限制每個uWSGI進程的虛擬內(nèi)存使用數(shù)。

--limit-as256

這個配置會限制uWSGI的進程占用虛擬內(nèi)存不超過256M。如果虛擬內(nèi)存已經(jīng)達到256M,并繼續(xù)申請?zhí)摂M內(nèi)存則會使程序報內(nèi)存錯誤,本次的http請求將返回500錯誤。

英文文檔中還解釋了address space其實就是虛擬內(nèi)存。

在使用這個選項前先理解這個頁面的內(nèi)容:?http://en.wikipedia.org/wiki/Virtual_memory

reload-on-as

當一個工作進程的虛擬內(nèi)存占用超過了限制的大小,那么該進程就會被回收重用(重啟)。

--reload-on-as128

這個配置會重啟所有占用虛擬內(nèi)存超過128M的工作進程。當工作進程因此重啟時,本次請求的響應(yīng)不會受影響,返回正常結(jié)果。

reload-on-rss

跟reload-on-as的效果類似,不過這個選項控制的是物理內(nèi)存。你可以同時使用這2個選項:

uwsgi:? reload-on-as:128reload-on-rss:96

這個配置會導致所有占用128M以上虛擬內(nèi)存或者超過96M物理內(nèi)存的工作進程重啟。

當工作進程因此重啟時,本次請求的響應(yīng)不會受影響,返回正常結(jié)果。

evil-reload-on-as

主進程會重啟占用虛擬內(nèi)存超過M的工作進程。

--evil-reload-on-as

evil-reload-on-rss

主要效果跟evil-reload-on-as一樣,但是這個選項控制的是非共享物理內(nèi)存。

--evil-reload-on-rss

log-x-forwarded-for

當uWSGI運行在多代理下時,會將正確的客戶端IP打到日志中。

touch-reload

當文件改變時,優(yōu)雅的重啟uWSGI。

uwsgi:

? touch-reload: /tmp/reload.txt

如果你使用下面的命令:

touch /tmp/reload.txt

那么uWSGI服務(wù)器就會優(yōu)雅的重啟。

limit-post

限制HTTP請求體的大小。uWSGI通過CONTENT_LENGTH字段值來獲得請求體的大小。

--limit-post65536

將不允許請求體超過64k的請求。

no-orphans

在沒有主進程的情況下自動結(jié)束工作進程。

prio

設(shè)置進程的系統(tǒng)調(diào)度優(yōu)先級。

20

上述配置將設(shè)置進程的優(yōu)先級為20(具體的值要根據(jù)不同的系統(tǒng)來設(shè)置)。

cpu-affinity

設(shè)置CPU的親和性(只對于Linux系統(tǒng))。見?http://lists.unbit.it/pipermail/uwsgi/2011-March/001594.html

post-buffering

開啟http請求體的緩存。uWSGI將所有大于限定大小的HTTP請求體保存到磁盤中。

[uwsgi]post-buffering =8192

上述配置會使uWSGI將所有大于8K的HTTP請求體都緩存到磁盤中。Rack應(yīng)用程序需要這個選項,因為Rack應(yīng)用程序需要一個可回退的輸入流。

post-buffering-bufsize

為post的緩存設(shè)置內(nèi)部的緩沖區(qū)大小。(這個分配的內(nèi)存是用來讀取socket流的字節(jié)塊)

post-buffering-bufsize65536

上述配置會使uWSGI分配一個64k的socket的recv()函數(shù)的緩存區(qū)。對一個128k的請求體來說,需要使用2個這樣的緩存區(qū)。

這是一個比較高級的選項,你可能永遠不會用到。

upload-progress

開啟嵌入的上傳進度報告。你傳入一個uWSGI有寫權(quán)限的目錄,那么每一個上傳的JSON文件都會放到該目錄下,開啟這個選項后,就會報告當前的上傳狀態(tài)。你可以使用ajax去讀取這些文件,所以配置好你的web服務(wù)器允許對該目錄的訪問。

--upload-progress /var/www/progress

用戶通過如下的url上傳一個文件。

http://uwsgi.it/upload?X-Progress-ID=550e8400-e29b-41d4-a716-446655440000

uWSGI在請求url中找到X-Progress-ID,然后在 /var/www/progress下創(chuàng)建一個文件:

550e8400-e29b-41d4-a716-446655440000.js

該文件的內(nèi)容如下:

{"state":"uploading","received":170000,"size":300000}

假設(shè)你已經(jīng)在你的web服務(wù)器中將/progress這個URI映射到了/var/www/progress這個目錄,那么你可以通過ajax pointing來獲得那些json數(shù)據(jù)。

/progress/550e8400-e29b-41d4-a716-446655440000.js

很可能你的web服務(wù)器已經(jīng)擁有一個相似的功能了,但是如果你需要改進原有的功能(或者只是想有更多的控制),那么就將該功能委托給uWSGI服務(wù)器。

no-default-app

默認情況下,當uWSGI沒有找到SCRIPT_NAME指定的app時,會使用默認的app(大多數(shù)情況,默認的app都位于/目錄下)。開啟這個選項,在沒有可用的app時會返回一個錯誤。

manage-script-name

如果因為某些原因,你的web服務(wù)器不能處理SCRIPT_NAME,你可以強制uWSGI自動重建PATH_INFO。

udp

啟動一個udp服務(wù)器,主要用在snmp或者為UdpLogging提供一個共享的打日志服務(wù)器。

multicast

內(nèi)部選項,用于第三方插件。

cluster

加入指定的集群。見Clustering

cluster-nodes

你可以得到一個集群里的節(jié)點列表,而不需要加入這個集群。

--cluster-nodes225.1.1.1:1717

使用上述選項能得到225.1.1.1:1717這個集群的所有節(jié)點。這個列表提供給uwsgi內(nèi)部均衡負載api用的。

cluster-reload

優(yōu)雅地重啟整個集群。

--cluster225.1.1.1:1717--cluster-reload

使用上述選項會重啟225.1.1.1:1717這個集群中的所有節(jié)點。

cluster-log

給一個集群的所有節(jié)點服務(wù)器發(fā)送一個日志信息。

--cluster225.1.1.1:1717--cluster-log"Hello World"

上述選項會在所有的節(jié)點日志文件中打印出"Hello World"

subscribe-to or st or subscribe

訂閱一個SubscriptionServer,你可以通過配置多次該選項來達到訂閱多個服務(wù)器的目的。

[uwsgi]subscribe-to =192.168.0.1:2626:unbit.itsubscribe-to =192.168.0.2:2626:uwsgi.it

shared-socket

一個高級選項,插件作者會用到,或者用于一些特殊的需求。該選項允許服務(wù)器在啟動早期創(chuàng)建一個socket,在失去特權(quán)或者被監(jiān)禁的時候依然能使用它。

snmp

啟動一個SNMP服務(wù)器。見UseSnmp

snmp-community

set the snmp community string

check-interval

主進程每秒都會進行一次掃描。如果需要你可以加長這個掃描時間。不建議。

binary-path

如果uWSGI的二進制文件路徑?jīng)]有加到系統(tǒng)環(huán)境變量中,你可以使用這個選項強制改變二進制的查找路徑,那么重載系統(tǒng)和Emperor都能輕易找到可執(zhí)行的二進制文件。

async

開啟異步模式。見AsyncSupport

logto

將日志打到一個指定的文件或者udp服務(wù)器。

logfile-chown

log-syslog

將日志打到系統(tǒng)日志上,而不再打到日志文件中。

傳入一個參數(shù),使uwsgi使用這個參數(shù)作為程序名,用在系統(tǒng)日志開始部分里。

--log-syslog mywebapp

log-master

委托主進程來負責日志的寫操作(這將把所有的日志IO操作都放到一個進程中)。對使用高級的IO調(diào)度策略的系統(tǒng)來說是很有用的。

logdate or log-date

在每一個日志行中都打印時間信息。你可以傳入一個strftime()格式的參數(shù),來格式化時間的格式。

log-zero

打印請求大小為0的請求。

log-slow

log-4xx

log-5xx

log-big

log-sendfile

log-micros

使用微秒作為日志中響應(yīng)時間的單位(默認是毫秒)。

master-as-root

以root權(quán)限運行uWSGI的主進程。

chdir

在失去權(quán)限前,使用chdir()到指定目錄。

chdir2

在失去權(quán)限后,使用chdir()到指定目錄。

lazy

等每一個工作進程都生成以后才加載應(yīng)用程序。

cheap

延遲啟動工作進程直到第一個請求到來。當?shù)谝粋€請求來時就會啟動預先設(shè)置個數(shù)的工作進程。

如果沒有設(shè)置工作進程數(shù),那么最多只會啟動一個工作進程。

cheaper

一個高階的cheap模式,這個選項將在啟動的時候只分配n個工作進程,并將使用多種算法來實現(xiàn)適應(yīng)性的進程啟動。

在啟動的時候至少會分配一個工作進程,即及時設(shè)置n為0,也會在最開始啟動一個工作進程。

如果當前工作進程不足以處理收到的請求,那么就會按請求量按需啟動其他的工作進程,直到工作進程達到預先設(shè)置的個數(shù)。

如果沒有設(shè)置工作進程數(shù),那么只會在剛啟動的時候啟動一個工作進程,之后將不再啟動其他進程。

--cheaper

idle

在經(jīng)過秒的不活躍狀態(tài)后銷毀工作進程(這時就進入了cheap模式),只會剩下主進程。

如果有cheaper選項,那么就進入cheaper模式,之后收到第一個請求就會啟動工作進程,啟動的個數(shù)由cheaper選項里配置的n決定。

--idle

mount

允許同一個進程加載多個app。

--mount /pinax=/var/www/pinax/deploy/pinax.wsgi

grunt

allows grunt processes

threads

開啟線程操作模式。你必須指定每個工作進程的線程數(shù)。

--threads40--workers2

這個配置會導致生成2個工作進程,每個工作進程有40個子線程。

vhost

開啟虛擬主機模式。見VirtualHosting

vhost-host

默認情況下,虛擬主機模式使用SERVER_NAME作為主機名的關(guān)鍵字。如果你希望使用HTTP_HOST,那就加這個選項。

check-static

uWSGI會在移交控制權(quán)給指定處理者之前檢查該選項指定的目錄。

uWSGI會檢查這個目錄,如果剛好請求的PATH_INFO有一個文件在這個目錄,那么uWSGI就會提供這個文件。

--check-static/var/www/example.com

使用上述配置,如果客戶端請求foo.png,而該文件又恰好存在于/var/www/example.com/foo.png,那么uWSGI就會直接用指定的方法提供這個文件(默認是用sendfile ())。

static-map

映射一個資源到靜態(tài)文件區(qū)。

[uwsgi]static-map = /media=/var/www/django/contrib/admin/mediastatic-map = /images=/var/www/example.com/images

?無論什么時候一個PATH_INFO匹配到配置文件中的資源,uWSGI會直接用指定的方法提供這個文件(默認是用sendfile ())。

static-index

在目錄索引中用到的靜態(tài)文件的文件名。

static-index = index.html

如果請求/doc/,那么uWSGI將檢查/doc/index.html,如果存在就會提供給客戶端。

file-serve-mode

設(shè)置靜態(tài)服務(wù)模式:

1.x-sendfile:將使用X-Sendfile頭(apache, Cherokee, lighttpd)

2.x-accel-redirect:將使用X-Accel-Redirect header(nginx)

3.default:使用sendfile()

--file-serve-mode x-sendfile

check-cache

檢查uWSGI cache中是否存在PATH_INFO指定的內(nèi)容,如果存在就提供該內(nèi)容。

close-on-exec

給uWSGI的socket設(shè)置close-on-exec標識,這將避免在一個請求中產(chǎn)生額外的進程,來繼承socket文件的描述符。

mode

普通選項,app可以使用uwsgi.mode來獲得這個選項值。

env

設(shè)置一個系統(tǒng)環(huán)境變量。

[uwsgi]

env = DJANGO_SETTINGS_MODULE=mysite.settings

這個配置將會設(shè)置一個環(huán)境變量DJANGO_SETTINGS_MODULE,它的值為mysite.settings

vacuum

當服務(wù)器退出的時候自動刪除unix socket文件和pid文件。

cgroup

run the server in cgroup (Linux only)

cgroup-opt

設(shè)置cgroup選項(僅限于Linux)

--cgroup-opt KEY=VAL

reuse-port(BSD only)

允許多個實例綁定到同一個地址。

loop

設(shè)置LoopEngine(高級選項)

worker-exec

funny option to map a new executable to a uWSGI worker. You can run a php fastcgi server pool in this way

/usr/bin/uwsgi --workers4--worker-exec /usr/bin/php53-cgi

attach-daemon

給uWSGI主進程附加一個進程,并允許主進程控制、監(jiān)控、重啟這個進程。一個比較典型的使用是給主進行附加一個memcached實例。

[uwsgi]master =trueattach-daemon = memcached

plugins

加載指定的插件。

--plugins psgi,greenlet

這個配置將加載psgi插件和greenlet插件。

allowed-modifiers

限制客戶端只能訪問modifiers的子集。

--allowed-modifiers0,111

這個配置將只允許客戶端訪問WSGI處理程序和cache處理程序。

remap-modifier

dump-options

打印所有可用的選項,然后退出。

show-config

以ini文件格式打印當前的配置。

print

將在解析配置文件的工程中打印一個字符串。

[uwsgi]

print = foo

將在服務(wù)器啟動的時候打印"foo"。

version

打印出uWSGI的版本,然后退出。

wsgi-file or file[python plugin required]

加載指定的WSGI文件(與Graham的mod_wsgi形式兼容)

eval[python plugin required]

把計算一個字符串的值作為WSGI的入口。

def application(e, sr):? ? pass

module[python plugin required]

加載指定的python WSGI模塊(模塊路徑必須在PYTHONPATH里)

callable[python plugin required]

設(shè)置在收到請求時,uWSGI加載的模塊中哪個變量將被調(diào)用,默認是名字為“application”的變量。

test[python plugin required]

測試一個模塊是否能被成功的加載。

home or virtualenv or venv or pyhome[python plugin required]

為python程序設(shè)置指定的虛擬環(huán)境變量。

--virtualenv /apps/env001

使用在/apps/env001的虛擬環(huán)境變量。

pythonpath or python-path or pp[python plugin required]

給PYTHONPATH 增加一個目錄(或者一個egg),你可以最多使用該選項64次。

[uwsgi]

pp = myapp/lib

pp = trac.egg

pymodule-alias[python plugin required]

該選項允許python模塊的重映射。見PymoduleAlias

pyargv[python plugin required]

set the python sys.argv

設(shè)置python的系統(tǒng)參數(shù)(sys.argv)

--pyargv"one two three"

該配置會將sys.argv 設(shè)為('one','two','three')。

optimize

設(shè)置python為最優(yōu)化級別(要小心)

paste

use paste.deploy to load a WSGI app

使用paste.deploy 來加載一個WSGI程序。

uwsgi --paste config:/foo/development.ini

ini-paste

ini和paste這2個選項的簡化,在文件解析完之后,將使用同樣的文件作為paste.deploy的配置文件。

ini-paste-logged

load a paste.deploy config file containing uwsgi section (load loggers too)

catch-exceptions

在你的瀏覽器中打印出traceback信息,而不是在日志文件中(不要在實際產(chǎn)品中使用這個選項)。

ignore-script-name

pep3333-input

reload-os-env

no-site[python plugin required]

不加載python的site.py模塊。

ping[ping plugin required]

工具性的選項。ping一個uwsgi服務(wù)器,如果ping成功,難么進程就會退出,并返回0,否則返回一個大于0的值。

/usr/bin/uwsgi --ping192.168.0.100:1717

將ping在192.168.0.100:1717的uWSGI服務(wù)器。

ping-timeout[ping plugin required]

設(shè)置ping的超時時間(默認是3秒)。ping的等待時間超過指定的秒數(shù)后就認為該uWSGI實例已失效。

/usr/bin/uwsgi --ping192.168.0.100:1717--ping-timeout10

將設(shè)置ping的超時時間為10秒。

nagios

作nagios檢查。

fastrouter

Run the fastrouter (it is a uwsgi proxy/load balancer) on specific address

在指定的地址上運行fastrouter(這是一個uwsgi的代理、負載均衡)。

[uwsgi]fastrouter =127.0.0.1:3017

在127.0.0.1:3017這個地址上運行fastrouter

fastrouter-use-cache

check the uwsgi cache to get hostname:address mapping

fastrouter-use-pattern

use a filesystem pattern to get hostname:address mapping

fastrouter-use-base

fastrouter-events

limit the max number of async events the fastrouter can return in one cycle

fastrouter-subscription-server

add aSubscriptionServerto the fastrouter to build the hostname:address map

fastrouter-timeout

設(shè)置fastrouter的內(nèi)部超時時間。

http

開啟嵌入的http服務(wù)器、路由、網(wǎng)關(guān)、負載均衡、代理。

http-var

http-to

http-modifier1

http-use-cache

http-use-pattern

http-use-base

http-use-cluster

http-events

http-subscription-server

enable theSubscriptionServerfor clustering and massive hosting/load-balancing

http-timeout

設(shè)置內(nèi)部http的socket超時時間。

ugreen [ugreen plugin required]

enable uGreen as suspend/resume engine. SeeuGreen

ugreen-stacksize [ugreen plugin required]

set the stack size foruGreen

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,363評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,497評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,305評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,962評論 1 311
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,727評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,193評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,257評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,411評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,945評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,777評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,978評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,519評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,216評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,657評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,960評論 2 373

推薦閱讀更多精彩內(nèi)容

  • 學習 Flask,寫完一個 Flask 應(yīng)用需要部署的時候,就想著折騰自己的服務(wù)器。根據(jù)搜索的教程照做,對于原理一...
    Cocoa_Coder閱讀 17,189評論 4 56
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,782評論 18 139
  • 談?wù)揥EB編程的時候常說天天在寫CGI,那么CGI是什么呢?可能很多時候并不會去深究這些基礎(chǔ)概念,再比如除了CGI...
    __七把刀__閱讀 2,213評論 2 11
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,885評論 0 5
  • 說在前頭 專業(yè)的壓力管理培訓課程,我選擇——微信搜索公眾號講師約(微信號:china_jsy) 我的壓力從何而來?...
    scho閱讀 220評論 0 0