daemon pernis tidak mendengarkan pada port yang dikonfigurasi

11

Saya mencoba menginstal pernis di ubuntu 16.04,

Saya membaca beberapa artikel tidak ada yang berfungsi. Dari apa yang saya baca, sejak ubuntu 15.04, cara mengkonfigurasi pernis telah berubah (karena systemd).

Sekarang saya punya kekacauan nyata yang tidak berfungsi:


/ etc / default / varnish:

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

/etc/varnish/default.vcl (biasanya menunjuk ke host yang menunjuk ke 127.0.0 dan port 8080, tetapi untuk tujuan debug saya memodifikasinya ke domain eksternal) vcl 4.0;

# Default backend definition. Set this to point to your content server.
backend default {
    .host = "www.varnish-cache.org"; 
    .port = "80";
}

/etc/apache2/ports.conf

Listen 8080

grep -R 'ExecStart=/usr/sbin/varnishd' /etc/

/etc/systemd/system/varnish.service:ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
/etc/systemd/system/varnish.service.d/customexec.conf:ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
/etc/systemd/system/multi-user.target.wants/varnish.service:ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

/lib/systemd/system/varnish.service:

  GNU nano 2.5.3                                                Fichier : /lib/systemd/system/varnish.service                                                                                                      

[Unit]
Description=Varnish HTTP accelerator
Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd

[Service]
Type=simple
LimitNOFILE=131072
LimitMEMLOCK=82000
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
ExecReload=/usr/share/varnish/reload-vcl
ProtectSystem=full
ProtectHome=true
PrivateTmp=true
PrivateDevices=true

[Install]
WantedBy=multi-user.target

service --status-all | grep varnish

 [ - ]  varnish
 [ + ]  varnishlog
 [ + ]  varnishncsa

setelah

sudo service varnish stop
sudo service varnish start

Layanan pernis tidak mendengarkan http://127.0.0.1:80/, sebelum reboot, itu berhenti http://127.0.0.1:6081/tetapi tidak berfungsi lagi ... Saya tidak tahu harus berbuat apa lagi ...




EDIT: setelah reboot, tidak ada yang berhasil,

jika aku melakukan : systemctl status varnish

● varnish.service - Varnish HTTP accelerator
   Loaded: loaded (/etc/systemd/system/varnish.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/varnish.service.d
           └─customexec.conf
   Active: inactive (dead) since jeu. 2017-01-05 14:48:09 CET; 1s ago
     Docs: https://www.varnish-cache.org/docs/4.1/
           man:varnishd
  Process: 5077 ExecStart=/usr/sbin/varnishd -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 5077 (code=exited, status=0/SUCCESS)

janv. 05 14:48:09 xubuntu-16 systemd[1]: Started Varnish HTTP accelerator.

service --status-all | grep varnish

 [ - ]  varnish
 [ - ]  varnishlog
 [ - ]  varnishncsa

jika saya sudo:, varnishd -d -f /etc/varnish/default.vclmaka start, semuanya berfungsi dengan baik ... sampai saya keluar dari cli


dipecahkan berkat respons @Gerald Schneider. Saya memposting langkah-langkah yang harus saya lakukan:

sudo apt remove varnish
sudo apt-get purge varnish
# I manually remove the 3 files in created in /etc/systemd/system/*
sudo apt install varnish
sudo nano /lib/systemd/system/varnish.service # put the rigth conf
sudo nano /etc/varnish/default.vcl #put the rigth conf
sudo systemctl daemon-reload
sudo service varnish restart

dan semuanya bekerja dengan baik! keajaiban ada di /lib/systemd/system/varnish.servicefile, sumber daya online lainnya yang saya temukan membuat saya berpikir itu ada di tempat lain, jadi waspadalah dengan tutorial online (usang)!

Bruno
sumber
Mungkin diperlukan untuk menghapus drop Anda sebelumnya di ->. /etc/systemd/system/varnish.service
Mike Q

Jawaban:

17

Anda perlu mengubah parameter mulai pernis dalam definisi layanan systemd juga. Anda dapat mengedit baris yang dimulai dengan ExecStartdi file definisi layanan:

sudo vi /lib/systemd/system/varnish.service

Namun memodifikasi file ini, memiliki kelemahan bahwa itu tidak akan diperbarui di masa depan pembaruan paket. Atau, seperti yang disarankan dalam komentar, Anda bisa membuat file drop systemd , yang merupakan cara yang disukai untuk menambahkan pengaturan ke definisi systemd.

# create the drop in directory
sudo mkdir /etc/systemd/system/varnish.service.d
# create the drop in file. The name is irrelevant, as long as it ends in .conf
sudo vi /etc/systemd/system/varnish.service.d/mysettings.conf

Di sini Anda hanya perlu menambahkan pengaturan yang ingin Anda ubah, semua yang lain akan diambil dari file definisi default.

Contoh:

[Service]
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m

Ini adalah baris default, ubah sesuai kebutuhan

Setelah itu, beri tahu systemctl untuk memuat ulang file konfigurasi dan untuk me-restart layanan

sudo systemctl daemon-reload
sudo service varnish restart

Pernis sekarang harus mendengarkan pada port 80.

Gerald Schneider
sumber
Saya sudah melakukan ini, file ini mengandung:[...] [Unit] Description=Varnish HTTP accelerator Documentation=https://www.varnish-cache.org/docs/4.1/ man:varnishd [Service] Type=simple LimitNOFILE=131072 LimitMEMLOCK=82000 ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m ExecReload=/usr/share/varnish/reload-vcl [...]
Bruno
Mungkin Anda harus mengembalikan file konfigurasi default untuk apache dan pernis dan mulai lagi dari awal. Saya telah mengatur ini untuk mengujinya dan saya hanya perlu mengubah konfigurasi apache untuk mendengarkan pada port 8080 dan baris tunggal di varnish.service. Tidak ada lagi.
Gerald Schneider
terima kasih, itu berhasil! Saya menambahkan langkah-langkah untuk menghapus instalasi dalam posting saya
Bruno
Ini pendekatan yang salah. File unit Systemd di / lib / systemd tidak boleh diedit, mereka harus diganti dengan file drop-in di / etc / systemd
Stephen
1
systemctl edit varnish.service secara otomatis membuat file unit menggantikan drop-in untuk Anda
HBruijn
5

Perhatikan bahwa drop-in harus memiliki ExecStart kosong = Kalau tidak, Anda akan mendapatkan kesalahan memulai layanan (duplikat ExecStart)

sudo mkdir /etc/systemd/system/varnish.service.d
sudo nano /etc/systemd/system/varnish.service.d/varnishd.conf

Dengan

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T <YOUR WEBSERVER IP>:8081 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
George
sumber