Moodle ya da benzeri bir LMS (Learning Management System) kurmaya karar verdiğinizde, ilk sorulardan biri hemen ortaya çıkar: Hangi VPS paketi, kaç CPU, ne kadar RAM ve hangi veritabanı benim senaryoma yeter? Eğitim tarafında işler çoğu zaman planlı yürür; dönem başında kaç öğrenci kaydolacak, hangi haftalarda sınav var, canlı ders takvimi ne zaman gibi veriler elinizdedir. Bu da aslında altyapı planlaması için büyük avantajdır. Yeter ki doğru soruları sorup, LMS’inizin davranışını teknik olarak kabaca modelleyebilin.
Bu yazıda, DCHost ekibi olarak gerçek hayatta sık gördüğümüz Moodle ve diğer LMS kurulumlarından yola çıkarak, VPS üzerinde kaynak planlama sürecini adım adım ele alacağız. Küçük bir kurum içi eğitim portalından, binlerce eş zamanlı kullanıcının sınava girdiği üniversite platformuna kadar farklı senaryoları konuşacağız. Hedefimiz; “8 GB RAM mi 16 GB mi?”, “PostgreSQL’e geçmeli miyim?”, “Veritabanını ayrı sunucuya ne zaman ayırmalıyım?” gibi sorulara teknik ama anlaşılır cevaplar vermek ve karar alırken elinizde somut bir rehber olması.
İçindekiler
- 1 Moodle ve LMS Platformları İçin Neden VPS Tercih Edilmeli?
- 2 Planlama Yaparken Sorulması Gereken 5 Temel Soru
- 3 Kaç vCPU ve Ne Kadar RAM Gerekir?
- 4 RAM, Swap ve Bellek Yönetimi
- 5 Disk, IOPS ve Ağ Kaynakları
- 6 Hangi Veritabanı: MySQL/MariaDB mi PostgreSQL mi?
- 7 Tek VPS mi, Ayrı Veritabanı Sunucusu mu?
- 8 Önbellek, Redis ve PHP Ayarları
- 9 DCHost Üzerinde Örnek VPS Senaryoları
- 10 Güvenlik, Yedekleme ve Yüksek Erişilebilirlik
- 11 Özet ve Yol Haritası
Moodle ve LMS Platformları İçin Neden VPS Tercih Edilmeli?
Paylaşımlı hosting’in tipik sınırları
Birçok kurum, ilk denemesinde Moodle gibi LMS yazılımlarını paylaşımlı hosting üzerinde çalıştırmayı dener. Basit bir demo veya 20-30 kişilik küçük bir sınıf için bu kısa vadede iş görebilir; ancak gerçek bir eğitim döneminde eksikleri hemen ortaya çıkar:
- Kısıtlı CPU ve RAM: Aynı sunucuyu onlarca, hatta yüzlerce siteyle paylaşırsınız. Yoğun sınav saatlerinde CPU’ya yük bindiğinde yan sitelerin trafiği de sizi etkiler.
- Proses ve bağlantı limitleri: PHP proses sayısı, MySQL bağlantı limiti, I/O gibi metriklerde düşük eşikler, 20-30 eş zamanlı oturumda bile yetmeyebilir.
- Özelleştirme zorluğu: PHP versiyonu,
memory_limit,max_execution_time, Redis, ek PHP eklentileri gibi ayarları esnek şekilde yönetmek çoğu zaman mümkün değildir.
Bu kısıtlar, özellikle test, quiz ve ödev yüklemelerinin yoğun olduğu dönemlerde 500 hataları, time-out sorunları ve yavaş sayfa yüklemeleri olarak geri döner. Eğitim sürecinin ortasında altyapı sorunları yaşamak ise hem eğitmen hem öğrenci tarafında ciddi güven kaybı yaratır.
VPS ile gelen kontrol ve kaynak garantisi
VPS (Sanal Özel Sunucu) ile birlikte:
- Size atanmış belirli sayıda vCPU ve RAM sadece sizin projelerinize ayrılır.
- İstediğiniz Linux dağıtımını, web sunucusunu (Nginx, Apache, LiteSpeed) ve PHP sürümünü seçebilirsiniz.
- Redis, memcached, ek CLI araçları, özel cron job’lar, queue sistemleri gibi bileşenleri özgürce kurabilirsiniz.
- Gelişmiş izleme, yedekleme ve güvenlik politikalarını kendinize göre tasarlayabilirsiniz.
DCHost tarafında Moodle ve diğer LMS’ler için hazırladığımız genel Moodle ve diğer LMS’ler için performans odaklı hosting rehberimiz daha çok optimizasyon ve ince ayarlara odaklanıyor. Bu yazıda ise özellikle kaç vCPU, ne kadar RAM, hangi veritabanı ve hangi mimari sorularını netleştirmeye odaklanacağız.
Planlama Yaparken Sorulması Gereken 5 Temel Soru
Kaynak planlamasında rastgele değil, sayılara dayalı ilerlemek için şu beş soruya net cevap vermek gerekir:
- Toplam kayıtlı kullanıcı sayısı nedir? (Öğrenci + eğitmen)
- Anlık eş zamanlı kullanıcı sayısı kaç civarında olacak? (Peak concurrency)
- Yoğun aktiviteler hangi türde? Çoktan seçmeli testler, ödev dosya yüklemeleri, SCORM paketleri, canlı ders entegrasyonları vb.
- İçerik tipi nedir? Daha çok metin ve küçük görseller mi, yoksa yüksek çözünürlüklü video ve büyük dosyalar mı?
- Dış entegrasyonlar var mı? SSO, harici raporlama araçları, üçüncü parti API’ler vb.
Basit ama işe yarar bir kural olarak, genellikle toplam kullanıcı sayısının %5–15’i aynı anda aktif olur. Yani 1000 kayıtlı kullanıcınız varsa, tipik senaryoda 50–150 eş zamanlı kullanıcıya göre kapasite planlamak mantıklıdır. Sınav saatleri gibi yoğun pik anlarda ise bu oran kısa süreliğine daha yükseğe çıkabilir.
Kaç vCPU ve Ne Kadar RAM Gerekir?
Moodle ve benzeri PHP tabanlı LMS’lerde yükü oluşturan başlıca bileşenler:
- PHP-FPM prosesleri: Her aktif istek için bir PHP proses çalışır ve CPU + RAM tüketir.
- Veritabanı motoru: MySQL/MariaDB/PostgreSQL; bağlantı sayısı ve sorgu karmaşıklığına göre CPU ve RAM kullanır.
- Disk I/O: Oturum kayıtları, cache, loglar ve dosya yüklemeleri.
- Web sunucusu ve SSL katmanı: CPU üzerinde ek yük yaratır, özellikle çok eş zamanlı bağlantıda.
Bu bileşenleri akılda tutarak, farklı büyüklükte LMS senaryoları için pratik boyutlandırma önerilerini aşağıda topladık.
Küçük ölçekli LMS (50–200 aktif kullanıcı)
Bu kategoriye genellikle kurum içi eğitim portalları, küçük dil kursları veya tek bölümden oluşan akademik yapılar girer. Toplam kayıtlı kullanıcı 100–500 aralığındadır ve eş zamanlı oturum sayısı nadiren 30’u geçer.
- vCPU: 2 vCPU
- RAM: 4–6 GB (tercihen 6 GB)
- Disk: En az 80–100 GB NVMe SSD
- Veritabanı: Tek VPS üzerinde MySQL veya MariaDB (veya PostgreSQL) yeterli
Bu senaryoda web sunucusu, PHP-FPM ve veritabanını tek VPS üzerinde çalıştırmak pratik ve maliyet açısından uygundur. PHP tarafında 10–20 eş zamanlı proses limiti, veritabanında 50–100 bağlantı limiti çoğu zaman yeterlidir. Daha detaylı CPU ve RAM seçimi mantığını anlamak için hazırladığımız CPU, RAM ve NVMe seçimi için detaylı VPS kaynak planlama rehberi de benzer hesaplama prensiplerini anlatır.
Orta ölçekli LMS (200–1000 aktif kullanıcı)
Burada genelde birkaç bölümün veya birden fazla şubenin aynı platformu paylaştığı yapılar söz konusudur. Toplam kayıtlı kullanıcı 500–3000 aralığında, eş zamanlı oturum sayısı ise pik anlarda 50–200 bandına çıkabilir.
- vCPU: 4 vCPU (yoğun sınav dönemleri için 6 vCPU konforlu olabilir)
- RAM: 8–12 GB
- Disk: En az 150–200 GB NVMe SSD (özellikle ödev ve doküman yüklemeleri fazlaysa)
- Veritabanı: Başlangıçta tek VPS üzerinde, ilerleyen aşamada ayrı veritabanı VPS’ine ayrılmaya hazır mimari
Bu boyutta, PHP-FPM ve veritabanının aynı sunucuyu paylaşması hâlâ mümkün ama arayüzde his edilen gecikmeleri azaltmak için:
- OPcache’i doğru yapılandırmak,
- Uygulama ve oturum cache’ini Redis’e taşımak,
- Veritabanı indekslerini düzgün tasarlamak
gibi optimizasyonlar neredeyse zorunlu hâle gelir. Veritabanı motoru seçimi bu seviyede daha fazla önem kazanır; aşağıda bu konuyu ayrıca açacağız.
Büyük ölçekli ve kurumsal LMS (1000+ aktif kullanıcı)
Üniversiteler, zincir eğitim kurumları ve yoğun kurumsal akademiler genelde bu kategoriye girer. Toplam kayıtlı kullanıcı 5000–50.000 bandında, eş zamanlı kullanıcı sayısı ise 200–2000 arasında olabilir.
- vCPU (uygulama sunucusu): 8–16 vCPU
- RAM (uygulama sunucusu): 16–32 GB
- Veritabanı sunucusu: Ayrı VPS veya dedicated; 8–16 vCPU, 32+ GB RAM tavsiye
- Disk: Uygulama sunucusunda 200+ GB NVMe, veritabanı sunucusunda IOPS odaklı NVMe depolama
Bu ölçekte çoğu zaman çok katmanlı mimariye geçmek daha sağlıklı olur:
- Bir veya birden fazla uygulama sunucusu (web + PHP-FPM)
- Ayrı veritabanı sunucusu
- Redis/Memcached sunucusu (ayrı VPS ya da aynı uygulama VPS’inde)
Veritabanı tarafında replikasyon, yedekleme ve yüksek erişilebilirlik konuları kritik hale gelir. Bu konularda veritabanı sunucusunu uygulama sunucusundan ayırmanın ne zaman mantıklı olduğunu anlattığımız rehber iyi bir referans noktasıdır.
Eğer Moodle veya benzeri LMS’inizde aynı anda yüzlerce öğrencinin girdiği çevrimiçi sınavlar veya yoğun canlı ders entegrasyonları varsa, normal kullanım tahminlerinize göre en az %30–50 ek kapasite payı bırakmanız akıllıca olur. Çünkü sınav başlangıç saatiyle birlikte:
- Aynı anda onlarca quiz sayfası yüklenir.
- Oturum ve cache yazma yoğunluğu artar.
- Veritabanına kısa sürede çok sayıda okuma/yazma sorgusu gider.
Örneğin 500 kayıtlı öğrenci için, normalde 4 vCPU/8 GB RAM yeterliyken, sınav ağırlıklı bir platformda 6 vCPU/12 GB RAM’e çıkmak, prod ortamda sizi pek çok ani dar boğazdan kurtarır.
RAM, Swap ve Bellek Yönetimi
Moodle gibi PHP tabanlı LMS’ler için CPU kadar önemli bir diğer kaynak da RAM’dir. Yetersiz RAM, sistemin swap kullanımına abanmasına ve bunun sonucunda ciddi performans kaybına yol açar. Özellikle:
- PHP-FPM süreç sayısı arttıkça,
- Veritabanı buffer’ları büyüdükçe,
- Redis gibi ek servisler eklendikçe
RAM tüketimi doğrusal olmasa da hızla artar. Bu yüzden limitleri planlarken sadece toplam RAM’i değil, her bileşene ayrılan payı da düşünmek gerekir. DCHost blogunda bu konuyu daha sistematik ele aldığımız VPS’te RAM, swap ve OOM Killer yönetimi üzerine yazımız mutlaka göz atmanızı önerdiğimiz kaynaklardan.
Disk, IOPS ve Ağ Kaynakları
Moodle’da disk ve ağ tarafı çoğu zaman CPU/RAM kadar gündeme gelmez; ancak özellikle yoğun dosya yüklemeleri ve video içeriklerinde burada da planlama yapmak gerekir.
- Disk tipi: LMS platformları için NVMe SSD bariz şekilde avantajlıdır. Kurs içeriği listeleme, not görüntüleme, rapor oluşturma gibi I/O ağırlıklı işlemler hissedilir şekilde hızlanır.
- IOPS ve throughput: Yüzlerce öğrencinin aynı anda quiz sonuçlarına eriştiği veya raporlar çektiği anlarda, yüksek IOPS değerleri MySQL/PostgreSQL sorgu sürelerini ciddi ölçüde düşürür.
- Bant genişliği: Metin ve küçük görseller ağırlıklı senaryolarda orta seviye bir bant genişliği yeterli olur. Ancak video ve büyük dosya indirimi varsa, aylık trafik ve anlık bant kullanımı hesaplarını ayrıca yapmak gerekir.
Statik dosyaları ve videoları ileride CDN veya ayrı bir storage üzerine taşımayı planlıyorsanız, mimariyi en baştan buna uygun kurup, dosya yollarını soyutlamak büyük kolaylık sağlar.
Hangi Veritabanı: MySQL/MariaDB mi PostgreSQL mi?
Moodle çekirdeği hem MySQL/MariaDB hem PostgreSQL ile uyumludur. Diğer birçok LMS de benzer esnekliği sunar. Peki VPS üzerinde hangisini seçmelisiniz?
MySQL / MariaDB
Avantajları:
- Paylaşımlı hosting ve klasik LAMP yığınlarından alışık olduğunuz bir ekosistemdir.
- Yönetimi görece kolay, dokümantasyonu bol, araç desteği geniştir.
- Moodle için resmi dökümantasyon ve örnek kurulumların büyük kısmı MySQL/MariaDB üzerinden anlatılır.
Dezavantajları:
- İleri seviye sorgularda (özellikle karmaşık raporlama) optimizasyon bazen daha fazla ince ayar gerektirebilir.
- Varsayılan ayarlarla bırakıldığında, orta-büyük LMS’lerde bağlantı ve buffer limitleri hızla dar boğaza dönüşebilir.
MySQL/MariaDB tarafında genel web uygulamaları için avantaj ve dezavantajları detaylı incelediğimiz MariaDB, MySQL ve PostgreSQL karşılaştırma yazımız, Moodle gibi LMS projelerinde de aynı mantıkla kullanılabilir.
PostgreSQL
Avantajları:
- İleri seviye sorgu yetenekleri ve veri bütünlüğü özellikleri güçlüdür.
- Büyük ölçekli, karmaşık raporlamaya ihtiyaç duyan LMS’lerde uzun vadede daha tutarlı performans verebilir.
- Moodle çekirdeğinde PostgreSQL desteği olgun seviyededir ve resmi olarak önerilen motorlardan biridir.
Dezavantajları:
- MySQL/MariaDB’ye alışık ekipler için öğrenme eğrisi biraz daha dik olabilir.
- Varsayılan ayarlarla performans çoğu zaman yeterlidir ama büyük iş yüklerinde
work_mem,shared_buffers,effective_cache_sizegibi ayarları bilinçli şekilde optimize etmek gerekir.
Özet: Küçük ve orta ölçekli LMS projelerinde MySQL veya MariaDB ile başlamak tamamen yeterlidir. Eğer kurumunuzda PostgreSQL bilgisi varsa veya raporlama tarafında daha gelişmiş ihtiyaçlarınız olacaksa, PostgreSQL tercih etmek uzun vadede avantaj sağlar.
Tek VPS mi, Ayrı Veritabanı Sunucusu mu?
Küçük ve orta ölçekli projelerde tek VPS üzerinde hem web/PHP hem veritabanı barındırmak maliyet ve yönetim kolaylığı açısından mantıklıdır. Ancak belirli bir eşik sonrası aşağıdaki sinyaller veritabanını ayrı bir VPS’e taşımanın zamanının geldiğini gösterir:
- Yoğun saatlerde CPU kullanımının büyük kısmı mysqld/postgres prosesinden geliyorsa,
- PHP-FPM için proses sayısını artırmak istediğinizde RAM ve CPU tavan yapıyorsa,
- Rapor sayfaları ve not dökümleri bariz şekilde diğer sayfalardan daha yavaş açılıyorsa,
- Veritabanı yedeklerini alırken (dump veya snapshot) uygulama tarafında hissedilir yavaşlamalar oluyorsa.
Bu noktada tipik geçiş adımı şu şekilde olur:
- Mevcut VPS’i uygulama sunucusu olarak konumlandırmak (web + PHP-FPM + Redis).
- Yeni bir VPS’i veritabanı sunucusu olarak ayırmak (sadece MySQL/MariaDB/PostgreSQL).
- İki VPS arasında güvenli, düşük gecikmeli bir ağ yapılandırmak.
Böylece hem PHP-FPM proseslerini hem veritabanı buffer ve bağlantı sayılarını daha rahat ölçekleyebilirsiniz. Bu yaklaşımı mimari açıdan daha detaylı tartıştığımız rehbere göz atmanız, uzun vadeli büyüme planları yaparken faydalı olacaktır.
Önbellek, Redis ve PHP Ayarları
Moodle ve diğer LMS’lerde performans kazanımının önemli bir kısmı da doğru önbellekleme stratejilerinden gelir:
- OPcache: PHP kodunun bytecode önbelleğine alınmasını sağlar.
opcache.memory_consumption,max_accelerated_filesgibi ayarları platform büyüklüğüne göre güncellemek gerekir. - Uygulama cache’i: Moodle, Redis veya memcached ile çeşitli cache katmanlarını yönetebilir. Bu, veritabanı yükünü ciddi şekilde azaltır.
- Session yönetimi: PHP oturumlarını dosya sistemi yerine Redis’te tutmak, özellikle çoklu uygulama sunucusu senaryolarında kritik önem taşır.
- PHP limitleri:
memory_limit,max_execution_time,upload_max_filesizevepost_max_sizeözellikle ödev ve dosya yükleme yoğun senaryolarda doğru ayarlanmalıdır.
Bu katmanda yapılacak optimizasyonlar, çoğu zaman salt CPU/RAM artırmaktan daha verimli sonuç verir. DCHost tarafında Moodle kurulumlarını üretim ortamına taşırken, önce konfigürasyonu optimize etmeyi, ancak gerekirse donanımsal kaynakları büyütmeyi öneriyoruz.
DCHost Üzerinde Örnek VPS Senaryoları
Teoriyi somutlaştırmak için, DCHost altyapısında sık karşılaştığımız üç tipik Moodle/LMS senaryosunu özetleyelim.
Senaryo 1: Küçük kurum içi eğitim portalı
- Toplam kullanıcı: 150
- Eş zamanlı kullanıcı: 20–30
- İçerik: Metin + küçük PDF’ler
- Sunucu: 2 vCPU, 4–6 GB RAM, 80 GB NVMe
- Veritabanı: Aynı VPS üzerinde MariaDB
Bu senaryoda temel OPcache ve basit Redis kurulumu ile oldukça akıcı bir deneyim sağlanabiliyor. Sınavlar genellikle sınıf bazlı ve farklı saatlere yayılmış olduğundan, pik yükler sınırlı kalıyor.
Senaryo 2: Orta ölçekli eğitim kurumu
- Toplam kullanıcı: 1200
- Eş zamanlı kullanıcı: 100–250 (sınav döneminde)
- İçerik: Quiz’ler, PDF’ler, dönem sonu proje dosyaları
- Sunucu: 4–6 vCPU, 8–12 GB RAM, 200 GB NVMe
- Veritabanı: Başlangıçta aynı sunucuda, büyüdükçe ayrı PostgreSQL VPS’i
Bu ölçekte düzgün indekslenmiş bir veritabanı, Redis ile session/cache yönetimi ve doğru PHP-FPM havuzu ayarları ile sistem oldukça stabil çalışıyor. Zamanla raporlama ihtiyacı artarsa, PostgreSQL’e taşıma ve veritabanını ayrı VPS’e ayırma yoluna gidiyoruz.
Senaryo 3: Üniversite ölçeğinde LMS
- Toplam kullanıcı: 10.000+
- Eş zamanlı kullanıcı: 500–2000
- İçerik: Geniş quiz havuzu, çoklu bölüm, canlı ders entegrasyonları
- Uygulama sunucusu: 8–16 vCPU, 16–32 GB RAM
- Veritabanı sunucusu: 8–16 vCPU, 32+ GB RAM, yüksek IOPS NVMe
Bu tip yapılarda genellikle yükü birden fazla uygulama VPS’ine yaymak, veritabanını ayrı bir sunucuya almak ve gerektiğinde replikasyon/yedek stratejilerini devreye sokmak gerekiyor. Burada mimari tasarım, sadece ham kaynak miktarından daha kritik hale geliyor.
Güvenlik, Yedekleme ve Yüksek Erişilebilirlik
Kapasite planlaması yaparken, güvenlik ve yedek konusunu da işin başında düşünmek gerekir:
- Güvenlik: SSH erişimini kısıtlamak, firewall (ufw, iptables, nftables) kuralları, başarısız girişleri sınırlamak ve LMS yönetici panelini ek korumalarla çevrelemek (IP kısıtlama, 2FA vb.).
- Yedekleme: Veritabanı ve dosya yedeklerinin hem aynı veri merkezinde hem de farklı lokasyonda tutulması; günlük/haftalık periyotların belirlenmesi.
- Test geri dönüşleri: Yedeklerin gerçekten çalıştığını görmek için düzenli aralıklarla test geri yükleme yapmak.
Özellikle sınav dönemlerinde yaşanacak bir veri kaybı, sadece teknik değil hukuki ve itibar açısından da ciddi sonuçlar doğurabilir. Bu yüzden, CPU/RAM hesabı kadar, yedekleme ve felaket kurtarma planınızı da kâğıt üzerinde netleştirmenizi öneriyoruz.
Özet ve Yol Haritası
Moodle ve diğer LMS platformları için VPS seçerken, sihirli tek bir rakam yok; ancak toplam kullanıcı, eş zamanlı kullanıcı, içerik tipi ve sınav yoğunluğu</strong üzerinden giden rasyonel bir hesapla işinizi oldukça kolaylaştırabilirsiniz. Küçük yapılar için 2 vCPU/4–6 GB RAM seviyesinde, orta ölçekli yapılar için 4–6 vCPU/8–12 GB RAM seviyesinde başlamak çoğu zaman sağlıklı. Büyük kurumsal LMS’lerde ise uygulama ve veritabanı sunucularını ayırıp, 8+ vCPU ve 16+ GB RAM’li VPS’lere doğru ilerlemek gerekiyor.
Veritabanı tarafında MySQL/MariaDB ile başlamak çoğu senaryoda yeterli; ancak PostgreSQL bilen bir ekibiniz varsa, özellikle raporlama ağırlıklı kurumsal yapılarda uzun vadede avantaj sağlayabilirsiniz. Ayrı veritabanı sunucusuna geçiş eşiğini, CPU kullanım profili ve rapor/sınav yüküne göre belirlemeniz en doğrusu olacaktır.
Daha derin performans ayarları, web sunucusu seçimi, HTTP/2–HTTP/3, Redis, OPcache gibi bileşenleri incelemek isterseniz; DCHost blogunda hem Moodle için performans rehberine hem de veritabanı, VPS kaynak planlama ve RAM yönetimi gibi konuları anlattığımız diğer yazılara göz atabilirsiniz. LMS projeniz için doğru boyutlandırmayı birlikte netleştirmek isterseniz, DCHost ekibi olarak altyapı mimarisi ve VPS seçimi konusunda size yardımcı olmaktan memnuniyet duyarız.
