В этом руководстве (перевод статьи [1]) мы рассмотрим, как установить Apache2, MySQL 8.0 и PHP 8.1 на Debian 11 (этот комплекс программ обозначают аббревиатурой LAMP, что расшифровывается как Linux+Apache+MySQL+PHP). Также мы установим некоторые общие расширения PHP, и настроим конфигурации PHP. В завершение защитим нашу установку с помощью Let Encrypt SSL и сконфигурируем перенаправление HTTPS. Установка тестировалась на облаке Google, так что аналогичные установки возможны на всех службах облачного хостинга наподобие AWS, Azure, на любом VPS или любом выделенном сервере, рабoтающем под Debian 11.
Предварительные требования для установки LAMP:
• Root-доступ SSH к вашему серверу или доступ пользователя с привилегиями sudo. • Доменное имя, указывающее на IP вашего сервера, для установки Let Encrypt SSL.
[Шаг 1: инициализация установки]
Как обычно, установку следует начать с обновления ссылок на пакеты приложения до самых последних версий.
$ sudo apt update $ sudo apt upgrade
Установите утилиту wget, она может пригодиться для закачки файлов.
После этого можно начинать устанавливать стек LAMP.
[Шаг 2: установка Apache]
Apache установится следующей командой, вместе со всеми требуемыми зависимостями:
$ sudo apt install apache2
[Шаг 3: настройка сетевого экрана]
Мы установим Uncomplicated Firewall (UFW) с Apache, чтобы разрешить доступ для публичного трафика, доступного для портов web-протоколов HTTP и HTTPS.
$ sudo ufw app list
Вы увидите следующий список профилей приложений.
Available applications: Apache Apache Full Apache Secure OpenSSH
Назначение профилей приложений:
• Apache: этот профиль откроет порт 80 (обычный, не зашифрованный веб-трафик). • Apache Full: этот профиль откроет порт 80 (обычный, не зашифрованный веб-трафик) и порт 443 (зашифрованный трафик TLS/SSL). • Apache Secure: этот профиль откроет только порт 443 (зашифрованный трафик TLS/SSL). • OpenSSH: этот профиль откроет порт 22 для доступа через SSH.
Если вы не планируете использовать сертификаты SSL, то потребуется разрешит только профиль Apache. В этом примере настройки мы разрешим Apache Full:
$ sudo uff allow OpenSSH $ sudo ufw allow 'Apache Full'
Следующая команда покажет статус UFW:
$ sudo ufw status
Вывод будет наподобие следующего:
Status: active To Action From -- ------ ---- Apache Full ALLOW Anywhere OpenSSH ALLOW Anywhere Apache Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
[Шаг 4: проверка установки Apache]
После того, как Apache установлен, он запустится автоматически. Все процессы управления Apache обслуживаются командой systemctl. Проверьте статус Apache следующей командой:
$ sudo systemctl status apache2 ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Tue 2022-02-02 10:29:51 UTC; 5min ago Main PID: 10617 (apache2) Tasks: 55 (limit: 667) CGroup: /system.slice/apache2.service ├─10617 /usr/sbin/apache2 -k start ├─10619 /usr/sbin/apache2 -k start └─10620 /usr/sbin/apache2 -k start Feb 02 10:29:51 apache systemd[1]: Starting The Apache HTTP Server... Feb 02 10:29:51 apache systemd[1]: Started The Apache HTTP Server.
В настоящий момент у нас есть установленный веб-сервер Apache и сконфигурирован Firewall.
[Шаг 5: установка MySQL]
Для добавления репозитория MySQL APT в вашу систему, перейдите на страничку загрузки репозиториев, и загрузите пакет последнего релиза следующей командой:
$ wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
Установите пакет релиза:
$ sudo apt install ./mysql-apt-config_0.8.22-1_all.deb
Мы будем устанавливать MySQL версии 8.0. Выберите OK нажатиями клавиши Tab, и нажмите Enter.
Теперь мы можем установить MySQL.
$ sudo apt update $ sudo apt install mysql-server
После завершения установки служба MySQL запустится автоматически. Проверить, работает ли сервер MySQL, можно командой:
$ sudo service mysql status
При нормально работающем сервере MySQL, будет отображен примерно такой вывод:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Main PID: 101929 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1148) Memory: 369.3M CPU: 805ms CGroup: /system.slice/mysql.service └─101929 /usr/sbin/mysqld
Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server... Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.
[Шаг 6: защита MySQL]
Инсталляция MySQL поставляется вместе со скриптом mysql_secure_installation, который позволит вам легко повысить безопасность сервера MySQL:
$ sudo mysql_secure_installation
Скрипт запросит у вас сконфигурировать плагин проверки паролей (VALIDATE PASSWORD PLUGIN), который используется для проверки качества паролей пользователей MySQL и улучшения безопасности. Нажмите y, если вы хотите установить плагин плагин проверки паролей, или нажмите другую клавишу, чтобы перейти на следующий шаг.
На этом шаге будет предложено выбрать один из трех уровней политики проверки паролей (password validation policy): low (низкий уровень), medium (средний уровень) и strong (строгий уровень безопасности). Введите 2 для строгой проверки паролей.
На следующем шаге предложат установить пароль для root-пользователя MySQL. Если вы установили плагин проверки паролей, то скрипт покажет вам, насколько надежный новый пароль вы задали. Введите y для подтверждения пароля.
Далее будет отображен запрос на удаление пользователя anonymous, на ограничение прав доступа root локальной машиной, на удаление тестовой базы данных и на перезагрузку таблиц привилегий. На все вопросы ответьте y.
[Шаг 7: установка PHP]
Добавьте SURY PPA для PHP 8.1:
$ sudo apt -y install lsb-release apt-transport-https ca-certificates $ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Теперь вы можете добавить PPA к пакетам сервера:
$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
Обновите и установите PHP 8.1:
$ sudo apt update $ sudo apt install php libapache2-mod-php php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc \ php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache \ php8.1-soap php8.1-zip php8.1-intl -y
Как только вы установили PHP, можете проверить его версию следующей командой:
php -v
[Шаг 8: конфигурация PHP]
Теперь мы сконфигурируем PHP для приложений Интернет (Web Applications) путем изменения некоторых значений в файле php.ini. Для PHP 8.1 с Apache файл php.ini будет находиться в следующей директории:
$ sudo nano /etc/php/8.1/apache2/php.ini
Нажмите F6 для поиска в редакторе, и обновите следующие значения с целью повышения производительности.
upload_max_filesize = 32M post_max_size = 48M memory_limit = 256M max_execution_time = 600 max_input_vars = 3000 max_input_time = 1000
После того, как вы изменили ваши настройки PHP, нужно перезапустить Apache, чтобы изменения вступили в силу.
[Шаг 9: конфигурация Apache]
Запретите конфигурацию Apache по умолчанию:
$ sudo a2dissite 000-default
Создайте директории веб-сайта (вместо domainname укажите реальное имя вашего зарегистрированного домена):
$ sudo mkdir -p /var/www/html/domainname/public
Настройте для этих директорий корректные разрешения доступа:
$ sudo chmod -R 755 /var/www/html/domainname $ sudo chown -R www-data:www-data /var/www/html/domainname
Создайте файл для конфигурации нового виртуального хоста:
$ sudo nano /etc/apache2/sites-available/domainname.conf
Вставьте в этот новый файл следующие конфигурации:
< VirtualHost *:80> ServerAdmin admin@domainname.com ServerName domainname.com ServerAlias www.domainname.com
DocumentRoot /var/www/html/domainname/public
< Directory /var/www/html/domainname/public> Options Indexes FollowSymLinks AllowOverride All Require all granted < /Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined < /VirtualHost>
Разрешите новую конфигурацию:
$ sudo a2ensite domainname.conf
[Шаг 10: установка Let’s Encrypt SSL]
HTTPS это протокол для защищенной коммуникации между сервером и клиентом (web-браузером). Благодаря введению Let's Encrypt, предоставляющего бесплатные SSL-сертификаты, HTTPS-запросы будут обрабатываться для всех клиентов, а также обеспечивается доверие вашей аудитории.
Здесь мы установим Certbot для инсталляции Let’sEncrypt SSL с помощью Snap.
$ sudo apt update $ sudo apt install snapd -y $ sudo snap install core $ sudo snap refresh core
Установка инструментария Certbot:
$ sudo snap install --classic certbot
Конфигурирование Certbot для исполнения, как команды:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Теперь у нас установлен Certbot, который запускает Let’s Encrypt для Debian 11.
Выполните следующую команду для установки ваших сертификатов:
$ sudo certbot --apache --agree-tos --redirect -m youremail@email.com -d domainname.com -d www.domainname.com
Выберите подходящую опцию и нажмите Enter. Эта команда установит Free SSL, сконфигурирует перенаправление для HTTPS и перезапустит сервер Apache.
[Шаг 11: обновление сертификата SSL]
Сертификаты, которые предоставляет Let’s Encrypt, действительны только в течение 90 дней, так что их понадобится специально обновлять. Проверьте функцию обновления следующей командой:
$ sudo certbot renew --dry-run
Эта команда проверит, истек ли срок действия сертификата, и сконфигурирует функцию автоматического обновления (auto-renewable feature).
[Шаг 12: проверка всей установки]
После того, как вы выполнили все шаги 1 .. 11, для проверки можно создать новый тестовый файл PHP в директории вашего web-сервера:
$ sudo nano /var/www/html/domainname/public/info.php
Вставьте в этот файл следующий код, и сохраните файл:
< ?php phpinfo();
Теперь откройте в браузере ссылку на этот файл (domainname.com/info.php). Вы увидите, что обработка ссылки была выполнена как запрос HTTPS, и откроется страничка с информацией о PHP.
[Ссылки]
1. How to Install LAMP Apache, MySQL, PHP on Debian 11 site:cloudbooklet.com. 2. Установка Nginx + Apache на Debian. |