Установка LEMP: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
= | = 1 Что такое LEMP = | ||
'''LEMP''' — набор программного обеспечения, необходимый для работы веб-сайтов. | '''LEMP''' — набор программного обеспечения, необходимый для работы веб-сайтов. | ||
Строка 8: | Строка 8: | ||
* '''P'''HP — интерпретатор применяемого в разработке web-приложений языка PHP. Иногда его меняют на Perl или Python. | * '''P'''HP — интерпретатор применяемого в разработке web-приложений языка PHP. Иногда его меняют на Perl или Python. | ||
= 2 Установка веб-сервера Engine-X (Ngnix) = | |||
Nginx позволяет обеспечить стабильно высокую производительность сайтов даже при очень высоких нагрузках. | Nginx позволяет обеспечить стабильно высокую производительность сайтов даже при очень высоких нагрузках. | ||
Строка 35: | Строка 33: | ||
Для этого добавим отдельную директорию и создадим в ней наш новый конфигурационный файл:<br> | Для этого добавим отдельную директорию и создадим в ней наш новый конфигурационный файл:<br> | ||
<code>mkdir -p /etc/systemd/system/nginx.service.d/</code> | <code>mkdir -p /etc/systemd/system/nginx.service.d/</code><br> | ||
<code>touch /etc/systemd/system/nginx.service.d/restart.conf</code> | <code>touch /etc/systemd/system/nginx.service.d/restart.conf</code> | ||
Строка 72: | Строка 70: | ||
: [[Файл:Lemp 8.png|thumbnail|none|upright 2.5]] | : [[Файл:Lemp 8.png|thumbnail|none|upright 2.5]] | ||
= 3 Установка сервера баз данных = | |||
Здесь Вы можете выбрать самостоятельно какой сервер поставить, ниже приведены примеры для установки MySQL и MariaDB | Здесь Вы можете выбрать самостоятельно какой сервер поставить, ниже приведены примеры для установки MySQL и MariaDB | ||
== | == 3.1 Установка MariaDB == | ||
MariaDB — сервер баз данных с открытым исходным кодом. Процесс установки состоит из двух шагов: установки и запуска автоматическая настройки безопасности. | MariaDB — сервер баз данных с открытым исходным кодом. Процесс установки состоит из двух шагов: установки и запуска автоматическая настройки безопасности. | ||
Строка 116: | Строка 112: | ||
[[Файл:Lamp 6.png|thumbnail|none|upright 2.5]] | [[Файл:Lamp 6.png|thumbnail|none|upright 2.5]] | ||
== 3.2 Установка MySQL == | |||
MySQL — самый популярный сервер баз данных. Установка состоит из двух этапов: | MySQL — самый популярный сервер баз данных. Установка состоит из двух этапов: | ||
; Ubuntu и Debian<nowiki>:</nowiki> | ; Ubuntu и Debian<nowiki>:</nowiki> | ||
Строка 160: | Строка 154: | ||
[[Файл:Lamp 8.png|thumbnail|none|upright 2.5]] | [[Файл:Lamp 8.png|thumbnail|none|upright 2.5]] | ||
= 4 Установка PHP и дополнительных расширений = | |||
Проверить доступную для установки версию PHP можно командой: | Проверить доступную для установки версию PHP можно командой: | ||
; Ubuntu и Debian<nowiki>:</nowiki> | ; Ubuntu и Debian<nowiki>:</nowiki> | ||
Строка 240: | Строка 232: | ||
: <code>systemctl reload nginx && systemctl reload php-fpm</code> | : <code>systemctl reload nginx && systemctl reload php-fpm</code> | ||
= 5 Настройка базового конфигурационного файла для сайта = | |||
Чтобы веб-сервер мог корректно обрабатывать запросы к сайтам, осталось добавить базовый конфигурационный файл вместо установленного по умолчанию. | Чтобы веб-сервер мог корректно обрабатывать запросы к сайтам, осталось добавить базовый конфигурационный файл вместо установленного по умолчанию. | ||
Строка 318: | Строка 308: | ||
<code>systemctl reload nginx</code> | <code>systemctl reload nginx</code> | ||
= 6 Проверка параметров PHP через phpinfo() = | |||
Чтобы вывести подробный список параметров PHP, можно использовать функцию '''phpinfo()'''. | Чтобы вывести подробный список параметров PHP, можно использовать функцию '''phpinfo()'''. | ||
Текущая версия на 17:04, 19 марта 2023
1 Что такое LEMP
LEMP — набор программного обеспечения, необходимый для работы веб-сайтов.
В него входят:
- Linux — операционная система;
- Engine-X (nginx) — веб-сервер;
- MySQL / MariaDB — сервер баз данных;
- PHP — интерпретатор применяемого в разработке web-приложений языка PHP. Иногда его меняют на Perl или Python.
2 Установка веб-сервера Engine-X (Ngnix)
Nginx позволяет обеспечить стабильно высокую производительность сайтов даже при очень высоких нагрузках.
Он популярен для обеспечения работы высоконагруженных веб-сервисов — используется Yandex, Mail.ru, VKontakte, Habr и др.
Важно помнить, что многие популярные CMS (например, WordPress) заточены под работу с Apache, поэтому некоторые их функции не будут работать под Nginx-ом без специфических настроек.
Установка выполняется в один шаг:
- Ubuntu и Debian:
apt update && apt -y install nginx
- CentOS:
yum -y install nginx
После установки проверим, что веб-сервер запустился:
systemctl status nginx
На Ubuntu и Debian службы после установки запускаются и добавляются в автозапуск автоматически, на Centos это нужно сделать вручную.
Запустить веб-сервер и настроить его автоматический старт после загрузки системы можно следующим образом:
systemctl start nginx && systemctl enable nginx
Дополнительно можно настроить веб-сервер на автоматический перезапуск в случае аварийного отключения службы.
Для этого добавим отдельную директорию и создадим в ней наш новый конфигурационный файл:
mkdir -p /etc/systemd/system/nginx.service.d/
touch /etc/systemd/system/nginx.service.d/restart.conf
Откроем файл в любом консольном текстовом редакторе:
- Ubuntu и Debian:
nano /etc/systemd/system/nginx.service.d/restart.conf
- В качестве примера приведён редактор nano. Для сохранения файла нажмите сочетание Ctrl + O, проверьте имя файла и нажмите Enter. Для выхода из файла нажмите сочетание Ctrl + X.
- CentOS:
vim /etc/systemd/system/nginx.service.d/restart.conf
- В качестве примера приведён консольный редактор vim. Для входа в режим редактирования на клавиатуре нажмите I. Для выхода из режима редактирования нажмите Esc. Для сохранения и выхода из файла введите сочетание :wq Для выхода без сохранения введите :q!
И добавим туда следующие строки:
[Service] Restart=always RestartSec=5s
Сохраним файл и перезагрузим менеджер служб:
systemctl daemon-reload
На CentOS после установки нужно отредактировать настройки встроенного фаервола:
firewall-cmd --permanent --zone=public --add-service=http --add-service=https
firewall-cmd --reload
Проверить, что настройки успешно применились, можно с помощью команды:
firewall-cmd --list-all
В блоке Services в списке должны отображаться http и https.
Чтобы проверить, что веб-сервер заработал и может обрабатывать запросы к серверу, введите IP-адрес вашего сервера в адресной строке браузера.
Откроется приветственная страница Nginx:
- Ubuntu и Debian:
- CentOS:
3 Установка сервера баз данных
Здесь Вы можете выбрать самостоятельно какой сервер поставить, ниже приведены примеры для установки MySQL и MariaDB
3.1 Установка MariaDB
MariaDB — сервер баз данных с открытым исходным кодом. Процесс установки состоит из двух шагов: установки и запуска автоматическая настройки безопасности.
Установка:
- Ubuntu и Debian:
apt -y install mariadb-server mariadb-client
- CentOS:
yum -y install mariadb mariadb-server
Чтобы проверить, что сервер баз данных запустился и работает без ошибок, выполните команду:
systemctl status mariadb
Если сервис не запустился автоматически (статус dead), активируйте и добавьте службу в автозагрузку вручную:
systemctl start mariadb && systemctl enable mariadb
После установки можно проверить версию установленного сервера баз данных:
- Ubuntu и Debian:
mariadb --version
- CentOS:
mysql --version
Для редактирования параметров безопасности запустите встроенный инструмент настройки:
mysql_secure_installation
C его помощью вы сможете отключить небезопасные опции, которые по умолчанию включены для работы тестового режима после установки. На первом шаге скрипт предложит ввести текущий пароль root от сервера баз данных.
По умолчанию после установки он не задан, достаточно нажать Enter.
После этого будет предложено подтвердить или отклонить дополнительные настройки безопасности — для согласия введите y (yes), для отказа — любую другую клавишу и нажмите Enter.
Рекомендуется подтвердить все параметры, так как они воплощают базовые рекомендации по безопасности сервера БД.
- Новый пароль root для сервера баз данных — потребуется ввести и подтвердить новый пароль;
- Удаление анонимных пользователей (один присутствует по умолчанию для тестового режима);
- Отключение удалённого доступа для пользователя root;
- Удаление тестовой базы данных и доступов к ней;
- Перезагрузка таблиц для применения новых параметров.
3.2 Установка MySQL
MySQL — самый популярный сервер баз данных. Установка состоит из двух этапов:
- Ubuntu и Debian:
apt -y install mysql-server
- CentOS:
yum -y install mysql-server
После установки нужно проверить, запустился ли MySQL:
- Ubuntu и Debian:
systemctl status mysql
- CentOS:
systemctl status mysqld
При необходимости — запустить его и добавить в автозапуск вручную:
- Ubuntu и Debian:
systemctl start mysql && systemctl enable mysql
- CentOS:
systemctl start mysqld && systemctl enable mysqld
Проверить версию установленного сервера баз данных можно командой:
mysql --version
По умолчанию после установки сервер MySQL имеет несколько небезопасных опций. Чтобы их отключить, нужно запустить автоматическую настройку безопасности:
mysql_secure_installation
В процессе система предложит настроить компонент для проверки надёжности паролей, запросит новый пароль для пользователя root сервера MySQL.
После этого будет предложено подтвердить или отклонить дополнительные настройки безопасности — для согласия введите y (yes), для отказа — любую другую клавишу и нажмите Enter.
Рекомендуется подтвердить все параметры, так как они воплощают базовые рекомендации по безопасности сервера БД.
Список настраиваемых параметров по порядку:
- Активация модуля проверки надёжности паролей
- Выбор уровня надёжности (0 — слабый / 1 — средний/ 2 — сильный)
- Ввод и подтверждение нового пароля для root-пользователя MySQL
- Удаление анонимных пользователей
- Отключение удалённого подключения к БД для root-пользователя MySQL
- Удаление открытой тестовой базы данных
- Перезагрузка таблиц привилегий для применения новых настроек
4 Установка PHP и дополнительных расширений
Проверить доступную для установки версию PHP можно командой:
- Ubuntu и Debian:
apt show php
- CentOS:
yum info php
Знать её нужно для корректной установки нужных компонентов на следующем шаге (для Ubuntu и Debian). В примере версия PHP — 7.4.
Вам при установке нужно заменить её в команде на ту, которая доступна для вашей операционной системы.
Если версия по умолчанию вам подходит, после этого можно запустить установку:
- Ubuntu и Debian:
apt -y install php7.4 libapache2-mod-php7.4 php-mysql php7.4-xml php7.4gd php7.4mbstring php7.4-zip
- Будьте внимательны — в названии пакетов вам нужно указать ту версию PHP, которую отобразила система при проверке на предыдущем шаге.
- CentOS:
yum -y install php php-mysqlnd php-common php-cli php-json php-opcache php-mbstring php-zip
Проверим установленную версию:
php -v
Установленная версия PHP автоматически настроится в качестве модуля Apache. После этого потребуется перезагрузить веб-сервер:
- Ubuntu и Debian:
systemctl restart apache2
- CentOS:
systemctl restart httpd
Дополнительные расширения PHP, доступные для установки, можно посмотреть командой:
- Ubuntu и Debian:
- Для конкретной версии:
apt-cache search php | egrep '7.4' | grep module
- Для версии по умолчанию:
apt-cache search php | egrep 'module' | grep default
- CentOS:
yum search php | grep module
Установить выбранный модуль можно командой:
- Ubuntu и Debian:
apt -y install php7.4-soap
- CentOS:
yum -y install php-soap
После установки PHP запускаем менеджер процессов php-fpm и добавляем его в автозагрузку:
- Ubuntu и Debian:
systemctl start php7.4-fpm && systemctl enable php7.4-fpm
- CentOS:
systemctl start php-fpm && systemctl enable php-fpm
Проверим установленную версию PHP:
php -v
После установки PHP нужно отредактировать настройки php-fpm по умолчанию, предназначенные для веб-сервера Apache:
- Ubuntu и Debian:
nano /etc/php/7.4/fpm/pool.d/www.conf
- CentOS:
vim /etc/php-fpm.d/www.conf
В файле ищем блок кода Unix user/group of processes и меняем apache на www-data для Debian и Ubuntu и nginx для CentOS.
Остался последний штрих. Открываем для редактирования конфигурационный файл PHP:
- Ubuntu и Debian:
nano /etc/php/7.4/fpm/php.ini
- CentOS:
vim /etc/php.ini
В файле ищем раздел Paths and Directories (он почти в самом конце файла), внутри находим параметр cgi.fix_pathinfo. Нужно раскомментировать его (удалить «;» в начале строки) и изменить значение с 1 на 0.
После этого сохраняем файл и перезапускаем веб-сервер, чтобы новые настройки применились:
- Ubuntu и Debian:
systemctl reload nginx && systemctl reload php7.4-fpm
- CentOS:
systemctl reload nginx && systemctl reload php-fpm
5 Настройка базового конфигурационного файла для сайта
Чтобы веб-сервер мог корректно обрабатывать запросы к сайтам, осталось добавить базовый конфигурационный файл вместо установленного по умолчанию.
Для этого:
- Удаляем конфигурационный файл default, использующийся по умолчанию, и создаём его замену, default.conf:
- Ubuntu и Debian:
unlink /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/default.conf
ln /etc/nginx/sites-available/default.conf /etc/nginx/sites-enabled/default.conf
- CentOS:
touch /etc/nginx/conf.d/default.conf
- Откроем новый файл в консольном текстовом редакторе и добавим туда содержимое:
- Ubuntu и Debian:
nano /etc/nginx/sites-available/default.conf
- CentOS:
vim /etc/nginx/conf.d/default.conf
- Скопируйте в файл следующий блок настроек:
- Ubuntu и Debian:
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/ =404; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { access_log off; log_not_found off; deny all; } }
- CentOS:
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/ =404; } location ~ \.php$ { fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { access_log off; log_not_found off; deny all; } }
Осталось проверить, что в конфигурационном файле отсутствуют ошибки, и перезапустить nginx для применения настроек:
nginx -t
systemctl reload nginx
6 Проверка параметров PHP через phpinfo()
Чтобы вывести подробный список параметров PHP, можно использовать функцию phpinfo().
Это может пригодиться в том числе при отладке настроек сайта после размещения на сервере.
Для начала перейдите в корневую директорию вашего сайта.
Если сайта ещё нет, по умолчанию это каталог /var/www/html. Создайте файл с именем info.php и откройте его в любом консольном текстовом редакторе:
touch /var/www/html/info.php vim /var/www/html/info.php
В качестве примера приведён консольный редактор vim. Для входа в режим редактирования на клавиатуре нажмите I. Для выхода из режима редактирования нажмите Esc. Для сохранения и выхода из файла введите сочетание :wq Для выхода без сохранения введите :q!
В файл вставьте следующую конструкцию:
<?php phpinfo(); ?>
Теперь при переходе по ссылке типа «http://IP-адрес-сервера/info.php» вы увидите полный список параметров PHP на вашем сервере
Не забудьте удалить этот файл после проверки. Если оставить его в открытом доступе, информация из него может быть использована злоумышленниками для атак на ваш сайт.
rm /var/www/html/info.php