[英]Django Collectstatic in Amazon Elastic Beanstalk Not Working
[英]Django's migrate command on Amazon Elastic Beanstalk is killed
我正在使用亞馬遜的Elastic Beanstalk和Django 1.8.2。 這是我的容器命令,
container_commands:
01_wsgipass:
command: 'echo "WSGIPassAuthorization On" >> ../wsgi.conf'
02_makemigrations:
command: "source /opt/python/run/venv/bin/activate && python manage.py makemigrations --merge --noinput"
leader_only: true
03_migrate:
command: "source /opt/python/run/venv/bin/activate && python manage.py migrate --noinput"
leader_only: true
由於某些原因, migrate
命令被殺死。 即使在我的本地有一個新的數據庫,所有遷移工作都很好。 但是以下是eb-activity.log上出現的錯誤。
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states.../bin/sh: line 1: 21228 Killed python manage.py migrate --noinput
(ElasticBeanstalk::ExternalInvocationError)
注意:相同的容器命令在Elastic Beanstalk中沒有任何問題,工作正常。 我嘗試使用--verbose 3
with migrate命令但沒有得到任何其他調試消息。
有解決方案嗎 提前致謝。
在使用較差的日志記錄機制進行故障排除時,AWS對開發人員不友好。
作為最近為Django項目評估EBS的狂熱AWS用戶,出於同樣的原因,我完全贊同這一點。 我最終和Heroku一起去了這個原因並且我不會進入,但我認為以下模式對任何一種方式都有幫助。
准備你的生產環境的步驟可以在不同的地方進行; 它們不必在您的目標Web服務器環境中發生。
我最終將我的make / migrate任務從我的部署自動化中拉出來,轉移到之前發生的任務中。 我的目標Web服務器環境中發生的唯一事情與該服務器上的代碼直接相關。
換句話說:如果您有用於構建/測試的CI工具,我建議您將make / migrate和任何其他准備工作拉到Web服務器之外的環境中,然后進入部署管道。 就像是:
然后,您將分離應用程序服務器的自動化問題和其他prod環境的自動化問題,並讓CI處理該問題。 你可以在同一個地方處理它們,但使用EBS的設施顯然有點笨拙。
我的遷移被殺死了,因為Dockerrun.aws.json文件中保留的內存太低了。 文檔中提供的示例給出了“128”作為樣本值,我剛剛使用過它。 增加“內存”的值可以解決問題。
例如Dockerrun.aws.json摘錄:
"containerDefinitions": [
{
"name": "php-app",
"image": "php:fpm",
"essential": true,
"memory": 512,
// ... etc. ...
}
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.