我正在测试DocPad/Node.js站点的GitHub部署。
我已经让部署工作,然而,当一个新的推送到GitHub,公共网站变得不可用1至2分钟,而部署正在进行。
,这在我看来是不对的。。
我认为DocPad静态HTML文件将由node.js生成,然后复制到www.root文件夹--从而最小化任何类型的停机时间。
然而,情况似乎并非如此。
在网站部署时,网站访问者将收到以下错误消息:
由于发生内部服务器错误,无法显示该页。
可以在https://github.com/Richard-West/DocPadAzureDemo找到DocPad/Node.js部署的副本
我很想知道为什么会发生这种情况,如果有什么我可以修改以防止这种情况发生的话。我希望能够在任何时候推送更新到网站,同时不影响任何访问者。
发布于 2014-05-13 12:54:48
感谢Amit苹果公司在这方面的帮助。
Amit在我发布的Gist评论中发布了一些非常有用的信息,所以我想在这里发布最后的解决方案,以防其他人遇到这个问题。
问题在于deploy.cmd文件中的部署部分。这是Azure在发布新站点时执行的文件。我最初的部署部分是在%DEPLOYMENT_TARGET%文件夹中安装NPM包,但是这应该发生在%DEPLOYMENT_SOURCE%中--因为这是DocPad首先从静态站点执行并生成静态站点的地方。
在站点完全生成之后,KuduSync将新版本复制到%DEPLOYMENT_TARGET%文件夹中的wwwroot,并且站点处于活动状态。
下面是部署部分的副本。还值得注意的是,在第3部分中,在构建DocPad站点之前,我将删除以前任何版本中"out“文件夹中的所有文件。这是通过"rd /s /q out“完成的。这将确保以前创建但不在站点中的页面或文件不会被复制到生产站点。
:: Deployment
:: ----------
:Deployment
echo Handling DocPad deployment.
:: 1. Select node version
call :SelectNodeVersion
:: 2. Install npm packages
echo Installing npm packages...
pushd "%DEPLOYMENT_SOURCE%"
call !NPM_CMD! install --production
IF !ERRORLEVEL! NEQ 0 goto error
popd
:: 3. Build DocPad site
echo Building DocPad site...
echo Deployment Source Folder: %DEPLOYMENT_SOURCE%
echo Deployment Target Folder: %DEPLOYMENT_TARGET%
pushd "%DEPLOYMENT_SOURCE%"
rd /s /q out
IF !ERRORLEVEL! NEQ 0 goto error
"!NODE_EXE!" .\node_modules\docpad\bin\docpad -e static generate
IF !ERRORLEVEL! NEQ 0 goto error
popd
:: 4. KuduSync
echo Copying Files...
call %KUDU_SYNC_CMD% -v 500 -f "%DEPLOYMENT_SOURCE%\out" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%"
IF !ERRORLEVEL! NEQ 0 goto error发布于 2014-05-06 17:45:59
你有两种选择:
https://stackoverflow.com/questions/23500009
复制相似问题