Dziś zainstalujemy nasz pierwszy serwer serwujący usługi HTTP. Wykorzystamy do tego następujące składniki:
* Linux,
* Apache,
* MySQL/MariaDB,
* PHP.
Czym to się je?
* O Linuksie już pisałem – wiemy czym jest,
* Apache to otwarty serwer usług HTTP. Jest on dostępny dla wielu systemów operacyjnych, takich jak: Linux, MS Windows, Mac OS czy FreeBSD. Oprogramowanie dystrybuowane jest zgodnie z licencją [Apache License](https://pl.wikipedia.org/wiki/Apache_License),
* MySQL i MariaDB to systemy zarządzania bazami danych. Mogą one posiadać różne silniki (jak InnoDB, MyISAM czy MyRocks). W zależności od używanego silnika różnić się będą między innymi wydajnością, składanią czy zajętością miejsca na dysku,
* PHP to język programowania skryptowego. Jest interpretowany a nie kompilowany (jak na przykład Java). Jest to jeden z głównych języków używanych do budowy stron oraz aplikacji webowych.
No dobrze, trochę teorii już za nami. Ale jak to zainstalować?
Skorzystajmy z informacji z poprzedniego artykułu.
Zakładamy, że repozytoria pakietów zostały zaktualizowane.
Sprawdźmy nasz adres IP:
ip a
W przypadku mojej maszyny wynik wygląda tak:
root@debian:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:d3:3f:ee brd ff:ff:ff:ff:ff:ff
inet 192.168.122.211/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
valid_lft 3096sec preferred_lft 3096sec
inet6 fe80::5054:ff:fed3:3fee/64 scope link noprefixroute
valid_lft forever preferred_lft forever
root@debian:~#
Zatem adresem IP tej maszyny to:
192.168.122.211
Zainstalujmy Apache:
apt-get install apache2
Po instalacji tego pakietu i uruchomieniu przeglądarki możemy w pasek adresu wpisać adres IP naszej maszyny i powinniśmy zobaczyć stronę domyślną naszego serwera Apache:
Kolejnym elementem naszego serwera będzie MariaDB:
apt-get install mariadb-server
Aby zwiększyć bezpieczeństwo naszego systemu wykonajmy teraz polecenie i przejdźmy przez krótki kreator:
mysql_secure_installation
Tak będzie to wyglądać:
root@debian:~# 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
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
You already have your root account protected, so you can safely answer 'n'.
Change the 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!
root@debian:~#
Zauważyć należy, że kreator wymaga utworzenia nowego hasła konta użytkownika – administratora baz danych. Podobnie jak w przypadku systemów Linuksowych nazywa się on root.
Na koniec instalujemy PHP oraz pakiety umożliwiające językowi korzystanie z Apache i MySQL/MariaDB:
apt-get install php libapache2-mod-php php-mysql
Jak zweryfikować czy wszystko działa? Możemy utworzyć specjalny plik – jego nazwa może być dowolna, ale musi mieć rozszerzenie *.php. Dodatkowo zawartość tego pliku to jedna funkcja oraz znaczniki otwarcia i zamknięcia kodu w języku PHP:
touch /var/www/html/index.php
Wpiszmy do niego funkcję pokazującą ustawienia systemu. Najpierw edycja pliku przy pomocy edytora nano:
nano /var/www/html/index.php
I wklejenie treści pliku:
Zapisujemy zmiany w pliku.
Aby plik został wyświetlony zamiast domyślnej strony Apache 2 należy zmienić w konfiguracji serwera informację o domyślnych rodzajach plików i ich kolejności. Edytujemy plik /etc/apache2/mods-enabled/dir.conf:
nano /etc/apache2/mods-enabled/dir.conf
Domyślną treść pliku:
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
Zamieńmy na:
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
Jeśli PHP będzie jedynym językiem do uruchamiania aplikacji webowych warto rozważyć usunięcie pozostałych wpisów i pozostawienie takiej treści:
DirectoryIndex index.php
Restartujemy nasz serwer Apache 2:
systemctl restart apache2.service
Po uruchomieniu pliku w przeglądarce zobaczymy tabelę podobną do tej:
Czy pozostawienie takiego pliku na serwerze, gdzie dostęp może mieć każda osoba jest bezpieczne? Absolutnie nie! Po sprawdzeniu potrzebnych informacji należy jak najszybciej taki plik usunąć.
Voilà!