برای برنامه سوئیفت سیستم شده است

این پست برای توسعه دهندگان سویفت سمت سرور است.
همه برنامههای روی یک سرور باید تحت نظارت دایمون راهاندازی شوند. ممکن است قبلاً استفاده می کنید supervisord
یا systemd
.
این مقاله به شما نشان می دهد که چگونه زندگی خود را با آن ساده کنید systemd
با ادغام مستقیم آن در برنامه خود.
ابتدا، بیایید ببینیم که معمولاً چگونه با آن کار می کنیم systemd
و مراحل لازم برای راه اندازی یک سرویس.
خالص systemd
راه اندازی
با جستجوی آنلاین نمونه ها و ذخیره آن در فایل، یک فایل پیکربندی واحد را به صورت دستی ایجاد کنید /etc/systemd/system
پوشه
چندان آسان نیست، درست است؟ اکثر مردم در جایی در این اطراف تسلیم می شوند.
مدیریت
شما باید چند دستور ساده را به خاطر بسپارید:
systemctl start myapp.service
restart myapp.service
stop myapp.service
بلکه اسمی که خدمتتون دادید 🙉
فراموش نکنید که پس از ایجاد فایل پیکربندی واحد، برنامه خود را راه اندازی کنید.
اگر می خواهید سرویس را حذف کنید
systemctl stop myapp.service
systemctl start clean --all
به خاطر سپردن خیلی سخت نیست، اما هنوز …
سیاههها
اینجاست که بیشتر افراد گم میشوند، زیرا سیاههها میتوانند در برخی از آنها ذخیره شوند .log
فایل ها در جایی در سیستم هستند، یا باید از آن استفاده کنید journalctl
دستوراتی مانند این:
برای لاگ های زنده:
journalctl -u myapp -f
برای چند خط لاگ آخر:
journalctl -u myapp -n 100 --no-pager
من معتقدم به خاطر سپردن آن کمی سخت است و من اغلب از آن استفاده می کنم
up-arrow
در کنسول برای پیدا کردن دستور مناسب از تاریخ.
🍰 راه پلاگین سویفت
SwiftSystemd به نجات!
این یک راه ساده برای کنترل همه موارد فوق بدون سردرد ارائه می دهد.
⚡️نصب
برنامه خود را باز کنید Package.swift
و فقط یک خط اضافه کنید:
.package(url: "https://github.com/MihaelIsaev/SwiftSystemd.git", from:"1.0.0")
پس از آن، شما آماده رفتن هستید!
🛠️ راه اندازی
بیایید ببینیم چگونه یک فایل پیکربندی واحد مناسب برای آن ایجاد کنیم systemd
. در پوشه برنامه خود، فقط اجرا کنید:
swift run systemd install
چند سوال در کنسول از شما میپرسد و کارتان تمام میشود.
یا می توانید پاسخ ها را از قبل به صورت زیر مشخص کنید:
swift run systemd install -c release -t App -u mike
کجا-c
یا --config
برای پیکربندی است: release
یا debug
-t
یا --target
برای نام هدف اجرایی است-u
یا --user
برای کاربری است که سرویس تحت آن اجرا می شود
این دستور فایل پیکربندی واحد زیر را ایجاد می کند:
[Unit]
Description="AppName"
After=network.target
[Service]
User={user}
EnvironmentFile=/path/to/AppName/.env
WorkingDirectory=/path/to/AppName
TimeoutStopSec=2
Restart=always
ExecStart=/path/to/AppName/.build/{config}/{target}
[Install]
WantedBy=multi-user.target
همین! شما برنامه خود را تنها در دو مرحله ساده به روش درست تنظیم کرده اید و در حال حاضر در حال اجرا است.
📋 سیاهههای مربوط
یکی از ضروریترین کارها تماشای گزارشها است و به آسانی:
swift run systemd logs
این لاگ های زنده برنامه شما را از طریق نمایش می دهد journalctl
.
swift run systemd logs --limit 100
این آخرین را نشان می دهد 100
خطوط از گزارش برنامه شما از طریق journalctl
آسان به خاطر سپردن!
🎛️ مدیریت
می توانید وضعیت برنامه را با اجرای زیر بررسی کنید:
swift run systemd status
یا با دستورات زیر وضعیت برنامه را مدیریت کنید:
swift run systemd start # starts the app
stop # stops the app
restart # restart the app
disable # temporarily disables the app
enable # re-enables the app
شما همچنین می توانید ارسال کنید kill
سیگنال به برنامه:
swift run systemd kill
🧹 تمیز کردن
اگر دیگر به این سرویس نیاز ندارید، می توانید آن را به راحتی حذف کنید:
swift run systemd uninstall
این حذف می شود systemd
فایل پیکربندی و اگر سرویس همچنان فعال باشد متوقف می شود.
من معتقدم که اکنون می توانید همه چیز را دور بریزید systemctl
و journalctl
یادداشت ها، درست مثل من!
❤️ با خیال راحت مشارکت کنید!