AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1039616
Accepted
Codejoy
Codejoy
Asked: 2020-10-22 11:57:24 +0800 CST2020-10-22 11:57:24 +0800 CST 2020-10-22 11:57:24 +0800 CST

在树莓派上运行 django 和 gunicorn

  • 772

所以我想在这里遵循这个:

https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

除了最新的树莓派。我认为或认为我已经正确配置了所有内容......

在上面的那个教程中,它让你从创建一个 django 项目到让它在 gunicorn 下运行,甚至测试它:

激活虚拟环境,然后

cd ~/myproject
gunicorn --bind 0.0.0.0:8000 myproject.wsgi

这部分有效,一旦出现,就像我做了一个 python3 manage.py runserver 0.0.0.0:8000

我可以然后转到我的浏览器并输入主机名:

webserver2.abc.com:8000

并且所有作品的应用程序都出现了。

如果我停止 gunicorn 命令并键入 deactivate,然后我尝试使用我在 /etc/systemd/system 中添加的 .service 运行它。它似乎在运行并且

 sudo systemctl status gunicorn


● gunicorn.service - gunicorn daemon
   Loaded: loaded (/etc/systemd/system/gunicorn.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-10-21 13:24:51 MDT; 50s ago
 Main PID: 7645 (gunicorn)
    Tasks: 4 (limit: 4915)
   Memory: 55.0M
   CGroup: /system.slice/gunicorn.service
           ├─7645 /home/pi/myvirtualenv_covid19/covid19env/bin/python /home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind unix:/tmp/covid19.sock covid19.wsgi:application
           ├─7651 /home/pi/myvirtualenv_covid19/covid19env/bin/python /home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind unix:/tmp/covid19.sock covid19.wsgi:application
           ├─7652 /home/pi/myvirtualenv_covid19/covid19env/bin/python /home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind unix:/tmp/covid19.sock covid19.wsgi:application
           └─7653 /home/pi/myvirtualenv_covid19/covid19env/bin/python /home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind unix:/tmp/covid19.sock covid19.wsgi:application

Oct 21 13:24:51 webserver2 systemd[1]: Started gunicorn daemon.
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7645] [INFO] Starting gunicorn 20.0.4
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7645] [INFO] Listening at: unix:/run/gunicorn.sock (7645)
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7645] [INFO] Using worker: sync
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7651] [INFO] Booting worker with pid: 7651
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7652] [INFO] Booting worker with pid: 7652
Oct 21 13:24:51 webserver2 gunicorn[7645]: [2020-10-21 13:24:51 -0600] [7653] [INFO] Booting worker with pid: 7653

确认。

所以它似乎正在运行,虽然这次再次访问 webserver2.abc.com:8000 不起作用,这是 /etc/systemd/system 中的 gunicorn.service

[Unit]
Description = gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=pi
WorkingDirectory=/home/pi/myvirtualenv_covid19/covid19
ExecStart=/home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind unix:/tmp/covid19.sock covid19.wsgi:application
Restart=always

[Install]
WantedBy=multi-user.target

好奇没有要绑定的端口吗?也许我在我的 django 项目中缺少一个额外的配置???

所以其次让 nginx 看到这些似乎是一个问题,因为如果我转到

http://webserver2.abc.com:8080/

给我一个 502 坏网关。通常会告诉我 /var/log/nginx 中的错误:

2020/10/21 13:33:11 [crit] 1836#1836: *65 connect() to unix:/tmp/covid19.sock failed (2: No such file or directory) while connecting to upstream, client: 10.75.1.245, server: , request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/covid19.sock:/", host: "webserver2.abc.com:8080"

它似乎正在运行,但 /tmp 中没有 sock 文件让我相信 gunicorn 没有从 systemd/system .service 文件运行

所以看起来袜子并没有被创建,尽管 gunicorn.socket 文件确实设置了一个 /run/gunicorn.sock 文件。只是 /tmp/covid19.sock 文件不是。

我觉得我很亲密,只需要一点帮助来连接点。

(我的 nginx 也设置为侦听端口 8080,但我没有看到我在 gunicorn.service 文件中告诉它在 8080 上运行的位置?)

为了完整起见,我的 covid19.conf 文件来自 /etc/nginx/ 中可用的站点

server {
    listen 8080;

    location = /favicon.ico { access_log off; log_not_found off; }

    location /static/ {
        root /home/pi/myvirtualenv_covid19/covid19;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/tmp/covid19.sock;
    }
}
django nginx gunicorn raspbian
  • 1 1 个回答
  • 1364 Views

1 个回答

  • Voted
  1. Best Answer
    darrenjones
    2020-10-29T09:39:09+08:002020-10-29T09:39:09+08:00

    好的,我刚刚使用相同的说明设置了一个 Pi 来为我的 django 应用程序提供服务(实际上我在找到要遵循的 digitalocean 指南之前发现了你的问题,因为我知道我不想要 20.04/upstart)。

    遵循指南对我来说效果很好,所以我会尽力提供帮助。我注意到要调查的事情是:

    [Unit]
    Description = gunicorn daemon
    **Requires=gunicorn.socket**
    After=network.target
    
    [Service]
    User=pi
    WorkingDirectory=/home/pi/myvirtualenv_covid19/covid19
    ExecStart=/home/pi/myvirtualenv_covid19/covid19env/bin/gunicorn --workers 3 --bind     unix:/tmp/covid19.sock covid19.wsgi:application
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    

    我的里面没有那个requires=gunicorn.socket。

    我将套接字文件放在我的用户主目录中以避免任何权限问题(我以前遇到过这个问题),所以我建议这样做。

    AFAIK gunicorn 通过套接字与 nginx 通信,因此不需要告诉它要监听的端口 - nginx 进行监听,然后将其传递给 gunicorn。

    我认为您可能需要检查日志,但我认为它位于 gunicorn.service 文件中的额外行与我首先要开始的套接字位置之间;完成这些事情(没有参考,主文件夹中的套接字)我已经启动并运行没有问题。

    高温高压

    • 1

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • 哪个 Apache 包最适合 mod_wsgi Django 应用程序?

  • 设置 Django 服务器以服务多个站点的最佳方式是什么?

  • 哪个最适合 Django?Lighttpd 还是 Nginx?或者也许是别的什么?[关闭]

  • 如何向运行共享 IIS 服务器的 Python 新手解释 Django/Python 安装 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve