54

单台服务器同时跑多套Php

 5 years ago
source link: https://blog.kazaff.me/2018/10/21/单台服务器同时跑多套php/?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一套web系统,后台往往比前台功能要复杂丰满许多,但后台的访问权限往往更容易控制,毕竟前台是给宇宙中所有的生物在使用的。

为了安全起见,我们公司的一套web电商系统开始尝试做前后台功能隔离,根据整理出来的报告,后台功能需要大量的风险高的php内置函数。

前台基本上db的存存取取,没有什么图片管理,报表导出,文件打包等等功能,所以我们需要让它们分别跑在不同的php安全配置下。

服务器是一台AWS EC2,跑着默认提供的免费linux镜像,webserver用的是nginx,它使用fastcgi的方式把php交给php-fpm来处理。

所以,我们的方案就很直观了:

  1. 为前后台搭建独立的虚拟主机;
  2. 前后台各自的虚拟主机将php请求分配给各自的php-fpm管理器;
  3. 运行两套不同php配置的php-fpm进程。

前两步关于nginx虚拟主机的内容这里就不多讲了,我们直奔主题: 同时运行两套php-fpm进程

clone一套已有的php-fpm配置( /lib/systemd/system/php-fpm.service ):

[Unit]
Description=The PHP FastCGI Process Manager For Honmi Admin System
After=syslog.target network.target

[Service]
Type=notify
PIDFile=/run/php-fpm/php-fpm-admin.pid
ExecStart=/usr/sbin/php-fpm --nodaemonize -c /etc/php-admin.ini -y /etc/php-fpm-admin.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

注意上面我们在 ExecStart 项中设置了php-admin.ini和php-fpm-admin.conf,这样新运行的这套php-fpm进程将会使用独立的php设置和php-fpm设置。

打开 php-fpm-admin.conf 文件,我们需要配置它使用的独立的端口号:

...
[www]
listen = 127.0.0.1:9001
...

默认那套跑的在9000端口上,这样我们现在就完成了第三步。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK