将GitHub更新部署到Azure托管的DocPad Node.js网站会使站点离线1-2分钟

理查德·韦斯特

我正在测试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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

bash到5分钟

来自分类Dev

将Android Toast持续时间设置为非常长(例如1分钟)

来自分类Dev

将2分钟数据转换为15分钟平均值

来自分类Dev

将1分钟数据汇总为5分钟平均数据

来自分类Dev

Android屏幕在特定的不同时间间隔(例如1分钟,2分钟)以编程方式锁定

来自分类Dev

Node.js:http请求在1分钟后超时

来自分类Dev

快速更新标签(带有HTML内容)需要1分钟

来自分类Dev

Python 2-您如何向上/向下舍入到最近的6分钟?

来自分类Dev

每隔一分钟通过Node.js发出一个请求

来自分类Dev

将时间分成30分钟

来自分类Dev

将大型GPS数据分组1分钟

来自分类Dev

设置为让脚本在每1分钟触发内仅每2分钟发出一次呼叫的模式。(Google App脚本)

来自分类Dev

Vue @click计数器并为可重用组件更新背景2分钟

来自分类Dev

1分钟后退出Applescript

来自分类Dev

使用云功能在Google Cloud Pub / Sub上发布需要3分钟-Node.js

来自分类Dev

如果前后1分钟或2分钟,如何舍入到最接近的5分钟间隔?

来自分类Dev

如果提前1,2,3,4分钟,如何将其四舍五入到最接近的5分钟间隔?

来自分类Dev

Ubuntu 14.04.2启动,然后在1-2分钟后冻结。鼠标指针仍在移动

来自分类Dev

将分钟递增至最近的15分钟间隔

来自分类Dev

将日志间隔从10分钟更改为1分钟

来自分类Dev

Cron每1或2分钟就会运行一次

来自分类Dev

2-5分钟后,14.04到16.04升级屏幕变黑

来自分类Dev

PHP的strtotime()关闭1分钟?

来自分类Dev

将大型GPS数据分组1分钟

来自分类Dev

在1分钟后使用Hangfire和Azure Service Bus重试作业

来自分类Dev

GCMNetorkManager PeriodicTask只能使用1分钟,而不能使用2分钟

来自分类Dev

1分钟后,骆驼继续通过JMS将消息发送到队列中

来自分类Dev

如何以1分钟的间隔获取更新的位置ANDROID

来自分类Dev

1分钟后截图

Related 相关文章

  1. 1

    bash到5分钟

  2. 2

    将Android Toast持续时间设置为非常长(例如1分钟)

  3. 3

    将2分钟数据转换为15分钟平均值

  4. 4

    将1分钟数据汇总为5分钟平均数据

  5. 5

    Android屏幕在特定的不同时间间隔(例如1分钟,2分钟)以编程方式锁定

  6. 6

    Node.js:http请求在1分钟后超时

  7. 7

    快速更新标签(带有HTML内容)需要1分钟

  8. 8

    Python 2-您如何向上/向下舍入到最近的6分钟?

  9. 9

    每隔一分钟通过Node.js发出一个请求

  10. 10

    将时间分成30分钟

  11. 11

    将大型GPS数据分组1分钟

  12. 12

    设置为让脚本在每1分钟触发内仅每2分钟发出一次呼叫的模式。(Google App脚本)

  13. 13

    Vue @click计数器并为可重用组件更新背景2分钟

  14. 14

    1分钟后退出Applescript

  15. 15

    使用云功能在Google Cloud Pub / Sub上发布需要3分钟-Node.js

  16. 16

    如果前后1分钟或2分钟,如何舍入到最接近的5分钟间隔?

  17. 17

    如果提前1,2,3,4分钟,如何将其四舍五入到最接近的5分钟间隔?

  18. 18

    Ubuntu 14.04.2启动,然后在1-2分钟后冻结。鼠标指针仍在移动

  19. 19

    将分钟递增至最近的15分钟间隔

  20. 20

    将日志间隔从10分钟更改为1分钟

  21. 21

    Cron每1或2分钟就会运行一次

  22. 22

    2-5分钟后,14.04到16.04升级屏幕变黑

  23. 23

    PHP的strtotime()关闭1分钟?

  24. 24

    将大型GPS数据分组1分钟

  25. 25

    在1分钟后使用Hangfire和Azure Service Bus重试作业

  26. 26

    GCMNetorkManager PeriodicTask只能使用1分钟,而不能使用2分钟

  27. 27

    1分钟后,骆驼继续通过JMS将消息发送到队列中

  28. 28

    如何以1分钟的间隔获取更新的位置ANDROID

  29. 29

    1分钟后截图

热门标签

归档