【问题标题】:Problems deploying Pyramid with uWSGI on Nginx在 Nginx 上使用 uWSGI 部署 Pyramid 的问题
【发布时间】:2012-11-13 08:29:32
【问题描述】:

我似乎在部署 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

我完全不知道为什么这不起作用。如果有人有任何建议,我将不胜感激!

【问题讨论】:

    标签: python nginx pyramid web-deployment init


    【解决方案1】:

    您可以使用以下设置在您的 ini 文件中更改其套接字的权限:

    chmod-socket = 777 # socket permission
    gid = www-data # socket group 
    uid = www-data # socket user
    

    【讨论】:

      【解决方案2】:

      要考虑的另一件事是您是否真的希望 uWSGI 以 root 身份运行。如果您将 --uid 和 --gid 参数传递给 uwsgi,uwsgi 将伪装成不同的(最好是非 root)用户。

      例如,nginx 通常以 www-data 用户和 www-data 组运行。因此,如果您将 wsgi 应用程序设置为使用“--gid www-data”运行,然后使用“--chmod-socket 020”向您的套接字文件添加至少组写入权限,那么 nginx 将能够写入插座,你就可以做生意了。

      请参阅我关于该主题的博文:http://blog.jackdesert.com/common-hurdles-to-deploying-uwsgi-apps-part-1

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-02
        • 2023-02-09
        • 2015-11-02
        • 2016-08-12
        • 2015-11-08
        • 2014-06-04
        • 2014-03-31
        • 2019-04-08
        相关资源
        最近更新 更多