Como sequenciar um desligamento e inicialização apropriados de serviços da web com o systemd?

2

Estou tentando estruturar o encerramento e a inicialização dos serviços Apache, PHP-FPM e MariaDB usando o systemd:

Estes são os arquivos de configuração adicionais na pasta /etc/systemd/system :

# httpd.service
.include /usr/lib/systemd/system/httpd.service
[Unit]
After=mariadb.service php-fpm.service
Before=php-fpm.service

# php-fpm.service
.include /usr/lib/systemd/system/php-fpm.service
[Unit]
Before=mariadb.service

Minha intenção é iniciar o Apache somente após o PHP-FPM e o MariaDB terem iniciado e parar o Apache antes de parar o PHP-FPM, parar o PHP-FPM antes do MariaDB.

No entanto, estou recebendo erros na inicialização e no encerramento:

12:42:09 systemd[1]: Found ordering cycle on php-fpm.service/stop
12:42:09 systemd[1]: Found dependency on mariadb.service/stop
12:42:09 systemd[1]: Found dependency on php-fpm.service/stop
12:42:09 systemd[1]: Job httpd.service/stop deleted to break ordering cycle starting with php-fpm.service/stop
12:42:09 systemd[1]: Stopping MariaDB database server...
12:42:12 systemd[1]: Stopped MariaDB database server.
12:42:12 systemd[1]: Stopping The PHP FastCGI Process Manager...
12:42:12 systemd[1]: Failed to remove content of temporary directory /tmp/systemd-mariadb.service-Xp7JJZ5: No such file or directory
12:42:12 systemd[1]: Stopped The PHP FastCGI Process Manager.
12:42:12 systemd[1]: Failed to remove content of temporary directory /tmp/systemd-php-fpm.service-XPLabUE: No such file or directory
-- Reboot --
12:46:20 systemd[1]: Found ordering cycle on php-fpm.service/start
12:46:20 systemd[1]: Found dependency on mariadb.service/start
12:46:20 systemd[1]: Found dependency on php-fpm.service/start
12:46:20 systemd[1]: Job httpd.service/start deleted to break ordering cycle starting with php-fpm.service/start

Parece que o ciclo de pedidos que eu especifiquei está causando problemas. Como isso deve ser resolvido?

    
por Question Overflow 07.08.2014 / 08:21

1 resposta

6

Tanto quanto eu posso ver, você está tendo uma dependência cíclica. Você está dizendo ao systemd para iniciar o PHP-fpm antes do Apache e ao mesmo tempo após o Apache. Isso não funciona do jeito que você quer.

No seu arquivo link , especifique o seguinte:

Requires=mariadb.service php-fpm.service
After=mariadb.service php-fpm.service

A explicação das opções para arquivos unitários do systemd. Ele também diz que o a ordem de encerramento será a ordem de inicialização invertida, para que você não precise configurá-la separadamente. A parte "Requer" fará com que o Apache só inicie se o MariaDB e o PHP-fpm iniciarem com sucesso.

    
por 07.08.2014 / 13:18