UWSGI和NGINX for Ubuntu 11.10上的Python应用程序

我试图find一个最佳的方式来设置我的服务器使用NGINX和UWSGI服务python应用程序。 以下工作到目前为止:

初始设置:

sudo apt-get install nginx uwsgi uwsgi-plugin-http uwsgi-plugin-python python-setuptools easy_install pip pip install web.py 

在/ etc / nginx的/网站可用/默认:

 server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:9090; } } 

然后我有一个基本的myapp.py(位置不关心当前的设置):

 import web urls = ( '/', 'index' ) app = web.application(urls, globals()) class index: def GET(self): return "Hello from Web.py!" application = app.wsgifunc() 

然后我可以发出以下命令,一切工作:

 sudo service nginx restart uwsgi --plugins http,python -s 127.0.0.1:9090 myapp 

所以它可以工作,但不是很漂亮。 我注意到当我用apt-get安装UWSGI时,创build了两个目录: /etc/uwsgi/apps-available/etc/uqsgi/apps-enabled 。 这与运行NGINX或Apache的debian服务器的约定只与apps而不是sites

下面是真棒:我希望能够将应用程序configuration下载到apps-available根据需要在apps-enabled创build符号链接),然后让UWSGI服务接收它们。 但我不知道从哪里开始。 我apps-available哪些configuration文件? 那么NGINXconfiguration看起来像传递给uwsgi服务,而不是传递到我之前发布的命令创build的套接字?

我得到它的工作! 以下是我所做的:

创build/etc/uwsgi/apps-available/myapp.xml:

 <uwsgi> <socket>/tmp/uwsgi-myapp.sock</socket> <plugins>http, python</plugins> <chdir>/path/to/directory/containing/python/app</chdir> <module>myapp</module><!-- myapp.py from before --> </uwsgi> 

发出以下命令:

 ln -s /etc/uwsgi/apps-available/myapp.xml /etc/uwsgi/apps-enabled/myapp.xml sudo service uwsgi restart 

更新了/ etc / nginx / sites-available / default:

 server { listen 80; server_name localhost; location / { include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi-myapp.sock; } } 

重启NGINX:

 sudo service nginx restart 

而一切都是金色的! 显然,以上是一个非常简单的configuration,在开始生产之前,应该查看可用的UWSGI和NGINX选项。

在UWSGIconfiguration中,还有一个工作是<socket>127.0.0.1:9090</socket>并保持原来的NGINXconfiguration。

最后说明:UWSGI支持多种格式的configuration:(INI,XML和YAML)。 我最初尝试YAML,但服务器将无法启动,所以我尝试XML,一切工作正常。

编辑:

我只是尝试INIconfiguration,它也工作。 上面的XML文件等价的INI文件如下所示:

 [uwsgi] socket = /tmp/uwsgi-myapp.sock plugins = http, pythong chdir = /path/to/directory/containing/python/app module = myapp