Systemd ile Sürekli Hazır Servisler
Merhabalar, kimsenin okumayacağı bir yazı daha yazmaya karar verdim.
Bugün ilk Go projemi deploy ettim ve artık sunucumda çalışıyor. Daha önce tüm projelerimi PHP ve Laravel ile geliştiriyordum aslında PHP’nin beni ne kadar tembelleştirdiğini yeni yeni görmeye başladım. Bunu şundan ötürü söylüyorum bir PHP projesi yayınladığınızda genelde web hosting paneliniz cPanel, CyberPanel PHP’nin tüm gereksinimlerini ve konfigürasyonlarını size hazır getiriyor bende bu zamana kadar hazır konfigürasyonlarla başlayıp gerekli yerlerde müdahalelerde bulunuyordum fakat bir Go ile uğraşmaya başladıktan sonra işletim sistemi ile iç içe olmaya başladım. Linux dağıtımlarında sürekli çalışacak bir servis oluşturmak ve reboot sonrasında otomatik çalıştırmakta bunlardan birisi.
Bunları niye anlattım bilmiyorum, neyse :D
Systemd bir çok Linux dağıtımının kullandığı bir servis yöneticisi. Tabi öncelikle servis nedir diyebilirsiniz. Şuraya göz atmanızı öneririm.
Systemd servislerinizi yönetmenizi sağlıyor, benim için reboot ardından uygulamamın tekrar çalışmasını ve hata aldığında, timeout olduğunda tekrar çalışmasını sağlıyor. Ben bu kadarıyla kullanıyorum.
Öncelikle işletim sisteminde servisler nerede bulalım. Servisler şu dizinlerde olabilir;
/etc/systemd/system/
/run/systemd/system/
/lib/systemd/system/
Ben Ubuntu kullanıyorum ve aşağıdaki komut ile bir servis dosyası oluşturuyorum.
`nano /etc/systemd/system/go.service`
Yukarıda da bahsettiğim gibi bu işlemin amacı Go Projemin sürekli çalışmasını sağlamak bunun için servis dosyama aşağıdakileri ekliyorum. Açıklamalarını yapacağım.
[Unit]
Description=Go Projem[Service]
User=root
ExecStart=/root/goProjects/src/test/main[Install]
WantedBy=multi-user.target`
Buradaki Unit ve Install alanları zorunlu, benim yaptığım ise User ile kullanıcımı ve ExecStart ile çalıştırılacak komutumu belirtmek.
Servis dosyası ile ilgili detaylara göz atmak isterseniz aşağıdaki linkte çok güzel aktarılmış.
Servis dosyamı kaydettim ve artık çalıştırmaya hazır.
systemctl start go.service
Servisim çalıştı sırada reboot/restart sonrası otomatik çalıştırılmasını sağlamakta.
systemctl enable go.service
Uygulamam çalıştı mı diye her zaman kontrol ederim.
systemctl status go.service
Komutu ile servisinizin durumunu öğrenebilirsiniz.
Bir komutu, programı sürekli çalıştırmak bu kadar kolay.