我似乎在部署 Pyramid Web 应用程序时遇到了一些小问题。问题似乎出在我用来在启动时启动 Web 应用程序的初始化脚本中。出于某种原因,除非我的套接字设置为具有“nobody.nobody”的权限或在我的 uwsgi 初始化脚本之后启动 Nginx,否则 uWSGI 将无法工作。我更改了我的初始化脚本以反映这些更改,但它似乎没有工作。初始化脚本(或启动 uwsgi 的部分)如下所示:
#!/sbin/runscript
args="--ini-paste /var/www/pyramid/app1/development.ini"
command="/var/www/pyramid/bin/uwsgi"
pidfile="/var/run/uwsgi.pid"
sock="/var/tmp/proxy/uwsgi.sock"
nobody="nobody.nobody"
start() {
ebegin "Starting app1"
chown $nobody $sock
start-stop-daemon --start --exec $command -- $args \
--pidfile $pidfile
chown $nobody $sock
einfo "app1 started"
eend $?
}
我的 Nginx 配置如下所示:
location / {
include uwsgi_params;
uwsgi_pass unix:///var/tmp/proxy/uwsgi.sock;
uwsgi_param SCRIPT_NAME "" ;
}
我的ini文件包括以下内容:
[uwsgi]
socket = /var/tmp/proxy/uwsgi.sock
pidfile = /var/run/uwsgi.pid
master = true
processes = 1
home = /var/www/pyramid
daemonize = /var/log/uwsgi.log
virtualenv = /var/www/pyramid/
pythonpath = /var/www/pyramid/bin
发生的情况是 Nginx 将启动,然后 uwsgi 将启动。在 /var/tmp/proxy 中执行“ls -la”显示 uwsgi.sock 的权限设置为“root root”而不是“nobody nobody”。但是,无论套接字的权限是什么,重启 Nginx 都会解决问题(但必须先启动 Nginx)。
因此,我可以让它工作的方法是:
- 启动uwsgi
- 启动 nginx
- 重启 nginx
或者
- 启动 nginx
- 启动uwsgi
- 重启 nginx
我完全不知道为什么这不起作用。如果有人有任何建议,我将不胜感激!