Аббревиатура LEMP расшифровывается как Linux, Nginx, MariaDB / MySQL и PHP. Все эти компоненты с открытым исходным кодом и бесплатны для использования. Набор компонентов позволяет размещать в сети веб-сайты и другие веб-приложения. В этой статье рассмотрим как установить и настроить LEMP на Debian 10 Buster.
В качестве сервера баз данных мы будем использовать MariaDB, так как она по многочисленным тестам показывает более высокую производительность. К тому же во многих новых дистрибутивах Linux по умолчанию используется именно MariaDB, в том числе и в Debian 10.
Установка LEMP на Debian 10 Buster
Перед началом установки рекомендуем обновить репозиторий и системные компоненты.
sudo apt update && sudo apt -y upgrade
Шаг 1. Установка вебсервера Nginx
Роль вебсервера в нашем стеке будет играть высокопроизводительный и нетребовательный к ресурсам Nginx. Для его установки введите следующую команду:
sudo apt install nginx
После установки сервер запустится автоматически. Проверить его состояние можно командой:
systemctl status nginx
Надпись Active: active (running) означает что сервер запущен и работает. Если по какой-то причине автозапуск не сработал, запустите его вручную:
sudo systemctl start nginx
Добавим сервер в автозагрузку, для того чтобы он запускался при загрузке ОС:
sudo systemctl enable nginx
Проверим версию:
sudo nginx -v
Вывод будет примерно следующим:
nginx version: nginx/1.14.2
Теперь введите IP-адрес вашего сервера или VPS в адресной строке браузера. Если сервер работает правильно, вы увидите приветственную надпись «Welcome to nginx». Если вы устанавливаете LEMP на локальный компьютер, в браузере нужно ввести 127.0.0.1 или localhost.
Если вы видите ошибку, возможно ваш брэндмауэер запрещает входящие запросы на TCP-порт 80. Открыть этот порт в фаерволе iptables можно следующей командой:
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Если вы используете UFW firewall, введите эту команду:
sudo ufw allow http
Теперь нам нужно пользователя Nginx по умолчанию www-data, сделать владельцем корневой директории (web root), которая находится по адресу /usr/share/nginx/html. По умолчанию владельцем этой директории является пользователь root.
sudo chown www-data:www-data /usr/share/nginx/html/ -R
Шаг 2. Установка сервера баз данных MariaDB.
Для установки MariaDB в Debian 10, никаких дополнительных репозиториев добавлять не нужно:
sudo apt install mariadb-server mariadb-client
Как и в случае с Nginx, сервер MariaDB должен запуститься сразу после установки. Проверим его статус, он должен быть active (running):
systemctl status mariadb
Если статус отличается, запустим вручную:
sudo systemctl start mariadb
И добавим в автозагрузку:
sudo systemctl enable mariadb
Установить root-пароль можно следующей командой:
sudo mysql_secure_installation
На запрос текущего пароля нажимаем Enter. Далее дважды вводим новый. После того как пароль установлен, вам предложат удалить анонимного пользователя, отключить удалённый вход в систему и удалить тестовую базу данных. В целях безопасности на все эти вопросы лучше ответить Yes.
Проверить версию MariaDB можно следующей командой:
mariadb --version
Шаг 3. Установка PHP 7.3 на Debian 10.
На момент написания этой статьи PHP 7.3 является последней стабильной версией PHP. Установим её и несколько дополнительных компонентов:
sudo apt install php7.3 php7.3-fpm php7.3-mysql php-common php7.3-cli php7.3-common php7.3-json php7.3-opcache php7.3-readline
Проверим версию, запустим и добавим в автозагрузку:
php --version sudo systemctl start php7.3-fpm sudo systemctl enable php7.3-fpm
Создание виртуальных хостов Nginx
Процесс создания виртуальных хостов в Nginx и в Apache похож. Для начала отключим виртуальный хост по умолчанию, удалив символическую ссылку из папки sites-enabled:
sudo rm /etc/nginx/sites-enabled/default
Затем создадим конфигурационный файл для нового хоста в каталоге /etc/nginx/conf.d/ с помощью любого текстового редактора, например Nano:
sudo nano /etc/nginx/conf.d/default.conf
Примерное содержимое этого файла должно быть таким:
server { listen 80; listen [::]:80; server_name _; root /usr/share/nginx/html/; index index.php index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.3-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } # disable access to hidden files location ~ /\.ht { access_log off; log_not_found off; deny all; } }
Сохраните файл Ctrl+O и закройте Ctrl+X. Проверить правильность конфигурации можно командой:
sudo nginx -t
Если тест прошёл успешно, перезапускаем Nginx:
sudo systemctl reload nginx
Чтобы проверить работу PHP, создадим файл info.php в корневой директории хоста:
sudo nano /usr/share/nginx/html/info.php
Добавим в него следующее содержимое, затем сохраним и закроем:
<?php phpinfo(); ?>
В адресной строке браузера наберём «ваш-айпи-адрес/info.php». Если видите следующую картину, то PHP в вашем LEMP стеке работает.
Не забудьте удалить файл info.php
sudo rm /usr/share/nginx/html/info.php
На этом всё. LEMP на Debian 10 установлен и функционирует.