【问题标题】:Provide environment variables to Laravel Queue Worker on Amazon Beanstalk为 Amazon Beanstalk 上的 Laravel Queue Worker 提供环境变量
【发布时间】:2021-12-23 13:05:46
【问题描述】:

所以我在邮件通知方面遇到了这个奇怪的问题。我在 Amazon Elastic Beanstalk 上进行了部署,并且我使用 Amazon SQS 作为排队服务。对于邮件,我使用 Mailgun。现在的问题是当邮件通知排队并处理失败时。

这是有趣的部分,当我发送未排队的电子邮件通知时,它会正确发送,然后队列电子邮件也会发送一段时间,然后它们又开始失败。

我也在通知中添加了SerializeModels trait。但是,在我发送一封未排队的电子邮件之前,它不起作用。

我的User 类也正确实现了routeNotificationForMail 方法,并且正在返回用户的电子邮件。

有人遇到过类似的问题吗?

##EDIT

所以我已经深入到问题所在,在systemd 中运行的工作进程不知何故无法从文件/opt/elasticbeanstalk/deployment/env 转换或传输环境变量。现在,当我在终端中运行它时,队列处理得很好。但是当队列工作者重新启动时,没有任何效果。

我在我的laravel_worker.service 中使用EnvironmentFile=/opt/elasticbeanstalk/deployment/env

有人知道我该怎么做吗?

【问题讨论】:

    标签: php linux laravel amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    所以在反复试验之后......到处敲打我的头......解决方案非常简单。

    我知道向tinker提供环境变量的命令,所以我创建了一个shell脚本,内容如下。

    
    #!/bin/sh
    cd /var/www/html && export $(cat /opt/elasticbeanstalk/deployment/env) && php artisan queue:work
    
    

    脚本文件归根用户所有,所以我不必将sudocat 一起使用

    然后我通过systemd服务执行脚本。

    ExecStart=/usr/bin/nohup /var/www/html/worker_script.sh
    

    通过.ebextenstions

    files:
        /var/www/html/worker_script.sh:
            mode: "000755"
            owner: root
            content: |
                #!/bin/sh
                cd /var/www/html && export $(cat /opt/elasticbeanstalk/deployment/env) && php artisan queue:work
    
    
        /etc/systemd/system/laravel_worker.service:
            mode: "000755"
            owner: root
            group: root
            content: |
                # Laravel queue worker using systemd
                # ----------------------------------
                #
                # /lib/systemd/system/queue.service
                #
                # run this command to enable service:
                # systemctl enable queue.service
    
                [Unit]
                Description=Laravel queue worker
    
                [Service]
                EnvironmentFile=/opt/elasticbeanstalk/deployment/env
                Restart=always
                ExecStart=/usr/bin/nohup /var/www/html/worker_script.sh
    
                [Install]
                WantedBy=multi-user.target
    
    
    

    所有配置文件都可以在https://github.com/stescacom/elastic_beanstalk_laravel_mongo_config获得,希望这对其他人有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-08
      • 1970-01-01
      • 2023-01-14
      • 2012-12-21
      • 2023-03-28
      • 2019-11-02
      • 2016-09-08
      • 2019-07-06
      相关资源
      最近更新 更多