Администрирование FreeBSD, Linux, ... Установка Apache, MySQL, PHP на Debian Mon, April 29 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Установка Apache, MySQL, PHP на Debian Печать
Добавил(а) microsin   

В этом руководстве (перевод статьи [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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page