ini配置文件python
[uwsgi] callable = app ;//程序內啓用的application變量名 home = /home/jcuan/code/python/project/venv ;若是是venv環境下,必定要設置路徑 pythonpath = /home/jcuan/code/python/project/venv ;能夠設置pythonpath的路徑,flask命令行會自動設置一些路徑(好比個人自動設置了: /home/jcuan/code/python/project/venv),注意這個不會 socket = /tmp/uwsgi.sock ; 啓動程序時所使用的地址和端口,能夠採用端口或者unix socket wsgi-file = /home/jcuan/code/python/project/venv/application/__init__.py ;flask程序的啓動文件,這個文件裏不須要有app.run(),有了反而會出錯 processes = 4 ;//處理器個數 threads = 2 ;//線程個數
不知道是有什麼特殊緣由:1,callable不能在ini文件裏配置,無論配置什麼都是默認的application;2,chmod-sock在ini裏配置無效
運行nginx
uwsgi --plugin python --ini uwsig.ini --callable app --chmod-sock=666
nginx的文件配置大概以下(location是/,不會分別配置。。):flask
location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; }
雖然能夠運行,不過我在__init__.py裏面import的視圖函數通通沒有起做用,雖然綁定了,可是訪問對應的url是404,只有定義在__init__.py的視圖函數才起做用服務器
gunicorn.conf的基本配置,注意字符串都要用引號包含起來
注意這個地方也有坑,不要把sock文件放在/tmp目錄下,最好放/run等目錄下,由於服務器的緣由,/tmp目錄下文件可能只對特定的服務可見。app
your system probably using namespaced temporary directories, which means every service can only see its own files in /tmpsocket
workers = 3 #進程數 timeout = 30 #超時 bind = 'unix:/tmp/flask.socks' #nginx監聽位置 backlog = 1000 #監聽隊列長度
而後又進入了一個坑,nginx那邊的超簡化版配置應該像這樣函數
server { listen 80; server_name 127.0.0.1; location / { include proxy_params; #這裏邊設置了一些代理須要轉換的頭,好比獲得真實ip, proxy_set_header X-Real-IP $remote_addr; proxy_pass http://unix:/tmp/flask.sock; #很奇葩,我一直寫的是unix:/tmp/flask.sock,而後一直都不對 } }
運行l相似下邊的命令就能夠了gunicorn --config application/gunicorn.conf application:app
。application:個人應用所在包的名字,app,flask啓動文件中Flask實例變量的名字url