过去2天,我一直在尝试弄清楚如何使用Azure DevOps部署我的Web应用程序,但没有任何结果。我使用FileZila来查看构建生成的文件是否正在上传,并且所有文件都在wwwroot
文件夹下。我也尝试使用FileZilla手动上传文件。在这一点上,我真的很沮丧,因为我已经尝试了所有在网上找到的东西来部署该应用程序。 DevOps可以正常运行,不能正常工作的部分是我访问URL时实际上显示了我的Web应用。
我遵循了所有可以找到的教程。
不知道为什么在明确部署代码后为什么要我部署代码:/
答案 0 :(得分:1)
无法重现您的问题,您可以按照以下步骤进行操作:
1。导入存储库,我使用了document:https://github.com/MicrosoftDocs/pipelines-javascript
2。创建构建管道。
3。运行构建过程。
4。发布项目并选择Nodejs Web APP。
5。在您的订阅中选择Azure Web应用程序服务。
6。导航到您的项目网址。
7。我的文件在/ wwwroot目录中。
和web.config
文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!--
This configuration file is required if iisnode is used to run node processes behind
IIS or IIS Express. For more information, visit:
https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config
-->
<configuration>
<system.webServer>
<!-- Visit http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx for more information on WebSocket support -->
<webSocket enabled="false" />
<handlers>
<!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
<add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<!-- Do not interfere with requests for node-inspector debugging -->
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^server.js\/debug[\/]?" />
</rule>
<!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>
<!-- All other URLs are mapped to the node.js site entry point -->
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="server.js"/>
</rule>
</rules>
</rewrite>
<!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin"/>
</hiddenSegments>
</requestFiltering>
</security>
<!-- Make sure error responses are left untouched -->
<httpErrors existingResponse="PassThrough" />
<!--
You can control how Node is hosted within IIS using the following options:
* watchedFiles: semi-colon separated list of files that will be watched for changes to restart the server
* node_env: will be propagated to node as NODE_ENV environment variable
* debuggingEnabled - controls whether the built-in debugger is enabled
See https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config for a full list of options
-->
<!--<iisnode watchedFiles="web.config;*.js"/>-->
</system.webServer>
</configuration>
您可以检查您的脚步与我的脚步之间是否有差异。有任何问题,请告诉我。
答案 1 :(得分:0)
出现此问题的原因是我试图在Azure中部署到Linux Web应用程序。
不幸的是,我无法找到将部署部署到Linux的方法,但是一旦我将应用程序切换到基于Windows的应用程序服务计划,该应用程序就会立即运行。
答案 2 :(得分:0)
如果您要通过 Azure Devops 将 React 应用部署到 azure 应用服务 linux 实例,请务必将以下“启动命令”添加到 azure 应用服务部署任务中:
pm2 serve /home/site/wwwroot --no-daemon --spa
<块引用>
Azure App Service Linux 使用 Nginx 作为 Web 服务器,并且有 pm2 安装。在此处了解有关 pm2 的更多信息 -> https://pm2.keymetrics.io/docs/usage/pm2-doc-single-page/
要自动将所有查询重定向到 index.html,请使用 --spa 选项。
devops 运行后,您的 azure 应用服务配置 -> 常规设置,将如下所示: