【问题标题】:How to deploy symfony2 - my dev env works but not prod如何部署 symfony2 - 我的开发环境工作但不是生产
【发布时间】:2012-11-02 15:40:13
【问题描述】:

我已经阅读了关于将我的 symfony2 应用程序部署到生产环境的说明书。我发现它在开发模式下工作得很好,但是产品模式首先不允许登录(虽然我在开发模式下使用这些凭据登录,但说是错误的凭据),后来经过额外的清理和预热prod 缓存,我只是从我的 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 环境在我的本地主机上工作得很好,所以...?

【问题讨论】:

  • 框架路由器参数默认为“%kernel.root_dir%/config/routing.yml”。 config_dev.yml 覆盖它以加载 routing_dev.yml,它在加载 routing.yml 之前加载一些额外的开发路由(用于分析)。所以,不,我认为这不会导致您的问题,除非您已修改 routing_dev.yml 并将所有路由放入/导入其中而不是放入 routing.yml
  • 另外,您是否尝试过查看 Web 服务器/php 错误日志以查看是否有任何进一步的信息?

标签: deployment symfony-2.0


【解决方案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 替换为您的 Web 服务器用户。

确保您的 parameters.ini 文件具有任何适当的配置,因为该文件通常不会被检入到您可能使用的任何代码存储库中。或者(我什至已经这样做了)可能只是忘记将来自 dev 的参数放入 prod parmeters.ini 文件中。

您还需要查看您的 app/logs/prod.log 以查看尝试登录时会发生什么。

【讨论】:

  • 谢谢,我会检查缓存文件夹的权限。我没有使用存储库,所以这不是问题,而且我从来没有进入登录屏幕,我只得到一个空白页面(最有可能是 http500)所以我不知道什么是 gonig。我会试试看日志里有没有什么,谢谢。
  • 如果它只是一个空白屏幕,那么它可能是缓存文件夹的权限问题。一旦你检查了,让我知道你发现了什么。
猜你喜欢
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2014-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多