GNU/Linux >> Linux の 問題 >  >> Linux

rootオプションでPHP-FPMを自動起動

systemd システムでは、システム V init スクリプトではなく、systemd を介してこれを構成する必要がある場合があります

以下の手順は、Ubuntu 16.04 LTS でテストされ、機能しています。そして、これがリダイレクトされた init スクリプトの原因です:

/lib/lsb/init-functions.d/40-systemd

<強い>1.編集 あなたのphp-fpmプール構成。 /etc/php/7.0/fpm/pool.d/www.conf ルートをユーザー/グループとしてルートとして構成します

; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = root
group = root

<強い>2.編集 /lib/systemd/system/php7.0-fpm.service ExecStart に -R を追加します サービスをルートとして実行できるようにする変数

ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf -R

<強い>3.設定を再読み込み

$ systemctl daemon-reload

<強い>4.サービスを開始

$ systemctl start php7.0-fpm

<強い>5.チェックしてください

$ ps auwx | grep php
root     32061  0.0  0.0 221680 26084 ?        Ss   16:59   0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)
root     32063  0.0  0.0 221680  4992 ?        S    16:59   0:00 php-fpm: pool www
root     32064  0.0  0.0 221680  4992 ?        S    16:59   0:00 php-fpm: pool www

私は最終的に解決策を見つけました。 Ubuntu は systemd を使用していたことが判明しました PHP-FPM を起動して再起動するため、 init.d を無視していました ファイル。

init.d への調整で問題が発生した場合 ファイルが無視され、Ubuntu 15.04 以降を使用している場合、サービスに systemd がある可能性が高くなります サービス ファイルも同様です。

だから私の問題の修正:私のシステムには /lib/systemd/system/php7.0-fpm.service という名前のファイルがあります 、 systemd で使用されます .コマンド cat /lib/systemd/system/php7.0-fpm.service で サービスファイルの内容を見ることができます。 php7.0-fpm.service を置き換えます をサービス ファイルの名前に置き換えます。 PHP7.0-FPM のサービス ファイルは次のようになります:

[Unit]
Description=The PHP 7.0 FastCGI Process Manager
Documentation=man:php-fpm7.0(8)
After=network.target

[Service]
Type=notify
PIDFile=/run/php/php7.0-fpm.pid
ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

私の場合、 ExecStart を調整する必要がありました ルール。 systemd は特定のルールを上書きする方法を提供するため、このファイルを編集する必要はありません。コマンド sudo systemctl edit php7.0-fpm.service これらのルールを入力できるエディターが開きます。調整するルールのセクションを入力して、ファイルを保存するだけです。私の場合、次のようになります:

[Service]
ExecStart=
ExecStart=/usr/sbin/php-fpm7.0 --allow-to-run-as-root --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf

最初に編集するルールを必ずリセットしてください。リセットしないと、両方のルールが実行されます。また、必ず sudo systemctl daemon-reload を実行してください このファイルを保存した後。私の場合、Ubuntu 16.04 では root としてプールを実行できるようになりました。


Linux
  1. lsの使用を開始する

  2. rootアカウントでのログインを無効にする

  3. Cyber​​dがCentOS8でDBusExceptionを使用して起動に失敗する

  1. 管理者権限で起動時にTomcatを起動しますか?

  2. タイムゾーンで開始時間を処理しますか?

  3. RSA キーを使用してパスワードなしの ssh をセットアップする方法

  1. systemctlを使用して複数のサービスインスタンスを管理する

  2. CentOS7のSystemdを介してOpenCAサービスを自動的に開始します

  3. root アクセスで実行するように Systemd サービスを構成する