Bu rehber, Ubuntu 12.04 işletim sistemine sahip bir Sanal Özel Sunucu (VPS) üzerinde Moodle’ı Git üzerinden kurmayı, veritabanı olarak PostgreSQL, web sunucusu olarak Nginx ve PHP-FPM kullanarak yapılandırmayı adım adım açıklamaktadır. Ubuntu 12.04’ün artık desteklenmeyen eski bir sürüm olduğunu ve güvenlik riskleri taşıyabileceğini unutmamak önemlidir. Bu rehber, belirli bir eski ortam gereksinimi olan kullanıcılar için hazırlanmıştır. Mümkünse, daha güncel bir Ubuntu sürümü ve Moodle versiyonu kullanmanız şiddetle tavsiye edilir.
Sistem Hazırlığı ve Temel Bileşenlerin Kurulumu
Moodle kurulumuna başlamadan önce sunucunuzu güncellemeli ve gerekli tüm yazılımları kurmalısınız. Bu bölümde PostgreSQL, Nginx, PHP-FPM ve Git kurulumlarını ele alacağız.
Sistemi Güncelleme
Herhangi bir kuruluma başlamadan önce paket listelerinizi güncelleyin ve mevcut paketleri yükseltin:
sudo apt-get update
sudo apt-get upgrade -y
PostgreSQL Veritabanı Kurulumu ve Yapılandırması
Moodle için bir veritabanına ihtiyacımız var. PostgreSQL’i kuracağız ve Moodle için özel bir kullanıcı ve veritabanı oluşturacağız.
sudo apt-get install postgresql postgresql-contrib -y
Şimdi Moodle için bir veritabanı kullanıcısı ve veritabanı oluşturalım. postgres kullanıcısına geçerek bu işlemleri yapabiliriz:
sudo -i -u postgres
createuser -P moodleuser
Komut sizden moodleuser için bir parola belirlemenizi isteyecektir. Güçlü bir parola seçtiğinizden emin olun.
createdb -O moodleuser moodledb
Bu komut, moodleuser kullanıcısının sahibi olduğu moodledb adında bir veritabanı oluşturur. İşlemler bittikten sonra exit komutuyla postgres kullanıcısından çıkış yapabilirsiniz:
exit
Nginx Web Sunucusu Kurulumu
Nginx, hafif ve yüksek performanslı bir web sunucusudur. Kurulumu oldukça basittir:
sudo apt-get install nginx -y
Kurulum tamamlandıktan sonra Nginx servisini başlatın ve sistem başlangıcında otomatik başlamasını sağlayın (varsayılan olarak zaten böyledir):
sudo service nginx start
PHP-FPM ve Gerekli PHP Uzantılarının Kurulumu
Moodle, PHP tabanlı bir uygulamadır ve doğru PHP sürümü ile gerekli uzantılara ihtiyaç duyar. Ubuntu 12.04 varsayılan olarak PHP 5.3.x ile gelir, bu da Moodle 2.x serisi için uygundur. Moodle 3.x ve üzeri genellikle daha yeni PHP sürümlerini (5.6.5+ veya 7.x) gerektirir. Bu rehberde, Ubuntu 12.04’ün desteklediği PHP 5.3.x ile uyumlu Moodle 2.x serisini hedefliyoruz. PHP-FPM (FastCGI Process Manager) Nginx ile PHP uygulamalarını çalıştırmak için kullanılır.
sudo apt-get install php5-fpm php5-pgsql php5-gd php5-curl php5-xmlrpc php5-intl php5-mbstring php5-zip php5-soap -y
Bu komut, PHP-FPM’i ve Moodle’ın çalışması için gerekli olan yaygın PHP uzantılarını kuracaktır. Kurulumdan sonra PHP-FPM servisini başlatın:
sudo service php5-fpm start
Git Kurulumu
Moodle’ı Git deposundan çekmek için Git’e ihtiyacımız var:
sudo apt-get install git -y
Moodle Kurulumu ve İlk Yapılandırma
Şimdi Moodle dosyalarını Git deposundan çekme, veri dizini oluşturma ve temel config.php dosyasını yapılandırma adımlarına geçelim.
Moodle Dosyalarını Çekme
Moodle dosyalarını /var/www/html/moodle dizinine indireceğiz. Bu dizini web sunucumuzun kök dizini olarak kullanacağız.
sudo mkdir -p /var/www/html
cd /var/www/html
sudo git clone git://git.moodle.org/moodle.git
Şimdi Moodle dizinine geçin ve uygun bir Moodle 2.x sürümünü seçin. Ubuntu 12.04’teki PHP 5.3.x ile uyumlu olarak Moodle 2.9’u kullanacağız:
cd moodle
sudo git branch -a
sudo git checkout MOODLE_29_STABLE
Moodle Data Dizinini Oluşturma
Moodle, yüklenen dosyaları, geçici verileri ve oturum bilgilerini depolamak için web sunucusunun doğrudan erişemeyeceği ayrı bir veri dizinine ihtiyaç duyar. Bu, güvenlik açısından önemlidir.
sudo mkdir /var/www/moodledata
Dizin İzinlerini Ayarlama
Moodle’ın dosya sistemi üzerinde yazma ve okuma işlemleri yapabilmesi için web sunucusu kullanıcısına (genellikle www-data) uygun izinleri vermelisiniz:
sudo chown -R www-data:www-data /var/www/html/moodle
sudo chmod -R 755 /var/www/html/moodle
sudo chown -R www-data:www-data /var/www/moodledata
sudo chmod -R 777 /var/www/moodledata # Moodle kurulumu için geçici olarak 777, daha sonra 770 veya 750'ye düşürülebilir.
Önemli Not: moodledata için 777 izni, kurulum sırasında sorun yaşanmaması için genellikle önerilir. Kurulum tamamlandıktan sonra, güvenlik için bu izni 770 veya 750’ye düşürmek ve www-data grubuna ait olduğundan emin olmak daha iyidir.
Moodle config.php Dosyasını Oluşturma
Moodle’ın veritabanı bağlantı bilgilerini ve diğer temel ayarlarını içeren bir config.php dosyası oluşturmalıyız. Moodle, bu dosyanın bir örneğini config-dist.php olarak sağlar.
cd /var/www/html/moodle
sudo cp config-dist.php config.php
sudo nano config.php
Açılan config.php dosyasında aşağıdaki satırları kendi veritabanı bilgilerinizle güncelleyin:
dbtype = 'pgsql'; // 'pgsql' for PostgreSQL
$CFG->dblibrary = 'native'; // 'native' or 'ado'
$CFG->dbhost = 'localhost'; // Veritabanı sunucusu
$CFG->dbname = 'moodledb'; // Oluşturduğunuz veritabanı adı
$CFG->dbuser = 'moodleuser'; // Oluşturduğunuz veritabanı kullanıcısı
$CFG->dbpass = 'your_moodleuser_password'; // Veritabanı kullanıcısı parolası
$CFG->prefix = 'mdl_'; // Moodle tabloları için önek (isteğe bağlı)
$CFG->wwwroot = 'http://your_domain.com'; // Moodle sitenizin URL'si
$CFG->dataroot = '/var/www/moodledata'; // Moodle veri dizini
$CFG->admin = 'admin';
require_once(dirname(__FILE__) . '/lib/setup.php');
// There is no php closing tag in this file,
// it is intentional because it prevents trailing whitespace problems!
your_moodleuser_password kısmını daha önce PostgreSQL için belirlediğiniz parola ile, your_domain.com kısmını ise kendi alan adınız veya sunucunuzun IP adresi ile değiştirmeyi unutmayın. Dosyayı kaydedip kapatın (Ctrl+O, Enter, Ctrl+X).
Nginx ve PHP-FPM Yapılandırması
Moodle’ın web üzerinden erişilebilir olması için Nginx’i yapılandırmamız ve PHP-FPM ile düzgün bir şekilde iletişim kurmasını sağlamamız gerekiyor.
Nginx Sanal Host Yapılandırması
Moodle için yeni bir Nginx sanal host dosyası oluşturalım:
sudo nano /etc/nginx/sites-available/moodle.conf
Dosyanın içine aşağıdaki içeriği yapıştırın. your_domain.com kısmını kendi alan adınızla değiştirin:
server {
listen 80;
server_name your_domain.com; # Alan adınızı veya IP adresinizi yazın
root /var/www/html/moodle;
index index.php index.html index.htm;
client_max_body_size 100M; # Yükleme boyutunu Moodle ihtiyaçlarınıza göre ayarlayın
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ ^/(build|cache|config|data|lib|local|vendor)/ {
deny all;
}
location ~ /\.ht {
deny all;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock; # Ubuntu 12.04 için PHP-FPM socket yolu
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Dosyayı kaydedin ve kapatın.
Sanal Hostu Etkinleştirme ve Nginx’i Yeniden Başlatma
Yeni yapılandırma dosyasını etkinleştirmek için bir sembolik bağlantı oluşturun ve varsayılan Nginx sitesini devre dışı bırakın:
sudo ln -s /etc/nginx/sites-available/moodle.conf /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
Nginx yapılandırmasının doğru olduğundan emin olmak için test edin ve ardından Nginx servisini yeniden başlatın:
sudo nginx -t
sudo service nginx restart
PHP-FPM Ayarları (İsteğe Bağlı ama Önerilir)
PHP-FPM’in Moodle için yeterli kaynaklara sahip olduğundan emin olmak için bazı ayarları kontrol edebilirsiniz. php.ini dosyasını düzenleyin:
sudo nano /etc/php5/fpm/php.ini
Aşağıdaki değerleri Moodle’ın gereksinimlerine ve sunucunuzun kaynaklarına göre ayarlayın:
memory_limit = 256M(Minimum 128M, daha büyük siteler için 512M veya 1G)upload_max_filesize = 100Mpost_max_size = 100Mmax_execution_time = 300max_input_vars = 5000(Moodle 2.9 için önerilir)
Değişiklikleri kaydettikten sonra PHP-FPM servisini yeniden başlatın:
sudo service php5-fpm restart
Moodle Web Kurulumu ve Son Ayarlar
Artık Moodle’ın web arayüzünü kullanarak kurulumu tamamlayabilir ve son ayarları yapabiliriz.
Web Tarayıcısı Üzerinden Kurulumu Tamamlama
Bir web tarayıcısı açın ve Moodle sitenizin URL’sine gidin (örneğin, http://your_domain.com). Moodle kurulum sihirbazı sizi karşılayacaktır.
- Dil Seçimi: Tercih ettiğiniz dili seçin ve “Sonraki” butonuna tıklayın.
- Yolların Onaylanması: Moodle yollarının doğru olup olmadığını kontrol edin (
wwwroot,dataroot). “Sonraki” butonuna tıklayın. - Veritabanı Ayarları: Veritabanı türü olarak PostgreSQL seçili olmalı ve daha önce
config.phpdosyasında belirlediğiniz veritabanı kullanıcı adı, parolası, veritabanı adı gibi bilgilerin doğru olduğunu onaylayın. “Sonraki” butonuna tıklayın. - Lisans Anlaşması: Moodle lisans anlaşmasını kabul edin ve “Devam et” butonuna tıklayın.
- Sunucu Gereksinimleri Kontrolü: Moodle, sunucunuzun gerekli tüm gereksinimleri karşılayıp karşılamadığını kontrol edecektir. Her şeyin yeşil olduğundan emin olun. Sarı veya kırmızı uyarılar varsa, bunları düzeltmeniz gerekebilir (örn. eksik PHP uzantıları). “Devam et” butonuna tıklayın.
- Kurulum: Moodle, veritabanı tablolarını oluşturacak ve varsayılan verileri yükleyecektir. Bu biraz zaman alabilir. İşlem bittiğinde “Devam et” butonuna tıklayın.
- Yönetici Hesabı Oluşturma: Yönetici hesabınız için bir kullanıcı adı, güçlü bir parola, e-posta adresi ve diğer bilgileri girin. Bu bilgilerle Moodle’a giriş yapacaksınız. “Profili güncelle” butonuna tıklayın.
- Site Ayarları: Sitenizin adını, kısa adını ve diğer temel ayarları girin. “Değişiklikleri kaydet” butonuna tıklayın.
Tebrikler! Moodle kurulumunuz tamamlandı ve sitenizin ana sayfasına yönlendirileceksiniz.
Moodle Cron Job Kurulumu
Moodle’ın arka plan görevlerini (e-posta gönderme, yedekleme, bildirimler vb.) düzenli olarak çalıştırması için bir cron job ayarlamanız gerekir. Bu, Moodle’ın sağlıklı çalışması için hayati öneme sahiptir.
sudo crontab -e -u www-data
Açılan dosyaya aşağıdaki satırı ekleyin ve kaydedin:
* /usr/bin/php /var/www/html/moodle/admin/cli/cron.php >/dev/null
Bu cron job, her dakika www-data kullanıcısı altında Moodle cron betiğini çalıştıracaktır.
Sonuç ve Sıkça Sorulan Sorular (SSS)
Bu rehberde, Ubuntu 12.04 VPS üzerinde Nginx, PostgreSQL ve PHP-FPM kullanarak Git üzerinden Moodle kurulumunu tamamlamış oldunuz. Moodle 2.9 sürümünü tercih ederek eski işletim sistemiyle uyumluluğu sağladık. Kurulum sonrası moodledata dizininin izinlerini gözden geçirmeyi ve güvenlik önlemleri almayı unutmayın.
Önemli Uyarı: Ubuntu 12.04’ün destek ömrü sona ermiştir. Bu, güvenlik güncellemeleri ve yamalar almayacağı anlamına gelir. Üretim ortamlarında kullanılması şiddetle tavsiye edilmez ve ciddi güvenlik riskleri taşır. Mümkün olan en kısa sürede daha güncel bir Ubuntu sürümüne ve Moodle versiyonuna geçiş yapmanız önerilir.
Sıkça Sorulan Sorular (SSS)
S: Moodle’ın desteklediği PHP sürümü nedir?
C: Bu rehberde kullanılan Moodle 2.9, PHP 5.3.3 veya üzeri bir sürüm gerektirir. Daha yeni Moodle sürümleri (örneğin Moodle 3.x), PHP 5.6.5 veya 7.x serisini gerektirir. Güncel Moodle sürümleri için en son PHP 7.x veya 8.x sürümleri önerilir.
S: moodledata dizini neden web kökünde olmamalıdır?
C: moodledata dizini, kullanıcıların yüklediği dosyaları, geçici verileri ve diğer hassas bilgileri içerir. Bu dizinin doğrudan web sunucusu tarafından erişilebilir olmaması, kötü niyetli kullanıcıların bu dosyalara doğrudan URL üzerinden erişmesini engelleyerek önemli bir güvenlik katmanı sağlar. Web sunucusu sadece Moodle’ın PHP betikleri aracılığıyla bu dizine erişebilmelidir.
S: Nginx 502 Bad Gateway hatası alırsam ne yapmalıyım?
C: Bu hata genellikle Nginx’in PHP-FPM ile iletişim kuramadığı anlamına gelir. Kontrol etmeniz gerekenler:
- PHP-FPM servisinin çalışıp çalışmadığı:
sudo service php5-fpm status - Nginx yapılandırmanızdaki
fastcgi_passyolunun (unix:/var/run/php5-fpm.sock) doğru olup olmadığı. /etc/php5/fpm/pool.d/www.confdosyasındalistenyönergesinin aynı yola ayarlı olup olmadığı.- PHP-FPM veya Nginx hata günlüklerini kontrol etmek (
/var/log/nginx/error.log,/var/log/php5-fpm.log).
S: Moodle cron görevi neden önemlidir?
C: Moodle, arka planda çalışan birçok göreve sahiptir (e-posta gönderme, bildirimler, forum özetleri, yedeklemeler, ders etkinliklerinin güncellenmesi vb.). Bu görevler, cron job aracılığıyla düzenli aralıklarla tetiklenir. Cron görevi ayarlanmazsa, Moodle siteniz düzgün çalışmayacak veya bazı özellikleri eksik kalacaktır.
S: Ubuntu 12.04 kullanmanın riskleri nelerdir?
C: Ubuntu 12.04 (Precise Pangolin) için ana destek 2017’de, genişletilmiş güvenlik desteği (ESM) ise 2019’da sona ermiştir. Bu, işletim sisteminin artık güvenlik güncellemeleri, hata düzeltmeleri veya yazılım yamaları almadığı anlamına gelir. Bu durum, sunucunuzu bilinen güvenlik açıklarına karşı savunmasız bırakır ve saldırılara açık hale getirebilir. Ayrıca, eski yazılım versiyonları modern uygulamalarla uyumluluk sorunları yaşayabilir.
