У меня есть установка Laravel и настроены три среды со своими соответствующими конфигурационными каталогами:
Я использую php artisan migrate:make create_users_table
т. Д., Как описано здесь, для создания миграции базы данных.
В моей локальной среде я использую Vagrant и простую настройку сервера MySQL, а на стадии постановки и производства я использую AWS RDS.
Чтобы настроить доступ к базе данных для промежуточной среды, у меня есть файл app/config/staging/database.php
с такими настройками:
... "mysql" => array( "driver" => "mysql", "host" => $_SERVER["RDS_HOSTNAME"], "database" => $_SERVER["RDS_DB_NAME"], "username" => $_SERVER["RDS_USERNAME"], "password" => $_SERVER["RDS_PASSWORD"], "charset" => "utf8", "collaction" => "utf8_unicode_ci", "prefix" => "", ), ...
Я использую git для развертывания приложения с git aws.push
как описано здесь .
Возникает вопрос: как выполнить миграцию на моем сервере (и более позднем производстве) EBS при развертывании?
Я решил это, создав новый каталог в корне моего проекта с именем .ebextensions
. В этом каталоге я создал файл сценария my-scripts.config
:
.ebextensions/ my-scripts.config app/ artisan bootstrap ...
Файл my-scripts.config
запускается при развертывании EBS, является файлом YAML и выглядит следующим образом:
container_commands: 01-migration: command: "php /var/app/ondeck/artisan --env=staging migrate" leader_only: true
Добавьте каталог и файл в git, commit и запустите git aws.push
и он будет мигрировать.
Объяснения о том, как работает материал в .ebextensions
можно найти здесь .
Путь /var/app/ondeck
– это то место, где ваше приложение работает, когда запускается ваш скрипт, после чего оно будет скопировано в /var/app/current
.
Параметр artisan --env=staging
полезен для того, чтобы сообщить ремесленнику, в какой среде он должен работать, чтобы он мог найти правильные настройки базы данных из app/config/staging/database.php
Если вам нужен быстрый и грязный способ регистрации причины сбоя, вы можете попробовать что-то вроде "php /var/app/ondeck/artisan --env=staging migrate > /tmp/artisan-migrate.log"
поэтому что вы можете войти в свой экземпляр ec2 и проверить журнал.