le démon de vernis n'écoute pas sur le port configuré

11

J'essaie d'installer du vernis sur Ubuntu 16.04,

J'ai lu plusieurs articles dont aucun ne fonctionne. D'après ce que j'ai lu, depuis Ubuntu 15.04, la façon de configurer le vernis a changé (à cause de systemd).

Maintenant, j'ai un vrai gâchis qui ne fonctionne pas:


/ etc / default / vernis:

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

/etc/varnish/default.vcl (normalement il pointe vers un hôte pointant vers 127.0.0 et le port 8080, mais à des fins de débogage je l'ai modifié en un domaine externe) 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

après un

sudo service varnish stop
sudo service varnish start

Le service de vernis n'écoute pas http://127.0.0.1:80/, avant un redémarrage, il écoute http://127.0.0.1:6081/mais ça ne marche plus ... Je ne sais plus quoi faire ...




EDIT: après un redémarrage, rien ne fonctionne,

si je fais : 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

si je sudo:, varnishd -d -f /etc/varnish/default.vclalors start, tout fonctionne bien ... jusqu'à ce que je quitte le cli


résolu grâce à la réponse de @Gerald Schneider. Je poste les étapes que je devais faire:

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

et tout fonctionne bien! la magie est dans le /lib/systemd/system/varnish.servicefichier, d'autres ressources en ligne que j'ai trouvées m'ont fait penser que c'est ailleurs, alors méfiez-vous des tutoriels en ligne (obsolètes)!

Bruno
la source
Probablement nécessaire pour supprimer simplement votre précédent drop - -. /etc/systemd/system/varnish.service
Mike Q

Réponses:

17

Vous devez également modifier les paramètres de démarrage du vernis dans la définition du service systemd. Vous pouvez modifier la ligne commençant par ExecStartdans le fichier de définition de service:

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

Cependant, la modification de ce fichier présente l'inconvénient de ne pas être mis à jour dans les futures mises à jour du package. Alternativement, comme suggéré dans les commentaires, vous pouvez créer un fichier de dépôt systemd , qui est le moyen préféré d'ajouter des paramètres aux définitions 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

Ici, il vous suffit d'ajouter les paramètres que vous souhaitez modifier, tout le reste sera chargé à partir du fichier de définition par défaut.

Exemple:

[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

Ceci est la ligne par défaut, changez-la selon vos besoins

Ensuite, dites à systemctl de recharger ses fichiers de configuration et de redémarrer le service

sudo systemctl daemon-reload
sudo service varnish restart

Varnish devrait maintenant écouter sur le port 80.

Gerald Schneider
la source
Je l'ai fait, ce fichier contient:[...] [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
Vous devriez peut-être restaurer les fichiers de configuration par défaut pour apache et vernis et recommencer. J'ai mis cela en place pour le tester et je n'ai eu qu'à changer la configuration d'apache pour écouter sur le port 8080 et la ligne unique dans varnish.service. Rien d'autre.
Gerald Schneider
merci, ça a marché! J'ajoute les étapes de désinstallation dans mon post
Bruno
Ce n'est pas la bonne approche. Les fichiers d'unité Systemd dans / lib / systemd ne doivent pas être modifiés, ils doivent être remplacés par des fichiers de dépôt dans / etc / systemd
Stephen
1
systemctl edit varnish.service automatise la création de drop-ins de remplacement de fichiers d'unité pour vous
HBruijn
5

Notez que le drop-in doit avoir un ExecStart vide = Sinon, vous obtiendrez une erreur lors du démarrage du service (ExecStart en double)

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

Avec

[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
la source