我正在使用Capifony(v2.15.5)将我的Symfony(2.6.5)应用程序部署到远程服务器。我正在使用deployment strategy "a)",其中更改被推送到Git,然后在部署时,服务器克隆repo以提供最新的应用程序文件。直到最近我才把这个工作正常,但我已经改变了我的回购结构,现在却没有。
具体来说,它曾经是这样的,Symfony项目root与Git root相同:
[root]
app/
src/
web/
但现在就是这样,Symfony项目root是Git root的孩子:
[root]
dbscripts/
docs/
webapp/
app/
src/
web/
这给Capifony带来了一些麻烦并不奇怪,但是我认为可以配置我的方式,到目前为止没有运气。
这是我的一些deploy.rb:
set :app_path, "webapp/app"
set :repository, "ssh://[repodetails]"
set :scm, :git
set :shared_files, [app_path+"/config/parameters.yml"]
set :shared_children, [app_path + "/logs", "webapp/vendor"]
set :use_composer, true
正如你所看到的,我试图在配置中反映新的Symfony root,这让我到目前为止,但目前我的部署在Composer步骤失败了,因为它正在Git root中执行install命令,这不是composer.json
和composer.lock
的位置。
我在这里发现了一个非常相似的问题:Redefined symfony root project。那里的细节不是很多,而且已经有3年了,所以我觉得值得重温一下。
我可能会以原来的方式将其移回原点,并且可能使用Git子模块保留旧结构的一些外观(尽管我有新的领域)。但我的问题是:是否可以将Capifony配置为与不在Git根目录中的Symfony根一起正常工作;如果是的话,如何;如果不是,那么最好的解决方法是什么。
提前致谢!
答案 0 :(得分:2)
我找到一篇德国博客文章谈论这个问题here。您基本上需要更改这些配置值:
set :cache_path, "api/app/cache"
set :composer_options, "--no-dev --verbose --prefer-dist --optimize-autoloader --working-dir=api"
set :composer_dump_autoload_options, "--optimize --working-dir=api"
set :symfony_console, "api/app/console"
同时适当更改shared_files
/ shared_children
值。
在此示例中,Symfony2项目安装在api
目录中。只需根据您的需要进行更改。