14

尽管我找不到解决方案,但这似乎是一件容易的事。我最近开始了一个需要托管在 Azure 上的 Laravel 4 项目。进行更改时,我已将 Azure 链接到从 bitbucket 进行部署。但是,这会将文件推送到 Azure 中的“wwwroot”文件夹(公用文件夹)。一些框架文件不应该在公用文件夹中,因此我想推送到父文件夹“站点”。

经过一番研究,我发现您可以使用 .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 来修复问题。

4

4 回答 4

7

今天这不是很好的支持,但是您可以通过在应用程序设置中设置一些东西来使其工作:

SCM_REPOSITORY_PATH=..\repository
SCM_TARGET_PATH=..

这基本上告诉它直接将 repo 放入VirtualDirectory0(而不是VirtualDirectory0\site),然后部署到VirtualDirectory0\site(而不是VirtualDirectory0\site\wwwroot)。

这假设您的 repo 包含一个名为 wwwroot 的文件夹。

这些路径的一些信息在这里

于 2013-09-17T01:18:26.750 回答
4

我找到了一个似乎可以完美运行的解决方案,并且可以更好地控制复制、覆盖等内容,因为它直接使用 xcopy。给定一个带有 wwwroot 和 myapp 的 git 项目(在我的情况下它们位于根目录中),您可以使用部署批处理文件将这些文件夹复制到 wwwroot 和上面的文件夹中。解决方案来自这篇文章:

1.) 在你的 git root 中创建两个文件:

.部署

[config]
command=deploy.cmd 

部署.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.) 承诺、推动、微笑

于 2015-08-20T17:10:08.193 回答
0

有同样的问题多次提到这篇文章,做了几次错了,但让它起作用了。

解决方案

  1. 使用像filezila这样的ftp,ftp连接到你的网站,并在站点文件夹下创建一个你的app文件夹,比如site/myapp
  2. 在 azure 管理门户上选择要部署到的 azure 网站
  3. 在配置选项卡下向下滚动到应用程序设置
  4. 将密钥 SCM_TARGET_PATH 设置为 ..\myapp
  5. 注意正斜杠 \ 不是反斜杠 /
于 2015-01-20T11:07:01.613 回答
0

还请尝试在项目文件夹下的“wwwroot”中放置一个虚拟文本文件。这将确保创建目录。

于 2015-09-08T20:16:28.863 回答