宝塔PHP8.4与Node.js共存_多环境并行使用PHP8.4技巧【方法】

10次阅读

php 8.4与node.js可在宝塔面板中通过反向代理、独立端口、FPM多池隔离或docker容器化四种方式共存,实现端口协调与环境隔离,互不干扰。

宝塔PHP8.4与Node.js共存_多环境并行使用PHP8.4技巧【方法】

如果您在宝塔面板中已安装PHP 8.4,但同时需要运行Node.js应用(如vue项目服务端、express后端或Nuxt SSR),且不希望两者端口冲突或进程干扰,则需通过环境隔离与端口协调实现共存。以下是实现PHP 8.4与node.js多环境并行使用的多种方法:

一、反向代理分离访问入口

该方法利用nginx反向代理能力,将不同域名或路径请求分别转发至PHP 8.4的FastCGI服务与Node.js监听端口,实现逻辑隔离与统一入口。无需修改应用代码,兼容性高。

1、在宝塔面板【网站】中添加一个新站点,绑定主域名(如example.com)。

2、进入该站点的【配置文件】,在server块内location /段落下方插入以下Node.js代理规则:

立即学习PHP免费学习笔记(深入)”;

location /api-node/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;
}

3、确保Node.js应用已启动并监听127.0.0.1:3000(不可绑定0.0.0.0或公网IP)。

4、保存配置后重启Nginx,访问example.com/api-node/即可路由至Node.js服务,其余路径默认交由PHP 8.4处理。

二、独立端口+防火墙放行

此方法为Node.js分配独立公网可访问端口(如3001),绕过Nginx统一入口,适用于需直接暴露Node.js服务的场景;PHP 8.4仍通过80/443端口提供Web服务,二者物理隔离。

1、编辑Node.js启动脚本,将app.listen()参数明确指定为3001,例如:app.listen(3001, ‘127.0.0.1’)。

2、在宝塔面板【安全】页面中,放行端口3001(TCP协议),确保系统防火墙允许该端口通信。

3、使用pm2管理Node.js进程:执行pm2 start app.js –name “node-api”,并运行pm2 save持久化。

4、验证访问:在浏览器中直接输入服务器IP加端口(如http://192.168.1.100:3001/health)确认Node.js响应正常。

三、PHP-FPM多池隔离+Node.js进程用户分离

通过为PHP 8.4创建独立FPM池,并限定其运行用户与Node.js进程用户不同,避免文件权限冲突与资源争抢,提升多环境稳定性与安全性。

1、进入宝塔面板【软件商店】→【PHP 8.4】→【设置】→【配置修改】,在末尾新增自定义FPM池配置段:

[www-node]
listen = /www/wwwroot/example.com/runtime/php-node.sock
listen.owner = www
listen.group = www
user = phpnode
group = phpnode

2、执行命令创建专用系统用户:useradd -r -s /sbin/nologin phpnode

3、重启PHP 8.4服务,在对应网站根目录的.htaccess或Nginx配置中,将fastcgi_pass指向新sock路径:fastcgi_pass unix:/www/wwwroot/example.com/runtime/php-node.sock;

4、Node.js进程使用普通用户(如www)启动,确保与phpnode用户无重叠,防止/tmp或session目录写入冲突。

四、Docker容器化隔离运行

借助Docker将Node.js应用封装为独立容器,与宝塔宿主机上的PHP 8.4完全解耦;容器通过bridge网络与宿主机Nginx通信,互不侵入系统环境。

1、在服务器安装Docker与docker-compose,执行systemctl enable docker && systemctl start docker

2、在项目根目录新建docker-compose.yml,内容包含Node.js服务与network配置:

version: ‘3’
services:
  node-app:
    image: node:18-alpine
    working_dir: /app
    volumes:
      – ./src:/app
    command: npm start
    ports:
      – “3002:3000”
    restart: always

3、执行docker-compose up -d启动容器,确认容器内服务监听3000端口,映射宿主机3002端口。

4、在宝塔Nginx配置中添加反向代理,将location /node-docker/指向http://127.0.0.1:3002/

text=ZqhQzanResources