Skonfiguruj Moodle z Nginx i Let's Encrypt SSL / TLS na Ubuntu 18.04 | 16.04

  • Cornelius Paul
  • 0
  • 1913
  • 14

Moodle - potężna platforma do zarządzania kursami może być przydatna dla uniwersytetów i firm, które chcą opublikować swoje prace i materiały szkoleniowe… Jednak podczas tworzenia witryn Moodle, pamiętaj, aby zawsze uruchamiać je przez HTTPS…

Witryny i aplikacje działające przez HTTPS działają lepiej niż te, które tego nie robią!

Google i inne wyszukiwarki również pozycjonują witryny HTTPS lepiej niż HTTP, a prywatność użytkowników również zostanie zapewniona… Idąc dalej, zawsze twórz witryny tak, aby były zgodne z HTTPS!

Ten krótki samouczek pokaże studentom i nowemu użytkownikowi krok po kroku, jak skonfigurować strony internetowe Moodle z Nginx i korzystać z darmowych certyfikatów SSL / TLS Let's Encrypt i funkcji bezpieczeństwa, aby poprawić wydajność ich stron internetowych i chronić przed złośliwymi aktorami…

Ta konfiguracja może trochę potrwać, a poniższy proces powinien działać również w innych witrynach… To nie musi być Moodle… Ta konfiguracja powinna działać na innych systemach CMS i zwykłych witrynach HTML po wyjęciu z pudełka… Kiedy będziesz gotowy aby skonfigurować Moodle i Let's Encrypt, wykonaj poniższe czynności:

Krok 0: Uzyskaj nazwę domeny

Let's Encrypt współpracuje z prawidłową domeną i działającym serwerem, na który wskazuje domena… Ta konfiguracja zakłada, że ​​nazwa Twojej domeny nosi nazwę example.com i wskazuje na Twój serwer o adresie IP 192.168.1.2

Nie zapomnij też się upewnić www CNAME wskazuje na nazwę domeny…. Powinien wyglądać jak coś poniżej:

example.com A ==========> 192.168.1.2 www CNAME ==========> example.com 

Krok 1: Zainstaluj i skonfiguruj Moodle

Po skonfigurowaniu domeny tak, aby wskazywała na serwer, przejdź poniżej do konfigurowania Moodle i Let's Encrypt…

Najpierw zainstaluj serwer HTTP Nginx, ponieważ używamy Nginx w tym poście… Aby zainstalować serwer Nginx, uruchom poniższe polecenia:

sudo apt update sudo apt install nginx

Po zainstalowaniu Nginx poniższe polecenia mogą służyć do zatrzymywania, uruchamiania i włączania usługi Nginx, aby zawsze uruchamiała się wraz z uruchomieniem serwera…

sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl włącz nginx.service 

Teraz, gdy Nginx jest zainstalowany…. aby sprawdzić, czy serwer WWW działa, otwórz przeglądarkę i przejdź do adresu URL poniżej…

https: // localhost

Jeśli widzisz powyższą stronę, oznacza to, że Nginx został pomyślnie zainstalowany…

Krok 2: Zainstaluj serwer bazy danych MariaDB

Moodle wymaga również serwera bazy danych do przechowywania zawartości… Jeśli szukasz prawdziwie otwartego serwera bazy danych, MariaDB jest doskonałym miejscem do rozpoczęcia… Aby zainstalować MariaDB, wykonaj poniższe polecenia:

sudo apt-get install mariadb-server mariadb-client

Po zainstalowaniu MariaDB poniższe polecenia mogą służyć do zatrzymywania, uruchamiania i włączania usługi MariaDB, aby zawsze była uruchamiana po uruchomieniu serwera…

Uruchom je na Ubuntu 16.04 LTS

sudo systemctl stop mysql.service sudo systemctl start mysql.service sudo systemctl włącz mysql.service 

Uruchom je na Ubuntu 19.04 i 18.04 LTS

sudo systemctl stop mariadb.service sudo systemctl start mariadb.service sudo systemctl włącz mariadb.service 

Następnie uruchom poniższe polecenia, aby zabezpieczyć serwer bazy danych hasłem root, jeśli nie został wyświetlony monit o zrobienie tego podczas instalacji…

sudo mysql_secure_installation

Po wyświetleniu monitu odpowiedz na poniższe pytania, postępując zgodnie z instrukcjami.

  • Wprowadź aktualne hasło roota (wpisz żadnego): Po prostu naciśnij Enter
  • Ustawić hasło roota? [T / n]: Y
  • Nowe hasło: wprowadź hasło
  • Ponownie wprowadź nowe hasło: powtórz hasło
  • Usunąć anonimowych użytkowników? [T / n]: Y
  • Nie zezwalać na zdalne logowanie przez roota? [T / n]: Y
  • Usunąć testową bazę danych i uzyskać do niej dostęp? [T / n]: Y
  • Załadować teraz ponownie tabele uprawnień? [T / n]: Y

Teraz, gdy MariaDB jest już zainstalowana, aby sprawdzić, czy serwer bazy danych został pomyślnie zainstalowany, uruchom poniższe polecenia…

sudo mysql -u root -p

wpisz hasło roota po wyświetleniu monitu…

Jeśli zobaczysz podobny ekran, jak pokazano powyżej, serwer został pomyślnie zainstalowany…

Krok 3: Zainstaluj PHP 7.2-FPM i powiązane moduły

Moodle CMS jest systemem CMS opartym na PHP i PHP jest wymagane… Jednak PHP 7.2-FPM może nie być dostępne w domyślnych repozytoriach Ubuntu… Aby uruchomić PHP 7.2-FPM na Ubuntu 16.04 i wcześniejszych, może być konieczne wykonanie poniższych poleceń:

sudo apt-get install właściwości-oprogramowania-common sudo add-apt-repository ppa: ondrej / php

Następnie zaktualizuj i zaktualizuj do PHP 7.2-FPM

sudo apt update

Następnie uruchom poniższe polecenia, aby zainstalować PHP 7.2-FPM i powiązane moduły.

sudo apt install php7.2-fpm php7.2-common php7.2-mysql php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-gd php7. 2-xml php7.2-cli php7.2-zip

Po zainstalowaniu PHP 7.2 uruchom poniższe polecenia, aby otworzyć domyślny plik konfiguracyjny PHP dla Nginx…

sudo nano /etc/php/7.2/fpm/php.ini 

Poniższe wiersze to dobre ustawienia dla większości systemów CMS opartych na PHP… Zaktualizuj plik konfiguracyjny za pomocą tych i zapisz… .

file_uploads = On allow_url_fopen = On short_open_tag = On memory_limit = 256 mln cgi.fix_pathinfo = 0 upload_max_filesize = 100 mln max_execution_time = 360 date.timezone = Ameryka / Chicago

Za każdym razem, gdy wprowadzasz zmiany w pliku konfiguracyjnym PHP, powinieneś także zrestartować serwer WWW Nginx… Aby to zrobić, uruchom poniższe polecenia:

sudo systemctl zrestartuj nginx.service

Teraz, gdy PHP jest zainstalowane, aby sprawdzić, czy działa, utwórz plik testowy o nazwie phpinfo.php w domyślnym katalogu głównym Nginx…. ( / var / www / html /)

sudo nano /var/www/html/phpinfo.php

Następnie wpisz zawartość poniżej i zapisz plik.

Następnie otwórz przeglądarkę i przejdź do nazwy hosta serwera lub adresu IP, a następnie phpinfo.php

http: //localhost/phpinfo.php

Powinieneś zobaczyć domyślną stronę testową PHP…

Krok 4: Utwórz bazę danych Moodle

Po zainstalowaniu wszystkich pakietów wymaganych do działania Moodle, kontynuuj poniżej, aby rozpocząć konfigurację serwerów. Najpierw uruchom poniższe polecenia, aby utworzyć pustą bazę danych Moodle.

Aby zalogować się do serwera bazy danych MariaDB, uruchom poniższe polecenia.

sudo mysql -u root -p

Następnie utwórz bazę danych o nazwie moodle

UTWÓRZ Moodle DATABASE;

Utwórz użytkownika bazy danych o nazwie moodleuser z nowym hasłem

UTWÓRZ UŻYTKOWNIKA 'moodleuser' @ 'localhost' IDENTIFIED BY 'new_password_here';

Następnie przyznaj użytkownikowi pełny dostęp do bazy danych.

GRANT ALL ON Moodle. * TO „moodleuser” @ „localhost” IDENTIFIED BY „user_password_here” Z OPCJĄ GRANT;

Na koniec zapisz zmiany i wyjdź.

PRZYWILEJE SPŁUKIWANIA; WYJŚCIE;

Krok 5: Pobierz najnowsze wydanie Moodle

Aby pobrać najnowszą wersję Moodle, możesz skorzystać z repozytorium Github… Zainstaluj Curl i inne zależności, aby rozpocząć…

sudo apt install git curl

Po zainstalowaniu git i curl powyżej, przejdź do katalogu głównego Nginx i pobierz pakiety Moodle z Github… Zawsze zastępuj numer gałęzi najnowszą gałęzią…. Obecna wersja główna to 36… .

cd / var / www / html sudo git clone -b MOODLE_36_STABLE git: //git.moodle.org/moodle.git moodle

Następnie uruchom poniższe polecenia, aby ustawić odpowiednie uprawnienia do działania Moodle.

sudo mkdir -p / var / www / html / moodledata sudo chown -R www-data: www-data / var / www / html / sudo chmod -R 755 / var / www / html /

Krok 6: Skonfiguruj Nginx

Następnie skonfiguruj plik konfiguracyjny witryny Nginx dla Moodle… Ten plik będzie kontrolował sposób, w jaki użytkownicy uzyskują dostęp do zawartości Moodle. Uruchom poniższe polecenia, aby utworzyć nowy plik konfiguracyjny o nazwie example.com

sudo nano /etc/nginx/sites-available/example.com

Następnie skopiuj i wklej poniższą zawartość do pliku i zapisz go. Zastąp podświetlony wiersz własną nazwą domeny i katalogiem głównym.

serwer nasłuchuj 80; słuchaj [::]: 80; nazwa_serwera example.com www.example.com; root /var/www/html/example.com; index.php; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex wyłączony; lokalizacja / try_files $ uri $ uri / = 404;  lokalizacja / dataroot / wewnętrzna; alias / var / www / html / moodledata /;  lokalizacja ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; dołącz fastcgi_params;  

Zapisz plik i zakończ.

Teraz plik example.com plik konfiguracyjny zostanie utworzony, uruchom poniższe polecenia, aby go włączyć…

sudo a2ensite example.com.conf

W tym momencie Nginx powinien być skonfigurowany i gotowy do odpowiedzi przez HTTP… Nie obsługuje jeszcze HTTPS.

Krok 7: Zainstaluj i skonfiguruj Let's Encrypt

Teraz, gdy nasza witryna Nginx jest włączona i gotowa do użycia, uruchom poniższe polecenia, aby zainstalować i skonfigurować Let's Encrypt, aby zabezpieczyć witrynę Nginx…

Pierwsza instalacja Certbot… Certbot to w pełni funkcjonalne i łatwe w użyciu narzędzie, które może zautomatyzować zadania związane z uzyskiwaniem i odnawianiem certyfikatów SSL Let's Encrypt…

Aby go zainstalować, uruchom poniższe polecenia:

sudo apt install certbot

Po zainstalowaniu Certbota utwórz plik dla Let's Encrypt do wtyczki Webroot, aby zweryfikować naszą domenę w $ webroot-path /. well-known / acme-challenge informator… .

Aby to zrobić, utwórz katalog i daj do niego dostęp Nginx…

sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data / var / lib / letsencrypt sudo chmod g + s / var / lib / letsencrypt

Następnie utwórz dobrze znany plik wyzwania z poniższymi konfiguracjami…

sudo nano / etc / nginx / snippets / well-known

Następnie skopiuj i wklej poniższą zawartość do pliku i zapisz…

lokalizacja ^ ~ /.well-known/acme-challenge/ pozwól wszystkim; root / var / lib / letsencrypt /; default_type "tekst / zwykły"; try_files $ uri = 404; 

Zapisz plik i zakończ

Krok 8: Uzyskaj bezpłatny certyfikat

W tym momencie Twoja domena powinna wskazywać adres IP Twojego serwera… Serwer HTTP Nginx został zainstalowany i skonfigurowany, a Certbot jest gotowy do uzyskania certyfikatu…

Zanim poprosisz o bezpłatny certyfikat, otwórz plik konfiguracyjny Nginx example.com utworzony powyżej… .

sudo nano / etc / nginx / sites-available /example.com

Po otwarciu pliku dodaj rozszerzenie podświetlony poniżej do pliku i zapisz…

serwer nasłuchuj 80; słuchaj [::]: 80; nazwa_serwera example.com www.example.com; root /var/www/html/example.com; index.php; dołącz fragmenty / dobrze znane; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex wyłączony; lokalizacja / try_files $ uri $ uri / = 404;  lokalizacja / dataroot / wewnętrzna; alias / var / www / html / moodledata /;  lokalizacja ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; dołącz fastcgi_params; 

Zapisz plik i zakończ

Gdy skończysz, włącz witrynę i uruchom ponownie serwer HTTP Nginx, uruchamiając poniższe polecenia…

sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enabled / sudo systemctl restart nginx.service 

W tym momencie wszystko jest ustawione i jesteś gotowy do uzyskania certyfikatu… Aby to zrobić, uruchom poniższe polecenia:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w / var / lib / letsencrypt / -d example.com -d www.example.com

Let's Encrypt powinno się połączyć, zweryfikować domenę i serwer, a następnie zainstalować certyfikat domeny… Jeśli wszystko się powiedzie, powinien pojawić się podobny komunikat jak poniżej:

WAŻNE UWAGI: - Gratulacje! Twój certyfikat i łańcuch zostały zapisane pod adresem: /etc/letsencrypt/live/example.com/fullchain.pem Twój plik klucza został zapisany pod adresem: /etc/letsencrypt/live/example.com/privkey.pem Twój certyfikat wygaśnie w dniu 2018-08-18. Aby w przyszłości uzyskać nową lub ulepszoną wersję tego certyfikatu, po prostu ponownie uruchom certbot. Aby w sposób nieinteraktywny odnowić * wszystkie * swoje certyfikaty, uruchom „certbot renew” - Jeśli podoba Ci się Certbot, rozważ wsparcie naszej pracy poprzez: Darowizna dla ISRG / Let's Encrypt: https://letsencrypt.org/donate Darowizna dla EFF: https://eff.org/donate-le 

W tym momencie masz certyfikat, teraz przejdź i dodaj go do konfiguracji Nginx dla domeny example.com…

Najpierw wygenerujmy certyfikat wymiany kluczy Diffiego-Hellmana (DH), aby bezpiecznie wymieniać klucze kryptograficzne… Aby to zrobić, uruchom poniższe polecenia, aby wygenerować certyfikat z 2048 bitami…

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Następnie otwórz plik example.com config i spraw, aby wyglądał podobnie do poniższego:

sudo nano /etc/nginx/sites-available/example.com

Skonfiguruj plik tak, aby wyglądał podobnie do poniższego

serwer nasłuchuj 80; nazwa_serwera www.example.com example.com; dołącz fragmenty / dobrze znane; return 301 https: // $ host $ request_uri;  serwer nasłuchiwanie 443 ssl http2; nasłuchuj [::]: 443 ssl http2; nazwa_serwera example.com www.example.com; root /var/www/html/example.com; index.php; if ($ host! = "example.com") return 301 https: //example.com$request_uri;  dołącz fragmenty / dobrze znane; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305: ECDHE-RSA-CHACHA20-POLY1305: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-GCM-SHA256: ECDHE-AES-SHDS RSA-AES256-GCM-SHA384: DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES128-SHA256: ECDHE-RSA-AES128-SHA256: ECDSDHES -128- SHA: ECDHE-RSA-AES256-SHA384: ECDHE-RSA-AES128-SHA: ECDHE-ECDSA-AES256-SHA384: ECDHE-ECDSA-AES256-SHA: ECDHE-RSA-AES256-SHA: DHE128-RSA-AES: DHE128-RSA-AES DHE-RSA-AES128-SHA: DHE-RSA-AES256-SHA256: DHE-RSA-AES256-SHA: ECDHE-ECDSA-DES-CBC3-SHA: ECDHE-RSA-DES-CBC3-SHA: EDH-RSA-DES- CBC3-SHA: AES128-GCM-SHA256: AES256-GCM-SHA384: AES128-SHA256: AES256-SHA256: AES128-SHA: AES256-SHA: DES-CBC3-SHA:! DSS '; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; przelicznik 8.8.8.8 8.8.4.4 ważny = 300s; resolver_timeout 30s; access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; client_max_body_size 100M; autoindex wyłączony; lokalizacja / try_files $ uri $ uri / = 404;  lokalizacja / dataroot / wewnętrzna; alias / var / www / html / moodledata /;  lokalizacja ~ [^ /] \. php (/ | $) include snippets / fastcgi-php.conf; fastcgi_pass unix: /var/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; dołącz fastcgi_params; 

Zapisz zmiany powyżej i uruchom ponownie Nginx, aby powyższe ustawienia zaczęły obowiązywać…

sudo systemctl zrestartuj nginx

Aby skonfigurować proces automatycznego odnawiania certyfikatów, dodaj zadanie cron, aby wykonać proces odnawiania.

sudo crontab -e

Następnie dodaj poniższą linię i zapisz.

0 1 * * * / usr / bin / certbot odnowienie &> / dev / null

Zadanie cron podejmie próbę odnowienia 30 dni przed wygaśnięciem

Krok 9: Włącz Moodle

Następnie otwórz przeglądarkę i przejdź do nazwy domeny serwera. Powinieneś zobaczyć kreatora instalacji Moodle, aby zakończyć. Postępuj zgodnie z instrukcjami kreatora.

http://example.com/

Następnie postępuj zgodnie z instrukcjami wyświetlanymi na ekranie i wybierz język instalacji tutaj…

Następnie wybierz sterownik połączenia MariaDB i kontynuuj…

Na następnym ekranie wprowadź informacje o połączeniu z bazą danych utworzone powyżej i kontynuuj…

Następnie utwórz konto administratora i informacje o witrynie Moodle i zakończ instalację… .

Na tej stronie powinieneś skonfigurować swoje główne konto administratora, które będzie miało pełną kontrolę nad witryną. Upewnij się, że podajesz mu bezpieczną nazwę użytkownika i hasło, a także prawidłowy adres e-mail. Później możesz utworzyć więcej kont administracyjnych.

Gratulacje! Pomyślnie zainstalowałeś Moodle na Ubuntu 16.04 | 18.04 i może działać w nadchodzącym 18.10…

W przyszłości, jeśli zechcesz zaktualizować do nowej wydanej wersji, po prostu uruchom poniższe polecenia, aby zaktualizować…

Uaktualnianie Moodle

Najpierw zatrzymaj serwer internetowy…

sudo systemctl zatrzymaj nginx

Dla uczniów i nowych użytkowników, którzy już zainstalowali Moodle i chcą dokonać aktualizacji, zakładając, że wykonałeś powyższe kroki w celu zainstalowania, uruchom poniższe polecenia, aby wykonać kopię zapasową starego folderu Moodle…

sudo mv /var/www/html/example.com /var/www/html/example.com_bak

Następnie przejdź do katalogu głównego serwera WWW i pobierz najnowszą wersję Moodle z Github… zawsze zmieniaj numer wersji do aktualnego (najnowszego)

cd / var / www / html sudo git clone -b MOODLE_37_STABILNY git: //git.moodle.org/moodle.git example.com

Następnie skopiuj plik konfiguracyjny Moodle, motyw i folder danych… Jeśli zaktualizowałeś swoje motywy… zawartość motywu powinna tam być…. Jeśli zainstalowałeś również dodatkowe moduły… powinieneś je znaleźć w /mod katalog… skopiuj je do nowego folderu Moodle… .

sudo cp /var/www/html/example.com_bak/config.php /var/www/html/example.com sudo cp -pr /var/www/html/example.com_bak/theme/mytheme / var / www / html /example.com/theme/mytheme sudo cp -pr /var/www/html/example.com_bak/mod/mymod /var/www/html/example.com/mod/mymod 

Następnie zaktualizuj uprawnienia serwera internetowego…

sudo chown -R www-data: www-data /var/www/html/example.com/ sudo chmod -R 755 /var/www/html/example.com/

Uruchom ponownie serwer WWW…

sudo systemctl start nginx

Ostatnim krokiem jest uruchomienie procesów aktualizacji w Moodle… Jeśli wcześniej przestawisz witrynę w tryb konserwacji; wyjmij to teraz!

Po przejściu do adresu IP serwera lub nazwy hosta, Moodle powinien poprosić Cię o rozpoczęcie aktualizacji bazy danych… Po aktualizacji bazy danych zaloguj się do Moodle i przejdź do:

Administracja> Administracja witryną> Powiadomienia.

Moodle automatycznie wykryje nową wersję i wykona wszystkie niezbędne aktualizacje bazy danych SQL lub systemu plików. Jeśli jest coś, czego nie może zrobić sam (bardzo rzadko), zobaczysz komunikaty z informacją, co musisz zrobić.

Zakładając, że wszystko pójdzie dobrze (brak komunikatów o błędach), możesz zacząć używać nowej wersji Moodle i cieszyć się nowymi funkcjami!

Otóż ​​to!

Gratulacje! Pomyślnie zainstalowałeś Moodle z obsługą Cloudflare na Ubuntu 16.04 | 18.04




Jeszcze bez komentarzy

Zbiór przydatnych informacji o systemie operacyjnym Linux i nowych technologiach
Świeże artykuły, praktyczne wskazówki, szczegółowe recenzje i poradniki. Poczuj się jak w domu w świecie systemu operacyjnego Linux