LAMP to skrót – akronim od bardzo popularnego stacku technologicznego jakim jest Linux, Apache, MySQL/MariaDB oraz PHP.
W tym wpisie zajmiemy się instalacją popularnego LAMP-a na Debianie 10.
Skorzystamy z wersji dostępnych w oficjalnych repozytoriach dystrybucji.
Jeśli są nam potrzebne inne/nowsze wersje MariaDB lub PHP możemy skorzystać z dodatkowych repozytoriów.
Aktualizacja systemu
Jak zwykle przed instalacją nowych paczek warto zaktualizować listy dostępnych pakietów, jak i same zainstalowane już w systemie pakiety, np. za pomocą polecenia:
apt update && apt -y upgrade
Instalacja i konfiguracja MariaDB
MariaDB jest relacyjną bazą danych. MariaDB to fork MySQL. Instalujemy serwer oraz klienta:
apt install -y mariadb-server mariadb-client
W repozytorium Debiana 10 znajduje się MariaDB z serii 10.3, nazwą usługi jest mariadb lub mysql
root@test101:~# systemctl status mysql ● mariadb.service - MariaDB 10.3.15 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2019-08-02 13:30:10 UTC; 11s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 1206 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 4915) Memory: 72.8M CGroup: /system.slice/mariadb.service └─1206 /usr/sbin/mysqld Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: performance_schema Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: Phase 6/7: Checking and upgrading tables Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: Running 'mysqlcheck' with connection arguments: --socket='/var/r Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: # Connecting to localhost... Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: # Disconnecting from localhost... Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: Processing databases Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: information_schema Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: performance_schema Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: Phase 7/7: Running 'FLUSH PRIVILEGES' Aug 02 13:30:10 test101 /etc/mysql/debian-start[1243]: OK
Od razu wykonamy podstawowe zabezpieczenia bazy danych, to jest:
- ustawienie hasła (mocnego!)
- usunięcie anonimowego użytkownika
- wyłączenie zdalnego dostępu dla użytkownika root
- usunięcie bazy danych test oraz dostępu do niej
Wykonamy to uruchamiając poniższą komendę:
root@test101:~# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and you haven't set the root password yet, the password will be blank, so you should just press enter here. Enter current password for root (enter for none): OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB root user without the proper authorisation. Set root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] Y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] Y ... Success! By default, MariaDB comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] Y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB!
Testujemy podłączenie się do bazy:
root@test101:~# mysql -u root -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 55 Server version: 10.3.15-MariaDB-1 Debian 10 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | +--------------------+ 3 rows in set (0.001 sec)
Instalacje serwera WWW Apache
Instalacja serwera Apache sprowadza się do wydania polecenia:
apt install -y apache2
Sprawdzamy wersję i datę kompilacji Apache:
root@test101:~# apache2 -v Server version: Apache/2.4.38 (Debian) Server built: 2019-04-07T18:15:40
Warto w tym momencie wspomnieć, że Debian dostarcza dość specyficznie przygotowany pakiet z serwerem Apache:
- binarka oraz usługa systemd nazywa się apache2 – w miejsce zwyczajowej httpd
- dostępne są dodatkowe pomocnicze skrypty, służące do zarządzania modułami, konfiguracją oraz konfiguracją wirtualnych hostów: a2disconf a2dismod a2dissite a2enconf a2enmod a2ensite a2query
Te ułatwiena, mogą być również postrzegane jako udziwnienia – zwłaszcza przez osoby pracujące wcześniej z Apachem na innych dystrybucjach linuksowych lub unixach.
Tak czy siak, warto się z nimi zapoznać.
Kilka przydatnych poleceń:
apachectl -t #sprawdza popraność składniową plików konfiguracyjnych a2query -M #wypisuje wszystkie włączone moduły Apacha systemctl restart|reload|stop|start apache2
Instalacja PHP (jako moduł Apache)
PHP w wersji 7.3 wraz z kilkoma przydatnymi rozszerzeniami zainstalujemy poleceniem:
apt install php7.3 libapache2-mod-php7.3 php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
Włączamy w Apache moduł php7.3 i restartujemy serwer www.
a2enmod php7.3 systemctl restart apache2
Sprawdzamy wersję PHP:
php -v PHP 7.3.4-2 (cli) (built: Apr 13 2019 19:05:48) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.4, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.4-2, Copyright (c) 1999-2018, by Zend Technologies
Aby sprawdzić działanie PHP wraz z serwerem Apache utworzymy plik /var/www/html/info.php
z zawartością:
<?php phpinfo(); ?>
… poniższym poleceniem:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
Teraz odwiedzamy adres http://IP_SERWERA/info.php
lub jeśli przeprowadzamy całą operację na lokalnym komputerze klikamy link http://127.0.0.1/info.php.
Wyświetli nam się informacja na temat aktualnej konfiguracji PHP.
PHP-FPM wraz z Apache
Kod PHP może być wykonywany na serwerze z Apache na dwa sposoby. Powyżej skonfigurowaliśmy uruchamianie PHP za pomocą modułu php serwera Apache.
PHP możemy także uruchomić za pomocą PHP-FPM (FPM – FastCGI Process Manager).
Zaczynamy od wyłączenia modułu PHP w Apache.
a2dismod php7.3
Instalujemy php7.3-fpm.
apt install php7.3-fpm
Włączamy moduł proxy_fcgi
.
a2enmod proxy_fcgi
Włączamy plik konfiguracyjny /etc/apache2/conf-available/php7.3-fpm.conf
.
a2enconf php7.3-fpm
Restartujemy serwer Apache oraz usługę php-fpm, aby zmiany konfiguracyjne weszły w życie:
systemctl restart apache2 php7.3-fpm
Teraz gdy odświeżymy stronę info.php
, zobaczymy że ServerAPI
zmieniło się na FPM/FastCGI
Gratulacje! Pomyślnie zainstalowaliśmy Apache, MariaDB oraz PHP na serwerze z Debianem 10.
Na koniec warto jeszcze usunąć plik z informacjami o PHP.
rm /var/www/html/info.php