PM2 与 Apache 结合的场景与实践

阅读时长 5 分钟读完

前端开发中,服务器的选择与配置是非常重要的一环。PM2 与 Apache 是两个常用的服务器环境,PM2 是 Node.js 上的进程管理器,而 Apache 是一个开源的 Web 服务器软件。在实际项目中,两者常常会结合使用。本文将介绍这种场景的应用与实践,帮助读者更好地理解 PM2 与 Apache 的配合使用方法。

场景介绍

在实际项目中,我们通常会将前端的静态资源放置在 Apache 服务器上,然后通过反向代理(Reverse Proxy) 的方式将请求转发给 PM2 服务器,由 PM2 中运行的 Node.js 服务来处理请求。这种场景下,前端资源的请求会从 Apache 转发到 PM2,再由 PM2 来处理并响应请求。这种结构比较适用于大型项目,可以在保证前端静态资源成批存储的同时,规避 Node.js 处理大量静态资源的影响。

实践

环境搭建

环境搭建需要先确保 Apache 和 PM2 环境已经在本地安装好。下面假设 Apache 目录已经有一个静态资源存储目录,在此基础上进行配置。

Apache 配置

首先需要在 Apache 的配置文件中加入反向代理模块:

接着在虚拟主机的配置文件中添加反向代理规则:

重启 Apache 服务器后,静态资源的请求会被 Apache 转发到 localhost:3000 上去处理。

PM2 配置

首先需要安装与配置 pm2-http-server 模块,可以使用以下命令完成安装:

安装完成后,在项目根目录下创建 pm2.json 文件并添加以下配置项:

-- -------------------- ---- -------
-
  ------- --
    ------- -----------------
    --------- ---------
    ------ -
      ------- ---- -------
    --
    -------- ----
  ---
  --------- -
    ------------- -
      ------- -------
      ------- ------------
      ------ ----------------
      ------- --------------------------
      ------- ----------------------
      -------------- ---------------------------- -----------------------------
      ------ -
        ----------- ------------
      -
    -
  --
  -------------- -
     ------- -------
  -
-

在上面的配置文件中,“name” 字段是应用程序名称,“script” 字段是 Node.js 启动文件路径,“env” 字段是环境变量,在这里设置了监听的端口号。pm2-http-server 提供了一个子命令 pm2-http-server start 可以启动 HTTP 静态资源服务器,在 "http-server" 字段中指定资源目录即可。

这时,在命令行执行:

即可启动 PM2 服务器。在pm2.json文件所在目录下会生成一个 logs 文件夹,其中包含了 PM2 运行状态的日志。

示例代码

Apache 反向代理代码示例

反向代理最常见的使用场景是在Apache 配置文件中设计一个 ProxyPass 规则,该规则会将静态资源请求的相应部分重定向到 Node.js 服务器的某个接口上。

在这个例子里,“/api” 是代表本地服务器根目录下的一个接口。其中”http://localhost:3000/” 是实际的 Node.js 服务器地址。当 Apache 接到一个来自客户端的请求时,他会将请求 /api 的相应部分重定向到该地址。

PM2 配置代码示例

在应用程序的根目录下,新建一个 pm2 配置文件 pm2.json,该配置文件会指定应用程序的一些信息如它的名字,以及环境变量等。

-- -------------------- ---- -------
-
     ------- -
         -
             ------- -----------------
             --------- ------------
             ------------ ----
             ------------------ ----------- ----- ---
             ------------- ------------
             ----------- ---------------
              ------ -
                   ----------- -------------
                   ------- ----
                   --
              ------------ -- ------
          -
      -
   -

在这个 PM2 配置文件中,我们指定了 2 个实例,这样可以充分利用 CPU 资源。我们也指定了应用程序要监听的端口为 3000,这样在应用启动之后,我们可以通过这个端口来访问应用程序。我们还指定了一个 out_file,所有应用程序的日志都将通过这个目标文件来记录和存储。

总结

本文从应用场景介绍和实践角度介绍了 PM2 和 Apache 的配合使用方法。在实际项目中,这种结构可以充分利用两者各自的优势,提高应用程序的性能和稳定性。读者可在实践中逐步掌握这种方案,并加以应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64aa60eb48841e989468c4f1

纠错
反馈