# Python Botu 7/24 Nasıl Çalıştırılır? VPS Rehberi > PYTHON | UBUNTU | VPS SUNUCUPython Botunuz Bilgisayarınız Kapalıyken de ÇalışsınPython 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.VPS Sunucu Seçenekleri → Bulut Sunucu Paketleri → - **HTML:** https://www.isimkayit.com/blog/python-botu-7-24-nasil-calistirilir-vps-rehberi - **Site context:** [llms.txt](https://www.isimkayit.com/llms.txt) --- 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. **Kısa cevap:** Ubuntu VPS'ye Python kurun, uygulamanızı sanal ortamda hazırlayın ve 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. UygulamaBaşlangıç değerlendirmesiBasit bildirim veya Telegram botu1 vCPU, 1–2 GB RAM yeterli olabilirAPI entegrasyonu ve zamanlanmış görevler1–2 vCPU, yaklaşık 2 GB RAM değerlendirilebilirBirden fazla servis2 vCPU, 4 GB RAM veya üzeri gerekebilirSelenium, 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ı](https://www.isimkayit.com/blog/ssh-nedir-temel-ssh-komutlari) rehberimizi inceleyebilirsiniz. 2. Python ve Gerekli Paketleri KurunSunucuda 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şturunPython 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/pythonbot **Önemli:** Bu rehberde oluşturulan pythonbot 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 AktarmaProjeniz 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ınPython 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ünLinux ü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ştirinYeni 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. **Kurulum tamamlandı:** Python uygulamanız artık systemd tarafından yönetiliyor. SSH terminalini kapatsanız bile çalışmaya devam edebilir ve sistem açılışında otomatik başlatılabilir. 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 İşlemKomutBaşlatsudo systemctl start pythonbotDurdursudo systemctl stop pythonbotYeniden başlatsudo systemctl restart pythonbotDurumu görüntülesudo systemctl status pythonbotOtomatik açılışı kapatsudo 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ınGerç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 pythonbot **Güvenlik uyarısı:** Ortam değişkenleri her durumda güvenli bir secret yönetim sisteminin yerine geçmez. Özellikle yüksek hassasiyetli anahtarlar için systemd credentials veya uygun bir secret yönetim çözümü değerlendirin. API token'larını Git depolarına, loglara ve ekran görüntülerine eklemeyin. 13. screen, nohup ve systemd Arasındaki Fark YöntemKullanımSınırlamascreenTerminal oturumunu yeniden açmaServis yönetimi sağlamaznohupTerminalden bağımsız başlatmaAçılışta otomatik başlatmazsystemdServis, log ve yeniden başlatma yönetimiYapı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 GidermeModuleNotFoundErrorEksik Python paketinin doğru sanal ortamda kurulu olduğunu doğrulayın: sudo -u pythonbot /opt/pythonbot/venv/bin/python -m pip listPermission deniedDosya 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/EXECGenellikle 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ıyorTekrar 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 Vermiyoractive (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ıyorsystemctl 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ı](https://www.isimkayit.com/blog/ucuz-vps-sunucu-guvenligi-temel-koruma-adimlari) rehberimizi okuyabilirsiniz. **Yedekleme:** İsim Kayıt sunucu hizmetlerinde yedekleme standart pakete dahil değildir ve ayrıca ücretlendirilir. Bot dosyaları, veritabanı ve kalıcı veriler için uygun yedekleme çözümünü ayrıca planlayın. 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. [Ucuz VPS Paketlerini İncele →](https://www.isimkayit.com/ucuz-vps-server) [Bulut Sunucu Seçenekleri →](https://www.isimkayit.com/bulut-sunucu) Sık Sorulan SorularPython 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ünPython 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. [Python İçin VPS Sunucu İncele →](https://www.isimkayit.com/ucuz-vps-server) İlgili Teknik Rehberler - [SSH Nedir? Temel SSH Komutları](https://www.isimkayit.com/blog/ssh-nedir-temel-ssh-komutlari) - [Ucuz VPS Sunucu Güvenliği: Temel Koruma Adımları](https://www.isimkayit.com/blog/ucuz-vps-sunucu-guvenligi-temel-koruma-adimlari) - [n8n Kurulumu: VPS Sunucuda Otomasyon Rehberi](https://www.isimkayit.com/blog/n8n-kurulumu-vps-sunucuda-otomasyon-rehberi) Teknik kaynaklar: [Python venv](https://docs.python.org/3/library/venv.html), [systemd.service](https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html) ve [journalctl](https://www.freedesktop.org/software/systemd/man/latest/journalctl.html) dokümantasyonu.