İçeriğe geç
Eren Gaygusuz
Geri dön

Moodle'u Docker ile Yerel Ortamda Kurma

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.

Docker, veritabanı ve yapılandırma ile Moodle yerel kurulum akışı

İç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
Terminalden Moodle kaynak kodu klonlamasını başlatma Moodle kaynak kodunun yerel proje dizinine klonlanması

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 için Docker Compose yapılandırmasını düzenleme

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
Moodle yapılandırma dizinindeki kaydedilmiş Docker Compose dosyası

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
Terminalden Moodle config.php dosyasını açma
<?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');
Nano düzenleyicide açık Moodle config.php dosyası

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
Terminalde Moodle yapılandırma ve veri dizini izinlerini ayarlama

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
Docker Compose ile Moodle container'larının başarıyla başlatılması

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.

Moodle container'ından veritabanı bağlantısını test etme

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.

Tarayıcıda açılmış yerel Moodle adresi

Devam etmek için Moodle lisansını okuyup kabul edin.

Moodle kurulum lisans onay sayfası

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.

PHP ve veritabanı gereksinimlerini gösteren Moodle sunucu kontrolleri Yerel HTTP uyarısıyla tamamlanan Moodle sunucu kontrolleri

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.

Moodle çekirdek bileşenlerini ve eklentilerini kurma Moodle eklenti kurulumunun başarıyla tamamlanması

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.

Moodle yönetici hesabı oluşturma formu Konum ve saat dilimi bilgileri girilmiş Moodle yönetici profili

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.

Moodle site adı, özeti, saat dilimi ve kayıt ayarları Moodle giden e-posta ve destek iletişim ayarları

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.

Yerel ortamda Moodle test e-postalarını alan Mailpit gelen kutusu

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.

Yerel Docker kurulumu sonrası Moodle yönetici paneli

Ö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.


Bu yazıyı paylaş:

Yorumlar


Önceki Yazı
Moodle E-posta Kaydı, Mailpit ve reCAPTCHA Ayarları
Sonraki Yazı
Unity Uygulamaları için Google Play Store'da Keystore Dosyasını Değiştirme