Как развернуть Symfony2 - мой dev env работает, но не прод
Я прочитал кулинарную книгу о развертывании моего приложения symfony2 в производственной среде. Я нахожу, что он отлично работает в режиме разработки, но режим prod сначала не позволил бы войти в систему (сказал неверные учетные данные, хотя я входил с теми же учетными данными в режиме разработки), а затем после дополнительного прогона очистки и прогрева кеш продукта, я просто получаю http500 из моего маршрута.
Я заглянул в конфигурационные файлы и поинтересовался, имеет ли это какое-либо отношение к этому:
config_dev.php:
imports:
- { resource: config.yml }
framework:
router: { resource: "%kernel.root_dir%/config/routing_dev.yml" }
profiler: { only_exceptions: false }
web_profiler:
toolbar: true
intercept_redirects: false
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
firephp:
type: firephp
level: info
assetic:
use_controller: true
config_prod:
imports:
- { resource: config.yml }
#doctrine:
# orm:
# metadata_cache_driver: apc
# result_cache_driver: apc
# query_cache_driver: apc
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
nested:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
Я также заметил, что есть routing_dev.php, но нет routing_prod, окружение prod отлично работает на моем локальном хосте, так что...?
1 ответ
В вашей производственной среде, когда вы запускаете команду app / console cache:warmup, вам нужно убедиться, что вы запускаете ее так: app/console cache:warmup --env=prod --no-debug
Также помните, что команда прогреет кэш как текущий пользователь, поэтому все файлы будут принадлежать текущему пользователю, а не пользователю веб-сервера (например, www-data). Вероятно, поэтому вы получаете 500 ошибок сервера. После прогрева кеша запустите: chown -R www-data.www-data app/cache/prod
(не забудьте заменить www-data
с вашим пользователем веб-сервера.
Убедитесь, что в вашем файле settings.ini есть все необходимые настройки, так как он обычно не регистрируется в каком-либо хранилище кода, которое вы используете. Или (и я даже сделал это) можно просто забыть поместить параметры из dev в файл prod parmeters.ini.
Вам также нужно заглянуть в ваш app/logs/prod.log, чтобы увидеть, что происходит, когда вы пытаетесь войти в систему.