Как развернуть 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, чтобы увидеть, что происходит, когда вы пытаетесь войти в систему.

Другие вопросы по тегам