Bugün Google’ın suyuna ekmek banacağız, Cloud servislerinde kullanabileceğimiz 300$ dolar bakiye ile CentOS kaldırıp, Apache Web Service kurup Moodle’ı üzerine inşa edeceğiz.
Kısa bir teşekkürü borç bilirim. Self-hosted denemelerine beni teşfik ettiği için Ali Sezişli hocama teşekkürler 🙂
Moodle Nedir?
Kısaca Moodle açık kaynak kodlu bir uzaktan eğitim sistemidir. Aklımızda bi soru işareti kalmadığına göre başlayabiliriz. Öncelikle Google Cloud üzerinden nasıl server ayağa kaldıracağımıza bakalım.
Google Cloud
Google Cloud Console’a gittikten sonra soldaki menüden Compute Engine menüsüne tıklıyoruz Sanal Makine Örnekleri sayfasında Oluşturun butonuna tıklıyoruz.
Makinemizin adını verdikten sonra, CPU ve Ram tercihlerimizi yapıyoruz, ben sadece öğrenmek için kullanacağım için çok bir kaynağa ihtiyaç duymuyorum. Sizde kullanmayacaksanız düşük çekirdek ve bellek tercih etmenizi öneririm. Aynı şekilde disk boyutunu 20 GB olarak ayarlıyorum. Daha sonra ise Önyükleme diski bölümünden CentOS seçiyoruz.
SSH Bağlantısı İçin Ayarlar
Şimdi ise Linux üzerinden ssh-keygen aracı ile SSH anahtarı oluşturuyoruz. Ben daha önce oluşturduğum SSH anahtarını kullanacağım. Ancak nasıl oluşturacağınızı bilmiyorsanız kısaca bahsedeyim, konsolunuza ssh-keygen yazıp enterladıktan sonra sizden oluşturmak istediğiniz dosya adını istiyor olacak, istediğiniz bir ismi verebilirsiniz. Daha sonra bir şifre belirlemenizi ve sonrasında şifreyi onaylamanızı isteyecektir, şifrenizi belirledikten sonra “dosya_adiniz.pub” şeklinde “/home/kullanici_adiniz/.ssh” dizini içerisinde SSH anahtarınızı oluşturmuş olacak. “cat” komutu ile dosya içerisindeki anahtarımızı kopyalıyoruz.
SSH anaharımızı oluşturduğuma göre Google Cloud Conlose’a geri dönebiliriz. Güvenlik Duvarı kısmından HTTP ve HTTPS trafiğine izin veriyoruz.
Daha sonra ise hemen HTTPS trafiğine izin ver checkbox’ının altında bulunan, mavi ile yazılmış Yönetim, güvenlik, diskler, ağ iletişimi, tek kiracılı yazısına tıklıyoruz ve Güvenlik sekmesine geliyoruz. Burada oluşturuduğumuz SSH anahtarını yapıştıyor ve kaydediyoruz. Sonrasında ise oluştur butonuna tıklayıp, Google’ın bize makinemizi ayağı kaldırmasını bekliyoruz.
Gördüğünüz gibi bir kaç saniye içerisinde makinemiz kullanıma hazır vaziyete geliyor. IP adresimizi alıp konsola geçme zamanı 🙂
SSH Bağlantısı
Artık başlıyoruz, kemerleri takalım…
Konsolumuza şu komut ile birlikte makinemizin IP adresini yazıyoruz
1 |
ssh IP_Adresi |
Sonrasında bize bir soru soruyor, yes diyoruz ve şifre istiyor. Burada SSH anahtarı oluştururken belirlediğimiz şifreyi giriyoruz. Ve artık makinedeyiz.
Kurulum işlemleri
Öncelikle Super User parolası belirliyorum ve root’a geçiş yapıyorum.
1 2 |
sudo passwd sudo su |
Daha sonra ise “EPEL” deposunu yüklüyoruz.
1 |
yum install epel-release -y #-y ifadesi çıkacak sorulara otomatik olarak kabul et demek. |
Şimdi ise Webtatic reposunu ekliyoruz. Webtatic reposu web ile alakalı paketleri içeren bir CentOS reposudur.
1 |
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm |
PHP 7 ve diğer gerekli bağımlılıkları kurmamız gerekiyor.
1 |
yum install php70w php70w-curl php70w-gd php70w-intl php70w-ldap php70w-mysql php70w-pspell php70w-xml php70w-xmlrpc php70w-zip php70w-common php70w-opcache php70w-mbstring php70w-soap -y |
Apache Web Server kurulu değil ise kuralım, bende kurulu imiş.
1 |
yum install httpd -y |
Kurulum işlemi tamamlandıktan sonra Apache servisi başlatmamız ve etkinleştirmemiz gerekiyor.
1 2 |
systemctl start httpd systemctl enable httpd |
Apache servisleri için bir konfigürasyon dosyasını düzenlememiz gerekiyor. /etc/httpd/conf dizini içerisindeki httpd.conf dosyasını açıyoruz ve 119.satırda bulunan satırda ufak bir değişiklik yapıp şu hale getiriyoruz.
1 |
DocumentRoot "/var/www/html/moodle/" |
Ve Apache servisi yediden başlatıyoruz.
1 |
systemctl restart httpd |
Şimdi ise MariaDB servisini kurup, yine başlatıp etkinleştiriyoruz.
1 2 3 |
yum install mariadb-server -y systemctl start mariadb-server systemctl enable mariadb-server |
MariaDB’nin Moodle ile uyulum olması için “InnoBD” motorunu etkinleştirmemiz gerekiyor. Bunun için ise yine bir konfigürasyon dosyasını düzenlememiz gerekiyor. etc/my.cnf.d/ dizininde bulunan server.conf dosyasını düzenliyoruz ve şu kodları ekliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[client] default-character-set = utf8mb4 [mysqld] innodb_file_format = Barracuda innodb_file_per_table = 1 innodb_large_prefix character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci skip-character-set-client-handshake [mysql] default-character-set = utf8mb4 |
Sonrasında MariaDB’yi tekrar başlatıyoruz.
1 |
systemctl restart mariadb |
Sıra geldi veritabanı işlemlerine, mysql_secure_installation ile veritabanını kuruyoruz.
İlk olarak bizden bir parola isteyecek, direkt olarak enter’a basıyoruz ve gerekli ayarları yapıyoruz.
Veritabanı İşlemleri
Konsoluma mysql yazıp MariaDB’yi başlatıyoruz.
1 |
SELECT PASSWORD('parolanız'); |
Komutu ile parolamızı belirliyoruz. Ardından veritabanını oluşturuyoruz.
1 |
CREATE DATABASE moodle; |
Sonrasında ise ‘user’ kullancısına bütün yetkileri vermemiz gerekiyor, ilerleyen kısımlarda anlayacaksınız neden olduğunu.
1 |
GRANT ALL PRIVILEGES ON moodle.* to user@localhost identified by 'cold'; |
MariaDB ile işimiz bitti exit komutunu verip çıkabiliriz.
Moodle İndirme ve Kurma
Makinemizde wget olmadığı için öncelikle bunu kuruyoruz.
1 |
yum install wget -y |
Moodle’ı indiriyoruz ve direkt /var/www/html/ dizinine arşivden çıkarıyoruz.
1 2 |
wget https://download.moodle.org/stable34/moodle-latest-34.tgz tar xvzf moodle-latest-34.tgz -C /var/www/html/ |
Ve Apache’ye bu klasörler için yetki veriyoruz.
1 2 |
chown -R apache:apache /var/www/html/ chown -R apache:apache /var/www/html/moodle |
Ek olarak moodledata adında bir klasör oluşturuyoruz /var/www/html dizini içinde.
SELinux Ayarlamaları
Öncelikle SELinux yönetim araçlarını kuruyoruz.
1 |
sudo yum install policycoreutils policycoreutils-python -y |
Ve sırasıyla şu işlemleri yapıyoruz.
1 2 3 4 |
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/moodle(/.*)?' sudo restorecon -Rv '/var/www/html/moodle/' sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/moodledata(/.*)?' sudo restorecon -Rv '/var/www/html/moodledata/' |
CLI ile Moodle Kurulumu
Artık kuruluma başlayabiliriz. Umarım bir hata almayız 😀
1 |
sudo /usr/bin/php /var/www/html/moodle/admin/cli/install.php |
İlk soruda bize hangi dilde olacağını soruyor. Küçük harfler ile “tr” yazıp devam ediyoruz. Sonrasında bizden istediği bilgileri giriyoruz.
Kurulum işleminin bitmesini bekliyoruz. Bittikten sonra config.php dosyasına gerekli izinleri vermemiz gerekiyor.
1 |
sudo chmod o+r /var/www/html/moodle/config.php |
Ek olarak Moodle’ın düzgün çalışması için crontab ayarlamamız gerekiyor.
1 |
sudo crontab -u apache -e |
Şu komutu ekleyip kaydediyoruz.
1 |
* * * * * /usr/bin/php /var/www/html/moodle/admin/cli/cron.php >/dev/null |
Ve Apache’yi yeniden başlatıyoruz.
1 |
systemctl restart httpd |
Ve kurulum bitti. Moodle’ı kullanabiliriz 🙂