Предыдущий (к сожалению, теперь удаленный) ответ полезного пользователя, чей ник уже вылетел из головы, был почти правильный.
Было предложено внести поправку в /lib/systemd/система/apache2.service
файл, чтобы он зависел от сеть-online.target
вместо стандартного сеть.цель
или, лучше, добавить второй файл в /lib/системд/система
называется мой-apache2.service
с этой модификацией. Согласно документации, это правильный способ убедиться, что служба запускается только тогда, когда сеть действительно работает..
Пока это работает, проблема в том, что содержание /библиотека
не подлежат редактированию и /etc/системд/система
вместо этого следует использовать для этой цели. (Да, этот ответ, который я связал с системами, отличными от Ubuntu, но чтение иерархия файлов man 7
и человек 5 systemd.unit
на Ubuntu показывает то же самое).
Вторая проблема заключается в том, что, по моему опыту, попытка дважды запустить Apache2 приводит к проблемам.
Чтобы устранить обе проблемы, в моем ответе ранее рекомендовалось создать конфликтующую службу в /etc/системд/система
. Однако это было слишком сложно и не решило некоторые из вышеперечисленных проблем, а именно не было перспективным: изменения в исходном .оказание услуг
файл, созданный вышестоящими авторами, не будет автоматически включен в наш новый .оказание услуг
файл.
Правильное решение — создать выпадающий файл, который добавляет новый После
зависимость от оригинала apache2.service
, как задокументировано человек 5 systemd.unit
. Для этого нужно ввести следующую команду:
# systemctl изменить apache2.service
(что задокументировано в человек 1 systemctl
)
... и когда откроется редактор, нужно ввести следующее содержимое между в ### Что-нибудь между здесь и комментарием ниже
... и ### Строки под этим комментарием
... строки:
[Ед. изм]
After=network-online.target
И сохраните новый файл.
Обратите внимание, что согласно человек 5 systemd.unit
это не заменит исходные After-зависимости службы; скорее, это добавит новую зависимость к тем, которые уже присутствуют.
Для справки, вот оригинальное содержание /lib/systemd/система/apache2.service
:
[Ед. изм]
Description=HTTP-сервер Apache
After=network.target remote-fs.target nss-lookup.target
Документация = https://httpd.apache.org/docs/2.4/
[Оказание услуг]
Тип = разветвление
Среда = APACHE_STARTED_BY_SYSTEMD = истина
ExecStart=/usr/sbin/apachectl старт
ExecStop=/usr/sbin/apachectl изящная остановка
ExecReload=/usr/sbin/apachectl изящный
KillMode=смешанный
PrivateTmp=истина
Перезапустить = при прекращении
[Установить]
WantedBy=многопользовательская.цель
Отныне Apache2 больше не должен запускаться при загрузке системы.