庚子说 發表於 2023-2-6 15:19:00

Vue/ React/ Angular 前端项目在 Web 服务器上的部署配置

<p><span style="font-size: 14px">Web 服务器是一种用于存储,处理和传输 Web 内容的软件。它是一种特殊类型的服务器,具有处理 HTTP 请求并向浏览器返回 Web 页面和其他内容的能力。Web服务器支持多种编程语言,如 PHP,JavaScript,Ruby,Python 等,并且支持动态生成 Web 页面。常见的 Web 服务器包括 Apache,Nginx,Microsoft IIS 等。</span>对于目前流行的<strong>前后端分离</strong>开发模式项目,前端往往需要使用 Web 服务器进行独立部署。</p>
<p>&nbsp;</p>
<p><span style="font-size: 16px"><strong>一、Nginx</strong></span></p>
<p><span style="font-size: 14px">Nginx 一般是前端项目部署首选的 Web 服务器。</span></p>
<p>&nbsp;</p>
<p>使用 Nginx 作为服务器部署 Vue 项目步骤如下:</p>
<ol>
<li>
<p>安装 Nginx:如果还没有安装 Nginx,请先安装它。</p>
</li>
<li>
<p>构建 Vue 项目:使用命令“npm run build”在 Vue 项目中构建生产版本的 Vue 项目。</p>
</li>
<li>
<p>复制 dist 文件夹:将生成的 dist 文件夹复制到 Nginx 的 html 文件夹中。</p>
</li>
<li>
<p>配置 Nginx:编辑 Nginx 的配置文件(通常为 nginx.conf),添加以下内容以配置对项目的访问:</p>
</li>
</ol>
<pre class="language-nginx highlighter-hljs"><code>server {
    listen 80;
    server_name your_domain_name;
    root /path/to/your/dist;

    location / {
      try_files $uri $uri/ /index.html;
    }
   
    # 代理转发接口请求
    location /api {
      proxy_pass http://service_api_ip:service_api_port/service_api/;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}</code></pre>
<ol start="5">
<li>
<p>重启 Nginx:使用命令“nginx -s reload”重启 Nginx。</p>
</li>
<li>
<p>浏览部署的 Vue 项目:通过浏览器访问 http://your_domain_name/,查看部署的 Vue 项目。</p>
</li>
</ol>
<p>请注意:以上内容假设已经配置好了域名并将其映射到了服务器的 IP 地址。如果尚未配置域名,请相应地使用服务器的 IP 地址替代。</p>
<p><span style="font-size: 16px"><strong>二、IIS</strong></span></p>
<p>使用 IIS 作为服务器部署 Vue 项目的步骤如下:</p>
<ol>
<li>
<p>构建 Vue 项目:在 Vue 项目中使用命令“npm run build”构建生产版本的 Vue 项目。</p>
</li>
<li>
<p>安装 IIS:如果尚未安装 IIS,请先安装 IIS。</p>
</li>
<li>
<p>创建站点:在 IIS 中创建一个新站点,将生成的 dist 文件夹中的文件复制到站点的根目录中。</p>
</li>
<li>
<p>配置 Default Document:在 IIS 中的站点配置中,将“index.html”设置为默认文档。</p>
</li>
<li>
<p>配置 URL 重写:安装 URL 重写模块(ARR:Application Request Routing),然后在 IIS 中的站点配置中添加以下 URL 重写规则:</p>
</li>
</ol>
<pre class="language-xml highlighter-hljs"><code>&lt;rule name="proxy_forwarding" stopProcessing="true"&gt;
    &lt;match url="^(.*?)/?api/(.*)$" /&gt;
    &lt;conditions&gt;
      &lt;add input="{HTTP_HOST}" pattern="^current_site_ip:current_site_port$" /&gt;
    &lt;/conditions&gt;
    &lt;action type="Rewrite" url="http://service_api_ip:service_api_port/service_api/{R:2}" /&gt;
&lt;/rule&gt;

&lt;!--
    &lt;rule name="Handle History Mode and custom 404/500" stopProcessing="true"&gt;
      &lt;match url="^.*" /&gt;
      &lt;conditions logicalGrouping="MatchAny"&gt;
            &lt;add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /&gt;
            &lt;add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /&gt;
      &lt;/conditions&gt;
      &lt;action type="Rewrite" url="/" /&gt;
    &lt;/rule&gt;
--&gt;</code></pre>
<ol start="6">
<li>启动站点:启动站点,通过浏览器访问站点 URL 查看部署的 Vue 项目。</li>
</ol>
<p>请注意:以上内容假设已经配置好了域名并将其映射到了服务器的 IP 地址。如果尚未配置域名,请相应地使用服务器的 IP 地址替代。</p>
<p><span style="font-size: 16px"><strong>三、Apache (httpd)</strong></span></p>
<p>使用 Apache 作为服务器部署 Vue 项目的步骤如下:</p>
<ol>
<li>
<p>构建 Vue 项目:在 Vue 项目中使用命令“npm run build”构建生产版本的 Vue 项目。</p>
</li>
<li>
<p>安装 Apache:如果尚未安装 Apache,请先安装 Apache。</p>
</li>
<li>
<p>配置 Apache:配置 Apache 以让其可以提供静态文件。可以通过在 Apache 配置文件中添加以下内容来完成此操作:</p>
</li>
</ol>
<pre class="language-xml highlighter-hljs"><code>&lt;Directory "/var/www/html"&gt;
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
&lt;/Directory&gt;</code></pre>
<ol start="4">
<li>
<p>复制文件:将生成的 dist 文件夹中的文件复制到 Apache 的根目录下的 /var/www/html 目录中。</p>
</li>
<li>
<p>配置 URL 重写:安装 mod_rewrite 模块,然后在 Apache 配置文件中添加以下 URL 重写规则:</p>
</li>
</ol>
<pre class="language-xml highlighter-hljs"><code>&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ -
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html
&lt;/IfModule&gt;</code></pre>
<ol start="6">
<li>
<p>重启 Apache:使用命令“sudo service apache2 restart”重启 Apache。</p>
</li>
<li>
<p>测试:通过浏览器访问服务器的 IP 地址或域名,查看部署的 Vue 项目。</p>
</li>
</ol>
<p>请注意:以上内容假设已经配置好了域名并将其映射到了服务器的 IP 地址。如果尚未配置域名,请相应地使用服务器的 IP 地址替换。另外,配置文件路径和命令可能因操作系统不同而有所不同,请根据实际情况进行调整。</p>
<p>其中 2.4 版本的 <strong>反向代理</strong>(即代理转发对服务接口的请求)功能配置具体详细配置说明请参考 <strong>官方文档</strong>。</p>
<p><span style="font-size: 16px"><strong>四、Apache Tomcat</strong></span></p>
<p><span style="font-size: 15px; color: rgba(224, 62, 45, 1)"><strong>经实践,Apache Tomcat 对请求的代理转发功能有限(无法配置对特定 URIs 请求的转发,如:http://domain:port/api/),无法实现对 Vue/ React/ Angular 前端项目的部署。如果要扩展 Apache Tomcat 的代理转发功能,需要 Apache httpd 的 mod_proxy 模块 支持。</strong></span></p>
<p>使用 Apache Tomcat 作为服务器部署 Vue 项目步骤如下:</p>
<ol>
<li>
<p>准备工作:确保已经安装了 Apache Tomcat,并且知道其安装路径。</p>
</li>
<li>
<p>构建 Vue 项目:在项目根目录中执行 <code>npm run build</code> 命令以构建项目。构建完成后,会在项目根目录中生成一个 "dist" 目录,其中包含了所有的静态文件。</p>
</li>
<li>
<p>将 "dist" 目录复制到 Apache Tomcat 的 webapps 目录中:例如,如果 Apache Tomcat 安装在 "C:\Tomcat" 中,则可以将 "dist" 目录复制到 "C:\Tomcat\webapps" 中。</p>
</li>
<li>
<p>重命名 "dist" 目录:将 "dist" 目录重命名为想要的名称,例如 "my-app"。</p>
</li>
<li><strong>代理转发配置</strong>:修改 Apache Tomcat 的配置文件,打开 "C:\Tomcat\conf\server.xml" 文件,并在其中添加以下内容:
<pre class="language-xml highlighter-hljs"><code>&lt;Connector port="8080" protocol="HTTP/1.1"
          connectionTimeout="20000"
          redirectPort="8443"
          proxyName="localhost"
          proxyPort="&lt;PROXY_PORT&gt;"
          /&gt;</code></pre>
<p>其中,"&lt;PROXY_PORT&gt;" 是后端 API 服务器所在主机的端口号。</p>
</li>
<li>
<p>启动 Apache Tomcat:运行 Apache Tomcat 安装目录中的 "bin/startup.bat" 文件以启动 Apache Tomcat。</p>
</li>
<li>
<p>访问 Vue 应用程序:在浏览器中访问 "http://localhost:8080/my-app"(其中 "my-app" 是在第 4 步中命名的名称),应该就可以看到 Vue 应用程序。</p>
</li>
</ol>
<p>注意:以上内容假设使用的是 Tomcat 的默认端口8080。如果使用了其他端口,请相应地更改浏览器访问地址。</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/yuzhihui/p/17095524.html
頁: [1]
查看完整版本: Vue/ React/ Angular 前端项目在 Web 服务器上的部署配置