Hizmetler Hosting & Sunucu Araçlar Blog Kurumsal EnglishEN
Teklif Alın

Modern Linux dağıtımlarında servislerin (arka planda çalışan programların) yönetimi systemd ile yapılır. Web sunucusunu başlatmak, bir uygulamayı sunucu açıldığında otomatik çalıştırmak veya çöken bir servisi yeniden ayağa kaldırmak — hepsi systemd'nin işidir. Bu rehberde systemd servis yönetimini systemctl ve journalctl komutlarıyla açıklıyoruz.

İlgili içerikler: Linux sunucu komutları · SSH ile sunucuya bağlanma · Nginx yapılandırma

systemd ve Servis (Unit) Nedir?

systemd, Linux'ta açılışta ilk çalışan süreçtir ve sistemdeki tüm servisleri yönetir. systemd'nin yönettiği her birime unit denir; en yaygın unit türü .service dosyalarıdır — yani arka planda çalışan programlar.

Bir servis; başlatılabilir, durdurulabilir, yeniden başlatılabilir ve sistem açılışında otomatik çalışacak şekilde etkinleştirilebilir. systemd ayrıca çöken servisleri otomatik yeniden başlatabilir ve her servisin loglarını merkezi olarak toplar.

systemctl ile Servis Yönetimi

Servisleri yönetmek için systemctl komutunu kullanırsınız. Temel işlemler şunlardır:

# Servisin durumunu görüntüle
systemctl status nginx

# Başlat / durdur / yeniden başlat
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx

# Yapılandırmayı kesintisiz yeniden yükle
sudo systemctl reload nginx

Otomatik Başlatmayı Yönetme

Bir servisin sunucu her açıldığında otomatik çalışması için etkinleştirilmesi gerekir. start servisi yalnızca o an başlatır; enable ise açılışta başlamasını sağlar — ikisi farklıdır.

Komutİşlevi
systemctl enable servisAçılışta otomatik başlatmayı açar
systemctl disable servisOtomatik başlatmayı kapatır
systemctl enable --now servisHem etkinleştirir hem hemen başlatır
systemctl is-enabled servisOtomatik başlatma durumunu gösterir

Kendi Servisinizi Oluşturma

Kendi uygulamanızı (örneğin bir Node.js veya Python uygulaması) bir systemd servisi haline getirebilirsiniz. Bunun için /etc/systemd/system/ dizinine bir .service dosyası oluşturursunuz. Tipik bir servis dosyası üç bölümden oluşur: [Unit] (tanım ve bağımlılıklar), [Service] (nasıl çalıştırılacağı) ve [Install] (ne zaman etkinleştirileceği).

[Unit]
Description=Ornek Uygulama
After=network.target

[Service]
User=uygulama
WorkingDirectory=/opt/uygulama
ExecStart=/usr/bin/node server.js
Restart=always

[Install]
WantedBy=multi-user.target

Dosyayı oluşturduktan sonra systemd'ye yeni servisi tanıtmanız gerekir:

# Yeni/değişen unit dosyalarını yeniden oku
sudo systemctl daemon-reload

# Servisi etkinleştir ve başlat
sudo systemctl enable --now uygulama
İpucu
Restart=always satırı, uygulamanız çökse bile systemd'nin onu otomatik yeniden başlatmasını sağlar — production ortamında kararlılık için önemlidir.

journalctl ile Log İzleme

systemd, tüm servislerin loglarını merkezi olarak toplar; bunlara journalctl ile erişirsiniz: journalctl -u nginx belirli bir servisin loglarını, journalctl -u nginx -f ise logları canlı gösterir. Bu, bir servis neden başlamıyor sorusunun cevabını bulmanın en hızlı yoludur.

Sıkça Sorulan Sorular

enable ve start arasındaki fark nedir?

start servisi yalnızca o an başlatır; sunucu yeniden başlarsa servis kapalı gelir. enable servisi açılış listesine ekler. Production'da genelde ikisini birden istersiniz: enable --now.

Bir servis başlamıyor, ne yapmalıyım?

Önce systemctl status servis ile özet hatayı, ardından journalctl -u servis ile ayrıntılı logları inceleyin. Çoğu sorun yanlış dosya yolu, izin hatası veya port çakışmasıdır.

Servis dosyasını değiştirdim ama etkili olmadı?

Unit dosyasını her değiştirdiğinizde sudo systemctl daemon-reload çalıştırmanız, ardından servisi yeniden başlatmanız gerekir.

Uygulamanızı Production'da Çalıştırın

KEYDAL VPS ile uygulamalarınızı systemd servisleri olarak kararlı biçimde yayınlayın. KEYDAL VPS planlarını inceleyin

WhatsApp