Otu esi etinye Platform mmụta Moodle na Nginx na CentOS 8


Moodle bụ usoro njikwa mmụta kachasị ewu ewu n'ụwa maka iwulite saịtị mmụta n'ịntanetị siri ike. Ọ na-egosipụta ọtụtụ ihe omume na ngwa nkuzi nke ị nwere ike ịhọrọ, ọ na-akwado njikwa nyocha na ụgbọ mmiri nwere asambodo omenala. Ọ na-emekwa ka gị na ụmụ akwụkwọ gị nwee mkparịta ụka ozugbo site na iji ngwa ogbako vidiyo siri ike. E wezụga nke ahụ, ọ dị njikere maka mkpanaka, ka ụmụ akwụkwọ gị nwee ike ịmụta ihe na ngwaọrụ mkpanaka ha.

  • Sistemụ arụmọrụ: nrụnye kacha nta nke nchịkọta LEMP arụnyere.
  • Oghere diski: 200MB maka Moodle, yana 5GB nwere ike ịbụ opekempe nke ịchekwa ọdịnaya.
  • Processor: 1GHz (min), 2GHz dual-core ma ọ bụ karịa akwadoro.
  • Nchekwa: 512MB (nkeji), 1GB ma ọ bụ karịa ka akwadoro. 8GB gbakwunyere nwere ike ịbụ na nnukwu ihe nkesa mmepụta.

Na ibe a

  • Ịmepụta ndekọ ndekọ ngalaba DNS maka weebụsaịtị Moodle
  • Ịwụnye Platform mmụta Moodle na sava CentOS 8
  • Na-ahazi NGINX iji jeere weebụsaịtị Moodle ozi
  • Nwụnye Moodle zuru ezu site na nwụnye Weebụ
  • Kwado HTTPS na saịtị Moodle Iji Ka Anyị Encrypt

1. Malite site na ịmepụta subdomain nke ndị ọrụ ga-eji nweta saịtị mmụta Moodle n'ịntanetị. Ọmụmaatụ, ọ bụrụ na ngalaba aha gị bụ testprojects.me, ị nwere ike ịmepụta subdomain a na-akpọ learning.testprojects.me.

Mepee ntọala DNS dị elu nke ngalaba gị wee tinye ndekọ A dị ka egosiri na foto na-esonụ.

2. Tupu ịwụnye Moodle, hụ na ị nwere ihe ndọtị PHP achọrọ na ihe nkesa gị, ị nwere ike ịme iwu na-esonụ iji wụnye ha:

# dnf install php-common php-iconv php-curl php-mbstring php-xmlrpc php-soap php-zip php-gd php-xml php-intl php-json libpcre3 libpcre3-dev graphviz aspell ghostscript clamav

3. Ọzọ, mepụta nchekwa data maka ngwa Moodle dị ka ndị a.

# mysql -u root -p

Mepụta nchekwa data, onye ọrụ nchekwa data wee mepụta paswọọdụ echekwara maka ojiji.

MariaDB [(none)]> CREATE DATABASE moodledb;
MariaDB [(none)]> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodledb.* TO 'moodleadmin'@'localhost' IDENTIFIED BY '[email ';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

4. Ugbu a budata ụdị Moodle kachasị ọhụrụ (3.9 n'oge ederede) site na webụsaịtị ọrụ moodle gọọmentị, wepụ faịlụ Archive wee bugharịa ya n'ime webroot gị (/var/www/html/ ) ndekọ aha, wee tọọ ikike na nwe nke kwesịrị ekwesị iji mee ka sava weebụ nweta akwụkwọ ndekọ aha Moodle, dị ka ndị a.

# wget -c https://download.moodle.org/download.php/direct/stable39/moodle-latest-39.tgz
# tar -xzvf  moodle-latest-39.tgz
# mv moodle /var/www/html/
# chmod 775 -R /var/www/html/moodle
# chown nginx:nginx -R /var/www/html/moodle

5. Ọzọ, mepụta akwụkwọ ndekọ moodledata nke bụ ebe faịlụ ndị ebugo ma ọ bụ mepụta site na Moodle interface, wee kenye ikike na ikike kwesịrị ekwesị iji kwe ka webserver gụọ wee dee ohere na ya:

# mkdir -p /var/www/html/moodledata
# chmod 770 -R /var/www/html/moodledata
# chown :nginx -R /var/www/html/moodledata

6. Ọzọ, banye na ndekọ nrụnye Moodle wee mepụta faịlụ config.php site na faịlụ config.dist.php nke enyere, wee mepee ya maka edezi iji hazie ụfọdụ. ntọala igodo maka ikpo okwu Moodle gị, dị ka parampat njikọ nchekwa data yana ọnọdụ saịtị yana ebe ọ nwere ike ịhụ ndekọ ndekọ moodledata:

# cd /var/www/html/moodle/
# cp config-dist.php config.php
# vim config.php

Tọọ ụdị nchekwa data ziri ezi, onye nnabata nchekwa data ziri ezi, aha nchekwa data, yana onye ọrụ nchekwa data yana paswọọdụ onye ọrụ.

$CFG->dbtype    = 'mariadb';      // 'pgsql', 'mariadb', 'mysqli', 'sqlsrv' or 'oci'
$CFG->dblibrary = 'native';     // 'native' only at the moment
$CFG->dbhost    = 'localhost';  // eg 'localhost' or 'db.isp.com' or IP
$CFG->dbname    = 'moodledb';     // database name, eg moodle
$CFG->dbuser    = 'moodleadmin';   // your database username
$CFG->dbpass    = '[email zzwd0L2';   // your database password
$CFG->prefix    = 'mdl_';       // prefix to use for all table names

7. Tọọkwa URL nke a na-eji iji nweta oche Moodle gị, nke a na-akọwapụta ọnọdụ wwwroot ebe faịlụ weebụ Moodle gị dị, yana dataroot (akwụkwọ ndekọ aha moodledata):

$CFG->wwwroot   = 'http://learning.testprojects.me';
$CFG->dataroot  = '/var/www/html/moodledata';

8. Na ngalaba a, ịkwesịrị ịhazi NGINX iji jeere ngwa Moodle gị ozi. Ịkwesịrị ịmepụta ngọngọ nkesa maka ya na nhazi NGINX dị ka egosiri.

# vim /etc/nginx/conf.d/moodle.conf

Detuo na mado nhazi ndị a na faịlụ nhazi ngọngọ nkesa. Dochie aha nkesa na aha subdomain gị nke emepụtara n'elu, na fastcgi_pass kwesịrị ịrụtụ aka na php-fpm (rịba ama na na CentOS 8, PHP-FPM na-anabata arịrịọ FastCGI site na iji adreesị akọwapụtara na /etc/nginx/conf.d/php- fpm.conf nhazi).

server{
   listen 80;
    server_name learning.testprojects.me;
    root        /var/www/html/moodle;
    index       index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ ^(.+\.php)(.*)$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_index           index.php;
        fastcgi_pass            php-fpm;
        include                 /etc/nginx/mime.types;
        include                 fastcgi_params;
        fastcgi_param           PATH_INFO       $fastcgi_path_info;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Chekwaa faịlụ ma mechie ya.

9. Mgbe ahụ lelee nhazi NGINX maka izi ezi, ọ bụrụ na ọ dị mma, malitegharịa ọrụ nginx na php-fpm iji tinye mgbanwe ndị na-adịbeghị anya:

# nginx -t
# systemctl restart nginx
# systemctl restart php-fpm

10. Ọ bụrụ na ị nwere SELinux nyeere na sistemụ gị, wee mee iwu ndị a ka ịtọọ ọnọdụ ziri ezi maka ịnweta faịlụ weebụ Moodle na sava ahụ:

# setsebool -P httpd_can_network_connect on
# chcon -R --type httpd_sys_rw_content_t /var/www/html

11. E wezụga nke ahụ, hụ na ọrụ HTTP na HTTPS na-emeghe na firewall iji kwe ka okporo ụzọ gaa na sava weebụ NGINX:

# firewall-cmd --permanent --zone=public --add-service=http 
# firewall-cmd --permanent --zone=public --add-service=https
# firewall-cmd --reload

12. Iji banye Moodle webụ installer, mepee ihe nchọgharị weebụ gị, wee gaa na iji subdomain ị mepụtara n'elu:

http://learning.testprojects.me

Ozugbo ibe nnabata ahụ gụchara usoro, yana ọnọdụ wee pịa Gaa n'ihu.

13. Na-esote, onye nrụnye weebụ ga-elele ma sistemụ gị na-emezu ihe achọrọ maka ịgba ọsọ saịtị Moodle nke ụdị akọwapụtara. Ị nwere ike pịgharịa gaa na ala ka ịhụ ozi ndị ọzọ.

14. Onye nrụnye ga-eme mkpesa na HTTPS adịghị enyere ya aka, leghara njehie ahụ anya ugbu a (na ngalaba na-esote, anyị ga-egosi otu esi eme HTTPS na Moodle), wee pịa Gaa n'ihu, ka ịmalite ntinye faịlụ weebụ n'ezie.

15. Ugbu a installer ga-amalite n'ezie echichi nke Moodle faịlụ dị ka e gosiri na-esonụ nseta ihuenyo. Ozugbo ọ zuru ezu, pịa Gaa n'ihu.

16. Na nzọụkwụ ọzọ, ịkwesịrị imelite akaụntụ nchịkwa Moodle gị site na imelite aha njirimara, paswọọdụ, aha mbụ, na nna nna, na adreesị ozi-e. Wee pịgharịa gaa na ibe wee pịa Melite profaịlụ.

17. Mgbe ahụ melite ntọala saịtị Moodle n'ihu ihu. Wee pịgharịa gaa na ala wee pịa Melite ka ịmalite iji saịtị Moodle gị.

18. Ọzọ, ịkwesịrị ịdebanye aha saịtị gị site na ịgbaso ntuziaka na ihuenyo. Ị nwere ike ịga na dashboard site na ịpị na Dashboard.

HTTPS na-agbakwụnye oyi akwa nchekwa mbụ na saịtị gị iji mee ka nkwukọrịta dị nchebe n'etiti ndị ọrụ gị na ngwa Moodle (karịsịa sava weebụ NGINX nke na-anata arịrịọ ma na-enye azịza).

Ị nwere ike ịzụta akwụkwọ SSL/TLS site na CA azụmahịa ma ọ bụ jiri Let's Encrypt nke bụ n'efu na ihe nchọgharị weebụ ọ bụla ghọtara. Maka ntuziaka a, anyị ga-eji Ka anyị ezoro ezo.

19. The Let's Encrypt Certificate deployment na-akpaghị aka jikwaa site na iji certbot ngwá ọrụ. Ị nwere ike iwunye certbot na ngwugwu ndị ọzọ achọrọ site na iji iwu a:

# dnf install certbot python3-certbot-nginx

20. Mgbe ahụ, gbaa iwu na-esonụ iji nweta akwụkwọ ikike ka anyị Encrypt wee nweta Certbot dezie nhazi NGINX gị na-akpaghị aka iji jeere ya ozi (ọ ga-ahazi HTTP ka ebugharịa ya na HTTPS ozugbo).

# certbot --nginx

21. Mgbe ahụ na-agba ọsọ na-esonụ iwu iji mee ka akpaka mmeghari nke Let's Encrypt SSL/TLS certificate:

# echo "0 0,12 * * * root python3 -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

22. Ọzọ, melite nhazi Moodle gị ka ịmalite iji HTTPS.

# vim /var/www/html/moodle/config.php

gbanwee www mgbọrọgwụ URL site na HTTP gaa HTTPS:

$CFG->wwwroot   = 'https://learning.testprojects.me';

23. N'ikpeazụ ma ọ dịghị ihe ọzọ, gosi na saịtị Moodle gị na-arụ ọrụ ugbu a na HTTPS.

Nke ahụ bụ maka ugbu a! Maka ozi ndị ọzọ na nhọrọ nhazi iji mee usoro mmụta ọhụrụ gị, gaa na webụsaịtị Moodle, wee gụọ site na akwụkwọ gọọmentị.