демон лака не прослушивает настроенный порт

11

Я пытаюсь установить лак на Ubuntu 16.04,

Я прочитал несколько статей, ни одна из которых не работает. Из того, что я прочитал, начиная с Ubuntu 15.04, способ настройки лака изменился (из-за systemd).

Теперь у меня есть настоящий беспорядок, который не работает:


/ 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 (обычно он указывает на хост, указывающий на 127.0.0 и порт 8080, но для целей отладки я изменил его на внешний домен) 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

после

sudo service varnish stop
sudo service varnish start

Служба лака не прослушивает http://127.0.0.1:80/, до перезагрузки она работает, http://127.0.0.1:6081/но больше не работает ... Я не знаю, что делать дальше ...




РЕДАКТИРОВАТЬ: после перезагрузки ничего не работает,

если я сделаю : 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

если я sudo:, varnishd -d -f /etc/varnish/default.vclтогда startвсе работает нормально ... пока я не уйду


решена благодаря ответу @Gerald Schneider. Я публикую шаги, которые мне нужно было сделать:

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

и все работает отлично! магия в /lib/systemd/system/varnish.serviceфайле, другие онлайн-ресурсы, которые я нашел, заставили меня думать, что это где-то в другом месте, так что будьте осторожны с онлайн (устаревшими) учебниками!

Bruno
источник
Вероятно, нужно просто удалить предыдущее падение ->. /etc/systemd/system/varnish.service
Mike Q

Ответы:

17

Вам также необходимо изменить параметры запуска лака в определении сервиса systemd. Вы можете отредактировать строку, начиная с ExecStartфайла определения сервиса:

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

Однако изменение этого файла имеет тот недостаток, что он не будет обновляться в будущих обновлениях пакета. В качестве альтернативы, как предлагается в комментариях, вы можете создать системный файл dropd , который является предпочтительным способом добавления настроек в определения 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

Здесь вам нужно только добавить настройки, которые вы хотите изменить, все остальное будет загружено из файла определения по умолчанию.

Пример:

[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

Это строка по умолчанию, измените ее, как вам нужно

После этого скажите systemctl перезагрузить его конфигурационные файлы и перезапустить службу.

sudo systemctl daemon-reload
sudo service varnish restart

Varnish теперь должен прослушивать порт 80.

Джеральд Шнайдер
источник
Я сделал это, этот файл содержит:[...] [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 [...]
Бруно
Возможно, вам следует восстановить файлы конфигурации по умолчанию для apache и лака и начать заново. Я настроил это для тестирования, и мне нужно было только изменить конфигурацию apache для прослушивания порта 8080 и единственной строки в varnish.service. Ничего больше.
Джеральд Шнайдер
спасибо, это сработало! Я добавляю шаги для удаления в свой пост
Бруно
Это неправильный подход. Файлы системных модулей в / lib / systemd редактировать не следует, их следует перезаписывать с помощью
Стивен,
1
systemctl edit varnish.service автоматизирует создание
вставок
5

Обратите внимание, что в раскрывающемся окне должен быть пустой ExecStart = В противном случае вы получите ошибку при запуске службы (дубликат ExecStart)

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

С

[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
Джордж
источник