【问题标题】:Create uWSGI Socket in other folder?在其他文件夹中创建 uWSGI Socket?
【发布时间】:2012-09-26 14:02:12
【问题描述】:

我想在我的项目文件夹而不是 /tmp/ 中创建 uWsgi 套接字

这是我的 uWSGI 配置

[uwsgi]
socket = /tmp/uwsgi.sock #I want this in any other folder
#say in /home/me/Desktop/myDjangoApp/
chmod-socket = 666
processes = 1
master = true
vhost = true
no-site = true

但是每当我使用在我的文件夹中创建的套接字重新启动 uWSGI 时,它[失败]。 我不能在其他文件夹中创建 uwsgi.sock 吗?

【问题讨论】:

  • 它没有说...什么?
  • 不幸的是,什么也没说..
  • 那么启动失败没有任何错误信息吗?还是请求失败?那是整个配置吗?您是否尝试过使用相同的选项从命令行开始?
  • 是的,启动失败像这样 *重新启动应用服务器 uwsgi [失败]

标签: django nginx uwsgi


【解决方案1】:

我使用以下 uwsgi 配置(简化为相关部分):

[uwsgi]
uid = moin
gid = www-data
socket = /var/run/moin/uwsgi.sock
hook-as-root = exec:mkdir -vp /var/run/moin/; chown -v moin:www-data /var/run/moin/

注意在服务器删除权限之前创建具有用户权限的 /var/run/wiki/ 目录的钩子。随意调用目录,moin 是我的 wiki 引擎的名称。

在较新的发行版上,/var/run 指向一个 tmpfs 位置,因此任何手动创建的目录在重新启动后都会被删除。与添加/修改另一个初始化脚本相比,此文件中的挂钩定义使您的配置更加紧凑。

【讨论】:

    【解决方案2】:

    嗯,我找到了同样的替代解决方案。我在 localhost 中创建了套接字

    这是我的 uwsgi 文件

    [uwsgi]
    uid = www-data
    gid = www-data
    master = 1
    workers = 2
    plugins = python
    socket = 127.0.0.1:3100
    enable-threads = true
    processes = 2
    pythonpath = <>
    wsgi-file = <>
    chdir = <>
    

    【讨论】:

      【解决方案3】:

      unix 套接字必须遵守文件权限方案。

      在第二个配置中,您设置了 uid=www-data 和 gid=www-data。 套接字文件必须是 www-data 可写的,nginx 必须能够读/写 /tmp/uwsgi.sock

      另一方面,如果您觉得这很困难,使用 host:port(tcp 套接字)也可以,而且您似乎可以这样做。

      【讨论】:

      • 是的,对 tcp 套接字很满意
      • 这是正确的答案,用户 www-data 没有在 /home/me/Desktop/myDjangoApp/ 中创建文件的权限。不要使用 chmod-socket 666。600 会很好,因为 nginx 也作为 www-data 运行。 sudo install -o www-data -g www-data -m 755 -d /var/run/uwsgi 然后使用该路径将您的套接字放入。
      猜你喜欢
      • 1970-01-01
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 2023-03-14
      相关资源
      最近更新 更多