无法在 systemd 203/EXEC 中将 Gunicorn 作为服务运行

2024-02-08

我正在尝试使用 Gunicorn/WSGI/Nginx 部署 FlaskApp。我已经尝试让它工作一段时间了,除了我一直遵循的数字海洋指南之外找不到任何东西。下面是我目前状态下的文件。我尝试了几种不同的调整mywebapp.service文件,因为我很确定这就是我的问题所在。我可以跑/bin/gunicorn --workers 3 --bind 0.0.0.0:8000 -u nginx -g nginx wsgi和gunicorn会工作。我很确定我错过了一些可能是基本的小东西,但我失去了。我的nginx用户拥有应用程序目录。

[root@localhost mywebapp]# systemctl status mywebapp

● mywebapp.service - Gunicorn instance to serve mywebapp
   Loaded: loaded (/etc/systemd/system/mywebapp.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Sat 2018-06-30 13:00:35 EDT; 25min ago
 Main PID: 29706 (code=exited, status=203/EXEC)

Jun 30 13:00:35 localhost.localdomain systemd[1]: Started Gunicorn instance to serve mywebapp.
Jun 30 13:00:35 localhost.localdomain systemd[1]: Starting Gunicorn instance to serve mywebapp...
Jun 30 13:00:35 localhost.localdomain systemd[1]: mywebapp.service: main process exited, code=exited, status=203/EXEC
Jun 30 13:00:35 localhost.localdomain systemd[1]: Unit mywebapp.service entered failed state.
Jun 30 13:00:35 localhost.localdomain systemd[1]: mywebapp.service failed.

/home/nginx/mywebapp

mywebappenv  mywebapp.py  __pycache__  wsgi.py

/etc/systemd/system/mywebapp.service

[Unit]
Description=Gunicorn instance to serve mywebapp
After=network.target

[Service]
User=nginx
Group=nginx
WorkingDirectory=/home/nginx/mywebapp
Environment="PATH=/home/nginx/mywebapp/mywebappenv/bin"
ExecStart=/bin/gunicorn --workers 3 --bind unix:/home/nginx/mywebapp/mywebapp.sock -u nginx -g nginx wsgi
Restart=always

[Install]
WantedBy=multi-user.target

/home/nginx/mywebapp/mywebapp.py

from flask import Flask
application = Flask(__name__)


@application.route("/")
def hello():
    return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
    application.run(host='0.0.0.0')

/home/nginx/mywebapp/wsgi.py

from mywebapp import application

if __name__ == "__main__":
    application.run()

[root@localhost mywebapp]# cat /etc/nginx/nginx.conf

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  10.8.0.173;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_pass http://unix:/home/nginx/mywebapp/mywebapp.sock;

    }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

根据这里提供的答案,我是如何解决这个问题的。

  1. 导航到您的 virtualenv,如下所示

    cd /my-env/bin/

  2. chown 当前使用(在gunicorn.service 文件中指定的用户)

下面的示例在文件 /etc/systemd/system/gunicorn.service 中将用户设置为“sammy”

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myprojectdir
ExecStart=/home/sammy/myprojectdir/myprojectenv/bin/gunicorn \
  1. 在 bin 文件夹中,运行命令 ls 确认您有文件“gunicorn”

  2. 使用此 Linux 命令查看文件

    须藤·乔恩·萨米·古尼科恩

  3. 运行这些命令重新启动gunicorn并确认

    sudo systemctl 启用gunicorn sudo systemctl启动gunicorn sudo systemctl状态gunicorn

PS:我的环境是Ubuntu 18.04

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 systemd 203/EXEC 中将 Gunicorn 作为服务运行 的相关文章

  • Flask:AttributeError:'UnboundField'对象没有属性'__call__'?

    为什么我会收到此错误 什么是 UnboundField 我需要了解什么才能在将来修复和避免此问题 当我访问时调试输出http 127 0 0 1 5000 signup http 127 0 0 1 5000 signup Attribut
  • Flask-SocketIO 未使用 Gevent/Gevent-websocket

    我正在使用 Flask 和 Flask SocketIO 构建用于 websocket 通信的 Web 界面 数据 API 我想开始转向使用 Gevent Gevent websocket Gunicorn 以及最终使用 Nginx 进行负
  • nginx 匹配位置中的特定单词

    我在匹配 nginx request body 变量中的特定单词时遇到问题 如果正文请求中有特殊单词 我想代理传递 所以我的方法是这样的 location php if request body proxy pass http test p
  • 如何在运行 NGINX Docker 容器的 AWS EC2 上启用 HTTPS?

    我在 AWS 上有一个运行 Amazon Linux 2 的 EC2 实例 在上面 我安装了 Git docker 和 docker compose 完成后 我克隆了我的存储库并运行docker compose up让我的生产环境启动 我访
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 在 jinja2 模板中转义 jinja2 语法

    我在 Flask 中提供来自 Jinja2 模板的动态页面 现在 我在脚本标记内定义客户端模板 比如 Jinja2 clone Nunjucks 问题是 客户端模板的语法如下 that Flask sJinja2 解释器可以解释而不是渲染v
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • 将应用程序级别用户名/用户 ID 注入 nginx/Apache 日志

    有没有办法将应用程序级别的用户名或 id 在本例中为 django 用户名或 id 注入 Apache 或 ngnix 日志中 请注意 我不是询问 HTTP 身份验证用户名 我目前正在使用一个简短的自定义中间件将此数据添加到响应标头 如下所
  • 在 Flask 中使用 html 运行 python 脚本

    我是 Flask 新手 我试图在单击 html 页面中的按钮时从后台运行 python 脚本 这是我的代码 from flask import from functools import wraps import sqlite3 app F
  • 连接到上游时 Nginx 错误:(13:权限被拒绝)

    我在我的中收到此错误nginx error log file 2014 02 17 03 42 20 crit 5455 0 1 connect to unix tmp uwsgi sock failed 13 Permission den
  • Flask 未激活调试模式

    我正在开始使用 Flask 我正在尝试遵循一些教程 但我无法在调试模式下运行 Flask 应用程序 我尝试了我发现的最简单的代码 from flask import Flask app Flask name app debug True I
  • 用于 OAuth 身份验证的 WSGI 中间件

    我使用构建了一个非常小的网络应用程序Flask http flask pocoo org 现在我想向网站添加非常基本的身份验证 我不需要授权 由于 Flask 不支持开箱即用的 auth auth 我想插入 WSGI 中间件来完成这项工作
  • Nginx - Heroku Docker - 是否可以在 Heroku 上运行 Nginx 作为反向代理

    我试图弄清楚如何使用 Nginx 在 Heroku 应用程序上构建反向代理 问题是 Heroku 似乎每个应用程序只接受一个容器 但我的应用程序系统至少会使用三个容器 一个用于 Nginx 一个用于我的应用程序前端 一个用于我的业务逻辑服务
  • 尝试运行 Flask Web 应用程序时出现 null is not Defined 错误

    我正在尝试构建一个网络应用程序 它将清理 csv 并返回 pdf 格式的图表 因为我是构建网络应用程序和烧瓶的新手 我尝试从构建一个简单的 Web 应用程序开始 该应用程序允许用户上传 csv 格式的文件 但是 当我尝试在 bash 上运行
  • 使用 Nginx 在 Docker 容器内部署带有路由器的 Angular2

    我正在尝试部署一个使用框架的路由器功能的 Angular 2 但在 docker 容器内使用 nginx 为其提供服务时遇到一些问题 由 angular cli 构建的 Angular 应用程序具有如下文件结构 dist 08c42df75
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • nginx 上的多个网站和可用网站

    通过 nginx 的基本安装 您的sites available文件夹只有一个文件 default 怎么样sites available文件夹的工作原理以及如何使用它来托管多个 单独的 网站 只是为了添加另一种方法 您可以为您托管的每个虚拟
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件

随机推荐

  • 闪亮的r:来自上传数据的数字输入

    我刚刚开始使用闪亮并得到以下结果basic问题 1 上传的纵向数据包括治疗名称一栏 如A B C D 另一栏包括相应的数字代码 如1 2 4 6 根据上传的数据 编码可能会有所不同 每种治疗均针对一组患者进行 我想使用数字代码来选择要比较的
  • 组合来自不同 SOAP 方法的循环值

    我从不同的 SOAP 方法获取数据 举个例子 wsdl the url of wsdl client new SoapClient wsdl parameters array all the parameters inside values
  • 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs / ESM

    我的基于 Node 的项目是使用 Node 上的原生 ES 模块支持来实现的 这要归功于 experimental modulesCLI 开关 即node experimental modules 显然 当我使用 Jasmine 运行规范时
  • C# 中的闭包分配

    我已经安装了 Clr 堆分配分析器扩展 在一个项目中我看到了一些我完全不理解的东西 我有一个带有签名的方法 public Task
  • 如何从两个或多个矩阵的所有可能组合创建一个矩阵?

    假设有两个矩阵 A lt B lt diag 3 gt A 1 2 3 1 1 0 0 2 0 1 0 3 0 0 1 我想创建一个新的矩阵AB 它由A和B行的所有可能组合组成 预期结果 gt AB 1 2 3 4 5 6 1 1 0 0
  • Monkey Runner 在触摸时抛出套接字异常损坏的管道

    我在运行 Monkeyrunner 脚本时有时会看到以下错误 140501 17 01 58 950 S MainThread com android chimpchat adb AdbChimpDevice 发送触摸事件时出错 500 5
  • MPdf - 全页尺寸图像,但仅适用于单页

    我知道有类似的问题 但没有一个能解决我的问题 我想对 mPDF 执行以下操作 Page 1 Text for item 1 Page 2 Full width and height image to cover the page with
  • 如何在R中绘制不同颜色的直方图

    我的 csv 文件中有大约 500 个整数值的数据集 每个值都在 50 89 之间 我正在尝试在 R 中创建一个直方图 其中代表值 50 65 的条形为青铜色 66 74 为银色 75 89 为金色 到目前为止我的脚本如下 dat1 lt
  • 如何在 Android 中动态创建编辑文本

    我是 android 编程新手 我在动态创建文本字段时遇到问题 我想创建一个视图 其中有一个名为 创建文本字段 的按钮和两个编辑文本 其中一个编辑文本名称为 行 第二个编辑文本名称为 列 当用户在编辑文本中输入数字 假设行 2 和列 3 并
  • 定期发送自动电子邮件

    我有带有 PostgreSQL 数据库的 Windows 服务器 我在数据库中存储了员工数据 包括合同到期日期 我想在到期日之前 30 天为每位员工发送一封自动电子邮件 每个员工都有一个电子邮件帐户 最好的方法是什么 我正在考虑执行以下操作
  • Sql Server 2014 - 更新到 Windows 10 且无法连接到本地服务器

    最近 我将 Windows 从 8 更新到 10 突然我的 SQL Server 2014 停止工作 当我打开 Management Studio 并尝试连接到服务器 本地 时 出现以下错误 你们中有人遇到过类似的问题吗 在更新 Windo
  • 解析c#类文件以获取属性和方法[重复]

    这个问题在这里已经有答案了 可能的重复 C 解析器 https stackoverflow com questions 81406 parser for c sharp 假设我有一个简单的类 例如 winforms 应用程序中的文本框控件内
  • 如何比较 viewDidLoad 和 viewDidAppear? [复制]

    这个问题在这里已经有答案了 我如何比较viewDidLoad and viewDidAppear 最好的办法是在视图控制器中实现这两种方法 该控制器加载带有子视图的视图 最简单的是来自 NIB 并在每个方法中放置一个断点 当应用程序在每个断
  • SQL Server 视图 - 错误的命名约定?

    DECLARE TableName AS VARCHAR 250 DECLARE SQL AS VARCHAR 500 DECLARE ViewCheck as CURSOR SET ViewCheck CURSOR FOR SELECT
  • 有没有办法从应用程序的 .ipa 存档中查看应用程序的 .entitlements 文件?

    我认为创建 ipa 时我的应用程序的 entitlements 文件存在问题 因此我想检查权利文件的捆绑 ID 在构建之前 我使用一个相当复杂的构建脚本来更改其中的一些内容 所以我想看看最终的产品是什么 我知道曾经有一个 Entitleme
  • 何时实施和扩展? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 什么时候应该implement or extend使用 有哪些现实世界的例子 它是否正确 实施似乎是强制类中存在某些方法并且这些方法函数调用格式
  • 检查委托是否为空

    我正在阅读 Essential C 3 0 一书 想知道这是否是检查委托是否为 null 的好方法 class Thermostat public delegate void TemperatureChangeHandler float n
  • cbind() 正在更改日期格式

    我正在尝试创建数据框的子集 当我这样做时 R 会切换日期列的格式 知道为什么或如何解决这个问题吗 gt head spyPr2 Date Open High Low Close Volume Adj Close 1 12 30 2011 1
  • Julia 中的方法链接

    I read https github com JuliaLang julia issues 5571 https github com JuliaLang julia issues 5571这让我觉得我可以因为一些评论而打破这样的界限 a
  • 无法在 systemd 203/EXEC 中将 Gunicorn 作为服务运行

    我正在尝试使用 Gunicorn WSGI Nginx 部署 FlaskApp 我已经尝试让它工作一段时间了 除了我一直遵循的数字海洋指南之外找不到任何东西 下面是我目前状态下的文件 我尝试了几种不同的调整mywebapp service文