Bagaimana cara mulai menggunakan httpd dengan aktivasi soket (systemd)?

14

Server httpd apache jarang diperlukan di salah satu server kecil kami, jadi alangkah baiknya untuk memulainya melalui aktivasi soket oleh systemd (dan kemudian berhenti ketika tidak ada lalu lintas terjadi selama beberapa waktu). Apakah ini mungkin dan jika iya, bagaimana?

Daniel
sumber
Tulis ulang yang di atas, dan edit habis waktu 5 menit. Efek praktisnya mungkin tidak berguna. Klien perlu terhubung dengan perintah 'startup' sebelum membuat permintaan normal. Klien tidak tahu sebelumnya apakah httpd sudah habis, jadi perintah startup perlu dikirim sebelum permintaan normal. Penundaan akan tinggi. Dalam kehidupan nyata, laba-laba dan bot dunia dapat terus apache terus menerus. Pertanyaannya dapat disusun ulang untuk memungkinkan jawaban seperti 'gunakan server http yang ringan seperti lighthttpd dan biarkan selalu-up'.
rleir

Jawaban:

2

Ini dimungkinkan dengan Apache 2.5 dengan mod_systemd .

Untuk rilis Apache yang lebih lama, Anda dapat menggunakan systemd-socket-proxyd (8) tetapi ini tidak akan secara otomatis menghentikan layanan Apache setelah batas waktu.

Siosm
sumber
Ini sebenarnya diimplementasikan di inti server , bukan di mod_systemd . (Jadi membangun mod_systemd untuk Apache 2.4 tidak akan membuat Anda melakukan aktivasi soket.)
Julian
0

Mengajukan:

httpd.socket

Kandungan:

[Socket]
ListenStream=80
ListenStream=0.0.0.0:80
#BindIPv6Only=ipv6-only
After=network.target
Requires=network.target

[Install]
WantedBy=sockets.target

Pastikan layanan apache juga disebut httpd.

dizzi90
sumber
ini tidak berfungsi karena port tidak diteruskan ke httpd.service dari httpd.socket
Edward Torvalds