SSH Bağlantı Sorunu: Sunucuya Bağlanamıyorum
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
Sunucu yeniden başlatma sonrası servis başlatma sorunlarını teşhis ve çözme: systemctl, failed services, boot log analizi ve systemd yapılandırması.
Sunucu yeniden başlatıldıktan sonra bazı servisler otomatik olarak başlamayabilir, bu da kesintilere ve hizmet aksamalarına neden olur. Bu rehberde, reboot sonrası servis başlatma sorunlarını teşhis etmeyi ve çözmeyi öğreneceksiniz.
# Tüm başarısız servisleri listele
sudo systemctl list-units --type=service --state=failed
# Belirli bir servisin durumunu kontrol et
sudo systemctl status SERVIS_ADI
# Tüm servisleri ve durumlarını göster
sudo systemctl list-units --type=service --all
# Mevcut boot loglarını görüntüle
journalctl -b
# Önceki boot loglarını görüntüle
journalctl -b -1
# Servise göre filtrele
journalctl -b -u SERVIS_ADI
# Sadece hataları göster
journalctl -b -p err
# Boot süresi analizi
systemd-analyze
# Servis başlatma sırası
systemd-analyze blame
# Kritik zincir
systemd-analyze critical-chain
systemd-analyze blame hangi servislerin başlatılmasının en uzun sürdüğünü gösterir. Bu, boot sürecindeki darboğazları belirlemeye yardımcı olur.
# Servisi boot'ta başlatmak için etkinleştir
sudo systemctl enable SERVIS_ADI
# Etkinleştir ve hemen başlat
sudo systemctl enable --now SERVIS_ADI
# Servisin etkin olup olmadığını kontrol et
systemctl is-enabled SERVIS_ADI
# Tüm etkin servisleri listele
systemctl list-unit-files --type=service --state=enabled
# SSH sunucusu
sudo systemctl enable ssh
# Nginx web sunucusu
sudo systemctl enable nginx
# Apache web sunucusu
sudo systemctl enable apache2
# MySQL/MariaDB
sudo systemctl enable mysql
# Docker
sudo systemctl enable docker
# Fail2Ban
sudo systemctl enable fail2ban
# Servis bağımlılıklarını göster
systemctl list-dependencies SERVIS_ADI
# Ters bağımlılıkları göster
systemctl list-dependencies --reverse SERVIS_ADI
# Servis unit dosyasını göster
systemctl cat SERVIS_ADI
# /etc/systemd/system/myapp.service
[Unit]
Description=Uygulama Servisi
After=network.target mysql.service
Requires=mysql.service
Wants=redis.service
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/start.sh
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Önemli direktifler:
# Tam boot süresi
systemd-analyze time
# Servis başlatma süreleri (sıralı)
systemd-analyze blame | head -20
# Kritik zincir görselleştirme
systemd-analyze critical-chain
# SVG boot grafiği oluşturma
systemd-analyze plot > boot-chart.svg
Boot süresi çok uzunsa, gereksiz servisleri sudo systemctl disable SERVIS_ADI ile devre dışı bırakmayı düşünün.
# Servis dosyası oluşturma
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=Özel Uygulama
After=network.target
[Service]
Type=simple
User=appuser
Group=appuser
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/start
ExecStop=/opt/myapp/bin/stop
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
# Systemd daemon'ı yeniden yükle
sudo systemctl daemon-reload
# Servisi etkinleştir ve başlat
sudo systemctl enable --now myapp
# Durumu kontrol et
sudo systemctl status myapp
# Detaylı hatayı kontrol et
journalctl -u SERVIS_ADI -n 50 --no-pager
# Servis yapılandırmasını kontrol et
systemctl cat SERVIS_ADI
# Binary'nin var olduğunu ve çalıştırılabilir olduğunu doğrula
ls -la /path/to/binary
# Ağ bağımlılığı ekle
[Unit]
After=network-online.target
Wants=network-online.target
# network-online target'ı etkinleştir
sudo systemctl enable systemd-networkd-wait-online
# Yeniden başlatma sayısını kontrol et
systemctl show SERVIS_ADI -p NRestarts
# Son logları görüntüle
journalctl -u SERVIS_ADI --since "5 minutes ago"
# Yeniden başlatma döngüsünü geçici olarak durdur
sudo systemctl stop SERVIS_ADI
sudo systemctl reset-failed SERVIS_ADI
Basit başlatma komutları için rc.local yerine systemd servisi oluşturun:
# /etc/systemd/system/rc-local.service
[Unit]
Description=RC Local Uyumluluğu
After=network.target
[Service]
Type=oneshot
ExecStart=/etc/rc.local
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
# rc.local'ı çalıştırılabilir yap
sudo chmod +x /etc/rc.local
# Servisi etkinleştir
sudo systemctl enable rc-local
Reboot sonrası servis başlatma sorunları yaygın ama kolayca önlenebilir. Kritik servislerin systemctl enable ile etkinleştirildiğinden emin olun, unit dosyalarında doğru bağımlılıkları yapılandırın ve düzenli olarak boot loglarını hatalara karşı kontrol edin.
sudo systemctl list-units --type=service --state=failed komutu ile başarısız servisleri listeleyebilirsiniz. journalctl -b -p err ile boot sırasındaki hataları görebilirsiniz.
sudo systemctl enable SERVIS_ADI komutu ile servisi boot'ta otomatik başlatmak üzere etkinleştirin. systemctl is-enabled SERVIS_ADI ile etkin olduğunu doğrulayın.
journalctl -u SERVIS_ADI -n 50 ile son logları kontrol edin. Bağımlılık sorunları, yapılandırma hataları veya izin sorunları olabilir. Servisin bağımlı olduğu servislerin çalıştığından emin olun.
systemd-analyze blame ile en uzun süren servisleri belirleyin. Gereksiz servisleri systemctl disable ile devre dışı bırakın. systemd-analyze critical-chain ile kritik yolu analiz edin.
Bir systemd service dosyası oluşturun (/etc/systemd/system/myscript.service), Type=oneshot olarak ayarlayın, ExecStart ile script yolunu belirtin ve systemctl enable ile etkinleştirin.
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
RDP bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, RDP portu için filtre kuralı oluşturma ve sorun giderme adımları.
WinMTR ve Linux MTR ile ağ testi yapma, ICMP filtre kuralı oluşturma ve sonuçları destek ekibine gönderme rehberi. Paket kaybı ve gecikme analizi.