В этом руководстве я расскажу как на операционной системе Debian или Ubuntu развернуть полноценный веб-сервер с поддержкой PHP и MySQL.
Вдаваться в тонкости установки операционной системы в данном руководстве мы не будем, полагаем у вас уже имеется установленный и рабочий экземпляр Debian или Ubuntu, далее приступаем к установке компонентов сервера.
Шаг 1. Установка веб-сервера Apache и утилит для его работы.
Выполняем в терминале команду:
sudo apt install apache2 apache2-utils
После установки Apache должен автоматически запуститься, проверим его работу командой:
systemctl status apache2
Мы должны будем получить следующий вывод:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-02-13 07:25:18 EST; 22h ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 22151 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 22157 (/usr/sbin/apach)
Tasks: 10 (limit: 2294)
Memory: 108.8M
CPU: 7.113s
CGroup: /system.slice/apache2.service
├─22157 /usr/sbin/apache2 -k start
├─22160 /usr/sbin/apache2 -k start
├─22161 /usr/sbin/apache2 -k start
├─22162 /usr/sbin/apache2 -k start
├─22163 /usr/sbin/apache2 -k start
├─22164 /usr/sbin/apache2 -k start
├─22167 /usr/sbin/apache2 -k start
├─28899 /usr/sbin/apache2 -k start
├─28900 /usr/sbin/apache2 -k start
└─28901 /usr/sbin/apache2 -k start
Если Apache не запустился, инициируем его запуск вручную с помощью команды:
sudo systemctl start apache2
Сделаем запуск Apache автоматическим при загрузке Debian:
sudo systemctl enable apache2
Теперь можете проверить открывается ли стартовая страница Apache на 80 порту, для этого в браузере введите IP-адрес компьютера, на котором установлен Debian, должна открыться стандартная веб-страница Apache:
Далее сделаем пользователя www-data (пользователя Apache) владельцем корневой директории, в которой у нас будут лежать файлы сайта:
sudo chown www-data:www-data /var/www/html/ -R
Шаг 2. Установка сервера баз данных MardiaDB (ответвление от системы управления базами данных MySQL)
Выполняем команду:
sudo apt install mariadb-server mariadb-client
После установки проверим работоспособность SQL-сервера:
systemctl status mariadb
Мы должны получить следующий вывод:
● mariadb.service - MariaDB 10.5.18 database server
Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2023-02-13 06:44:33 EST; 23h ago
Docs: man:mariadbd(8)
https://mariadb.com/kb/en/library/systemd/
Main PID: 14292 (mariadbd)
Status: "Taking your SQL requests now..."
Tasks: 25 (limit: 2294)
Memory: 264.8M
CPU: 2min 36.734s
CGroup: /system.slice/mariadb.service
└─14292 /usr/sbin/mariadbd
Если MariaDB не поднялась, запускаем вручную:
sudo systemctl start mariadb
Сделаем запуск MariaDB автоматическим при загрузке Debian:
sudo systemctl enable mariadb
Запустим мастер настройки безопасности:
mysql_secure_installation
MariaDB просит нас ввести пароль root:
Enter current password for root (enter for none):
Нажимаем Enter, так как текущий пароль root в MariaDB у нас пустой.
Далее вопрос:
Switch to unix_socket authentication [Y/n]
Вводим Y, если мы хотим оставить возможность аутентификации через unix-сокет — это нововведение появилось именно в 10.4, плагин позволяет использовать присутствующие в системе учётные записи для подключения к СУБД при помощи локального unix-сокета. Делайте так, как вам удобней, лично я выбрал N.
Далее вопрос:
Change the root password? [Y/n]
Вводим Y, да мы хотим поменять пароль root и далее придумываем СЛОЖНЫЙ пароль root.
Далее вопрос:
Remove anonymous users? [Y/n]
Вводим Y, мы хотим удалить анонимного пользователя.
Далее вопрос:
Disallow root login remotely? [Y/n]
Вводим Y, да мы хотим запретить подключаться под пользователем root с удаленных машин.
Далее вопрос:
Remove test database and access to it? [Y/n]
Вводим Y, да мы хотим удалить тестовую базу test.
И последний вопрос:
Reload privilege tables now? [Y/n]
Вводим Y, да мы хотим перезагрузить таблицу привилегий для вступления их в силу.
После этого мы выполнили минимальные меры по защите нашего экземпляра MariaDB.
Шаг 3. Устанавливаем поддержку компонентов PHP
Выполняем команду:
sudo apt install php libapache2-mod-php php-mysql php-common php-cli php-common php-json php-opcache php-readline
Узнаем версию установленного PHP:
php --version
В нашем случае установился PHP версии 7.4.
Далее включаем поддержку PHP в Apache: sudo a2enmod php7.4
После этого нам необходимо перезапустить Apache: sudo systemctl restart apache2
Далее проверим работу PHP, для этого создадим PHP файл в корневой директории Apache:
sudo nano /var/www/html/info.php
В данный файл необходимо вставить следующий код:
<?php phpinfo(); ?>
Сохраняем файл комбинацией Ctrl+X и выходим из редактора.
Перейдем по IP-адресу вашего Debian и укажем путь к файлу info.php, проверим работоспособность PHP.
Как видим Apache успешно обрабатывает PHP.
На этом установка веб-сервера считается завершенной, однако мы сделали лишь основные шаги не затронув настройку безопасности, но это уже тема для другой статьи.