GNU/Linux >> Belajar Linux >  >> Linux

Mulai PHP-FPM dengan opsi root secara otomatis

Pada sistem systemd, Anda mungkin harus mengonfigurasi ini melalui systemd daripada skrip init sistem V

Langkah-langkah di bawah ini diuji dan berfungsi di Ubuntu 16.04 LTS. Dan ini adalah penyebab Anda untuk mengalihkan skrip init:

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

1. Sunting konfigurasi kumpulan php-fpm Anda mis. /etc/php/7.0/fpm/pool.d/www.conf dan konfigurasikan root sebagai pengguna/grup sebagai root

; 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. Sunting /lib/systemd/system/php7.0-fpm.service dan tambahkan -R ke ExecStart variabel untuk memungkinkan layanan berjalan sebagai root

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

3. Muat ulang konfigurasi

$ systemctl daemon-reload

4. Mulai layanan

$ systemctl start php7.0-fpm

5. Lihat itu

$ 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

Saya akhirnya menemukan solusi. Ternyata Ubuntu menggunakan systemd untuk memulai dan memulai ulang PHP-FPM dan karenanya mengabaikan init.d file.

Jika Anda mengalami masalah dengan penyesuaian pada init.d file diabaikan dan Anda menggunakan Ubuntu 15.04 atau lebih baru, kemungkinan besar layanan itu memiliki systemd file layanan juga.

Jadi perbaikan untuk masalah saya:Sistem saya memiliki file bernama /lib/systemd/system/php7.0-fpm.service , yang digunakan oleh systemd . Dengan perintah cat /lib/systemd/system/php7.0-fpm.service Anda dapat melihat konten file layanan. Anda mengganti php7.0-fpm.service dengan nama file layanan Anda. File layanan PHP7.0-FPM terlihat seperti ini:

[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

Dalam kasus saya, saya perlu menyesuaikan ExecStart aturan. Kami tidak perlu mengedit file ini, karena systemd menawarkan cara untuk mengganti aturan tertentu. Perintah sudo systemctl edit php7.0-fpm.service akan membuka editor tempat Anda dapat memasukkan aturan tersebut. Cukup masukkan bagian aturan yang ingin Anda sesuaikan dan simpan file. Dalam kasus saya, tampilannya seperti ini:

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

Pastikan untuk mengatur ulang aturan yang ingin Anda edit terlebih dahulu, jika tidak, kedua aturan tersebut akan dijalankan. Pastikan juga untuk menjalankan sudo systemctl daemon-reload setelah menyimpan file ini. Dalam kasus saya, menjalankan kumpulan karena root sekarang diizinkan di Ubuntu 16.04.


Linux
  1. Mulai Tomcat Saat Memulai Dengan Hak Administratif?

  2. Layanan Systemd Tidak Akan Memulai Nodejs?

  3. Proses Waktu Mulai Dengan Zona Waktu?

  1. Cara Memulai Layanan NTP Dengan Slewing Diaktifkan di Linux

  2. Cara mengatur ssh tanpa kata sandi dengan kunci RSA

  3. PHP-FPM tidak dimulai secara otomatis setelah reboot

  1. Kelola beberapa instance layanan dengan systemctl

  2. Memulai dengan ls

  3. Nonaktifkan masuk dengan akun root