У меня есть два виртуальных сервера Ubuntu, которые равны, и на обоих есть прокси-сервер Squid. Проблема в том, что Squid при запуске сервера создает файл .pid, но через 10-20 секунд он исчезает, и мне приходится вручную вводить:
/usr/local/squid/sbin/squid
Дальше работает как надо и .pid файл не пропадает. Я хочу, чтобы мой Squid запускался при запуске сервера и этот файл .pid не исчезал. Я пробовал создать файл init.d /etc/init.d/run_squid
#! /bin/sh
/usr/local/squid/sbin/squid
exit0
затем
update-rc.d run_squid defaults
update-rc.d run_squid enable
И я получаю:
error: run_squid Default-Start contains no runlevels, aborting
Я тоже пробовал
crontab -e
@reboot /scripts/squid.sh
и ничего не происходит, когда я его запускаю, даже если я даю разрешения.
Мне нужен .pid для правильной работы, чтобы мой кластер работал правильно (мой кластер состоит из corosync и pacemaker), потому что теперь проблема в том, что когда один из узлов .pid исчезает, этот узел просто продолжает работать (он просто не прокси, а думает работает) а на здоровую не переключается.
В заключение: я хочу, чтобы мой кальмар запускался правильно, чтобы он не терял свой pid, а узлы переключались, если один из них теряет файл .pid.
Решение этой проблемы: мы должны создать службу systemd, поэтому первым делом нужно создать службу.
vim /lib/systemd/system/squid.service
Затем начинается чувствительная к регистру часть:
[Unit]
Description=Squid Web Proxy.
[Service]
Type=simple
PIDFile=/usr/local/squid/var/run/squid.pid
ExecStart=/usr/local/squid/sbin/squid
[Install]
WantedBy=multi-user.target
Затем мы должны перейти к
cd /lib/systemd/system/
cp squid.service /etc/systemd/system/squid.service
chmod 644 /etc/systemd/system/squid.service
И теперь мы можем запустить службу squid, набрав:
systemctl start squid
И чтобы эта служба запускалась каждый раз, когда мы запускаем сервер, мы должны набирать
systemctl enable squid