Как развернуть symfony2 - мой dev env работает, но не работает

Я прочитал кулинарную книгу о развертывании моего приложения symfony2 в производственной среде. Я считаю, что он отлично работает в режиме разработки, но режим prod сначала не позволял войти в систему (сказал неправильные учетные данные, хотя я вошел в систему с этими же учетными данными в режиме разработки), а затем после дополнительной очистки и прогрева prod cache, я просто получаю http500 от своего маршрута prod.

Я просмотрел файлы конфигурации и задался вопросом, имеет ли это какое-либо отношение к этому:

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 отлично работает на моем локальном хосте, так что ...?


person Matt Welander    schedule 14.11.2012    source источник
comment
Параметр маршрутизатора фреймворка по умолчанию — %kernel.root_dir%/config/routing.yml. config_dev.yml переопределяет это для загрузки routing_dev.yml, который загружает дополнительную маршрутизацию разработки (для профилирования) перед загрузкой routing.yml. Итак, нет, я не думаю, что это должно вызывать вашу проблему, если вы не изменили routing_dev.yml и не поместили/импортировали все свои маршруты туда, а не в routing.yml   -  person redbirdo    schedule 15.11.2012
comment
Кроме того, вы пытались просмотреть журналы ошибок веб-сервера / php, чтобы узнать, есть ли какая-либо дополнительная информация?   -  person redbirdo    schedule 15.11.2012


Ответы (1)


В производственной среде, когда вы запускаете команду app/console cache:warmup, вы должны убедиться, что запускаете ее следующим образом: текущий пользователь, а не пользователь веб-сервера (например, www-data). Вероятно, поэтому вы получаете ошибку сервера 500. После прогрева кеша выполните следующее: chown -R www-data.www-data app/cache/prod (не забудьте заменить www-data пользователем вашего веб-сервера.

Убедитесь, что в вашем файле parameters.ini есть какие-либо правильные конфигурации, поскольку обычно этот файл не проверяется в любом репозитории кода, который вы можете использовать. Или (и я даже сделал это) можно просто забыть поместить параметры из dev в файл prod parmeters.ini.

Вам также нужно будет заглянуть в ваш app/logs/prod.log, чтобы увидеть, что происходит, когда вы пытаетесь войти в систему.

person lifo    schedule 27.11.2012
comment
Спасибо, я проверю права доступа к папке кеша. Я не использую репозиторий, так что это не проблема, также я никогда не попадаю на экран входа в систему, я получаю только пустую страницу (скорее всего, http500), поэтому я не знаю, что происходит. Я постараюсь посмотреть, есть ли что-нибудь в журнале, спасибо. - person Matt Welander; 27.11.2012
comment
Если это просто пустой экран, то, вероятно, проблема с правами доступа к папке кеша. Как только вы проверите это, дайте мне знать, что вы найдете. - person lifo; 27.11.2012