Jak zainstalować Nginx + PHP + MySQL + phpMyAdmin na Raspberry Pi (Raspbian)

0
179
Rate this post

Uruchomienie serwera WWW na Raspberry Pi może być bardzo ciekawym projektem. Dzięki niemu można nauczyć się podstaw administracji systemem, zarządzania bazą danych oraz programowania webowego. W tym artykule pokażę, jak zainstalować i skonfigurować Nginx, PHP, MySQL i phpMyAdmin na Raspberry Pi z systemem Raspbian.

Uwaga: Poniższe instrukcje są przeznaczone dla osób mających pewne doświadczenie z systemami Linux. Jeśli jesteś początkujący, radzę zachować ostrożność i dokładnie przeczytać wszystkie instrukcje.

Wymagania

  1. Raspberry Pi z zainstalowanym systemem Raspbian
  2. Karta SD o pojemności co najmniej 8 GB
  3. Dostęp do Internetu
  4. Klawiatura, mysz i monitor (opcjonalnie, jeśli korzystasz z SSH)

Kroki wstępne

Zanim przystąpimy do instalacji, upewnijmy się, że system jest aktualny:

bash
sudo apt update
sudo apt upgrade -y

Instalacja Nginx

Nginx to lekki i wydajny serwer WWW. Instalacja w Raspbian jest bardzo prosta:

bash
sudo apt install nginx -y

Po instalacji uruchom serwis:

bash
sudo systemctl start nginx

Możesz teraz otworzyć przeglądarkę i wpisać adres IP swojego Raspberry Pi. Powinieneś zobaczyć stronę powitalną Nginx.

Instalacja PHP

Nginx sam w sobie nie obsługuje PHP, więc musimy doinstalować odpowiednie pakiety:

bash
sudo apt install php-fpm php-mysql -y

Konfiguracja Nginx do pracy z PHP

Otwórz główny plik konfiguracyjny Nginx:

bash
sudo nano /etc/nginx/sites-available/default

Znajdź i zmodyfikuj blok location odpowiedzialny za przetwarzanie plików PHP. Powinien wyglądać mniej więcej tak:

nginx
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}

Zapisz plik i zamknij edytor. Teraz zrestartuj Nginx:

bash
sudo systemctl restart nginx

Instalacja MySQL

MySQL to system zarządzania bazami danych. Do instalacji użyjemy polecenia:

bash
sudo apt install mysql-server php-mysql -y

Po instalacji możesz uruchomić klienta MySQL, aby upewnić się, że wszystko działa:

bash
sudo mysql -u root -p

Instalacja phpMyAdmin

phpMyAdmin to narzędzie webowe do zarządzania bazą danych MySQL. Instalacja jest równie prosta:

bash
sudo apt install phpmyadmin -y

Podczas instalacji system zapyta, jaki serwer WWW chcemy użyć. Wybieramy „Nginx”. Następnie podajemy hasło do bazy danych i konta root.

Integracja z Nginx

Musimy teraz zintegrować phpMyAdmin z Nginx. Otwórz główny plik konfiguracyjny Nginx:

bash
sudo nano /etc/nginx/sites-available/default

Dodaj następujący blok:

nginx
location /phpmyadmin {
root /usr/share/;
index index.php index.html index.htm;
location ~ ^/phpmyadmin/(.+\.php)$ {
try_files $uri =404;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
include fastcgi_params;
}
}

Zapisz zmiany i zrestartuj Nginx:

bash
sudo systemctl restart nginx

Po tych krokach powinieneś mieć działający stos Nginx + PHP + MySQL + phpMyAdmin na swoim Raspberry Pi. To jednak dopiero początek; można teraz zająć się optymalizacją konfiguracji, zabezpieczeniami czy dodaniem własnych stron i aplikacji.

Optymalizacja i Bezpieczeństwo

Zabezpieczenie MySQL

Domyślnie, konto root w MySQL nie ma ustawionego hasła, co jest potencjalnym zagrożeniem. Zabezpieczmy więc naszą bazę danych:

bash
sudo mysql_secure_installation

Podczas tego procesu system zada kilka pytań dotyczących poziomu zabezpieczeń, takich jak ustawienie hasła dla użytkownika root, usuwanie anonimowych użytkowników, dezaktywacja logowania root’a zdalnie itd. Zaleca się akceptowanie większości z tych ustawień.

Optymalizacja PHP

Jednym z kluczowych aspektów optymalizacji jest konfiguracja PHP-FPM (FastCGI Process Manager). Dostosujmy ilość workerów do naszych potrzeb. Otwórz plik konfiguracyjny:

bash
sudo nano /etc/php/7.3/fpm/pool.d/www.conf

Znajdź linie rozpoczynające się od pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers i dostosuj je do swoich potrzeb.

Optymalizacja Nginx

Nginx jest już dość dobrze zoptymalizowany „od pudełka”, ale zawsze można coś poprawić. Otwórz plik konfiguracyjny:

bash
sudo nano /etc/nginx/nginx.conf

Możesz dostosować takie parametry jak worker_processes czy keepalive_timeout w zależności od tego, jakie masz potrzeby i jakie obciążenie planujesz na serwerze.

Firewall

Jeśli planujesz udostępnić swoją stronę w Internecie, konieczne jest skonfigurowanie zapory sieciowej. Na Raspberry Pi możesz użyć ufw (Uncomplicated Firewall):

bash
sudo apt install ufw
sudo ufw enable
sudo ufw allow 22,80,443/tcp

Te polecenia zainstalują i aktywują zaporę, a także otworzą porty dla SSH (22), HTTP (80) i HTTPS (443).

Monitorowanie i Logi

Monitorowanie zasobów

Sprawdzanie zasobów systemu to ważna część utrzymania serwera. Możesz użyć różnych narzędzi, takich jak top, htop czy vmstat do monitorowania użycia CPU, pamięci i dysku.

Logi

Regularne przeglądanie logów pomoże w identyfikacji problemów. Logi dla Nginx znajdziesz w /var/log/nginx/, dla PHP-FPM w /var/log/php7.3-fpm.log, a dla MySQL w /var/log/mysql/error.log.

Backup i Odzyskiwanie

Ostatnim, ale nie mniej ważnym krokiem jest zorganizowanie systemu kopii zapasowych. Możesz użyć narzędzi takich jak rsync do robienia kopii folderów, czy mysqldump do eksportu baz danych.

Kopia folderów

Zakładając, że masz zdalny serwer na którym chcesz przechowywać kopie, możesz użyć rsync w taki sposób:

bash
rsync -avz /var/www/ user@remote-server:/path/to/backup/folder/

Kopia baz danych

Używając mysqldump, możesz zrobić kopię pojedynczej bazy danych:

bash
mysqldump -u root -p nazwa_bazy > backup.sql

Przeszliśmy przez instalację i konfigurację Nginx, PHP, MySQL i phpMyAdmin, a także przez podstawowe kroki optymalizacji i zabezpieczania systemu. Teraz jesteś gotów do postawienia swojego serwera WWW na Raspberry Pi!

Rozszerzenie Funkcjonalności

Po ukończeniu podstawowej konfiguracji i optymalizacji, możesz rozważyć dodanie dodatkowych funkcji i narzędzi, które zwiększą użyteczność Twojego serwera.

Instalacja Certbot dla HTTPS

Dzisiejsze standardy zalecają korzystanie z protokołu HTTPS dla każdej strony internetowej. Aby to zrobić, potrzebujesz certyfikatu SSL. Certbot jest jednym z najpopularniejszych narzędzi do automatycznego zarządzania certyfikatami SSL od Let’s Encrypt.

bash
sudo apt install certbot python3-certbot-nginx -y

Po instalacji, generowanie i instalowanie certyfikatu to już tylko kwestia jednego polecenia:

bash
sudo certbot --nginx

Cron Jobs dla Automatyzacji

Automatyzacja jest kluczem do efektywnego zarządzania serwerem. Cron jest daemonem w systemach Unix, który umożliwia użytkownikom uruchamianie skryptów i poleceń w określonych odstępach czasu.

Aby edytować listę zadań cron dla obecnego użytkownika, wpisz:

bash
crontab -e

Content Management System (CMS)

Jeżeli planujesz uruchomić bloga, portfolio, czy inną stronę z dynamiczną treścią, dobrze jest zainstalować system zarządzania treścią jak WordPress, Joomla, czy Drupal. Dzięki temu nie będziesz musiał ręcznie edytować plików HTML czy PHP.

Konfiguracja poczty e-mail

Jeżeli Twój serwer będzie obsługiwał wysyłanie e-maili, warto zainstalować i skonfigurować system pocztowy jak Postfix wraz z Dovecot dla IMAP/POP3.

Diagnostyka i Debugowanie

Mimo najlepszych intencji, czasami rzeczy idą nie tak jak powinny. Oto kilka wskazówek, jak diagnozować problemy:

Debugowanie Nginx

Jeżeli Nginx nie działa jak oczekiwano, pierwszą rzeczą, którą warto zrobić, to sprawdzić składnię konfiguracji:

bash
sudo nginx -t

Jeżeli komunikat mówi, że wszystko jest w porządku, warto zrestartować serwer:

bash
sudo systemctl restart nginx

Debugowanie PHP

Jeżeli masz problemy z PHP, warto zacząć od przejrzenia logów. Jak wcześniej wspomniano, logi dla PHP-FPM znajdziesz w /var/log/php7.3-fpm.log.

Debugowanie MySQL

Jeżeli MySQL sprawia problemy, pierwszą rzeczą do sprawdzenia są logi w /var/log/mysql/error.log.

Przyszłe Ulepszenia

Po zakończeniu tych wszystkich kroków, Twój serwer Raspberry Pi powinien być gotowy do działania. Ale pamiętaj, że zawsze jest miejsce na ulepszenia. Możesz rozważyć dodanie cache jak Varnish lub Redis, zainstalowanie panelu administracyjnego jak Webmin, czy nawet rozbudowanie serwera o dodatkowe usługi jak serwer FTP czy serwer mediów. Ogranicza Cię tylko Twoja wyobraźnia i zasoby sprzętowe Twojego Raspberry Pi.