Что такое LЕMP
LEMP - это аналог популярного стека LAMP, используемого для разработки и развертывания веб-приложений. Традиционно LAMP состоит из Linux, Apache, MySQL и PHP. Благодаря своей модульной природе компоненты легко могут быть заменены. В LEMP Apache заменяется легким, но мощным Nginx, который может обеспечить более предсказуемую производительность при высоких нагрузках.
Apache vs Nginx
Apache:
- Разрабатывается с 1995 года, к нынешнему моменту имеет много пользователей, существует большое количество модулей (в основном с открытым исходным кодом), написанных для расширения его функциональности;
- Процессы или поточно-ориентированный подход замедляют работу веб-сервера при большой нагрузке, необходимо создавать новые процессы и потреблять больше ОЗУ, а также создавать новые потоки, которые должны конкурировать за ресурсы ЦП и ОЗУ;
- Должен быть установлен предел для обеспечения того, чтобы ресурсы не перегружались, когда предел достигнут, дополнительные соединения будут отклонены.
Nginx:
- Веб-сервер с открытым исходным кодом, написанный для решения проблем производительности и масштабируемости, связанных с Apache;
- Механизм, управляемый событиями, асинхронный и неблокирующий, не создает новые процессы для каждого веб-запроса;
Установка nginx
Прежде всего следует обновить локальную базу пакетов:
sudo apt-get update
sudo apt-get upgrade
Далее установите пакет из главного репозитория
sudo apt-get install nginx
Настройка правил Firewall
С помощью команды iptables необходимо открыть HTTP порт:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
Проверка установки nginx
В адресной строке браузера перейдите по адресу, указав ваш домен или IP-адрес:
http://<domain_or_IP>
Например:
http://121.22.123.59
После этого должна будет открыться страница с приветствием.
Установка MySQL
MySQL — это система управления базами данных (СУБД), которая используется для организации и получения контента. Необходимо установить MySQL с поддержкой PHP. Установите пакеты из главного репозитория Ubuntu с помощью менеджера пакетов:
sudo apt-get install mysql-server php5-mysql
Здесь установщик попросит вас задать пароль супер-пользователя БД.
Для подключения к системе управления базами данных MySQL в приглашении командной строки введите следующую команду и затем пароль-суперпользователя:
mysql -u root –p
Для повышения уровня безопасности MySQL существует специальный скрипт, который мы рекомендуем использовать:
sudo mysql_secure_installation
Далее введите пароль и ответьте на несколько вопросов:
- Удаление анонимного пользователя (remove anonymous user) — рекомендуется удалить его, чтобы снизить риск несанкционированного подключения к базе данных;
- Запрещение удаленного root-логина — нужно запретить удаленное подключение с административными правами;
- Иногда при установке MySQL создается тестовая база данных, если она не нужна, ее тоже можно удалить;
- После этого нужно перезагрузить таблицу привилегий, чтобы все изменения вступили в силу.
После этого конфигурирование базы данных завершено, и можно переходить к следующему шагу настройки LEMP стека — установке PHP.
Установка PHP
Для установки компонента обработки программного кода PHP установите пакеты из главного репозитория с помощью менеджера пакетов:
sudo apt-get install php5-fpm
Настройка nginx для работы с PHP и MySQL
Для настройки связи между PHP и MySQL в LEMP стеке необходимо установить дополнительные модули и внести изменения в конфигурационный файл. С помощью текстового редактора nano откройте конфигурационный файл PHP5-FPM:
sudo nano /etc/php5/fpm/php.ini
Раскомментируйте (уберите символ “;” в начале строки) следующую переменную и присвойте ей значение 0:
cgi.fix_pathinfo = 0
Сохраните внесенные изменения.
Перезапустить сервис php5-fpm:
sudo service php5-fpm restart
С помощью текстового редактора откройте файл настройка сайта nginx:
sudo nano /etc/nginx/sites-available/default
Раскомментируйте (уберите символ #) следующие строки:
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
Сохраните внесенные изменения.
Перезапускаем веб-сервер nginx:
sudo service nginx restart
Важно: на Ubuntu 14.04 нельзя использовать fastcgi_pass 127.0.0.1:9000, так что эта строчка должна оставаться закомментированной, иначе возникнет ошибка.
Проверка настроек
Чтобы удостовериться в том, что LEMP и веб-сервер nginx поставлен без ошибок, можно создать тестовую страницу на VPS.
Создаем файл с нужным расширением:
sudo nano /usr/share/nginx/html/phpinfo.php
Внесите следующую строку и сохраните изменения:
<?php phpinfo(); ?>
Затем перейдите в браузере по следующей ссылке, указав IP-адрес вашего сервера:
http://<IP-адрес_сервера>/phpinfo.php
Например: http://5.101.77.24/phpinfo.php
Примечание: для использования короткой записи тегов необходимо включить опцию short php-tag. Откройте файл php.ini:
sudo vi /etc/php5/fpm/php.ini
Измените значение с Off на on, и перезапустите php5-fpm:
sudo service php5-fpm restart
На этом установка и настройка LEMP-стека завершена.