我正在测试DocPad / Node.js站点的GitHub部署。
我已经完成了部署工作,但是当对GitHub进行新的推送时,在部署过程中,公共网站站点将在1-2分钟内不可用。
在我看来,这似乎不对。
我认为DocPad静态HTML文件将由node.js生成,然后复制到wwwroot文件夹中,从而最大程度地减少了停机时间。
但是,事实并非如此。
在部署网站时,网站的访问者会收到以下错误消息:
由于发生内部服务器错误,因此无法显示该页面。
可以在https://github.com/Richard-West/DocPadAzureDemo中找到DocPad / Node.js部署的副本。
我会很感激为什么会发生这种情况,如果有什么我可以修改以防止这种情况发生,我将不胜感激。我希望能够随时将更新推送到该网站,同时不影响任何访问者。
非常感谢Amit Apple在此方面的帮助。
Amit在我发布的Gist的评论中发布了一些非常有用的信息,因此我想在此处发布最终解决方案,以防其他人遇到此问题。
该问题是由于deploy.cmd文件中的Deployment部分所致。这是发布新站点时由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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句