DEVOPSLIB Telegram 80
🔧 Как не словить heart attack от systemd после ребута

Сценарий знакомый каждому: выкатываешь новую версию, всё проверено, ребутаешь — и… сервис не стартует. Или стартует, но не так. Или вообще не тот.

Вот пара вещей, которые стоит проверить заранее, чтобы systemd не превратился в твоего личного врага:


Проверь WantedBy и After

Очень часто забывают правильно указать зависимости между юнитами. Если my-app.service зависит от postgresql.service, обязательно пропиши:


[Unit]
After=postgresql.service
Requires=postgresql.service



Не забудь про EnvironmentFile

Если ты грузишь переменные из .env, проверь, что путь указан корректно и файл точно есть:


EnvironmentFile=/etc/my-app/env


И что этот файл читаем для systemd!


Работает в screen, а в systemd — нет?

Часто дело в WorkingDirectory или User. Убедись, что все пути абсолютные и права выставлены правильно.


Логируйся, как будто завтра форензика

StandardOutput=journal
StandardError=journal

Логика простая: чем проще найти ошибку — тем быстрее в проде всё снова работает.


И последнее: не забудь прогнать systemd-analyze verify my-app.service перед выкатыванием. Иногда он спасает от того, что ты бы искал часами.


🙃 systemd — это не враг. Это просто злобный кот. Главное — гладить его по шерсти.

Подпишись 👉@devopslib
👍4



tgoop.com/devopslib/80
Create:
Last Update:

🔧 Как не словить heart attack от systemd после ребута

Сценарий знакомый каждому: выкатываешь новую версию, всё проверено, ребутаешь — и… сервис не стартует. Или стартует, но не так. Или вообще не тот.

Вот пара вещей, которые стоит проверить заранее, чтобы systemd не превратился в твоего личного врага:


Проверь WantedBy и After

Очень часто забывают правильно указать зависимости между юнитами. Если my-app.service зависит от postgresql.service, обязательно пропиши:


[Unit]
After=postgresql.service
Requires=postgresql.service



Не забудь про EnvironmentFile

Если ты грузишь переменные из .env, проверь, что путь указан корректно и файл точно есть:


EnvironmentFile=/etc/my-app/env


И что этот файл читаем для systemd!


Работает в screen, а в systemd — нет?

Часто дело в WorkingDirectory или User. Убедись, что все пути абсолютные и права выставлены правильно.


Логируйся, как будто завтра форензика

StandardOutput=journal
StandardError=journal

Логика простая: чем проще найти ошибку — тем быстрее в проде всё снова работает.


И последнее: не забудь прогнать systemd-analyze verify my-app.service перед выкатыванием. Иногда он спасает от того, что ты бы искал часами.


🙃 systemd — это не враг. Это просто злобный кот. Главное — гладить его по шерсти.

Подпишись 👉@devopslib

BY Библиотека девопса | DevOps, SRE, Sysadmin


Share with your friend now:
tgoop.com/devopslib/80

View MORE
Open in Telegram


Telegram News

Date: |

Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel. Ng Man-ho, a 27-year-old computer technician, was convicted last month of seven counts of incitement charges after he made use of the 100,000-member Chinese-language channel that he runs and manages to post "seditious messages," which had been shut down since August 2020. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Add up to 50 administrators ZDNET RECOMMENDS
from us


Telegram Библиотека девопса | DevOps, SRE, Sysadmin
FROM American