VDS Sunucuya SSH ile Bağlanma Rehberi (PuTTY & Terminal)
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Systemctl komutları, servis unit dosyaları, özel servis oluşturma, journalctl ile log takibi ve systemd sorun giderme rehberi. Linux sunucularda servis yönetimini öğrenin.
Systemd, modern Linux dağıtımlarının büyük çoğunluğunda kullanılan init sistemi ve servis yöneticisidir. Ubuntu, Debian, CentOS, AlmaLinux ve RHEL gibi dağıtımlarda systemd, sistem başlangıcından servis yönetimine kadar pek çok görevi üstlenir. Bu rehberde systemctl komutlarını, unit dosyalarını ve özel servis oluşturmayı öğreneceksiniz.
Systemd, Linux çekirdeği başladıktan sonra devreye giren ilk süreçtir (PID 1). Görevleri şunlardır:
Systemd, eski SysV init sisteminin yerini almıştır. /etc/init.d/ betikleri hâlâ çalışsa da artık systemd unit dosyaları tercih edilmektedir.
# Servis durumunu görüntüle
sudo systemctl status nginx
# Servisin çalışıp çalışmadığını kontrol et
sudo systemctl is-active nginx
# Servisin etkin (enabled) olup olmadığını kontrol et
sudo systemctl is-enabled nginx
# Tüm çalışan servisleri listele
sudo systemctl list-units --type=service --state=running
# Başarısız servisleri listele
sudo systemctl list-units --type=service --state=failed
# Servisi başlat
sudo systemctl start nginx
# Servisi durdur
sudo systemctl stop nginx
# Servisi yeniden başlat (durdur + başlat)
sudo systemctl restart nginx
# Servisi yeniden yükle (yapılandırmayı yenile, durdurmadan)
sudo systemctl reload nginx
# Mümkünse reload, değilse restart yap
sudo systemctl reload-or-restart nginx
# Servisi sistem başlangıcında otomatik başlat
sudo systemctl enable nginx
# Servisi başlat ve otomatik başlatmayı etkinleştir
sudo systemctl enable --now nginx
# Otomatik başlatmayı devre dışı bırak
sudo systemctl disable nginx
# Servisi durdur ve devre dışı bırak
sudo systemctl disable --now nginx
# Servisi tamamen maskele (başlatılamaz hale getir)
sudo systemctl mask nginx
# Maskelemeyi kaldır
sudo systemctl unmask nginx
Unit dosyaları, systemd'nin servisleri nasıl yöneteceğini tanımlar. İki ana konum vardır:
/lib/systemd/system/ — Paket yöneticisi tarafından kurulan unit dosyaları/etc/systemd/system/ — Sistem yöneticisi tarafından oluşturulan/özelleştirilen unit dosyaları# Bir servisin unit dosyasını görüntüle
sudo systemctl cat nginx
# Unit dosyasının konumunu bul
sudo systemctl show nginx --property=FragmentPath
# Tüm unit dosyalarını listele
sudo systemctl list-unit-files --type=service
Bir .service unit dosyası üç ana bölümden oluşur:
[Unit]
Description=Nginx HTTP Server
After=network.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit] Bölümü:
Description: Servis açıklamasıAfter: Bu servis hangi servislerden sonra başlamalıRequires: Zorunlu bağımlılıklarWants: İsteğe bağlı bağımlılıklar[Service] Bölümü:
Type: Servis tipi (simple, forking, oneshot, notify, dbus)ExecStart: Servisi başlatan komutExecStop: Servisi durduran komutRestart: Yeniden başlatma politikasıUser/Group: Servisi çalıştıracak kullanıcı[Install] Bölümü:
WantedBy: Hangi target'a bağlı olduğuKendi uygulamanız için bir systemd servisi oluşturmak oldukça basittir.
# Unit dosyasını oluştur
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My Node.js Application
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/app.js
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal
Environment=NODE_ENV=production
Environment=PORT=3000
[Install]
WantedBy=multi-user.target
# Systemd'yi yeni unit dosyasından haberdar et
sudo systemctl daemon-reload
# Servisi başlat ve etkinleştir
sudo systemctl enable --now myapp
# Durumu kontrol et
sudo systemctl status myapp
[Unit]
Description=My Python Script
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/myscript
ExecStart=/usr/bin/python3 /home/ubuntu/myscript/main.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
| Tip | Açıklama | Kullanım Alanı |
|---|---|---|
simple | Ana süreç doğrudan çalışır | Node.js, Python |
forking | Ana süreç fork eder ve çıkar | Nginx, Apache |
oneshot | Tek seferlik görev | Başlangıç scriptleri |
notify | Hazır olduğunda bildirim gönderir | Systemd-aware uygulamalar |
Systemd'nin log sistemi journald, tüm servis loglarını merkezi olarak toplar.
# Tüm logları görüntüle
sudo journalctl
# Belirli bir servisin loglarını görüntüle
sudo journalctl -u nginx
# Son 50 satırı görüntüle
sudo journalctl -u nginx -n 50
# Gerçek zamanlı log takibi
sudo journalctl -u nginx -f
# Son 1 saatin logları
sudo journalctl -u nginx --since "1 hour ago"
# Belirli tarih aralığı
sudo journalctl -u nginx --since "2024-01-01" --until "2024-01-02"
# Sadece hata logları
sudo journalctl -u nginx -p err
# Boot logları
sudo journalctl -b
# Önceki boot'un logları
sudo journalctl -b -1
# Log boyutunu kontrol et
sudo journalctl --disk-usage
# Eski logları temizle (2 haftadan eski)
sudo journalctl --vacuum-time=2weeks
Target'lar, birden fazla servisi gruplandıran özel unit dosyalarıdır.
# Mevcut target'ı görüntüle
sudo systemctl get-default
# Target'ı değiştir
sudo systemctl set-default multi-user.target
# Mevcut oturumu değiştir (reboot gerektirmez)
sudo systemctl isolate rescue.target
# Yaygın target'lar
# poweroff.target — Sistemi kapat
# rescue.target — Tek kullanıcı modu
# multi-user.target — Çok kullanıcılı, ağ aktif
# graphical.target — Masaüstü ortamı
# Detaylı durum bilgisi
sudo systemctl status myapp -l
# Son logları incele
sudo journalctl -u myapp -n 100 --no-pager
# Unit dosyasını doğrula
sudo systemd-analyze verify /etc/systemd/system/myapp.service
# Bağımlılık sorunlarını kontrol et
sudo systemctl list-dependencies myapp
# Unit dosyasını değiştirdikten sonra mutlaka çalıştırın
sudo systemctl daemon-reload
# Restart politikasını kontrol et
sudo systemctl show myapp --property=Restart
# Restart sayacını sıfırla
sudo systemctl reset-failed myapp
Bir servisi geliştirirken önce Type=simple ve Restart=on-failure ile başlayın. Servis kararlı hale geldikten sonra diğer ayarları optimize edin.
Systemd timer'ları, cron job'larına modern bir alternatif sunar.
# Timer unit dosyası oluştur
sudo nano /etc/systemd/system/backup.timer
[Unit]
Description=Daily Backup Timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
# Timer'ı etkinleştir
sudo systemctl enable --now backup.timer
# Tüm timer'ları listele
sudo systemctl list-timers
Systemd, modern Linux sunucu yönetiminin temel taşıdır. Systemctl komutlarını ve unit dosyası yapısını öğrenmek, sunucunuzdaki servisleri güvenilir şekilde yönetmenizi sağlar. REXE sunucularında özel servisler oluşturarak uygulamalarınızın sistem yeniden başlatmalarında otomatik olarak devreye girmesini sağlayabilirsiniz.
'enable' servisi sistem başlangıcında otomatik başlatmak için işaretler ancak hemen başlatmaz. 'start' servisi hemen başlatır ama yeniden başlatmada otomatik çalışmaz. İkisini birden yapmak için 'systemctl enable --now servis-adi' kullanın.
Unit dosyasını değiştirdikten sonra mutlaka 'sudo systemctl daemon-reload' komutunu çalıştırın. Ardından 'sudo systemctl restart servis-adi' ile servisi yeniden başlatın. Daemon-reload olmadan değişiklikler uygulanmaz.
'sudo journalctl -u servis-adi -f' komutu ile gerçek zamanlı log takibi yapabilirsiniz. Son 100 satırı görmek için '-n 100' ekleyin. Sadece hataları görmek için '-p err' parametresini kullanın.
Önce 'sudo systemctl status servis-adi -l' ile detaylı durum bilgisine bakın. Ardından 'sudo journalctl -u servis-adi -n 50' ile son logları inceleyin. 'sudo systemd-analyze verify /etc/systemd/system/servis.service' ile unit dosyasını doğrulayın.
Systemd timer'ları daha modern ve entegre bir çözümdür: journald ile log kaydı, bağımlılık yönetimi ve 'systemctl list-timers' ile kolay izleme sunar. Basit görevler için cron yeterlidir, ancak servis bağımlılığı olan veya log takibi gereken görevler için systemd timer tercih edin.
Linux VDS sunucunuza SSH ile bağlanma adımları: PuTTY, Terminal, anahtar tabanlı kimlik doğrulama, Path Panel firewall kuralı ve güvenlik ipuçları.
Windows Server VDS sunucunuza Uzak Masaüstü (RDP) ile bağlanma adımları, NLA güvenlik ayarları, Path Panel firewall kuralı ve sorun giderme rehberi.
REXE panel üzerinden VDS sunucunuzun işletim sistemini değiştirme adımları, yedekleme önerileri, desteklenen Linux ve Windows Server sürümleri.