Как установить Linux, Nginx, MySQL, PHP (LEMP Stack) на Debian 8

Вступление

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

В этом руководстве вы установите стек LEMP на сервере Debian, используя пакеты, предоставляемые операционной системой.

Предпосылки

Для завершения этого руководства вам понадобится:

  • Сервер Debian 8 с пользователем без полномочий root с привилегиями + sudo +. Вы можете настроить пользователя с этими привилегиями из нашего руководства Initial Server Setup с Debian 8.

Шаг 1 - Установите веб-сервер Nginx

Чтобы показывать веб-страницы посетителям нашего сайта, мы собираемся использовать Nginx, современный и эффективный веб-сервер.

Все программное обеспечение, которое мы будем использовать для этой процедуры, будет поставляться непосредственно из стандартных репозиториев Debian. Это означает, что мы можем использовать пакет управления пакетами + apt + для завершения установки.

Поскольку мы впервые используем + apt + для этого сеанса, мы должны начать с обновления нашего локального индекса пакета. Затем мы можем установить сервер:

sudo apt-get update
sudo apt-get install nginx

В Debian 8 Nginx настроен для запуска после установки.

Если у вас запущен брандмауэр + ufw +, вам нужно разрешить соединения с Nginx. Вы должны включить наиболее ограничивающий профиль, который будет по-прежнему разрешать трафик, который вы хотите. Поскольку мы еще не настроили SSL для нашего сервера, в этом руководстве нам нужно будет только разрешить трафик через порт «+ 80 +».

Вы можете включить это, набрав:

sudo ufw allow 'Nginx HTTP'

Вы можете проверить изменение, набрав:

sudo ufw status

Вы должны увидеть разрешенный HTTP-трафик в отображаемом выводе:

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx HTTP                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Теперь проверьте, работает ли сервер, открыв доменное имя или общедоступный IP-адрес вашего сервера в веб-браузере. Если у вас нет доменного имени, указывающего на ваш сервер, и вы не знаете общедоступный IP-адрес вашего сервера, вы можете найти его, набрав в своем терминале одно из следующих действий:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Это распечатает несколько IP-адресов. Вы можете попробовать каждый из них по очереди в вашем веб-браузере.

В качестве альтернативы вы можете проверить, какой IP-адрес доступен, если смотреть из других мест в Интернете:

curl -4 icanhazip.com

Введите один из адресов, которые вы получите в своем веб-браузере. Это должно привести вас к целевой странице Nginx по умолчанию:

http://

изображение: https: //assets.digitalocean.com/articles/lemp_debian8/THcJfIl.png [страница по умолчанию для Nginx]

Если вы видите вышеупомянутую страницу, вы успешно установили Nginx.

Шаг 2 - Установите MySQL для управления данными сайта

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

Вы можете легко установить это, набрав:

sudo apt-get install mysql-server

Вам будет предложено ввести пароль root (административный) для использования в системе MySQL, и вам потребуется подтвердить этот пароль.

Программное обеспечение базы данных MySQL установлено, но его конфигурация еще не завершена.

Чтобы обезопасить установку, мы можем запустить простой скрипт безопасности, который спросит, хотим ли мы изменить некоторые небезопасные значения по умолчанию. Начните сценарий, набрав:

sudo mysql_secure_installation

Вам будет предложено ввести пароль, установленный для учетной записи MySQL * root *. Затем вас спросят, хотите ли вы изменить этот пароль. Если вы довольны текущим паролем, введите + N + для «нет» в командной строке:

Using existing password for root.

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n]
... skipping.

Для остальных вопросов, которые задает сценарий, вы должны нажать + Y +, а затем клавишу + ENTER + в каждом приглашении. Это приведет к удалению некоторых анонимных пользователей и тестовой базы данных, отключению удаленных учетных записей root и загрузке этих новых правил, чтобы MySQL немедленно учитывал внесенные вами изменения.

На данный момент ваша система баз данных настроена и защищена. Давайте настроим PHP.

Шаг 3 - Установите PHP для обработки

Теперь у нас установлен Nginx для обслуживания наших страниц, а MySQL - для хранения и управления нашими данными. Однако у нас все еще нет ничего, что могло бы генерировать динамический контент. Вот где приходит PHP.

Поскольку Nginx не содержит нативную обработку PHP, как некоторые другие веб-серверы, нам нужно установить + fpm +, что означает «менеджер процессов fastCGI». Мы скажем Nginx передать PHP-запросы этому программному обеспечению для обработки. Мы также установим дополнительный вспомогательный пакет, который позволит PHP взаимодействовать с нашей базой данных MySQL. При установке будут задействованы необходимые файлы ядра PHP, чтобы это работало.

Эти пакеты недоступны в репозиториях по умолчанию из-за проблем с лицензированием, поэтому нам придется изменить источники репозитория, чтобы их можно было подключить.

Откройте + / etc / apt / sources.list + в текстовом редакторе:

sudo nano /etc/apt/sources.list

Затем для каждого источника добавьте репозитории + contrib + и + non-free + к каждому источнику. После внесения этих изменений ваш файл должен выглядеть следующим образом:

/etc/apt/sources.list

...
deb http://mirrors.digitalocean.com/debian jessie main
deb-src http://mirrors.digitalocean.com/debian jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://mirrors.digitalocean.com/debian jessie-updates main
deb-src http://mirrors.digitalocean.com/debian jessie-updates main

Сохраните и выйдите из файла. Затем обновите ваши источники:

sudo apt-get update

Затем установите модули + php5-fpm и` + php 5-mysql`:

sudo apt-get install php5-fpm php5-mysql

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

Откройте основной файл конфигурации + php-fpm + с правами root:

sudo nano /etc/php5/fpm/php.ini

Найдите в файле параметр, который устанавливает + cgi.fix_pathinfo +. Это будет закомментировано точкой с запятой (;) и будет установлено в «1» по умолчанию.

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

Мы изменим оба эти условия, раскомментировав строку и установив ее в «0» следующим образом:

/etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

Сохраните и закройте файл, когда вы закончите.

Теперь нам просто нужно перезапустить ваш PHP-процессор, набрав:

sudo systemctl restart php5-fpm

Это осуществит изменение, которое мы сделали.

Шаг 4 - Настройте Nginx для использования процессора PHP

Теперь у нас установлены все необходимые компоненты. Единственное изменение конфигурации, которое нам все еще нужно, - это указать Nginx использовать наш процессор PHP для динамического содержимого.

Мы делаем это на уровне блоков сервера (блоки серверов аналогичны виртуальным хостам Apache). Откройте файл конфигурации блока Nginx по умолчанию, набрав:

sudo nano /etc/nginx/sites-available/default

В настоящее время с удаленными комментариями файл блока сервера Nginx по умолчанию выглядит следующим образом:

/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;
   index index.html index.htm index.nginx-debian.html;

   server_name _;

   location / {
       try_files $uri $uri/ =404;
   }
}

Нам нужно внести некоторые изменения в этот файл для нашего сайта.

  • Во-первых, нам нужно добавить + index.php в качестве первого значения нашей директивы` + index + , чтобы файлы с именем + index.php` обслуживались, если они доступны, при запросе каталога.

  • Мы можем изменить директиву + server_name, указав имя домена или публичный IP-адрес вашего сервера.

  • Для фактической обработки PHP нам просто нужно раскомментировать сегмент файла, который обрабатывает запросы PHP. Это будет блок местоположения + location ~ \ .php $ +, включенный фрагмент + fastcgi-php.conf + и сокет, связанный с + php-fpm +.

  • Мы также раскомментируем блок локации, относящийся к файлам + .htaccess +. Nginx не обрабатывает эти файлы. Если какой-либо из этих файлов попадет в корень документа, он не должен быть предоставлен посетителям.

Изменения, которые вам нужно сделать, выделены красным цветом в тексте ниже:

/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   root /var/www/html;
   index  index.html index.htm index.nginx-debian.html;

   server_name ;

   location / {
       try_files $uri $uri/ =404;
   }









}

После внесения вышеуказанных изменений вы можете сохранить и закрыть файл.

Проверьте ваш файл конфигурации на наличие синтаксических ошибок, набрав:

sudo nginx -t

Если появятся какие-либо ошибки, вернитесь и перепроверьте файл, прежде чем продолжить.

Когда вы будете готовы, перезагрузите Nginx, чтобы внести необходимые изменения:

sudo systemctl reload nginx

Шаг 5 - Создание PHP-файла для проверки конфигурации

Ваш стек LEMP теперь должен быть полностью настроен. Мы можем проверить это, чтобы убедиться, что Nginx может правильно передать файлы + .php + нашему процессору PHP.

Мы можем сделать это, создав тестовый файл PHP в корневом каталоге вашего документа. Откройте новый файл с именем + info.php + в корневом каталоге вашего документа в текстовом редакторе:

sudo nano /var/www/html/info.php

Введите или вставьте следующие строки в новый файл. Это действительный код PHP, который будет возвращать информацию о нашем сервере:

/var/www/html/info.php

<?php
 phpinfo();
?>

Когда вы закончите, сохраните и закройте файл.

Теперь вы можете посетить эту страницу в своем веб-браузере, посетив доменное имя вашего сервера или публичный IP-адрес, за которым следует + / info.php +:

http:///info.php

Вы должны увидеть веб-страницу, созданную PHP, с информацией о вашем сервере:

изображение: https: //assets.digitalocean.com/articles/lemp_debian8/ZP3DpyX.png [информация о странице PHP]

Если вы видите страницу, которая выглядит следующим образом, вы успешно настроили обработку PHP с Nginx.

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

Сейчас удалите файл, набрав:

sudo rm /var/www/html/info.php

Вы всегда можете восстановить этот файл, если он понадобится вам позже.

Заключение

Теперь у вас должен быть настроен стек LEMP на вашем сервере Debian. Это дает вам очень гибкую основу для предоставления веб-контента вашим посетителям.

Related