Установка Nginx, MySQL, PHP (LEMP) на Ubuntu 16.04
LEMP – это набор программного обеспечения, необходимый для работы современных сайтов на сервере. Данный акроним расшифровывается как Linux, Nginx, MySQL, PHP. В этой статье будет рассмотрена установка Nginx, MySQL, PHP на сервер под управлением Ubuntu 16.04.
Подготовка
Перед установкой LEMP крайне рекомендую выполнить базовую настройку сервера Ubuntu. После этого мы будем готовы к установке всех необходимых компонентов.
Установка Nginx
Поскольку все необходимые программы есть в репозитории Ubuntu, то установка Nginx сводится всего лишь к двум командам.
sudo apt-get update sudo apt-get install nginx
На Ubuntu 16.04 Nginx начинает работать сразу после установки.
Если у вас установлен ufw файервол, то вам необходимо разрешить Nginx подключения. Делается это простой командой:
sudo ufw allow 'Nginx HTTP'
Мы можем проверить результат командой:
sudo ufw status
Результат выполнения:
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
Хорошо, теперь мы можем проверить работу Nginx набрав в браузере IP-адрес сервера или доменное имя, если оно привязано к серверу. Если всё сделано правильно, то вы должны увидеть следующее сообщение:
Установка MySQL
Для установки MySQL необходимо выполнить следующую команду:
sudo apt-get install mysql-server
В ходе установки вас попросят ввести пароль для root-пользователя. На этом установка БД завершена.
Также можно защитить дополнительно MySQL, выполнив команду:
mysql_secure_installation
Установка PHP
Теперь нам необходимо установить один из основных компонентов LEMP – PHP. Для этого выполним команду:
sudo apt-get install php-fpm php-mysql
Настройка PHP
Итак, мы установили PHP, но для его полноценной работы нам необходимо выполнить его настройку. Откройте файл php.ini с root правами.
sudo nano /etc/php/7.0/fpm/php.ini
В этом файле нам необходимо найти параметр cgi.fix_pathinfo. Он может быть закомментирован, а по умолчанию у него выставлен параметр 1. Этой крайне небезопасно, поэтому раскомментируйте эту строку и выставьте значение параметра 0.
cgi.fix_pathinfo=0
Сохраняем изменения и перезапускаем php-fpm.
sudo systemctl restart php7.0-fpm
Настраиваем Nginx для работы с PHP
Мы установили все необходимые компоненты LEMP стека и всё что нам осталось, это настроить Nginx для работы с PHP. Откройте следующий файл:
sudo nano /etc/nginx/sites-available/default
Без закомментированных строк этот файл будет выглядеть следующим образом:
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 выставить index.php на первое место
- Указать доменное имя в строке server_name
После всех изменений данный файл будет выглядеть следующим образом:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name доменное_имя_или_IP; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.0-fpm.sock; } location ~ /\.ht { deny all; } }
Выполним проверку Nginx следующей командой:
sudo nginx -t
Если ошибок нет, перезапускаем Nginx:
sudo systemctl reload nginx
sudo service nginx restart
Тест
По завершении всех настроек нам необходимо протестировать сервер. Для этого создадим файл в папке с сайтом, который будет выводить информацию о PHP.
sudo nano /var/www/html/info.php
Добавим в файл следующую функцию и сохраним его:
<?php phpinfo();
Окей. Всё что нам осталось, это открыть браузер и перейти по адресу:
http://доменное_имя_или_IP/info.php
Вы должны увидеть примерно следующее:
Если вы видите информацию о PHP, значит установка Nginx, MySQL и PHP прошла успешно и мы можем удалить созданный ранее файл командой:
sudo rm /var/www/html/info.php