Поиск по сайту:

Как установить стек Linux, Nginx, MySQL, PHP (LEMP) на Ubuntu 14.04


Введение

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

В этом руководстве мы покажем, как установить стек LEMP на сервер Ubuntu 14.04. Операционная система Ubuntu отвечает первому требованию. Мы опишем, как настроить и запустить остальные компоненты.

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

Предпосылки

Прежде чем приступить к выполнению этого руководства, у вас должна быть обычная учетная запись пользователя без полномочий root на вашем сервере с привилегиями sudo. Вы можете узнать, как настроить этот тип учетной записи, выполнив шаги 1-4 в нашей начальной настройке сервера Ubuntu 14.04.

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

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

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

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

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

sudo apt-get update
sudo apt-get install nginx

В Ubuntu 14.04 Nginx настроен на запуск сразу после установки.

Вы можете проверить, запущен ли сервер, обратившись к доменному имени вашего сервера или общедоступному IP-адресу в веб-браузере.

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

<пред>

Или вы можете попробовать использовать:

<пред>

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

<пред>

Если вы видите страницу выше, вы успешно установили 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. Настройте Nginx для использования нашего PHP-процессора

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

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

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

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

<пред>

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-адрес нашего сервера.
  • Фактический файл конфигурации содержит несколько закомментированных строк, определяющих процедуры обработки ошибок. Мы раскомментируем их, чтобы включить эту функцию.
  • Для фактической обработки PHP нам потребуется раскомментировать часть другого раздела. Нам также потребуется добавить директиву try_files, чтобы убедиться, что Nginx не передает неправильные запросы нашему PHP-процессору.

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

<пред>

root /usr/share/nginx/html;
index <span class="highlight">index.php</span> index.html index.htm;

server_name <span class="highlight">server_domain_name_or_IP</span>;

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

<span class="highlight">error_page 404 /404.html;</span>
<span class="highlight">error_page 500 502 503 504 /50x.html;</span>
<span class="highlight">location = /50x.html {</span>
    <span class="highlight">root /usr/share/nginx/html;</span>
<span class="highlight">}</span>

<span class="highlight">location ~ \.php$ {</span>
    <span class="highlight">try_files $uri =404;</span>
    <span class="highlight">fastcgi_split_path_info ^(.+\.php)(/.+)$;</span>
    <span class="highlight">fastcgi_pass unix:/var/run/php5-fpm.sock;</span>
    <span class="highlight">fastcgi_index index.php;</span>
    <span class="highlight">fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;</span>
    <span class="highlight">include fastcgi_params;</span>
<span class="highlight">}</span>

}

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

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

sudo service nginx restart

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

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

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

sudo nano /usr/share/nginx/html/info.php

Мы можем ввести это в новый файл. Это действительный код PHP, который вернет отформатированную информацию о нашем сервере:

<?php
phpinfo();
?>

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

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

<пред>

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

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

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

А пока удалите файл, набрав:

sudo rm /usr/share/nginx/html/info.php

Заключение

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

Джастин Эллингвуд