Instalacja LAMP na Debianie 10

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

Dodaj komentarz