Установка Linux, nginx, MySQL, PHP (LEMP stack) на Ubuntu 14.04

Published by Leave your thoughts

Вступление

Программный стек 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: , , , , , , ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>