Ответ 1
Инфраструктура
В то время как вы можете использовать AWS для автономных серверов, если вы хотите поддерживать несколько экземпляров, балансировку нагрузки и т.д., вы захотите отделить все. На самом базовом уровне вы, скорее всего, захотите использовать:
- S3 - постоянное хранилище
- База данных RDS - MySQL
- EC2 - Apache/Nginx, внешний интерфейс PHP
Затем вы можете увеличить это с помощью:
- Cloudfront - локализованная доставка вашего контента S3
- Loadbalancer - убедитесь, что ваши экземпляры EC2 оптимально используются
- Автоматическое масштабирование - запуск/остановка новых экземпляров
- Маршрут 53 - DNS
- VPC - важно, так как это обеспечивает безопасность, отдельные интерфейсы для сертификатов SSL и т.д.
Кроме того, вместо запуска с нуля вы можете использовать AMI с рынка: https://aws.amazon.com/marketplace/
Ознакомьтесь с руководством по началу работы с AWS, поскольку это подробно описано: http://docs.aws.amazon.com/gettingstarted/latest/wah-linux/web-app-hosting-intro.html
Используя вышеизложенное, я бы предложил переместить вашу базу данных в RDS и просто разместить Apache в своих экземплярах EC2. Возможно, вы даже обнаружите, что это экономически выгодно, так как вы сможете использовать небольшие экземпляры с учетом требований к более низкой памяти/ЦП.
Кроме того, по прошествии времени вы можете начать смотреть на эластичный бобовый сундук и шеф-повар (возможно, даже бродячий для локальных dev-боксов), Elastic Beanstalk (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_PHP_symfony2.html)
Итак, Symfony
сначала, среда
Я предполагаю, что вы создали среды разработки и разработки: http://symfony.com/doc/current/cookbook/configuration/environments.html. Это важно, так как вы можете изменить конфигурацию между локальной и производственной средой.
Изображения
Оформить заказ https://github.com/liip/LiipImagineBundle/blob/master/Resources/doc/data-loader/stream.md, который использует https://github.com/KnpLabs/Gaufrette (или комплект: https://github.com/KnpLabs/KnpGaufretteBundle).
Кажется, есть хорошая статья о том, как настроить его здесь: https://florian.ec/articles/upload-files-to-amazon-s3-with-symfony2-and-gaufrette/
Используя вышеуказанные среды, вы сможете настроить производство для чтения/записи на s3, тогда как события пишут в /tmp (например)
База данных.
Я собираюсь сделать предположение, что вы используете Doctrine в качестве своего соединения с БД и следили за документами Symfony о том, как настроить конфигурацию: http://symfony.com/doc/current/book/doctrine.html#configuring-the-database.
Все, что вам нужно сделать, это следовать логике среды и соответственно установить производные строки db/local. Это должно быть плавным в фоновом режиме и не требует ручных подключений MySQL.