共计 1177 个字符,预计需要花费 3 分钟才能阅读完成。
公司最近有一个需求,需要在同一服务器安装 php 不同版本,我使用的方式是 systemctl 的管理方式。
为了减少 systemctl 的数量,使用的方法是 systemctl 模板的解决办法!具体方式如下
vim /lib/systemd/system/php@.service
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
Before=nginx.service
[Service]
Type=forking
#Type=notify
PIDFile=/run/%i.pid
ExecStart=/usr/local/%i/sbin/php-fpm --fpm-config /etc/%i.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
上面的定义好后执行下面命令加载配置文件
systemctl daemon-reload
systemctl 模板使用方式
需要了解占位符 %i 的意思,意思就是
%i: This references the instance name, which is the identifier following the @ in the instance unit. This is one of the most commonly used specifiers because it will be guaranteed to be dynamic. The use of this identifier encourages the use of configuration significant identifiers. For example, the port that the service will be run at can be used as the instance identifier and the template can use this specifier to set up the port specification.
中文意思就是 @之后的字符,.service 之前的字符
比如我启动 php5.6 的环境。执行下面命令就启动了 php5.6 但是要确保你的配置文件和安装路径,
这点非常重要不然启动服务会报错
systemctl start php@php5.6.service
启动 php7 的命令同理
systemctl start php@php7.2.service
需要特别注意配置问题!
PIDFile=/run/%i.pid # 需要与你的 phpxx.fpm 的配置文件配置一致
安装路径也一样需要根据情况更改!
/usr/local/%i/sbin/php-fpm --fpm-config /etc/%i.conf
systemctl 模板的基本使用方法就是这样!