尽管我找不到解决方案,但这似乎是一件容易的事。我最近开始了一个需要在Azure上托管的Laravel 4项目。我已经将Azure链接到进行更改时从bitbucket进行部署。但是,这会将文件推送到Azure(公用文件夹)中的“wwwroot”文件夹中。一些框架文件不应该在公共文件夹中,因此我想将其推送到父文件夹“site”。
经过一些研究,我发现你可以使用.deployment文件来配置部署选项(https://github.com/projectkudu/kudu/wiki/Deployment-hooks)
所以我试过.deployment文件:
[config]
DEPLOYMENT_TARGET = C:\DWASFiles\Sites\SITENAME\VirtualDirectory0\site
不幸的是,这会导致错误:
源目录和目标目录不能是彼此的子目录
这可能是因为存储库文件夹位于站点文件夹中。如果我将部署文件更改为:
[config]
DEPLOYMENT_SOURCE = C:\DWASFiles\Sites\SITENAME\VirtualDirectory0\repo
DEPLOYMENT_TARGET = C:\DWASFiles\Sites\SITENAME\VirtualDirectory0\site
它运行没有错误,但它没有任何推动,因为repo文件夹是空的,我想如果我可以让Azure将文件放入\ repo而不是\ site \ repository一切都会好的。
也许我过于复杂化了,我真的很感激任何建议。最糟糕的情况我可以直接推送到“wwwroot”文件夹并使用web.config来修复问题。
今天这个支持得不是很好,但您可以通过在应用设置中设置一些内容来使其工作:
SCM_REPOSITORY_PATH=..\repository
SCM_TARGET_PATH=..
这基本上告诉它直接把回购 VirtualDirectory0
(而不是 VirtualDirectory0\site
),然后部署到 VirtualDirectory0\site
(而不是 VirtualDirectory0\site\wwwroot
)。
这假设您的repo包含名为wwwroot的文件夹。
关于这些路径的一些信息 这里
我找到了一个似乎完美的解决方案,并允许更多地控制被复制,覆盖等的内容,因为它直接使用xcopy。鉴于使用wwwroot和myapp的git项目(在我的情况下,它们位于根目录中),您可以使用部署批处理文件将这些文件夹复制到wwwroot和上面的文件夹。解决方案来自这篇文章:
1.)在你的git root中创建两个文件:
.deployment
[config]
command=deploy.cmd
deploy.cmd
@echo off
echo ---Deploying site
REM ---Deploy the wwwroot folder in repository to default target (wwwroot)
xcopy %DEPLOYMENT_SOURCE%\wwwroot\* %DEPLOYMENT_TARGET% /Y /s
REM ---Deploy the myapp folder in repository to folder above default target (wwwroot\..\myapp)
xcopy %DEPLOYMENT_SOURCE%\myapp\* %DEPLOYMENT_TARGET%\..\myapp /Y /s
2.)承诺,推,微笑
有同样的问题提到这篇文章几次错了几次,但让它工作。
解
- 使用像filezila这样的ftp,ftp连接到你的网站并在站点文件夹下创建你的app文件夹,例如site / myapp
- 在azure管理门户上,选择要部署到的azure网站
- 在配置选项卡下滚动到应用程序设置
- 将密钥SCM_TARGET_PATH设置为.. \ myapp
- 注意正斜杠\ NOT反斜杠/
还请尝试将虚拟文本文件放在项目文件夹下的“wwwroot”中。这将确保创建目录。