Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

LinuxMySQLNginxPHP

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

Из этого руководства Вы узнаете, как установить стек LEMP с поддержкой MariaDB 10, PHP 7 и HTTP 2.0 сервер Nginx в выпусках Ubuntu 16.10 и Ubuntu 16.04 для серверов и настольных компьютеров.

Требования:
Установленный Ubuntu 16.04 Server Edition [инструкция также работает на Ubuntu 16.10]

 

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

1. Nginx — это современный и ресурсоэффективный веб-сервер, используемый для отображения веб-страниц посетителям в Интернете. Начнем с установки веб-сервера Nginx из официальных репозиториев Ubuntu с помощью команды apt.

$ sudo apt-get install nginx

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

2. Затем выполните команды netstat и systemctl, чтобы подтвердить, запущен ли Nginx и привязан ли он к порту 80.

$ netstat -tlpn

 

Check-Nginx-Network-Port-Connection

 

 

$ sudo systemctl status nginx.service

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

Получив подтверждение запуска сервера, вы можете открыть браузер и перейти к IP-адресу вашего сервера или записи DNS, используя протокол HTTP, чтобы посетить веб-страницу Nginx по умолчанию.

http://IP-Address

 

Verify-Nginx-Webpage

 

Шаг 2. Включите протокол Nginx HTTP/2.0

3. Протокол HTTP/2.0, который по умолчанию встроен в последний выпуск Nginx в Ubuntu 16.04, работает только в сочетании с SSL и обещает значительное улучшение скорости загрузки веб-страниц SSL.

Чтобы включить протокол в Nginx в Ubuntu 16.04, сначала перейдите к файлам конфигурации доступных сайтов Nginx и сделайте резервную копию файла конфигурации по умолчанию, выполнив следующую команду.

$ cd /etc/nginx/sites-available/
$ sudo mv default default.backup

 

Backup-Nginx-Sites-Configuration-File

 

4. Затем с помощью текстового редактора создайте новую страницу по умолчанию со следующими инструкциями:

server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;

root /var/www/html;

index index.html index.htm index.php;

server_name 192.168.1.13;

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

ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 180m;
resolver 8.8.8.8 8.8.4.4;
add_header Strict-Transport-Security "max-age=31536000;
#includeSubDomains" always;

 

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

location ~ /\.ht {
deny all;
}

}

server {
listen 80;
listen [::]:80;
server_name 192.168.1.13;
return 301 https://$server_name$request_uri;
}

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

Приведенный выше фрагмент конфигурации позволяет использовать HTTP/2.0, добавив параметр http2 ко всем директивам прослушивания SSL.

Кроме того, последняя часть выдержки, включенная в директиву сервера, используется для перенаправления всего трафика, не связанного с SSL, на хост по умолчанию SSL/TLS. Также замените директиву server_name, чтобы она соответствовала вашему собственному IP-адресу или записи DNS (желательно, полное доменное имя).

5. После того, как вы закончили редактирование файла конфигурации Nginx по умолчанию с вышеуказанными настройками, создайте и перечислите файл сертификата SSL и ключ, выполнив следующие команды.

Заполните сертификат своими собственными пользовательскими настройками и обратите внимание на то, что параметр Common Name соответствует вашему полному доменному имени DNS или IP-адресу вашего сервера, который будет использоваться для доступа к веб-странице.

$ sudo mkdir /etc/nginx/ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt
$ ls /etc/nginx/ssl/

 

Generate-SSL-Certificate-and-Key

 

 

6. Кроме того, создайте шифр DH, который был изменен в указанном выше файле конфигурации в строке команд ssl_dhparam, выполнив следующую команду:

$ sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048

 

Create-Diffie-Hellman-Key

 

7. После создания ключа Диффи-Хеллмана проверьте, правильно ли записан файл конфигурации Nginx и может ли он применяться веб-сервером Nginx, и перезапустите демон, чтобы изменения вступили в силу, выполнив следующие команды.

$ sudo nginx -t
$ sudo systemctl restart nginx.service

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

8. Чтобы проверить, использует ли Nginx протокол HTTP/2.0, введите команду ниже. Наличие объявленного протокола h2 подтверждает, что Nginx был успешно настроен для использования протокола HTTP/2.0. Все современные браузеры должны поддерживать этот протокол по умолчанию.

$ openssl s_client -connect localhost:443 -nextprotoneg ''

 

Test-Nginx-HTTP-2-Protocol

 

Шаг 3. Установите интерпретатор PHP 7

Nginx можно использовать с интерпретатором языка динамической обработки PHP для создания динамического веб-контента с помощью диспетчера процессов FastCGI, получаемого путем установки двоичного пакета php-fpm из официальных репозиториев Ubuntu.

9. Чтобы получить PHP7.0 и дополнительные пакеты, которые позволят PHP взаимодействовать с веб-сервером Nginx, введите на консоли сервера следующую команду:

$ sudo apt install php7.0 php7.0-fpm

 

Install-PHP-7-PHP-FPM-for-Ngin

 

10. После того, как интерпретатор PHP7.0 был успешно установлен на вашем компьютере, запустите и проверьте демон php7.0-fpm, выполнив следующую команду:

$ sudo systemctl start php7.0-fpm
$ sudo systemctl status php7.0-fpm

 

Start-Verify-php-fpm-Service

 

11. Текущий файл конфигурации Nginx уже настроен для использования диспетчера процессов PHP FastCGI для сервера динамического содержимого.

Блок сервера, который позволяет Nginx использовать интерпретатор PHP, представлен на следующем фрагменте, поэтому никаких дополнительных изменений файла конфигурации Nginx по умолчанию не требуется.

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}

 

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

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

12. Чтобы проверить связь веб-сервера Nginx с менеджером процессов PHP FastCGI, создайте файл конфигурации теста PHP info.php, выполнив приведенную ниже команду, и проверьте настройки, посетив этот файл конфигурации по следующему адресу: http://IP_or domain/info.php.

$ sudo su -c 'echo "<?php phpinfo(); ?>" |tee /var/www/html/info.php'

 

 

Create-PHP-Info-File

 

Verify-PHP-FastCGI-Info

 

Также проверьте, объявляется ли протокол HTTP/2.0 сервером, путем нахождения строки $ _SERVER [‘SERVER_PROTOCOL’] в блоке переменных PHP, как показано на снимке экрана ниже.

 

Check-HTTP-2.0-Protocol-Info

 

13. Чтобы установить дополнительные модули PHP7.0, используйте команду apt search php7.0, чтобы найти модуль PHP и установить его.

Также попробуйте установить следующие модули PHP, которые могут пригодиться, если вы планируете установить WordPress или другую CMS.

 

$ sudo apt install php7.0-mcrypt php7.0-mbstring

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

14. Чтобы зарегистрировать дополнительные модули PHP, просто перезапустите демон PHP-FPM, выполнив следующую команду.

$ sudo systemctl restart php7.0-fpm.service

 

 

Шаг 4: Установите базу данных MariaDB

15. Наконец, для завершения нашего стека LEMP нам нужен компонент базы данных MariaDB для хранения и управления данными веб-сайта.

Установите систему управления базами данных MariaDB, выполнив приведенную ниже команду и перезапустите службу PHP-FPM, чтобы использовать модуль MySQL для доступа к базе данных.

$ sudo apt install mariadb-server mariadb-client php7.0-mysql
$ sudo systemctl restart php7.0-fpm.service

 

Install-MariaDB-for-Nginx

 

16. Чтобы обезопасить установку MariaDB, запустите скрипт безопасности, предоставляемый бинарным пакетом, из репозиториев Ubuntu, который попросит вас установить пароль root, удалить анонимных пользователей, удаленно отключить root и удалить тестовую базу данных.

Запустите скрипт, введя приведенную ниже команду и ответьте на все вопросы Да. Используйте приведенный ниже скриншот в качестве руководства.

$ sudo mysql_secure_installation

 

Secure-MariaDB-Installation-for-Nginx

 

17. Чтобы настроить MariaDB так, чтобы обычные пользователи могли обращаться к базе данных без системных привилегий sudo, перейдите в интерфейс командной строки MySQL с привилегиями root и выполните следующие команды в интерпретаторе MySQL:

$ sudo mysql
MariaDB> use mysql;
MariaDB> update user set plugin=’‘ where User=’root’;
MariaDB> flush privileges;
MariaDB> exit

 

MariaDB-User-Permissions

 

Наконец, войдите в базу данных MariaDB и выполните произвольную команду без прав root, выполнив следующую команду:

$ mysql -u root -p -e 'show databases'

 

Как установить Nginx, MariaDB 10, PHP 7 (стек LEMP)

 

Это все! Теперь у вас есть стек LEMP, настроенный на сервере Ubuntu 16.10 и/или Ubuntu 16.04, который позволяет развертывать сложные динамические веб-приложения, которые могут взаимодействовать с базами данных.

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Если вам подошла инструкция о том, как установить стек LEMP, то подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Ciscoкурсы по кибербезопасности,  полный курс по кибербезопасностикурсы DevNet (программируемые сети) от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
LinuxMySQLNginxPHP

Больше похожих постов

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

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню