PYTHON | UBUNTU | VPS SUNUCU
Python Botunuz Bilgisayarınız Kapalıyken de Çalışsın
Python botunuzu Ubuntu VPS üzerinde çalıştırın, SSH bağlantısını kapatsanız bile açık tutun, sunucu yeniden başladığında otomatik başlatın ve hataları loglardan takip edin. Bu rehberde dosya aktarımı, Python sanal ortamı ve systemd kurulumunu gerçek komutlarla gösteriyoruz.
Telegram botu, API entegrasyonu veya otomatik bildirim uygulaması geliştirdiğinizde ilk sorunlardan biri sürekliliktir: Kendi bilgisayarınız kapandığında uygulama da durur. Linux VPS, Python uygulamanızın kişisel bilgisayarınızdan bağımsız çalışabileceği bir ortam sağlar.
systemd servisi olarak başlatın. Böylece SSH oturumunu kapattığınızda uygulama çalışmaya devam edebilir; sunucu açılışında otomatik başlatılır ve hata nedeniyle durduğunda yeniden çalıştırılabilir. Bu yapı kesintisiz çalışma garantisi değildir.Python Botu Neden Bilgisayar Kapanınca Durur?
Bilgisayarınızda başlattığınız Python işlemi o cihazın işletim sistemine bağlıdır. Bilgisayar kapanınca süreç sonlanır. VPS üzerinde çalışan bot ise bilgisayarınızdan bağımsızdır.
Bununla birlikte VPS kesintileri, uygulama hataları ve dış API sorunları yaşanabilir. Bu nedenle servis yönetimi, hata kayıtları ve izleme önemlidir.
Python Botu İçin Hangi VPS Kaynakları Gerekli?
Kaynak gereksinimleri uygulamaya göre değişir. Aşağıdaki değerler kapasite garantisi değil, başlangıç için değerlendirme örnekleridir.
| Uygulama | Başlangıç değerlendirmesi |
|---|---|
| Basit bildirim veya Telegram botu | 1 vCPU, 1–2 GB RAM yeterli olabilir |
| API entegrasyonu ve zamanlanmış görevler | 1–2 vCPU, yaklaşık 2 GB RAM değerlendirilebilir |
| Birden fazla servis | 2 vCPU, 4 GB RAM veya üzeri gerekebilir |
| Selenium, Playwright veya yoğun veri işleme | Ölçülen CPU ve RAM kullanımına göre seçilmeli |
1. Ubuntu VPS Sunucusuna SSH ile Bağlanın
Örnekte Ubuntu 24.04 LTS kullanıyoruz. Windows Terminal, PowerShell veya Linux terminalinden sunucuya bağlanın. SUNUCU_IP alanını kendi sunucunuzun IP adresiyle değiştirin.
ssh root@SUNUCU_IPSSH portunuz farklıysa:
ssh -p 2222 root@SUNUCU_IP2222 yalnızca örnektir. SSH bağlantısı hakkında daha fazla bilgi için SSH Nedir? Temel SSH Komutları rehberimizi inceleyebilirsiniz.
2. Python ve Gerekli Paketleri Kurun
Sunucuda sudo yetkisine sahip hesapla aşağıdaki komutları çalıştırın:
sudo apt update
sudo apt install -y python3 python3-venv python3-pip
python3 --versionUbuntu 24.04 LTS'nin varsayılan Python sürümü 3.12 ailesindedir. Gerçek sürümü yukarıdaki komutla kontrol edin.
3. Bot İçin Ayrı Kullanıcı ve Dizin Oluşturun
Python botunu root kullanıcısıyla çalıştırmak yerine sınırlı yetkili ayrı bir kullanıcı oluşturmak daha güvenlidir.
sudo adduser --disabled-password --gecos "" pythonbot
sudo mkdir -p /opt/pythonbot
sudo chown pythonbot:pythonbot /opt/pythonbot
sudo chmod 750 /opt/pythonbotBu rehberde uygulama dosyalarını /opt/pythonbot dizininde tutacağız.
4. Python Projenizi VPS Sunucuya Nasıl Aktarırsınız?
Yeni bot oluşturacaksanız sonraki adıma geçebilirsiniz. Bilgisayarınızda hazır bir Python projesi varsa dosyaları sunucuya aktarmanız gerekir.
Windows PowerShell veya Linux Üzerinden SCP
Önce sunucuda, SSH ile bağlandığınız yönetici hesabının ev dizininde bir yükleme klasörü oluşturun:
mkdir -p ~/python-yuklemeArdından kendi bilgisayarınızın terminalinde aşağıdaki komutu çalıştırın:
scp -r ./python-projem/. KULLANICI@SUNUCU_IP:~/python-yukleme/Burada python-projem yerel proje klasörünüz, KULLANICI SSH ile bağlandığınız sunucu hesabı, SUNUCU_IP ise sunucunuzun adresidir.
SSH portu 22 dışında ise SCP için büyük -P kullanın:
scp -P 2222 -r ./python-projem/. KULLANICI@SUNUCU_IP:~/python-yukleme/Dosya aktarımı tamamlandıktan sonra yeniden sunucu terminaline dönün:
sudo cp -a ~/python-yukleme/. /opt/pythonbot/
sudo chown -R pythonbot:pythonbot /opt/pythonbotpythonbot kullanıcısı parola ile SSH girişine kapalıdır. SCP aktarımı için mevcut SSH hesabınızı kullanın. Bilgisayarınızdaki venv, .venv ve __pycache__ klasörlerini sunucuya taşımayın; sanal ortamı sunucuda yeniden oluşturun. Gizli API anahtarlarını içeren dosyaları da güvenli biçimde yönetin.Git ile Python Projesi Aktarma
Projeniz bir Git deposundaysa Git üzerinden de aktarabilirsiniz. Özel depolarda uygun erişim yetkileri veya deploy key yapılandırması gerekir.
sudo apt install -y git
sudo -u pythonbot -H git clone DEPO_ADRESI /home/pythonbot/proje-kaynagiBu örnek, depo erişiminin önceden yapılandırıldığını varsayar. Klonlanan proje dosyalarını uygulama dizinine taşıyabilir ve dosya sahipliğini kontrol edebilirsiniz. API anahtarlarını Git deposuna eklemeyin.
5. Python Sanal Ortamını Hazırlayın
Python sanal ortamı (venv), uygulamanın bağımlılıklarını sistem genelindeki Python paketlerinden ayırır.
Servis kullanıcısına geçin:
sudo -u pythonbot -H bashArdından:
cd /opt/pythonbot
python3 -m venv venv
source venv/bin/activate
python --version
python -m pip --versionHazır bir projenizin requirements.txt dosyası varsa bağımlılıkları kurun:
python -m pip install -r requirements.txtİnternetten edinilen bağımlılıkları ve sürümlerini kurmadan önce kontrol edin. Ubuntu sistem Python'una doğrudan paket yüklemek yerine sanal ortamı kullanın.
6. Test İçin Basit Python Botu Oluşturun
Önceden hazırlanmış bir bot.py dosyanız varsa bu örnekle üzerine yazmayın. Yeni kurulumda API anahtarı gerektirmeyen örnek uygulamayı oluşturun:
nano /opt/pythonbot/bot.pyDosyaya aşağıdaki Python kodunu ekleyin:
import logging
import signal
import time
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(message)s"
)
running = True
def stop_bot(signum, frame):
global running
logging.info("Kapatma sinyali alindi: %s", signum)
running = False
signal.signal(signal.SIGTERM, stop_bot)
signal.signal(signal.SIGINT, stop_bot)
logging.info("Python botu baslatildi.")
while running:
logging.info("Bot calisiyor.")
time.sleep(30)
logging.info("Python botu durduruldu.")Bu örnek gerçek bir Telegram veya Discord botu değildir. Servis yönetimini test etmek için hazırlanmış, 30 saniyede bir günlük kaydı oluşturan basit bir uygulamadır.
Uygulamayı çalıştırın:
python /opt/pythonbot/bot.pyÖrnek çıktı:
2026-10-20 12:00:00,000 INFO Python botu baslatildi.
2026-10-20 12:00:00,001 INFO Bot calisiyor.
2026-10-20 12:00:30,001 INFO Bot calisiyor.Tarih ve saat değerleri örnektir; gerçek çıktıda sunucunun zamanı görünür.
Ctrl+C ile uygulamayı durdurun. Ardından sanal ortamdan ve servis kullanıcısının kabuğundan çıkın:
deactivate
exit7. Python Botunu systemd Servisine Dönüştürün
Linux üzerindeki systemd, uygulamaları servis olarak yönetmeye yarar. Python botunu systemd servisine dönüştürerek SSH oturumundan bağımsız çalışmasını sağlayabilirsiniz.
Yönetici hesabıyla servis dosyasını oluşturun:
sudo nano /etc/systemd/system/pythonbot.serviceDosyanın içeriği:
[Unit]
Description=Python Bot Service
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User=pythonbot
Group=pythonbot
WorkingDirectory=/opt/pythonbot
ExecStart=/opt/pythonbot/venv/bin/python -u /opt/pythonbot/bot.py
Restart=on-failure
RestartSec=10
TimeoutStopSec=30
NoNewPrivileges=true
[Install]
WantedBy=multi-user.targetServis Dosyasındaki Ayarlar Ne İşe Yarar?
- User: Botun hangi Linux kullanıcısıyla çalışacağını belirler.
- Group: Uygulamanın grup kimliğini belirler.
- WorkingDirectory: Uygulamanın çalışma dizinidir.
- ExecStart: Çalıştırılacak Python yorumlayıcısını ve uygulama dosyasını belirtir.
- Restart=on-failure: Servis hata nedeniyle sonlanırsa yeniden başlatır.
- RestartSec=10: Yeniden başlatma öncesinde 10 saniye bekler.
- TimeoutStopSec=30: Durdurma sırasında uygulamaya tanınan süreyi belirler.
- WantedBy=multi-user.target: Servisin sistem açılışında etkinleştirilebilmesini sağlar.
network-online.target ağın hazır olmasını beklemeye yardımcı olur. Ancak uzak API servislerinin erişilebilir olacağını garanti etmez.
8. Servisi Başlatın ve Otomatik Açılışı Etkinleştirin
Yeni servis dosyasını systemd'ye tanıtın:
sudo systemctl daemon-reloadServisi etkinleştirip hemen başlatın:
sudo systemctl enable --now pythonbot.serviceDurumunu kontrol edin:
sudo systemctl status pythonbot.serviceBaşarılı bir kurulumda active (running) ifadesini görmelisiniz.
9. Python Botunun Loglarını Nasıl İncelersiniz?
Botun çalışıyor olması, yaptığı tüm işlemlerin başarılı olduğu anlamına gelmez. API hatalarını, bağlantı sorunlarını ve Python istisnalarını günlük kayıtlarından takip etmelisiniz.
Son 50 kaydı görüntüleyin:
sudo journalctl -u pythonbot.service -n 50 --no-pagerLogları canlı takip edin:
sudo journalctl -u pythonbot.service -fMevcut sistem açılışından itibaren oluşan kayıtları görüntüleyin:
sudo journalctl -b -u pythonbot.serviceLoglara parola, API token'ı veya gereksiz kişisel veri yazdırmamaya dikkat edin.
10. Python Botunu Durdurma ve Yeniden Başlatma
| İşlem | Komut |
|---|---|
| Başlat | sudo systemctl start pythonbot |
| Durdur | sudo systemctl stop pythonbot |
| Yeniden başlat | sudo systemctl restart pythonbot |
| Durumu görüntüle | sudo systemctl status pythonbot |
| Otomatik açılışı kapat | sudo systemctl disable pythonbot |
disable komutu çalışan servisi hemen durdurmaz. Servisi durdurmak için ayrıca stop kullanın.
11. Sunucu Yeniden Başladığında Python Botu Açılır mı?
Servis doğru yapılandırılıp etkinleştirildiyse sunucu açılışında otomatik başlatılması planlanır.
Etkinlik durumunu kontrol edin:
systemctl is-enabled pythonbot.serviceBeklenen sonuç:
enabledÜretim ortamında yeniden başlatma testi yapmadan önce çalışan diğer servisleri ve bakım gereksinimlerini değerlendirin.
Restart=on-failure ile Restart=always Arasındaki Fark
İki ayarın davranışı aynı değildir:
Restart=on-failure: Uygulama hata nedeniyle sonlandığında yeniden başlatmayı dener.Restart=always: Uygulama normal biçimde sonlansa da yeniden başlatmayı dener.
Uzun süre çalışan botlarda uygulamanın beklenmedik şekilde normal çıkış yapması da yeniden başlatma gerektirebilir. Böyle bir ihtiyaç varsa Restart=always değerlendirilebilir.
Her iki ayarda da systemctl stop ile gerçekleştirilen yönetici durdurma işlemi normalde otomatik yeniden başlatmayı tetiklemez.
Bu ayarlar uygulama hatalarını düzeltmez; yalnızca servis sürecinin yeniden çalıştırılmasını yönetir.
12. API Anahtarlarını Python Koduna Yazmayın
Gerçek Python botları çoğunlukla Telegram, Discord, yapay zekâ veya başka servislerin API anahtarlarını kullanır.
Bu anahtarları doğrudan kaynak koduna yazmak yerine ayrı bir yapılandırma dosyasında saklayabilirsiniz.
Yönetici hesabıyla dosya oluşturun:
sudo nano /etc/pythonbot.envÖrnek içerik:
BOT_TOKEN=BURAYA_GERCEK_TOKENDosya izinlerini sınırlandırın:
sudo chown root:pythonbot /etc/pythonbot.env
sudo chmod 640 /etc/pythonbot.env/etc/systemd/system/pythonbot.service dosyasının [Service] bölümüne aşağıdaki satırı ekleyin:
EnvironmentFile=/etc/pythonbot.envPython uygulamasında değişkeni okuyabilirsiniz:
import os
bot_token = os.environ["BOT_TOKEN"]Değişiklikleri uygulayın:
sudo systemctl daemon-reload
sudo systemctl restart pythonbot13. screen, nohup ve systemd Arasındaki Fark
| Yöntem | Kullanım | Sınırlama |
|---|---|---|
| screen | Terminal oturumunu yeniden açma | Servis yönetimi sağlamaz |
| nohup | Terminalden bağımsız başlatma | Açılışta otomatik başlatmaz |
| systemd | Servis, log ve yeniden başlatma yönetimi | Yapılandırma gerekir |
Uzun süre çalışması gereken Python uygulamalarında systemd genellikle daha uygundur. Yalnızca belirli aralıklarla çalışacak görevlerde cron veya systemd timer da değerlendirilebilir.
14. Python Botu Çalışmıyorsa Sorun Giderme
ModuleNotFoundError
Eksik Python paketinin doğru sanal ortamda kurulu olduğunu doğrulayın:
sudo -u pythonbot /opt/pythonbot/venv/bin/python -m pip listPermission denied
Dosya sahipliğini ve erişim izinlerini kontrol edin. Sorunu çözmek için gelişigüzel chmod 777 kullanmayın.
ls -ld /opt/pythonbot
ls -l /opt/pythonbot/bot.pystatus=203/EXEC
Genellikle ExecStart içindeki Python çalıştırıcısı yolu geçersizdir veya çalıştırılamıyordur.
ls -l /opt/pythonbot/venv/bin/python
sudo systemctl cat pythonbotServis Sürekli Yeniden Başlıyor
Tekrar eden Python hatalarını veya yanlış yapılandırmayı günlük kayıtlarından inceleyin:
sudo journalctl -u pythonbot -n 100 --no-pagerBot Çalışıyor Ama API Yanıt Vermiyor
active (running) yalnızca sürecin çalıştığını gösterir. API token'ı, DNS, bağlantı zaman aşımı, kota, hız limitleri ve uygulama hata kayıtlarını kontrol edin. Geçici bağlantı sorunlarında sınırlı ve gecikmeli yeniden deneme kullanın.
Sunucu Yeniden Başladığında Bot Açılmıyor
systemctl is-enabled pythonbot
sudo journalctl -b -u pythonbot15. VPS Güvenliği ve Yedekleme
- İşletim sistemini ve Python bağımlılıklarını güncel tutun.
- SSH anahtarları kullanın; gereksiz portları açmayın.
- Botu root yerine ayrı kullanıcıyla çalıştırın.
- API token'larını kaynak koduna veya Git deposuna koymayın.
- Loglara hassas veri yazdırmayın.
- CPU, RAM, disk ve servis hatalarını takip edin.
- Kalıcı uygulama verileri ve veritabanları için yedekleme planlayın.
Ek önlemler için Ucuz VPS Sunucu Güvenliği: Temel Koruma Adımları rehberimizi okuyabilirsiniz.
16. Python Botu İçin VPS Sunucu Nereden Alınır?
Python botunuz için VPS seçerken fiyatla birlikte CPU, RAM, disk, işletim sistemi, SSH erişimi ve uygulamanızın gerçek kaynak kullanımını değerlendirin.
İsim Kayıt VPS ve bulut sunucu seçeneklerinde kendi Linux ortamınızı kurup yönetebilirsiniz. Standart self-servis sunucu hizmetinde işletim sistemi, uygulama kurulumu ve uygulamanın yönetimi müşteri sorumluluğundadır.
İSİM KAYIT | PYTHON VPS
Python Botunuzu Kendi VPS Sunucunuzda Çalıştırın
Ubuntu kurabileceğiniz ve SSH üzerinden yönetebileceğiniz sunucu seçeneklerini inceleyin.
Sık Sorulan Sorular
Python botu bilgisayar kapalıyken çalışır mı?
Evet. Bot kişisel bilgisayarınız yerine çalışan bir VPS üzerinde barındırılıyorsa bilgisayarınız kapalıyken de çalışabilir.
Python botunu 7/24 çalıştırmak için VPS şart mı?
Hayır. Uygun bir bulut uygulama platformu veya başka sürekli çalışan sunucu da kullanılabilir. VPS, işletim sistemi ve servis yönetimi üzerinde kontrol sağlar.
SSH bağlantısını kapatırsam bot durur mu?
systemd servisi olarak çalıştırılan bot SSH oturumundan bağımsızdır. Normal terminalde çalıştırılan uygulamalar ise oturum kapanışından etkilenebilir.
Sunucu yeniden başlayınca bot otomatik açılır mı?
systemd servisi doğru yapılandırılıp enable ile etkinleştirildiğinde açılışta başlatılabilir.
Python botu için kaç GB RAM gerekir?
Basit botlar az RAM tüketebilir; tarayıcı otomasyonu veya veri işleme daha fazla kaynak gerektirebilir. Gerçek tüketimi ölçerek karar verin.
Ubuntu mu Windows Server mı tercih edilmeli?
Her iki sistemde de Python çalışabilir. Linux üzerinde SSH, venv ve systemd ile servis yönetimi yaygındır; Windows'a özel bağımlılıklar varsa Windows Server değerlendirilebilir.
systemd ile screen arasındaki fark nedir?
screen terminal oturumunu yönetir; systemd ise servis başlatma, durdurma, log ve yeniden başlatma özellikleri sunar.
Bot hata verdiğinde kendiliğinden yeniden başlar mı?
Restart=on-failure ayarı hata nedeniyle sonlanan süreci yeniden başlatabilir. Normal çıkışlar aynı davranışı tetiklemez ve uygulamanın mantık hataları kendiliğinden düzelmez.
Hazır Python projemi VPS'ye nasıl yüklerim?
SCP, SFTP veya Git kullanabilirsiniz. Dosyaları aktardıktan sonra sanal ortamı VPS üzerinde yeniden oluşturun, bağımlılıkları kurun ve servis dosyasındaki ExecStart yolunu kendi uygulamanıza uyarlayın.
VPS satın alınca Python botu hazır kurulu gelir mi?
Hayır. Standart VPS hizmeti sunucu altyapısı sağlar; uygulama kurulumu, bağımlılıkları ve yönetimi müşterinin sorumluluğundadır. Ayrıca satın alınmış yönetim hizmetleri varsa kapsamı sözleşmesine göre belirlenir.
Sonuç: Python Botunuzu Kalıcı Servise Dönüştürün
Python botunun sürekli çalışması için sunucuya dosya yüklemek tek başına yeterli değildir. Python sanal ortamı, doğru izinler, systemd servis yapılandırması, log takibi, hata yönetimi ve yedekleme planı birlikte düşünülmelidir.
Bu rehberde kendi Python projenizi VPS'ye taşıma, örnek botla kurulum testi yapma ve systemd üzerinden servis yönetimini adım adım uyguladık.
Python Projeniz İçin VPS Sunucunuzu Seçin
Botlarınızı ve API otomasyonlarınızı kendi yönettiğiniz Linux sunucusunda çalıştırın.
İlgili Teknik Rehberler
- SSH Nedir? Temel SSH Komutları
- Ucuz VPS Sunucu Güvenliği: Temel Koruma Adımları
- n8n Kurulumu: VPS Sunucuda Otomasyon Rehberi
Teknik kaynaklar: Python venv, systemd.service ve journalctl dokümantasyonu.



