如何使用Azure DevOps部署create-react-app?

时间:2019-04-06 23:01:00

标签: azure azure-devops azure-web-sites create-react-app azure-web-app-service

过去2天,我一直在尝试弄清楚如何使用Azure DevOps部署我的Web应用程序,但没有任何结果。我使用FileZila来查看构建生成的文件是否正在上传,并且所有文件都在wwwroot文件夹下。我也尝试使用FileZilla手动上传文件。在这一点上,我真的很沮丧,因为我已经尝试了所有在网上找到的东西来部署该应用程序。 DevOps可以正常运行,不能正常工作的部分是我访问URL时实际上显示了我的Web应用。

我遵循了所有可以找到的教程。

This is what I see when I try to visit my site

不知道为什么在明确部署代码后为什么要我部署代码:/

3 个答案:

答案 0 :(得分:1)

无法重现您的问题,您可以按照以下步骤进行操作:

1。导入存储库,我使用了documenthttps://github.com/MicrosoftDocs/pipelines-javascript

中的git url

enter image description here

2。创建构建管道。

enter image description here

3。运行构建过程。

enter image description here

4。发布项目并选择Nodejs Web APP。

enter image description here

5。在您的订阅中选择Azure Web应用程序服务。

enter image description here

6。导航到您的项目网址。

enter image description here

7。我的文件在/ wwwroot目录中。

enter image description here

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 App Service Deployment Task

devops 运行后,您的 azure 应用服务配置 -> 常规设置,将如下所示:

enter image description here