Câu trả lời trước đó (thật đáng buồn, hiện đã bị xóa) bởi một người dùng hữu ích có nick đã khiến tôi nhớ đến là gần như Chính xác.
Nó đề nghị sửa đổi các /lib/systemd/system/apache2.service
tập tin để làm cho nó phụ thuộc vào mạng-online.target
thay vì mặc định mạng.mục tiêu
hoặc tốt hơn là thêm tệp thứ hai vào /lib/systemd/hệ thống
gọi điện my-apache2.service
với sửa đổi này. Theo tài liệu, đây là cách chính xác để đảm bảo rằng dịch vụ chỉ bắt đầu khi mạng thực sự hoạt động.
Trong khi điều này hoạt động, vấn đề ở đây là nội dung của /lib
không được phép chỉnh sửa và /etc/systemd/system
nên được sử dụng cho mục đích này để thay thế. (Vâng, câu trả lời này tôi đã liên kết với các giao dịch với các hệ thống khác ngoài Ubuntu, nhưng đọc phân cấp tập tin man 7
và người đàn ông 5 systemd.unit
trên Ubuntu cũng cho thấy điều tương tự).
Vấn đề thứ hai là, theo kinh nghiệm của tôi, cố gắng chạy Apache2 hai lần sẽ dẫn đến sự cố.
Để khắc phục cả hai vấn đề, câu trả lời của tôi trước đây đã khuyến nghị tạo một dịch vụ xung đột trong /etc/systemd/system
. Tuy nhiên, điều này quá phức tạp và không giải quyết được một số vấn đề trên, cụ thể là nó không phải là bằng chứng trong tương lai: thay đổi bản gốc .dịch vụ
tệp được tạo bởi các tác giả ngược dòng sẽ không tự động được tích hợp vào tệp mới của chúng tôi .dịch vụ
tập tin.
Giải pháp chính xác là tạo một tệp thả xuống có thêm một tệp mới Sau đó
phụ thuộc vào bản gốc apache2.service
, như tài liệu của người đàn ông 5 systemd.unit
. Để làm như vậy, người ta cần nhập lệnh sau:
# systemctl chỉnh sửa apache2.service
(được ghi lại trong người đàn ông 1 systemctl
)
...và khi trình soạn thảo mở ra, người ta cần nhập các nội dung sau ở giữa các ### Bất cứ điều gì giữa đây và bình luận bên dưới
... và ### Dòng bên dưới bình luận này
... dòng:
[Đơn vị]
Sau=mạng-online.đích
Và lưu tệp mới.
Lưu ý rằng theo người đàn ông 5 systemd.unit
điều này sẽ không thay thế phần phụ thuộc After ban đầu của dịch vụ; thay vào đó, điều này sẽ thêm một phụ thuộc mới vào những phụ thuộc đã có.
Để tham khảo, đây là nội dung gốc của /lib/systemd/system/apache2.service
:
[Đơn vị]
Mô tả=Máy chủ HTTP Apache
Sau=mạng.đích từ xa-fs.đích nss-lookup.đích
Tài liệu=https://httpd.apache.org/docs/2.4/
[Dịch vụ]
Loại = rẽ nhánh
Môi trường=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl bắt đầu
ExecStop=/usr/sbin/apachectl-dừng duyên dáng
ExecReload=/usr/sbin/apachectl duyên dáng
KillMode=hỗn hợp
RiêngTmp=true
Khởi động lại=on-abort
[Cài đặt]
WantedBy=multi-user.target
Từ giờ trở đi, Apache2 sẽ không còn bị lỗi khi khởi động hệ thống nữa.