سرویسهایی که همیشه در پسزمینه اجرا میشوند
بسیاری از برنامههای سروری مثل nginx، پستگرس یا داکر باید بهطور مداوم در پسزمینه اجرا شوند و حتی پس از ریاستارت سرور، دوباره بهطور خودکار راهاندازی شوند. systemd سیستم مدیریت سرویسها (init system) در اکثر توزیعهای مدرن لینوکس است که این کار را مدیریت میکند. ابزار اصلی تعامل با آن systemctl است:
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl disable nginx
start و stop یک سرویس را روشن یا خاموش میکنند، restart آن را دوباره راهاندازی میکند (برای اعمال تنظیمات جدید ضروری است) و status وضعیت فعلی و چند خط آخر لاگ آن را نشان میدهد. enable باعث میشود سرویس همراه با روشن شدن سیستم بهطور خودکار اجرا شود؛ بدون این دستور، حتی اگر سرویس الان روشن باشد، پس از ریاستارت سرور خاموش میماند.
ساختن یک سرویس سفارشی
برای برنامههای خودتان هم میتوانید یک فایل سرویس تعریف کنید در مسیر /etc/systemd/system/myapp.service:
[Unit]
Description=My Django App
[Service]
ExecStart=/usr/bin/python3 /home/ali/app/manage.py runserver
Restart=always
User=ali
[Install]
WantedBy=multi-user.target
پس از ساختن این فایل، با sudo systemctl daemon-reload و سپس sudo systemctl enable --now myapp میتوانید برنامهی خودتان را هم مثل یک سرویس سیستمی واقعی مدیریت کنید.