Pet*_*per 5 server command-line 18.04
Ubuntu 服务器 18.04 LTS。
使用systemctl restart
的PHP-FPM不创建所需的插座/var/run/php/
,但重新启动一样。
如何调整我的设置以允许服务在不重启的情况下重启?
我正在从单个服务器(无容器)上的源代码编译多个 PHP-FPM 实例,以用于不同年龄的 Web 应用程序。我已经成功地设置了 PHP 7.1、PHP 7.2 和 PHP 7.3。它们都在启动时正确启动,它们都有一个套接字/var/run/php/
,它们都按预期从浏览器中响应。
/var/run/php
开机后内容/var/run/php$ ls -l
total 0
srw-rw---- 1 www-data www-data 0 Apr 2 12:57 php7.1-fpm.sock
srw-rw---- 1 www-data www-data 0 Apr 2 12:57 php7.2-fpm.sock
srw-rw---- 1 www-data www-data 0 Apr 2 12:57 php7.3-fpm.sock
Run Code Online (Sandbox Code Playgroud)
每个服务似乎都没有问题地运行。这是systemctl status
每个的输出:
~$ sudo systemctl status php7.1-fpm
? php7.1-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/etc/systemd/system/php7.1-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 12:57:51 UTC; 21min ago
Main PID: 875 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.1-fpm.service
??875 php-fpm: master process (/etc/php/7.1/etc/php-fpm.conf)
??970 php-fpm: pool www
??971 php-fpm: pool www
Apr 02 12:57:51 darwin systemd[1]: Started The PHP FastCGI Process Manager.
Run Code Online (Sandbox Code Playgroud)
~$ sudo systemctl status php7.2-fpm
? php7.2-fpm.service - The PHP FastCGI Process Manager (7.2)
Loaded: loaded (/etc/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 12:57:51 UTC; 22min ago
Main PID: 837 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.2-fpm.service
??837 php-fpm: master process (/etc/php/7.2/etc/php-fpm.conf)
??963 php-fpm: pool www
??964 php-fpm: pool www
Apr 02 12:57:51 darwin systemd[1]: Started The PHP FastCGI Process Manager (7.2).
Run Code Online (Sandbox Code Playgroud)
~$ sudo systemctl status php7.3-fpm
? php7.3-fpm.service - The PHP FastCGI Process Manager (7.3)
Loaded: loaded (/etc/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 12:57:51 UTC; 23min ago
Main PID: 836 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.3-fpm.service
??836 php-fpm: master process (/etc/php/7.3/etc/php-fpm.conf)
??965 php-fpm: pool www
??966 php-fpm: pool www
Apr 02 12:57:51 darwin systemd[1]: Started The PHP FastCGI Process Manager (7.3).
Run Code Online (Sandbox Code Playgroud)
如果我对相应的php.ini
文件进行了更改,这将保证重新启动服务以处理更改。就我而言,当我使用systemctl restart
(eg sudo systemctl restart php7.1-fpm
)重新启动服务时,该服务似乎可以正常重新启动,但所有 PHP 套接字都被删除 - 无论我重新启动的版本如何。
之后没有控制台输出systemctl restart
,当我检查systemctl status
重新启动的服务(例如上一段中的 PHP 7.1)时,该服务正在运行:
systemctl restart
~$ sudo systemctl status php7.1-fpm
? php7.1-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/etc/systemd/system/php7.1-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 13:28:06 UTC; 28s ago
Main PID: 1704 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.1-fpm.service
??1704 php-fpm: master process (/etc/php/7.1/etc/php-fpm.conf)
??1718 php-fpm: pool www
??1722 php-fpm: pool www
Apr 02 13:28:06 darwin systemd[1]: Stopped The PHP FastCGI Process Manager.
Apr 02 13:28:06 darwin systemd[1]: Started The PHP FastCGI Process Manager.
Run Code Online (Sandbox Code Playgroud)
请注意 上的时间戳差异Active
。如果我以相同的方式查询其他服务(注意:我没有重新启动它们),时间戳来自启动时的初始启动:
systemctl restart
的 PHP 7.1~$ sudo systemctl status php7.2-fpm
? php7.2-fpm.service - The PHP FastCGI Process Manager (7.2)
Loaded: loaded (/etc/systemd/system/php7.2-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 12:57:51 UTC; 33min ago
Main PID: 837 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.2-fpm.service
??837 php-fpm: master process (/etc/php/7.2/etc/php-fpm.conf)
??963 php-fpm: pool www
??964 php-fpm: pool www
Apr 02 12:57:51 darwin systemd[1]: Started The PHP FastCGI Process Manager (7.2).
Run Code Online (Sandbox Code Playgroud)
systemctl restart
的 PHP 7.1~$ sudo systemctl status php7.3-fpm
? php7.3-fpm.service - The PHP FastCGI Process Manager (7.3)
Loaded: loaded (/etc/systemd/system/php7.3-fpm.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2019-04-02 12:57:51 UTC; 34min ago
Main PID: 836 (php-fpm)
Tasks: 3 (limit: 1152)
CGroup: /system.slice/php7.3-fpm.service
??836 php-fpm: master process (/etc/php/7.3/etc/php-fpm.conf)
??965 php-fpm: pool www
??966 php-fpm: pool www
Apr 02 12:57:51 darwin systemd[1]: Started The PHP FastCGI Process Manager (7.3).
Run Code Online (Sandbox Code Playgroud)
……然而所有的套接字都不见了:
/var/run/php
之后的内容systemctl restart
$ ls -l
total 0
Run Code Online (Sandbox Code Playgroud)
我的直觉是我在.service
没有意识到的情况下破坏了文件中的某些内容。在进行故障排除时,我注意到我为 PID 和套接字使用了不同的目录。PID不是在启动时创建的,因为/run/php-fpm/
它不存在。我对被建议不要将套接字和 PID 保存在同一目录中的记忆模糊,但我不记得确切的细节。
.service
文件[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
RuntimeDirectory=php
RuntimePermissions=755
PIDFile=/run/php-fpm/php7.1-fpm.pid
ExecStart=/etc/php/7.1/sbin/php-fpm --nodaemonize --fpm-config /etc/php/7.1/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
预先感谢您提供任何指示或进一步阅读。
经过进一步调查,发现RuntimeDirectoryPreserve
我的单元文件中缺少一条指令。当服务停止时,RuntimeDirectory
\xe2\x80\xa6 与套接字一起被删除。
\n\n\nRuntimeDirectoryPreserve=采用布尔参数或重新启动。如果设置为 no(默认值),则在服务停止时始终删除 RuntimeDirectory= 中指定的目录。如果设置为重新启动,则自动和手动重新启动服务时都会保留目录。这里,自动重启是指Restart=中指定的操作,手动重启是指systemctl restart foo.service触发的操作。如果设置为 yes,则服务停止时不会删除目录。请注意,由于运行时目录 /run 是“tmpfs”的挂载点,因此对于系统服务,当系统重新启动时,RuntimeDirectory= 中指定的目录将被删除。
\n
修订(工作)单位文件:
\n\n[Unit]\nDescription=The PHP FastCGI Process Manager (7.1)\nAfter=network.target nginx.service\n\n[Service]\nType=simple\nRuntimeDirectory=php\nRuntimeDirectoryMode=755\nRuntimeDirectoryPreserve=yes\nPIDFile=/run/php7.1-fpm.pid\nExecStart=/etc/php/7.1/sbin/php-fpm --nodaemonize --fpm-config /etc/php/7.1/etc/php-fpm.conf\nExecReload=/bin/kill -USR2 $MAINPID\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
3570 次 |
最近记录: |