Moodle’u elle kurmak; uyumlu PHP çalışma zamanı, web sunucusu, eklentiler, yazılabilir veri dizini ve veritabanı bağlantısı gerektirdiği için zahmetli olabilir. Docker, uygulamanın gereksinimlerini tekrar üretilebilir tek bir ortamda tutarken Moodle kaynak kodunu ve yüklenen dosyaları ana makinede bırakır.
Bu rehberde Moodle’u klonlayacak, gerekli PHP ve Apache ortamına sahip bir Docker Compose servisi hazırlayacak, MySQL için bir config.php dosyası ekleyecek, container’ı başlatacak ve tarayıcı üzerinden Moodle kurulumunu tamamlayacağız. Örnekte ayrı bir MySQL sunucusu kullanılıyor; isterseniz tümleşik bir yerel yapı için Compose dosyasına veritabanı container’ı da ekleyebilirsiniz.
Tüm akışı YouTube videosundan da izleyebilirsiniz.
İçindekiler
İçindekileri aç
Ön Koşullar
Başlamadan önce Git, Docker ve Docker Compose eklentisini kurun. Ayrıca erişilebilir bir MySQL veya MariaDB sunucusuna ve yeni Moodle veritabanı için gerekli bilgilere ihtiyacınız var. Veritabanı başka bir container’da, yerel ağınızda veya bir geliştirme sunucusunda çalışabilir.
Veritabanı parolasını kaynak kontrolüne eklemeyin. Bu rehberdeki config.php değerleri örnektir; kendi ortamınıza uygun bilgileri kullanın.
Moodle Kaynak Kodunu Klonlama
Bir proje dizini oluşturun ve çalıştırmak istediğiniz Moodle branch’ini src klasörüne klonlayın. Aşağıdaki komut videodaki yapıyı takip eder.
mkdir -p ~/projects/moodle/edu
cd ~/projects/moodle/edu
git clone -b MOODLE_500_STABLE https://github.com/moodle/moodle.git src
Kaynak kodunun indirilmesi birkaç dakika sürebilir. İşlem bittiğinde klasör yolunu not edin; bu yol web container’ına mount edilecektir.
Docker Compose Yapılandırmasını Oluşturma
Compose yapılandırması için bir klasör oluşturun ve içine docker-compose.yml dosyasını ekleyin.
mkdir -p ~/docker/compose/moodle-edu
cd ~/docker/compose/moodle-edu
nano docker-compose.yml
Moodle servisi Apache, PHP ve Moodle’ın ihtiyaç duyduğu PHP eklentilerini içeren bir imaja ihtiyaç duyar. Klonlanan kaynak klasörünü /var/www/html yoluna bağlayın, yerel bir port eşleyin ve kalıcı moodledata dosyaları için ana makinede ayrı bir dizin kullanın.
services:
moodle:
image: moodlehq/moodle-php-apache:8.3
container_name: moodle-edu
restart: unless-stopped
ports:
- "8085:80"
environment:
TZ: Europe/Istanbul
volumes:
- /absolute/path/to/moodle/edu/src:/var/www/html
- /absolute/path/to/moodledata:/var/www/moodledata
Veritabanına Moodle container’ından doğrudan erişilemiyorsa SSH tüneli oluşturan ikinci bir servis ekleyebilirsiniz. Bu yapı bağlanılan ağa özel olduğu için yukarıdaki sade yapılandırmaya eklenmemiştir.
Moodle Yapılandırmasını Ekleme
Moodle veritabanı ayarlarını web kurulumunda da sorabilir; ancak src/config.php dosyasını önceden oluşturmak kurulumu tekrar üretilebilir hale getirir ve ilk form alanlarını atlar. Kendi MySQL sunucunuza ait host ve kimlik bilgilerini kullanın.
nano ~/projects/moodle/edu/src/config.php
<?php
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'mysql-host';
$CFG->dbname = 'moodle';
$CFG->dbuser = 'moodle_user';
$CFG->dbpass = 'replace-with-a-secure-password';
$CFG->prefix = 'mdl_';
$CFG->dboptions = [
'dbpersist' => 0,
'dbport' => 3306,
'dbcollation' => 'utf8mb4_unicode_ci',
];
$CFG->wwwroot = 'http://localhost:8085';
$CFG->dataroot = '/var/www/moodledata';
$CFG->admin = 'admin';
$CFG->directorypermissions = 0777;
require_once(__DIR__ . '/lib/setup.php');
Gerçek bir yayında $CFG->wwwroot için HTTPS kullanın, yapılandırma dosyasını koruyun ve ana makine işletim sistemi ile container kullanıcısına uygun izinleri seçin. Buradaki geniş izin değeri yerel geliştirme için kullanışlıdır; production için varsayılan olarak kullanılmamalıdır.
Dosya İzinlerini Hazırlama ve Moodle’u Başlatma
Web sunucusunun config.php dosyasını okuyabilmesi ve moodledata olarak mount edilen dizine yazabilmesi gerekir. Ana makine dizini yoksa önce oluşturun; ardından container kullanıcısına uygun sahiplik veya izinleri verin.
mkdir -p /absolute/path/to/moodledata
sudo chmod 644 /absolute/path/to/moodle/edu/src/config.php
sudo chmod -R ugo+rwX /absolute/path/to/moodledata
docker-compose.yml dosyasının bulunduğu klasörden servisleri arka planda başlatın.
docker compose up -d
Docker ağı oluşturur ve Moodle container’ını başlatır. Durumu kontrol etmek için docker compose ps komutunu kullanın. SSH tüneli veya başka bir yardımcı servis kullanıyorsanız, kurulum ekranını açmadan önce Moodle container’ının MySQL’e ulaşabildiğini doğrulayın.
docker compose ps
Kurulum ekranını açmadan önce Moodle container’ının veritabanına ulaşabildiğini test edebilirsiniz. Bu kontrol özellikle veritabanı SSH tüneli arkasındaysa veya başka bir sunucuda çalışıyorsa yararlıdır.
Tarayıcı Kurulumunu Tamamlama
Tarayıcıda http://localhost:8085 adresini açın. Veritabanı bilgileri ve data yolu config.php içinde bulunduğu için Moodle doğrudan lisans ve sunucu kontrollerine geçebilir.
Devam etmek için Moodle lisansını okuyup kabul edin.
Docker imajı Moodle’ın ihtiyacı olan PHP çalışma zamanını ve eklentileri sağlar. Sunucu kontrollerini inceleyin ve devam etmeden önce zorunlu hataları çözün. Yerel HTTP kurulumunda HTTPS uyarısı görünebilir; bu yerel geliştirme için beklenen bir durumdur, ancak gerçek bir site yayına alınmadan önce HTTPS etkinleştirilmelidir.
Moodle daha sonra çekirdek bileşenleri ve eklentileri kurar. Bu işlem birkaç dakika sürebilir. Başarı mesajlarını bekleyin ve kullanılabilir olduğunda Continue düğmesine tıklayın.
Yönetici ve Site Ayarlarını Oluşturma
Sonraki sayfada ilk yönetici hesabı oluşturulur. Benzersiz bir yönetici kullanıcı adı, uzun bir parola ve kontrol ettiğiniz bir e-posta adresi kullanın. Ayrıca doğru ülke ve saat dilimini seçin.
Son olarak tam site adı, kısa ad, ana sayfa özeti, varsayılan saat dilimi ve kayıt politikasını belirleyin. Yeni bir site için, kimlik doğrulama yöntemi yapılandırılana kadar kendi kendine kaydı kapalı tutmak mantıklı bir başlangıçtır.
Geliştirme ortamında Moodle’ın giden e-postalarını gerçek alıcılara göndermeden denemek için Mailpit gibi yerel bir SMTP test aracı kullanışlıdır.
Kurulumu Doğrulama
Site ayarlarını kaydettikten sonra Moodle yönetici paneli açılır. Bu noktada yerel kurulum; dil paketleri, kimlik doğrulama, kullanıcı yönetimi, dersler ve e-posta teslimi gibi sonraki yapılandırma adımlarına hazırdır.
Özet
Bu kurulumda Docker, Moodle’ın Apache ve PHP ortamını sağlarken Moodle kaynak kodu ile moodledata dizini ana makinede erişilebilir kalır. Kaynak kodu klonlandıktan, volume’lar bağlandıktan, veritabanı yapılandırması eklendikten ve docker compose up -d komutu çalıştırıldıktan sonra kalan ayarlar Moodle’ın tarayıcı kurulumunda tamamlanır.
Production ortamında yerel HTTP adresini HTTPS ile değiştirin, gizli bilgileri repository dışında saklayın, dosya izinlerini daraltın, hem veritabanı hem moodledata için yedekleme stratejisi oluşturun ve gerçek bir SMTP sağlayıcısı yapılandırın.
Yorumlar