前端开发中,服务器的选择与配置是非常重要的一环。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 的配置文件中加入反向代理模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
接着在虚拟主机的配置文件中添加反向代理规则:
ProxyPass /api http://localhost:3000/ ProxyPassReverse /api http://localhost:3000/
重启 Apache 服务器后,静态资源的请求会被 Apache 转发到 localhost:3000 上去处理。
PM2 配置
首先需要安装与配置 pm2-http-server 模块,可以使用以下命令完成安装:
npm i -g pm2-http-server
安装完成后,在项目根目录下创建 pm2.json 文件并添加以下配置项:
-- -------------------- ---- ------- - ------- -- ------- ----------------- --------- --------- ------ - ------- ---- ------- -- -------- ---- --- --------- - ------------- - ------- ------- ------- ------------ ------ ---------------- ------- -------------------------- ------- ---------------------- -------------- ---------------------------- ----------------------------- ------ - ----------- ------------ - - -- -------------- - ------- ------- - -
在上面的配置文件中,“name” 字段是应用程序名称,“script” 字段是 Node.js 启动文件路径,“env” 字段是环境变量,在这里设置了监听的端口号。pm2-http-server 提供了一个子命令 pm2-http-server start
可以启动 HTTP 静态资源服务器,在 "http-server"
字段中指定资源目录即可。
这时,在命令行执行:
pm2 start pm2.json
即可启动 PM2 服务器。在pm2.json文件所在目录下会生成一个 logs 文件夹,其中包含了 PM2 运行状态的日志。
示例代码
Apache 反向代理代码示例
反向代理最常见的使用场景是在Apache 配置文件中设计一个 ProxyPass 规则,该规则会将静态资源请求的相应部分重定向到 Node.js 服务器的某个接口上。
ProxyPass /api http://localhost:3000/ ProxyPassReverse /api http://localhost:3000/
在这个例子里,“/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