nginx php mysql ubuntu
Как установить Linux, Nginx, MySQL, PHP (LEMP) в Ubuntu 18.04/20.04
LEMP — стек технологий, используемый для развертывания веб-приложений. В отличии от LAMP, в LEMP вместо Apache устанавливается Nginx.
В REG.RU вы можете заказать облачный сервер с установленным шаблоном LEMP на базе операционной системы Ubuntu 20.04. В данной статье описана ручная установка LEMP на Ubuntu 18.04/20.04.
Сравнение серверов Apache и Nginx
1 этап. Подготовка сервера
Все действия по установке производятся на сервере через подключение по SSH.
Создание пользователя
Все действия по установке LEMP рекомендуем выполнять не через пользователя root. Рекомендуем создать пользователя с sudo-правами. Так вы дополнительно обезопасите свой сервис и избежите случайных ошибок, которые могут сломать вашу операционную систему.
Чтобы создать пользователя, введите команду:
Где UserName — имя нового пользователя.
Система попросит ввести пароль для нового пользователя и дополнительную информацию:
Теперь установите права доступа, чтобы новый пользователь мог использовать команду sudo. Для этого выполните команду:
Где UserName — имя созданного ранее пользователя.
Готово. Новый пользователь создан. Завершите SSH-сеанс под root и подключитесь к серверу под новым пользователем. Или введите команду:
Обновление операционной системы
Прежде чем установить на Ubuntu LEMP, нужно обновить операционную систему до актуального состояния с помощью команды:
2 этап. Установка Nginx
Для установки Nginx введите команду:
На этом установка закончена. В Ubuntu Nginx настроен на запуск сразу после установки.
Настройка Nginx
Для корректной работы Nginx необходимо настроить firewall, открыть порты для подключения к серверу.
Чтобы открыть доступ для подключения к серверу по HTTP, выполните команды:
Если вы планируете использовать SSL-сертификат, для подключения по HTTPS выполните команду:
При переходе по IP-адресу вашего сервера откроется страница Nginx:
Готово. Установка Nginx завершена.
3 этап. Установка MySQL
Далее нам необходимо установить систему управления базами данных MySQL.
В зависимости от версии MySQL во время установки вам будет предложено ввести пароль root-пользователя (пароль администратора) сервера баз данных:
Если это окно не появилось, значит настройка MySQL для вашей версии выполняется без пароля. Аутентификация для пользователя root в этом случае происходит при помощи плагина auth_socket. Чтобы проверить способ аутентификации:
На экране вы увидите:
Настройка безопасности MySQL
После того как вы смогли установить MySQL в Ubuntu, выполните скрипт безопасности. Для этого следуйте инструкции:
Запустите скрипт командой:
Введите «Y» и нажмите Enter:
Вам нужно задать допустимую сложность пароля от 0 до 2 при помощи плагина VALIDATE PASSWORD, где:
0 — слабый пароль из 8 и более символов. Использование цифр и специальных символов не обязательно;
1 — средний пароль из 8 и более символов. Обязательно использование цифр и специальных символов;
2 — сложный пароль из 8 и более символов. Обязательное использование цифр и специальных символов и запрет на использование общих фраз.
Для этого введите нужную цифру и нажмите Enter. Затем задайте и подтвердите пароль. В будущем плагин не позволит использовать пароли, которые не соответствуют уровню, который вы выбрали.
На каждом следующем этапе вам нужно ввести «Y» и нажать Enter. Таким образом вы:
удалите анонимных пользователей,
запретите удалённое подключение для root-пользователя,
удалите тестовую базу данных,
перезагрузите таблицу привилегий.
Готово, первоначальная настройка безопасности MySQL выполнена.
Работа с базой данных
Для работы с базой данных вам необходимо создать пользователя и саму базу.
После установки MySQL автоматически будет создан root-пользователь. Работать с базой данных под root небезопасно, поэтому необходимо создать нового пользователя и назначить ему права доступа.
Запустите сервер базы данных с помощью команды:
Система запросит пароль, который был указан при установке MySQL.
Как создать пользователя
Создайте пользователя с помощью команды:
Замените значения внутри кавычек:
Назначьте все права доступа для созданного пользователя:
Не забудьте изменить user-name на логин, который был указан при создании пользователя.
Чтобы изменения вступили в силу, введите команду:
Как создать базу данных
Для создания базы данных введите команду:
Где BaseName — это название базы данных.
Готово. Теперь вы можете удалённо подключиться к базе данных или привязать её к вашему проекту. Чтобы завершить работу с MySQL, нажмите Ctrl + D.
4 этап. Установка PHP Ubuntu
Для установки PHP введите команду:
Настройка PHP Ubuntu
Теперь настройте безопасность интерпретатора, чтобы избежать запуск нежелательных файлов. Для этого откройте файл конфигурации командой:
Если ни одна из команд не подходит, узнайте версию PHP на вашем сервере командой:
Затем выполните команду:
Вместо X.X подставьте версию PHP на вашем сервере.
По умолчанию, если запрашиваемый PHP файл будет не найден, то интерпретатор попытается исполнить ближайший файл, который сможет найти. Данная настройка позволит ограничить доступ к файлам.
Сохраните изменения в файле и закройте его:
Установка Nginx и PHP-FPM в Ubuntu 20.04
Интерпретатор языка программирования PHP может работать в нескольких режимах. Он может быть интегрирован в веб-сервер в виде специального модуля или использоваться как отдельный сервис PHP-FPM. Аббревиатура FPM расшифровывается как FastCGI Process Manager. Это сервис, который запускает несколько процессов, которые могут выполнять PHP скрипты.
PHP-FPM может получать скрипты, которые надо выполнить, с помощью TCP или Unix сокетов. Именно такой способ выполнения скриптов используется в Nginx. В этой статье мы рассмотрим как выполняется установка Nginx с PHP-FPM в Ubuntu.
Установка Nginx на Ubuntu 20.04
Установить Nginx можно двумя способами. Первый способ заключается в установки пакета из официального репозитория Ubuntu. На момент написания статьи (1 августа 2021 года) актуальной версией Nginx присутствующей в репозитории Ubuntu была версия 1.18.0. Данная версия считается устаревшей. Актуальной же версией считается 1.20.1 (по состоянию на 1 августа 2021 года).
1. Официальные репозитории Ubuntu
Если вы хотите установить версию Nginx из репозиториев Ubuntu необходимо выполнить следующие действия. Для начала обновляем списки пакетов при помощи команды:
Для того, чтобы установить Nginx, достаточно выполнить команду:
После этого программу можно использовать. Проверка и настройка программы будет описана в разделах ниже.
2. Официальные репозитории Nginx
Второй способ заключается в установке последней версии Nginx из официальных репозиториев, которые предоставляют разработчики Nginx. Если вы хотите использовать данный метод установки, для начала необходимо обновить списки пакетов при помощи команды:
Установите необходимые пакеты:
Далее у вас на выбор есть два пути – подключить репозиторий со стабильной версией nginx или подключить репозиторий с основной версией. Стабильная версия является более проверенной и работоспособной. Эту версию можно использовать, как и в тестовых средах так и на производственных. Основная версия не такая стабильная и может содержать ошибки. Данную версию не рекомендуется использовать в производственных средах.
Для подключения репозитория со стабильной версией nginx, выполните следующую команду:
Для подключения репозитория с основной версией nginx, выполните следующую команду:
Следующие шаги необходимо выполнять вне зависимости от выбранного репозитория. Импортируйте официальный ключ, используемый пакетным менеджером для проверки подлинности пакетов:
Проверьте, верный ли ключ был загружен:
Вывод команды должен содержать полный отпечаток ключа 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:
Переместите ключ в каталог доверенных ключей apt:
sudo mv /tmp/nginx_signing.key /etc/apt/trusted.gpg.d/nginx_signing.asc
Чтобы установить nginx, выполните следующие команды:
Версия Nginx от разработчиков немного отличается от версии из официальных репозиториев. Все дополнительные конфигурационные файлы здесь находятся в папке /etc/nginx/conf.d. Если вы хотите использовать папки sites-available и sites-enabled, то необходимо их создать:
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Затем добавьте следующую строчку в конец секции http файла /etc/nginx.conf для того чтобы из папки /etc/nginx/sites-enabled загружалась конфигурация сайтов:
sudo vi /etc/nginx/nginx.conf
Затем перезапустите Nginx:
3. Запуск Nginx
После установки пакета, проверяем что Nginx успешно запустился при помощи команды:
sudo systemctl status nginx
Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:
sudo systemctl start nginx
Так же обратите внимание, что вы не можете запускать Apache и Nginx на одном порту. В таком случае вы получите ошибку nginx address already in use 80. Для корректной работы Nginx, необходимо будет отключить веб-сервер Apache (если он у вас используется) или изменить его порт с 80 (который используется по умолчанию) на другой свободный порт.
4. Настройка брандмауэра
По умолчанию брандмауэр закрывает все неразрешённые входящие подключения. Поэтому, чтобы к вашему веб-серверу можно было получить доступ извне, необходимо добавить его порт в исключения:
sudo ufw allow in 80/tcp
5. Проверка работы Nginx
После того, как Nginx будет запущен, он будет доступен по адресу сервера, на который он устанавливался. Вы можете проверить, всё ли работает, просто перейдя по адресу сервера, введя его в браузере. Для примера Nginx был установлен на localhost:
Если вы увидите приветственное сообщение как на скриншоте выше это означает что Nginx успешно установлен и запущен.
Установка PHP-FPM в Ubuntu
Следующим шагом будет установка интерпретатора языка программирования PHP и всех необходимых модулей для работы с PHP-FPM. Для установки всех необходимых модулей выполните команду:
На момент написания статьи (1 августа 2021) актуальной версией PHP в официальных репозиториях Ubuntu считалась версия 7.4. Самая же последняя официальная версия PHP от разработчиков 8.0.9 (по состоянию на 29 июля 2021 года). После установки всех необходимых пакетов проверяем статус PHP-FPM:
systemctl status php7.4-fpm.service
Если в статусе вместо active будет inactive (dead), то сервис необходимо запустить вручную при помощи команды:
sudo systemctl start php7.4-fpm.service
После того, как сервис запустился, установка будет считаться выполненной.
Подключение Nginx к PHP-FPM
Чтобы принимать запросы FastCGI от Nginx, PHP-FPM может прослушивать сокет TCP/IP или UNIX сокет. Сокеты UNIX являются средством межпроцессного взаимодействия, которое обеспечивает эффективный обмен данными между процессами, работающими в одной и той же операционной системе, в то время как сокеты TCP/IP позволяют процессам обмениваться данными по сети.
В отличие от сокета TCP/IP, который идентифицирует сервер по IP-адресу и порту (например, 127.0.0.1:9000), вы можете привязать сервер к сокету UNIX, используя путь к файлу (например, /run/php-fpm/www.sock), который виден в файловой системе.
Таким образом, сокет UNIX является безопасным, поскольку его могут использовать только процессы на локальном хосте. Сокет TCP/IP может быть доступен из Интернета, и это может представлять угрозу безопасности, если не будут приняты дополнительные меры безопасности, такие как настройка брандмауэра.
Настройка PHP-FPM для прослушивания на сокете UNIX
Чтобы настроить PHP-FPM на прослушивание сокета UNIX, откройте файл конфигурации пула PHP-FPM по умолчанию, используя свой любимый текстовый редактор при помощи команды:
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Если вы используете сокет UNIX, вам также необходимо установить соответствующие разрешения на чтение/запись для файла, чтобы разрешить подключения с веб-сервера NGINX. По умолчанию NGINX работает как пользователь www-data в Ubuntu.
Найдите параметры listen.owner и listen.group и задайте им значение www-data. Также установите режим на 0660, для параметра listen.mode.
Настройка PHP-FPM для прослушивания через сокет TCP/IP
Хотя сокет UNIX быстрее сокета TCP/IP, он менее масштабируем, поскольку он может поддерживать межпроцессное взаимодействие только в одной и той же ОС. Если NGINX и внутренний сервер приложений (PHP-FPM) работают в разных системах, вам придется настроить PHP-FPM для прослушивания сокетов TCP/IP для удаленного подключения.
В файле конфигурации пула PHP-FPM установите адрес прослушивания, например: 127.0.0.1:9000. Убедитесь, что выбранный вами порт не используется другим процессом или службой в той же системе.
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
Сохраните изменения и закройте файл. Установка Nginx php fpm практически завершена.
Настройка NGINX для работы PHP-FPM
После того, как вы настроили адрес, который прослушивает PHP-FPM, вам нужно настроить Nginx для запроса прокси к нему через этот адрес, используя параметр конфигурации fastcgi_pass, который располагается в файле конфигурации блока виртуального хоста.
sudo nano /etc/nginx/conf.d/default.conf
\.php$ <
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
>
Если используется TCP/IP сокет, замените значение в параметре fastcgi_pass на IP-адрес и порт сервера, на котором работает PHP-FPM FastCGI:
\.php$ <
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
>
После внесения изменений в конфигурации Nginx проверьте правильность синтаксиса при помощи команды:
Далее вам необходимо перезапустить службы, чтобы применить изменения, используя для этого команды:
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
После перезапуска служб, подключение считается выполненным успешно. Для дальнейшей настройки PHP-FPM воспользуйтесь статьей по настройке PHP-FPM на Ubuntu 20.04 – Настройка PHP-FPM
Удаление Nginx и PHP-FPM с Ubuntu
Чтобы полностью удалить Nginx и PHP-FPM из системы, достаточно удалить все пакеты, которые вы установили ранее:
Команда purge позволяет удалить не только пакеты, но и их конфигурационные файлы. Если вы хотите оставить конфигурационные файлы, используйте команду remove.
Выводы
В этой статье мы разобрали, как выполняется установка Nginx PHP-FPM в Ubuntu 20.04. Как видите, это не очень сложно и с такой задачей может справиться даже новичок. Если у вас остались вопросы, оставляйте их в комментариях!
Установка Linux, Nginx, MySQL, PHP (набора LEMP) в Ubuntu 18.04
Published on January 7, 2020
Введение
Набор LEMP — это комплекс программного обеспечения, используемый для обслуживания динамических веб-страниц и веб-приложений. Аббревиатура LEMP обозначает операционную систему Linux с веб-сервером Nginx (произносится как «энджинкс»). Данные серверной части хранятся в базе данных MySQL, а динамическая обработка выполняется PHP.
В этом руководстве показывается, как установить комплекс LEMP на сервер Ubuntu 18.04. Операционная система Ubuntu обеспечивает выполнение первого требования. Далее мы расскажем, как настроить и запустить все остальные компоненты.
Предварительные требования
После создания пользователя вы будете готовы выполнить шаги, описанные в этом руководстве.
Шаг 1 — Установка веб-сервера Nginx
Для показа веб-страниц посетителям нашего сайта мы будем использовать современный и эффективный веб-сервер Nginx.
Поскольку в этом сеансе мы будем использовать apt впервые, нужно обновить указатель пакетов вашего сервера. Затем нужно выполнить установку сервера:
В Ubuntu 18.04 настроен запуск Nginx сразу же после установки.
Для этого введите следующее:
Для проверки изменения используйте команду:
Результат выполнения этой команды покажет, что трафик HTTP разрешен:
После добавления нового правила брандмауэра вы можете проверить, запущен ли сервер, указав в браузере доменное имя вашего сервера или публичный IP-адрес.
Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете публичный IP-адрес вашего сервера, вы можете найти его, введя в терминал следующую команду:
Команда выведет несколько IP-адресов. Вы можете попробовать каждый из них в своем браузере.
Также вы можете проверить доступность IP-адреса из других мест в интернете:
Введите полученный адрес в браузер, и вы попадете на страницу Nginx по умолчанию:
Если вы увидите эту страницу, вы успешно установили Nginx.
Шаг 2 — Установка MySQL для управления данными сайта
Теперь, когда у вас есть веб-сервер, вам нужно установить MySQL (система управления базами данных) для хранения и управления данными вашего сайта.
Для установки MySQL введите следующее:
Программное обеспечение СУБД MySQL установлено, но его настройка еще не завершена.
Для защиты установки в комплект MySQL входит скрипт, запрашивающий подтверждение небезопасных изменений параметров по умолчанию. Запустите скрипт, введя следующую команду:
Предупреждение. Эту функцию следует активировать при наличии разумных оснований. Если она активирована, MySQL будет отклонять пароли, не соответствующие определенным критериям, и выводить сообщение об ошибке. Это может вызвать проблемы, если вы используете слабый пароль в сочетании с программным обеспечением для автоматической настройки учетных данных пользователя MySQL, например, с пакетами Ubuntu для phpMyAdmin. Оставить проверку отключенной достаточно безопасно, но для входа в базу данных всегда нужно использовать надежные уникальные пароли.
Выберите Y для активации или любой другой вариант, чтобы продолжить без активации этой функции.
Если вы активировали функцию проверки, скрипт также попросит вас задать уровень проверки пароля. Помните, что если вы укажете самый высокий уровень 2, система будет выводить сообщения об ошибке при попытке установки пароля, который не будет содержать цифры, буквы в верхнем и нижнем регистре и специальные символы, или будет содержать распространенные словарные слова.
Затем вам нужно будет отправить и подтвердить пароль пользователя root:
Для всех остальных вопросов нужно выбирать Y и нажимать ENTER в каждом диалоговом окне. В результате будут удалены некоторые анонимные пользователи и тестовая база данных, отключена возможность удаленного входа для пользователя root, и будут загружены новые правила, чтобы СУБД MySQL немедленно использовала внесенные изменения.
Затем проверьте, какой метод аутентификации используют ваши аккаунты пользователей MySQL с помощью следующей команды:
Проверьте методы аутентификации, применяемые для каждого из ваших пользователей, чтобы подтвердить, что root-пользователь больше не использует для аутентификации плагин auth_socket :
В результатах этого примера можно увидеть, что теперь пользователь root СУБД MySQL проходит аутентификацию с помощью пароля. Убедившись в этом на своем сервере, вы можете выйти из оболочки MySQL:
После ввода заданного пароля вы увидите командную строку MySQL.
Теперь СУБД настроена, и вы можете переходить к установке PHP.
Шаг 3 – Установка PHP и настройка Nginx для использования процессора PHP
Теперь у вас есть Nginx для обслуживания ваших страниц и MySQL для хранения и управления данными, однако у вас до сих пор не установлено ПО, которое может генерировать динамический контент. Для этого требуется установить PHP.
Теперь у вас установлены все требуемые компоненты набора LEMP, однако вам нужно внести еще несколько изменений конфигурации, чтобы Nginx использовал процессор PHP для динамического контента.
Если вам потребуется восстановить конфигурацию по умолчанию, вы можете отредактировать новый файл конфигурации блока сервера, а не изменять используемый по умолчанию файл.
Добавьте в новый файл конфигурации блока следующее содержимое, которое взято с некоторыми модификациями из файла конфигурации блока сервера по умолчанию:
Ниже описано действие этих директив и блоков расположения:
После добавления этого содержания следует сохранить и закрыть файл. Для активации нового серверного блока создайте символическую ссылку от нового файла конфигурации серверного блока (в каталоге /etc/nginx/sites-available/ ) на каталог /etc/nginx/sites-enabled/ :
Затем уберите ссылку на файл конфигурации по умолчанию из каталога /sites-enabled/ :
Примечание. Если вам потребуется восстановить конфигурацию по умолчанию, вы можете сделать это посредством воссоздания символической ссылки:
Протестируйте новый файл конфигурации на ошибки синтаксиса:
При появлении сообщений о каких-либо ошибках, вернитесь и повторно проверьте ваш файл, прежде чем продолжать.
Когда вы будете готовы, перезагрузите Nginx для внесения необходимых изменений:
Это завершает установку и настройку набора LEMP. Однако будет разумно убедиться, что все компоненты могут связываться друг с другом.
Шаг 4 — Создание файла PHP для тестовой конфигурации
Используйте текстовый редактор, чтобы создать тестовый файл PHP с именем info.php в корневом каталоге документа:
Введите в новый файл следующие строки: Это корректный код PHP, который будет возвращать информацию о вашем сервере:
После завершения редактирования сохраните и закройте файл.
Теперь вы можете открыть эту страницу в браузере, указав в адресной строке доменное имя вашего сервера или публичный IP-адрес и добавив /info.php :
Вы увидите веб-страницу с информацией о вашем сервере, сгенерированную PHP:
Если ваша страница выглядит таким образом, вам удалось успешно реализовать обработку PHP с помощью Nginx.
После подтверждения того, что Nginx корректно отображает страницу, рекомендуется удалить созданный вами файл, поскольку он может дать неавторизованным пользователям определенную информацию о вашей конфигурации, которая может быть использована при попытке взлома. При необходимости вы всегда сможете восстановить этот файл.
Теперь на вашем сервере Ubuntu 18.04 имеется полностью настроенный и работающий набор LEMP.
Заключение
Набор LEMP — это мощная платформа, позволяющая размещать и обслуживать на сервере практически любой сайт или приложение.
Теперь можно выполнить ряд последующих шагов. Например, вы можете проверить защищенность соединений с вашим сервером. Для этого вы можете обеспечить безопасность установки Nginx с помощью Let’s Encrypt. Следуя указаниям настоящего руководства, вы получите бесплатный сертификат TLS/SSL для вашего сервера, который позволит ему обслуживать контент через протокол HTTPS.