Предварительные требования
Для выполнения этого руководства вам потребуется доступ к серверу Ubuntu 20.04 с пользователем с правами sudo
.
Шаг 1 — Установка Nginx
Обновите кэш диспетчера пакетов и установите Nginx с помощью следующей команды:
- sudo apt update
- sudo apt install nginx
После завершения установки вам нужно будет изменить настройки брандмауэра, чтобы разрешить трафик HTTP на вашем сервере. Запустите следующую команду, чтобы разрешить внешний доступ к порту 80
(HTTP):
- sudo ufw allow in «Nginx»
После добавления нового правила брандмауэра вы можете проверить, запущен ли сервер, запросив доступ к публичному IP-адресу или доменному имени сервера из вашего веб-браузера. Страница будет выглядеть следующим образом:
Шаг 2 — Установка MySQL
Теперь мы установим MySQL, популярную СУБД, используемую в средах PHP.
Используйте apt
для получения и установки этого программного обеспечения:
- sudo apt install mysql-server
После завершения установки рекомендуется запустить скрипт безопасности, входящий в комплект MySQL. Для запуска интерактивного скрипта введите следующую команду:
- sudo mysql_secure_installation
Скрипт запросит подтверждение настройки плагина VALIDATE PASSWORD PLUGIN
. Выберите Y
для активации или любой другой вариант, чтобы продолжить без активации этой функции. Если вы выберете ответ «yes» («Да»), вам будет предложено выбрать уровень подтверждения паролем.
Затем сервер попросит вас выбрать и подтвердить пароль для пользователя root СУБД MySQL. Хотя в MySQL метод аутентификации пользователя root по умолчанию не требует использования пароля даже при его наличии, задайте надежный пароль для обеспечения дополнительной безопасности.
Для всех остальных вопросов нужно выбирать Y
и нажимать ENTER
в каждом диалоге.
Примечание. На момент написания этого руководства родная библиотека MySQL PHP mysqlnd
не поддерживает caching_sha2_authentication
, метод аутентификации MySQL 8 по умолчанию. Поэтому при создании пользователей базы данных для приложений PHP на MySQL 8 вам нужно убедиться, что вместо этого пароля они настроены на использование mysql_native_password
. Подробную информацию можно найти в описании шага 6 подробного руководства по LEMP в Ubuntu 20.04.
Шаг 3 — Установка PHP
Для установки пакетов php-fpm
и php-mysql
воспользуйтесь следующей командой:
- sudo apt install php-fpm php-mysql
Шаг 4 — настройка Nginx для PHP
В этом руководстве мы настроим домен your_domain, но вы должны заменить это имя собственным доменным именем.
В Nginx на Ubuntu 20.04 по умолчанию включен один серверный блок, настроенный для вывода документов из директории /var/www/html
. Хотя это хорошо работает для отдельного сайта, при размещении нескольких сайтов это может доставлять неудобства. Вместо изменения /var/www/html
мы создадим внутри /var/www
структуру директорий для нашего сайта your_domain, оставив /var/www/html
в качестве директории по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.
Создайте корневую веб-директорию для your_domain следующим образом:
- sudo mkdir /var/www/your_domain
Затем необходимо назначить права владения для директории с помощью переменной среды $USER, которая будет использоваться для текущего системного пользователя:
- sudo chown -R $USER:$USER /var/www/your_domain
После этого откройте новый файл конфигурации в директории Nginx sites-available
с помощью любого редактора командной строки. Мы будем использовать nano
:
- sudo nano /etc/nginx/sites-available/your_domain
В результате будет создан новый пустой файл. Вставьте следующую пустую конфигурацию:
server {
listen 80;
server_name your_domain www.your_domain;
root /var/www/your_domain;
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
:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Это укажет Nginx использовать эту конфигурацию в следующий раз при перезагрузке. Вы можете протестировать вашу конфигурацию на наличие ошибок синтаксиса с помощью команды:
- sudo nginx -t
Если есть какие-либо ошибки, вернитесь в файл конфигурации и проверьте его содержание перед тем, как продолжить.
Когда будете готовы, перезагрузите Nginx для внесения необходимых изменений:
- sudo systemctl reload nginx
Теперь ваш новый веб-сайт активен, но корневая веб-директория /var/www/your_domain
все еще пуста. Создайте файл index.html
в этом расположении, чтобы убедиться, что веб-сервер работает, как ожидалось:
- nano /var/www/your_domain/index.html
Внесите в файл следующее:
<html>
<head>
<title>your_domain website</title>
</head>
<body>
<h1>Hello World!</h1>
<p>This is the landing page of <strong>your_domain</strong>.</p>
</body>
</html>
Теперь откройте браузер и получите доступ к доменному имени сервера или IP-адресу, как указано в директиве server_name
в файле конфигурации вашего серверного блока:
http://server_domain_or_IP
Страница будет выглядеть следующим образом:
Шаг 5 — Тестирование PHP с помощью Nginx
Теперь мы создадим тестовый скрипт PHP для подтверждения возможности принимать и обрабатывать запросы файлов PHP в Nginx.
Создайте новый файл с именем info.php
в корневой папке сайта:
- nano /var/www/your_domain/info.php
В результате откроется пустой файл. Добавьте в файл следующее:
<?php
phpinfo();
После завершения редактирования сохраните и закройте файл.
Теперь вы можете получить доступ к этой странице в веб-браузере, посетив доменное имя или публичный IP-адрес, настроенный в файле конфигурации Nginx, добавив /info.php
в конце:
http://server_domain_or_IP/info.php
Вы увидите веб-страницу, содержащую подробную информацию о вашем сервере:
После проверки соответствующей информации о вашем сервере PHP с помощью данной страницы рекомендуется удалить созданный вами файл, поскольку он содержит конфиденциальную информацию о вашей среде PHP и о вашем сервере Ubuntu. Вы можете использовать rm
для удаления этого файла:
- sudo rm /var/www/your_domain/info.php
Другие обучающие руководства