Установка Linux, nginx, MySQL, PHP (LEMP stack) на Ubuntu 14.04
LEMP Stack, Ubuntu | Комментировать запись
Вступление
Программный стек LEMP – это группа программ, которые можно использовать для обслуживания динамических веб-страниц и приложений. Эта аббревиатура расшифровывается как Linux (операционная система), Nginx (веб-сервер), MySQL (база данных) и PHP (язык для быстрого создания динамических страниц).
Данное руководство демонстрирует установку LEMP stack на сервер Ubuntu 14.04. Операционная система Ubuntu уже содержит первый компонент, потому можно приступить к установке и запуску остальных программ.
Предварительные требования
Для выполнения инструкций данного руководства нужна постоянная учетная запись (не root) пользователя с привилегиями sudo. Чтобы создать такую запись, читайте статью “Начальная настройка сервера Ubuntu 14.04“.
Получив учетную запись, войдите с ее помощью на сервер. Теперь можно приступить к ознакомлению с руководством.
1: Установка веб-сервера Nginx
Чтобы посетители сайта могли просматривать страницы, нужно установить Nginx – современный и мощный веб-сервер.
Все необходимые для этого программы можно получить из репозиториев Ubuntu. То есть, для выполнения полной инсталляции достаточно одной команды – apt.
Поскольку в данной сессии apt используется впервые, для начала нужно обновить индекс локальных пакетов, а затем установить веб-сервер:
sudo apt-get update
sudo apt-get install nginx
В Ubuntu 14.04 сервер Nginx настроен и может быть запущен сразу после инсталляции.
Чтобы убедиться в том, что сервер установлен и запущен, введите доменное имя сервера или общедоступный IP в адресную строку браузера.
Если у сервера нет доменного имени, а его IP неизвестен, введите в терминал одну из следующих строк, чтобы узнать IP-адрес:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
111.111.111.111
fe80::601:17ff:fe61:9801
Или используйте
curl http://icanhazip.com
111.111.111.111
Попробуйте ввести одну из полученных строк в веб-браузер; это должно открыть приветственную страницу Nginx по умолчанию:
http://домен_или_IP_сервера
Если страница открылась – Nginx установлен успешно.
2: Установка MySQL
Установив веб-сервер, перейдите к инсталляции MySQL, системы управления базами данных, необходимой для хранения и управления данными сайта.
Для этого просто наберите:
sudo apt-get install mysql-server
Затем будет предложено предоставить root-пароль для использования его в системе MySQL.
Теперь MySQL установлена, но ее настройки нуждаются в доработке.
Для начала MySQL должна создать структуру каталогов, необходимую для хранения баз данных и другой важной информации. Введите:
sudo mysql_install_db
Теперь нужно запустить простой скрипт, который подскажет, какие небезопасные настройки по умолчанию нужно изменить. Запустите скрипт, набрав:
sudo mysql_secure_installation
На данном этапе нужно ввести root-пароль MySQL, установленный в процессе инсталляции.
Затем MySQL спросит, нужно ли изменить этот пароль (если этого делать не нужно, введите N и нажмите ENTER). После этого будет предложено удалить некоторых тестовых пользователей и базы данных. Просто нажмите ENTER на эти уведомления, чтобы удалить опасные настройки по умолчанию.
После того, как скрипт был запущен, MySQL готов к работе.
3: Установка PHP
На данный момент Nginx готов к обслуживанию страниц, а MySQL может хранить данные и управлять информацией. Теперь нужно связать эти два компонента и сгенерировать динамический контент; для этого понадобится PHP.
Поскольку Nginx не содержит PHP, необходимо установить php5-fpm, что означает “менеджер процессов FastCGI”. Nginx будет передавать PHP-запросы на обработку данному программному обеспечению.
Кроме этого модуля понадобится еще один вспомогательный пакет, позволяющий PHP взаимодействовать с бэкэндом базы данных. Чтобы установить все необходимые файлы PHP, наберите:
sudo apt-get install php5-fpm php5-mysql
Настройка процессора PHP
Теперь компоненты установлены; но перед запуском PHP нуждается в небольшой поправке конфигураций, которая обезопасит работу.
Откройте главный конфигурационный файл php5-fpm с привилегиями root
sudo nano /etc/php5/fpm/php.ini
В данном файле найдите параметр cgi.fix_pathinfo (который должен быть закомментирован (с помощью точки с запятой) и иметь значение по умолчанию 1).
Данный параметр чрезвычайно небезопасен, поскольку он говорит PHP менять путь и пытаться запустить ближайший файл, если файл PHP не совсем подходит. В основном это позволит пользователям создавать PHP-запросы таким образом, чтобы запускать нежелательные или опасные скрипты.
Данную строку нужно раскомментировать и задать ей значение 0:
cgi.fix_pathinfo=0
Сохраните изменения и закройте файл.
Осталось только перезапустить процессор PHP, чтобы активировать внесенные изменения:
sudo service php5-fpm restart
4: Использование PHP-процессора с помощью Nginx
На данном этапе все необходимые компоненты установлены. Осталось внести последнее изменение, а именно сказать Nginx использовать процессор PHP для динамического контента.
Это делается на уровне серверных блоков (server block, они похожи на виртуальные хосты Apache). Откройте конфигурационный файл Nginx по умолчанию:
sudo nano /etc/nginx/sites-available/default
На данный момент он выглядит так (со снятыми комментариями):
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
}
В него нужно внести некоторые изменения.
- Во-первых, нужно внести опцию index.php как первое значение директивы index, чтобы индексные файлы PHP обслуживались при запросе каталога.
- Кроме того, нужно отредактировать директиву server_name, чтобы указать доменное имя или общедоступный IP сервера.
- Конфигурационный файл включает в себя несколько закомментированных строк, которые определяют процедуры обработки ошибок. Их нужно раскомментировать.
- Также нужно будет раскомментировать часть другого раздела и добавить директиву try_files, чтобы убедиться, что Nginx не передает подозрительные запросы на процессор PHP.
В приведенном ниже блоке кода изменения выделены красным
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.php index.html index.htm;
server_name домен_или_IP
_сервера;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Завершив, сохраните изменения и закройте файл.
Перезапустите Nginx для активации новых настроек.
sudo service nginx restart
5: Тестирование PHP
LEMP stack полностью установлен и настроен. Теперь нужно протестировать инсталляцию, чтобы убедиться, что Nginx правильно обрабатывает и передает файлы .php процессору PHP.
Для этого нужно создать тестовый файл в каталоге root. Откройте новый файл info.php в каталоге root с помощью редактора:
sudo nano /usr/share/nginx/html/info.php
В этот новый файл внесите следующий текст. Это код PHP, который выводит отформатированную информацию о сервере:
<?php
phpinfo();
?>
Сохраните изменения и закройте файл.
Теперь посетите данную страницу в браузере (для этого используйте домен или IP, после которых укажите /info.php):
http://домен_или_IP_сервера/info.php
Появится страница, созданная PHP и содержащая информацию о сервере.
По завершении тестирования PHP рекомендуется удалить новый файл, поскольку он может дать неавторизованным пользователям некоторые подсказки о настройках, что может привести ко взлому сервера. При необходимости можно создать такой файл снова.
Чтобы удалить данный файл, введите:
sudo rm /usr/share/nginx/html/info.php
Итоги
Теперь LEMP stack установлен и настроен на сервере Ubuntu 14.04. Это очень гибкая основа для обслуживания веб-контента.
Tags: LEMP Stack, Linux, MySQL, NGINX, PHP, Ubuntu, Ubuntu 14.04, VPS