用 uWSGI 來啟動 wsgi 的服務,除了傳統的方式,還可以一次管理多個 wsgi 的服務
還有另外一種作法 Emperor 可以對特定資料夾裡所有的設定檔,個別管理,更適合作 PASS 服務的人, http://projects.unbit.it/uwsgi/wiki/Emperor
我的需求沒有這麼大,只是一起跑多個 wsgi ,省一些記憶體,就可以了
用 daemontools 來啟動,這裡面的 buffer-size 有要吃外部的 post back 要加大,不然,預設的實在是太小,最重要的是預設值 PayPal
IPN callback 吃不下,收到錢還不知道,夠重要了吧
#!/bin/bash # default buffer-size is 4k 4096 exec setuidgid yourname uwsgi --buffer-size 32768 -s 127.0.0.1:3031 -p 3 -M --vhost
以在 Debian 上面的 nginx 裡面的設定範例
server { listen 80; server_name yourcoolsite.com; location /static { alias /yourstatic/folder/; } location / { include uwsgi_params; #uwsgi_pass unix:/tmp/digez.sock; uwsgi_param UWSGI_PYTHONPATH /home/yourname; uwsgi_param UWSGI_CHDIR /home/yourname/yourcoolsite; uwsgi_param UWSGI_ENV DJANGO_SETTINGS_MODULE=yourcoolsite.settings; uwsgi_param UWSGI_MODULE application; uwsgi_pass 127.0.0.1:3031; }
放在 /home/yourname/yourcoolsite/ 的 wsgi application.py script 範例
sys.path.append 那兩行,在 Django 1.4 以下,也就是 1.3.1 (含) 以下,都要加,比較不會有路徑的問題
Django 目前的 Dev(或是 trunk 或是 github 上面 master) 開發版,已經改變 project 的路徑,所以不用再加了
# coding: utf-8 import sys import os sys.path.append(os.path.abspath(os.path.dirname(__file__))) sys.path.append('..') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
沒有留言:
張貼留言