Установка nginx+MariaDB+PHP-FPM на Debian 9

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА

mrvtn

Постоянный участник
ДРУЗЬЯ ФОРУМА
Регистрация
2 Июн 2018
Сообщения
116
Реакции
58
Репутация
0
Поскольку в Debian работает большой процент веб-серверов по всему миру, в этой статье мы расскажем, как установить LEMP (Linux + Nginx + MariaDB + PHP-FPM) стек в Debian 9 Stretch в качестве альтернативы LAMP.

Кроме того, мы покажем, как выполнить минимальную конфигурацию Nginx / PHP-FPM, чтобы даже не очень опытные системные администраторы могли настраивать новые веб-серверы для работы с динамическими страницами.

Чтобы сделать это, мы будем использовать последние обновления официальных репозиториев дистрибутива. Предполагается, что вы

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

на пустое железо, виртуальную машину, VPS или

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.


Установка LEMP в Debian 9 Stretch

Возможно, вам интересно, почему мы упоминали PHP-FPM вместо PHP как часть стека LEMP. В отличие от других веб-серверов, Nginx не предоставляет встроенную поддержку PHP.

По этой причине PHP-FPM (Fast Process Manager) используется для обработки запросов на PHP-страницы. Вы можете узнать больше о PHP-FPM на официальном сайте PHP.

Версия по умолчанию представлена в репозиториях Debian php7.0-fpm. Как вы можете догадаться, основываясь на имени пакета, эта версия может обрабатывать запросы на странице, включая код PHP 7.

ПРИМЕЧАНИЕ. Если ранее был установлен Apache, перед продолжением убедитесь, что он остановлен и отключен.


С учетом сказанного, давайте установим компоненты стека LEMP следующим образом:
# aptitude update
# aptitude install nginx mariadb-server mariadb-client php-mysqli php7.0-fpm



Когда установка будет завершена, убедитесь, что Nginx и PHP-FPM запущены и включены для запуска при загрузке:

# systemctl status nginx php7.0-fpm



Если видите, что какая-то из служб не работает, тогда выполните:

# systemctl start nginx php7.0-fpm
# systemctl enable nginx php7.0-fpm



Как и в случае с установкой MariaDB или MySQL, важно запустить mysql_secure_installation, чтобы выполнить минимальную конфигурацию безопасности и установить пароль для учетной записи root.

# mysql_secure_installation



Настройка Nginx для использования PHP-FPM на Debian 9

Основным файлом конфигурации Nginx является /etc/nginx/sites-available/default, где нам нужно внести следующие изменения внутри блока сервера:


  • Убедитесь, что блок местоположения, который обрабатывает запросы PHP, включен, за исключением того, где директива fastcgi_pass указывает на UNIX сокет.
  • Добавьте index.php после директивы index, чтобы указать, что если он найден, он должен быть подан по умолчанию перед index.html или другими файлами.
  • Добавьте директиву server_name, указывающую на IP-адрес или имя хоста вашего сервера. Это будет 192.168.0.35 в нашем случае.
  • Кроме того, убедитесь, что директива root указывает на место, где будут храниться ваши .php-файлы (/var/www/html по умолчанию).

Когда вы закончите, вы можете использовать следующую команду для проверки файла конфигурации на наличие ошибок.

# nginx -t



На этом этапе ваш /etc/nginx/sites-available/default должен выглядеть следующим образом, где номера, относящиеся к конфигурации, относятся к приведенному выше списку:

# grep -Ev '#' /etc/nginx/sites-available/default




Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.





Тестирование Nginx и PHP-FPM на Debian 9

Чтобы убедиться, что мы теперь используем Nginx в качестве нашего веб-сервера, давайте создадим файл с именем info.php внутри /var/www/html со следующим содержимым:

<?php
phpinfo();
?>



Затем перейдите на страницу

Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.

и проверьте верхнюю часть страницы, где вы должны увидеть это:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Наконец, давайте укажем наш путь к файлу booksandauthors.php, который мы создадим в следующем разделе.



Тестирование соединения базы данных с PHP Script

Следующий скрипт PHP сначала подключается к базе
данных и извлекает записи, соответствующие запросу. Если возникает
ошибка, будет отображаться сообщение c подсказкой о том, что не так.

Сохраните следующий скрипт в виде booksandauthors.php в /var/www/html:

<?php
// Show PHP version
echo "Current PHP version: " . phpversion() . "\r\n";
// Connect to database
$connection = mysqli_connect("localhost","librarian","Today123","LibraryDB") or die("Error " . mysqli_error($connection));
// SQL query
$sql = "SELECT A.ISBN, A.Title,
A.Year, B.FullName
FROM BooksTBL A JOIN AuthorsTBL B
ON A.AuthorID = B.AuthorID;";
$result = mysqli_query($connection, $sql) or die("Error " . mysqli_error($connection));
// Populate an array with the query results
$libraryarray = array();
while($row = mysqli_fetch_assoc($result))
{
$libraryarray[] = $row;
}
// Convert to JSON
echo json_encode($libraryarray);
?>



Измените право собственности на www-data и добавьте соответствующие разрешения:

# chown www-data: www-data /var/www/html/booksandauthors.php
# chmod 600 /var/www/html/booksandauthors.php



Теперь, откройте веб-браузер и укажите ему URL-адрес, где находится скрипт.


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.







Как видно со следующего изображении, этот файл теперь обслуживается Nginx:


Пожалуйста Авторизуйтесь или Зарегистрируйтесь для просмотра скрытого текста.



ПРИМЕЧАНИЕ. Если вы заметили, что Nginx открывает файлы .php в качестве загрузок, а не выполняет их, очистите кеш браузера или попробуйте другой браузер. В частности, если вы используете Chrome, вы можете протестировать его с помощью режима инкогнито.


Итог

В этой статье мы объяснили, как установить и настроить Nginx для обслуживания динамических страниц .php. Важно отметить, что после этой начальной настройки есть настройки, которые необходимо выполнить для защиты веб-сервера.
 
Сверху