[英]Provide environment variables to Laravel Queue Worker on Amazon Beanstalk
所以我对邮件通知有这个奇怪的问题。 我在Amazon Elastic Beanstalk上进行了部署,我使用Amazon SQS作为排队服务。 对于邮件,我使用Mailgun 。 现在的问题是当邮件通知排队并处理它失败时。
这是有趣的部分,当我发送未排队的电子邮件通知时,它会正确发送,之后队列电子邮件也会发送一段时间,然后又开始失败。
我还向通知添加了SerializeModels
特征。 但是,在我发送一封未排队的电子邮件之前,它不起作用。
我的User
类也正确实现了routeNotificationForMail
方法并返回用户的电子邮件。
有人遇到过类似的问题吗?
##编辑
所以我已经深入到问题所在,在systemd
中运行的工作进程以某种方式无法从文件/opt/elasticbeanstalk/deployment/env
转换或传输环境变量。 现在,当我在终端中运行它时,队列处理得很好。 但是当队列工作器重新启动时,什么都不起作用。
我现在用的是EnvironmentFile=/opt/elasticbeanstalk/deployment/env
我laravel_worker.service
有谁知道我该怎么做?
所以经过跟踪和错误......在这里和那里敲我的头......解决方案非常简单。
我知道向tinker
提供环境变量的命令,所以我创建了一个包含以下内容的 shell 脚本。
#!/bin/sh
cd /var/www/html && export $(cat /opt/elasticbeanstalk/deployment/env) && php artisan queue:work
脚本文件归 root 用户所有,所以我不必将
sudo
与cat
一起使用
然后我通过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 找到希望这对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.