[英]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.