在新的Amazon Linux 2上的AWS Elastic Beanstalk中创建系统服务

亚历山大·巴顿

我目前正在尝试在AWS Elastic Beanstalk上创建一个工作程序,该工作程序从特定SQS队列中提取消息(在Symfony Messenger的帮助下)。我不想为此任务使用专用的工作程序实例。经过研究,我发现systemd可以为您提供帮助,默认情况下,新的Amazon Linux 2实例启用了systemd。

但是,我无法创建正在运行的systemd服务。这是我的.ebextensions / 03_workers.config文件:

files:
    /etc/systemd/system/my_worker.service:
        mode: "000755"
        owner: root
        group: root
        content: |
            [Unit]
            Description=My worker

            [Service]
            User=nginx
            Group=nginx
            Restart=always
            ExecStart=/usr/bin/nohup /usr/bin/php /var/app/current/bin/console messenger:consume integration_incoming --time-limit=60

            [Install]
            WantedBy=multi-user.target

services:
    systemd:
        my_worker:
            enabled: "true"
            ensureRunning: "true"

如果运行以下命令,则看不到我的服务正在运行:

systemctl | grep my_worker

我究竟做错了什么?:)

马辛

systemd服务不支持唯一正确的是sysvinit

services:
  sysvinit:
    my_worker:
      enabled: "true"
      ensureRunning: "true"

但是我认为它甚至都不会起作用,因为这适用于Amazon Linux 1,而不适用于Amazon Linux 2。

在Amazon Linux 2中,您甚至不应使用太多.ebextensionsAWS文档专门编写:

在Amazon Linux 2平台上,我们强烈建议您使用Buildfile,而不是在.ebextensions配置文件中提供文件和命令Procfile和平台挂钩会在实例供应期间尽可能在您的环境实例上配置和运行自定义代码。

因此,您应该考虑使用Procfile,它基本上可以实现您想要实现的目标:

将Procfile用于不应退出的长时间运行的应用程序进程Elastic Beanstalk希望从Procfile运行的进程能够连续运行Elastic Beanstalk监视这些进程并重新启动任何终止的进程对于短期运行的进程,请使用Buildfile。

另类

既然你已经创建了一个单元文件/etc/systemd/system/my_worker.servicesystemd,你可以enablestart它自己。

为此可以使用in中的container_commands.ebextensions例如:

container_commands:
   10_enable_worker:
     command: systemctl enable worker.service
   20_start_worker:
     command: systemctl start worker.service

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Elastic Beanstalk上的PostgreSQL(Amazon Linux 2)

Amazon Linux 2(Elastic Beanstalk)的Laravel工匠修补匠

如何在运行AWS Linux 2的AWS Elastic Beanstalk上配置Linux交换空间?

AWS Elastic Beanstalk Amazon Linux 2-如何设置自定义NodeCommand

以编程方式在AWS Elastic Beanstalk中创建新实例

运行AWS Deep Learning Base AMI(Amazon Linux 2)时如何在Elastic Beanstalk中设置WSGI?

Elastic Beanstalk:Amazon Linux 2平台上的日志任务自定义

阻止AWS Elastic Beanstalk创建新实例

Amazon Elastic Beanstalk上的Psycopg2

带有在64位Amazon Linux 2 / 3.2.2和Dockerrun.aws.json v3上运行的Docker的Elastic Beanstalk

如何为在 64 位 Amazon Linux 2 上运行的 Elastic Beanstalk Python 3.7 项目安装节点包?

静态文件不起作用Django Elastic Beanstalk Amazon Linux 2

Amazon ec2和AWS Elastic Beanstalk之间的区别

在Amazon Elastic Beanstalk上运行Python的问题

哪些目录应放入Linux服务器Amazon EC2的新卷中

我应该使用AWS Elastic Beanstalk还是Amazon EC2容器服务(ECS)扩展Docker容器?

在AWS Elastic Beanstalk上安装的新WP MultiSite上的重定向循环

带有Amazon ECR Docker映像的AWS Elastic Beanstalk

在Amazon Elastic Beanstalk上使用Docker部署Django

连接到Amazon Elastic Beanstalk上的数据库

AWS Elastic Beanstalk“所有实例上的服务受损。”

如何删除在AWS Elastic Beanstalk中创建的CNAME映射

Amazon EC2,Elastic Beanstalk:我的图像消失了

Amazon Elastic Beanstalk配置问题

尝试在新的Amazon Linux实例中执行任何操作时,为什么我的AWS CLI挂起?

在AWS Elastic Beanstalk上更新当前版本

在AWS Elastic Beanstalk上安装bcrypt失败

在AWS Elastic Beanstalk上运行的Symfony 4

在 AWS Elastic Beanstalk 上启用 LDAP