gpt4 book ai didi

deployment - Capifony 和目录所有者

转载 作者:行者123 更新时间:2023-12-01 06:57:25 25 4
gpt4 key购买 nike

当我cap deploy我的 Symfony2 项目,然后登录到我的服务器我看到 dev (app_dev.php) 运行正常,但 prod 版本 (app.php) 没有。

错误是

[Tue Jan 03 14:31:48 2012] [error] [client xxx.xxx.xxx.xxx] PHP Fatal error:  Uncaught exception 'RuntimeException' with message 'Failed to write cache file "/var/www/example/prod/releases/20120103202539/app/cache/prod/classes.php".' in /var/www/example/prod/releases/20120103202539/app/bootstrap.php.cache:1079\nStack trace:\n#0 /var/www/example/prod/releases/20120103202539/app/bootstrap.php.cache(1017): Symfony\\Component\\ClassLoader\\ClassCollectionLoader::writeCacheFile('/var/www/example/p...', '<?php  ????name...')\n#1 /var/www/example/prod/releases/20120103202539/app/bootstrap.php.cache(682): Symfony\\Component\\ClassLoader\\ClassCollectionLoader::load(Array, '/var/www/example/p...', 'classes', false, false, '.php')\n#2 /var/www/example/prod/releases/20120103202539/web/app.php(10): Symfony\\Component\\HttpKernel\\Kernel->loadClassCache()\n#3 {main}\n  thrown in /var/www/example/prod/releases/20120103202539/app/bootstrap.php.cache on line 1079

查看最近部署的缓存目录,我看到:
drwxrwxrwx 4 root     root     4096 Jan  3 14:28 .
drwxrwxr-x 5 root root 4096 Jan 3 14:28 ..
drwxr-xr-x 6 www-data www-data 4096 Jan 3 14:28 dev
drwxrwxr-x 7 root root 4096 Jan 3 14:28 prod

我可以用 chown -R www-data.www-data prod/ 解决这个问题但我想知道我是否可以首先阻止这种情况发生?为什么目录有不同的所有者?

最佳答案

发生这种情况是因为您的网络服务器由用户运行,该用户无法写入刚刚创建的 cache/prod目录。

有两种解决方案,我知道并使用。首先,添加额外的命令以在部署到 Capfile 后运行. Capfile 会喜欢这样:

load 'deploy' if respond_to?(:namespace) # cap2 differentiator
Dir['vendor/bundles/*/*/recipes/*.rb'].each { |bundle| load(bundle) }
load Gem.find_files('symfony2.rb').last.to_s

after "deploy:finalize_update" do
run "sudo chown -R www-data:www-data #{latest_release}/#{cache_path}"
run "sudo chown -R www-data:www-data #{latest_release}/#{log_path}"
run "sudo chmod -R 777 #{latest_release}/#{cache_path}"
end

load 'app/config/deploy'

第二种解决方案更优雅。您指定正确 user , 谁可以写信给 cachedeploy.rb并确保您不使用 sudo:
set :user, "anton"
set :use_sudo, false

关于deployment - Capifony 和目录所有者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com