Введение:
Стек LEMP – это группа программ, которые могут использоваться для обслуживания динамических страниц и приложений, написанных на PHP.В аббревиатуре каждая буква отвечает за отдельную программу:L-Linux,E-Engine-X,M-MySQL,P-PHP.
Эта статья поможет вам установить LEMP на Ubuntu 20.04.
В Serverspace вы можете создать сервер с уже установленным приложением LEMP.
Установка Nginx сервера
Обновим пакеты сервера:
После этого, установим Nginx:
При появлении запроса введите Y, чтобы подтвердить, что вы хотите установить Nginx. После завершения установки веб-сервер Nginx будет активен и запущен на вашем сервере Ubuntu 20.04.
Далее, проверяем включенные профили UFW:
Вам вылезет окно с доступными приложениями:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Рекомендуем включить самый строгий профиль, который будет пропускать необходимый трафик:
Проверим изменения:
Вам должны вылезти следующие команды, которые покажут, что HTTP-трафик, теперь разрешен:
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Затем, введите домен или IP адрес в браузере и вас перенаправит на целевую страницу Nginx по умолчанию:
Если вы видите эту страницу, это означает, что вы успешно установили Nginx и включили HTTP-трафик для вашего сервера:
Установка MySQL
Установим базу данных MySQL,чтобы иметь возможность хранить и управлять данными для нашего сайта. Сделаем это с помощью данных команд:
При появлении запроса подтвердите установку, введя Y, а затем введите ENTER.
Когда установка будет завершена, рекомендуем запустить сценарий безопасности, который предварительно идет вместе с MySQL. Этот скрипт удалит некоторые небезопасные настройки по умолчанию и заблокирует доступ к вашей системе баз данных:
Отвечаем на задаваемые вопросы:
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Имейте в виду, что если вы введете 2 для самого сильного уровня, вы получите ошибки при попытке установить любой пароль, который не содержит цифр, прописных и строчных букв и специальных символов.
После, вас попросят повторить пароль, который не следует путать с системным паролем. Системный пароль-пароль от административного пользователя, у которого есть полный доступ к системе баз данных. Несмотря на то, что метод аутентификации по умолчанию, для пользователя MySQL root, исключает использование пароля, даже если он установлен, вы должны определить надежный пароль здесь в качестве дополнительной меры безопасности.
Если вы включили проверку пароля, вам будет показана сила пароля, и ваш сервер спросит, хотите ли вы продолжить работу с этим паролем. Если вы довольны своим текущим паролем, введите Y для подтверждения:
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Для остальных вопросов нажмите Y и нажмите клавишу ENTER. Это позволит удалить некоторых анонимных пользователей и тестовую базу данных, отключить удаленные корневые логины и загрузить эти новые правила, чтобы MySQL немедленно принял внесенные вами изменения.
Когда вы закончите, проверьте, можете ли вы войти в консоль MySQL, с помощью:
Это позволит подключиться к серверу MySQL в качестве администратора базы данных. Результат должен выглядеть так:
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql>
Чтобы выйти из MySQL,используем:
Для повышения безопасности рекомендуем иметь выделенные учетные записи пользователей с менее широкими привилегиями, настроенными для каждой базы данных, особенно если вы планируете иметь несколько баз данных, размещенных на вашем сервере.
Теперь ваш сервер MySQL установлен и защищен.
Установка PHP
Установим PHP для обработки кода и создания динамического контента сервера.
Чтобы установить пакеты php-fpm и php-mysql, выполним следующие команды:
При появлении запроса введите Y и ENTER для подтверждения установки.
Теперь у нас есть установленные компоненты PHP.
Настройка Nginx
При использовании сервера Nginx мы можем создавать серверные блоки (аналогичные виртуальным хостам в Apache) для упаковки в единый пакет сведений о конфигурации и размещения нескольких доменов на одном сервере. В этой инструкции мы будем использовать vash_domen в качестве примера доменного имени.
В Ubuntu 20.04 Nginx имеет один серверный блок, включенный по умолчанию, и настроен для обслуживания документов из каталога в /var / www / html. Хотя это хорошо работает для одного сайта, это может стать трудным для управления, если вы размещаете несколько сайтов. Создадим структуру каталогов в /var /www для веб-сайта vash_domen, оставив/var/www / html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует каким-либо другим сайтам.
Создаем корневой каталог для vash_domen:
Затем, назначим владельцу каталога переменную $USER, которая будет ссылаться на текущего системного пользователя:
Затем откроем новый конфигурационный файл в каталоге nginx sites-available, используя любой редактор командной строки. Здесь мы будем использовать nano:
Создастся новый пустой файл, в который нужно будет вставить следующие строки:
server {
listen 80;
server_name vash_domen www.vash_domen;
root /var/www/vash_domen;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
}
После редактирование, сохраним и закроем файл. Если вы использовали nano, вы можете сделать это, введя CTRL+X, а затемY и ENTER для подтверждения.
Активируем свою конфигурацию, с помощью конфигурационного файла из каталога nginx sites-enabled:
Это подскажет Nginx какую использовать конфигурацию в следующий раз, когда она будет перезагружена. Вы можете проверить свою конфигурацию на наличие ошибок, с помощью:
Если вы обнаружите какие-либо ошибки, вернитесь к своему конфигурационному файлу, чтобы просмотреть его содержимое, прежде чем продолжить работу
Перезагрузим Nginx для того чтобы все изменения применились:
Наш новый сайт теперь активен, но корень /var/www/vash_domen по-прежнему пуст. Создадим файл index.html в этом месте, чтобы мы могли проверить, что наш новый серверный блок работает так, как ожидалось:
Добавляем в файл следующие строки:
Теперь перейдем в браузер и получим подключимся через доменное имя или IP-адрес вашего сервера:
Если вы увидите данное изображение, значит ваш серверный блок Nginx работает:
Вы можете оставить этот файл на месте в качестве временной целевой страницы для вашего приложения, пока не настроите index.php file для его замены. Как только вы сделаете это, не забудьте удалить или переименовать index.html file из корня вашего документа, так как он будет иметь приоритет по умолчанию.
Теперь ваш стек LEMP полностью настроен.
Проверяем работу PHP совместно с Nginx
Проверить работу вашего стека LEMP для того, чтобы проверить, что Nginx может правильно передавать .php files на ваш PHP-процессор.
Сделаем это, открыв новый файл под названием info.php в любом текстовом редакторе:
Вводим следующие строки в новый файл. Это действительный PHP код, который будет возвращать информацию о вашем сервере:
После этого, сохраним и закроем файл. Если вы использовали nano, вы можете сделать это, введя CTRL+X, а затемY и ENTER для подтверждения.
Теперь, получим доступ, подключившись через браузер, используя домен или IP адрес.
http://domen_servera_ili_IP_adress/info.php
Нам покажется страницу, содержащая подробную информацию о нашем сервере:
После проверки соответствующей информации о вашем PHP-сервере на этой странице, лучше всего удалить созданный вами файл, так как он содержит конфиденциальную информацию. Сделаем это с помощью следующей команды:
Вы всегда можете восстановить этот файл, если он вам понадобится позже.
Проверяем подключение к базе данных
Если вы хотите проверить, способен ли PHP подключаться к MySQL и выполнять запросы к базе данных, нужно создать тестовую таблицу и запросить ее содержимое из PHP-скрипта. Прежде чем мы сможем это сделать, нам нужно создать тестовую базу данных и нового пользователя MySQL, правильно настроенного для доступа к ней.
Мы создадим базу данных с именем primer_database и пользователя с именем primer_user, но вы можете изменить эти название на ваше усмотрение.
Сначала, подключимся к MySQL
Чтобы создать новую базу данных, выполним следующую команду:
Теперь создадим нового пользователя, с необходимыми правами, с помощью следующей команды. Мы используем “very_strong_password”,как пароль для нового пользователя, но вы должны заменить это значение безопасным паролем по вашему собственному выбору:
Теперь даем пользователю права на использование базы данных:
Это даст пользователю полные права доступа к базе данных, а также запретит создавать или изменять другие базы данных на вашем сервере.
После этого, выходим из MySQL с помощью команды:
Вы можете проверить, есть ли у нового пользователя соответствующие права, снова войдя в консоль MySQL, с использованием пользовательских учетных данных:
После входа в консоль MySQL убедитесь, что у вас есть доступ к базе данных:
Если все работает вам выдаст следующий текст:
| Database |
+--------------------+
| example_database |
| information_schema |
+--------------------+
2 rows in set (0.000 sec)
Далее, создаём тестовую таблицу с именем zadanii_list:
Вставляем несколько строк содержимого в тестовую таблицу:
Чтобы подтвердить, сохраненные данные в нашей таблице, запустим ее:
| item_id | content |
+---------+--------------------------+
| 1 | Chto-to vazhnoe | |
+---------+--------------------------+
1 row in set (0.000 sec)
Убедившись, что в тестовой таблице у нас есть действительные данные, выходим из консоли MySQL:
Теперь мы можем создать скрипт PHP, который будет подключаться к MySQL и запрашивать наш контент. Создаем новый PHP-файл в своем пользовательском каталоге, используя предпочитаемый вами редактор. Мы будем использовать nano для этого:
Вставим следующий текст в наш скрипт zadanii_list.php:
После этого, сохраним и закроем файл. Если вы использовали nano, вы можете сделать это, введя CTRL+X, а затемY и ENTER для подтверждения.
Теперь мы можем получить доступ к этой странице в своем браузере, вбив имя домена или IP-адрес, настроенный для вашего сайта, а затем /zadanii_ist.php:
Если все работает правильно, мы увидим следующий текст:
Это означает, что наш PHP готов для подключения и взаимодействия с нашим сервером MySQL.
Вывод:
В этом руководстве мы создали гибкую основу для обслуживания сайтов и приложений PHP для ваших посетителей, используя Nginx в качестве сервера и MySQL в качестве системы баз данных.