Как установить стек LEMP (Linux, Nginx, MySQL, PHP) на CentOS 7 VPS или выделенном сервере

Введение

LEMP является аббревиатурой для Linux, Nginx, MySQL и PHP. Стек LEMP, как и стек LAMP (с Apache вместо Nginx), используется для разработки и развертывания веб-приложений. Nginx в LEMP предоставляет модульную управляемую событиями архитектуру обработки запросов с использованием асинхронных событий. Эта функция позволяет ему иметь высокую производительность при высоких нагрузках. MySQL используется для хранения данных сайта, тогда как PHP – для обработки динамического контента сайтов..


В этой статье показано, как установить стек LEMP в Centos 7 VPS или выделенном сервере. Мы демонстрируем использование последних версий компонентов стека LEMP на момент публикации следующим образом:

  • Nginx версия 1.15.2
  • PHP-FPM версия 7.2
  • MySQL Community Version 8.0

Nginx

Открытый исходный код NGINX доступен в двух типах:

  • Главная линия: включает в себя последние функции и исправления ошибок и всегда в курсе. Он надежен, однако может содержать несколько экспериментальных модулей и / или несколько новых ошибок. Рекомендуется для серверов разработки.
  • Стабильный: включает в себя новейшие функции с критическими исправлениями ошибок, перенесенными в основную версию. Рекомендуется для производственных серверов.

Существует два способа установки основного или стабильного Nginx:

  • Установка пакета Nginx из официального репозитория Nginx или официального репозитория ОС: самый простой способ установки. Пакет включает в себя почти все официальные модули Nginx.
  • Компиляция и установка из исходного кода: более гибкий способ установки, когда вы решаете, какие конкретные модули включать в пакет.

В этом случае мы устанавливаем Nginx – Mainline Type из его официального репозитория Nginx, создав файл репозитория yum и вставив конфигурацию следующим образом:

$ sudo vim /etc/yum.repos.d/nginx.repo
[Nginx]
имя = репозиторий nginx
BaseUrl = https: //nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck = 0
включено = 1

Сохраните файл и выйдите.

Обновите репозиторий Centos 7 с помощью репозитория nginx и установите nginx

$ sudo yum update
$ sudo yum установить nginx -y

Запустите nginx и включите при загрузке

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Убедитесь, что Nginx запущен и работает

[linuxuser @ centos7-lemp ~] $ curl -I 127.0.0.1
HTTP / 1.1 200 ОК
Сервер: nginx / 1.15.2
Дата: вт, 31 июля 2018 13:03:07 GMT
Тип контента: текст / HTML
Длина контента: 612
Последнее изменение: вторник, 24 июля 2018 г. 14:05:29 GMT
Подключение: keep-alive
ETag: "5b573229-264"
Accept-Ranges: байты

Исходя из вывода, мы подтверждаем, установленная версия 1.15.2

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

Http: // server_domain_name_or_public_IP /

MySQL Community

Мы устанавливаем MySQL 8.0 Community (для управления данными сайта), используя инструкции из нашего учебного пособия Как установить MYSQL 8.0 и создать базу данных на VOS или выделенном сервере CentOS 7 Linux

PHP

PHP требуется в стеке LEMP, чтобы включить обработку динамического контента, потому что Nginx не имеет встроенной возможности обработки PHP, как другие серверы, например. LiteSpeed. В связи с этим мы устанавливаем PHP-FPM (FastCGI Process Manager) версии 7.2. По умолчанию Centos 7 поставляется с PHP 5.4, который достиг EOL, теперь он устарел и больше не поддерживается. PHP 7.2 позволит веб-приложению загружаться быстрее и использовать меньше системных ресурсов. Кроме того, он включает в себя встроенную интеграцию с базой данных MySQL, поэтому без проблем работает с установленным MySQL 8.0.

Установить и включить Remi Repository

Пакет PHP-FPM находится в репозитории Remi.

$ sudo yum install -y yum-utils
$ sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
$ sudo yum-config-manager –enable remi-php72

Установите PHP-FPM и часто используемые модули

$ sudo yum install -y php72 php72-php-fpm php72-php-gd php72-php-json php72-php-mbstring php72-php-mysqlnd php72-php-xml php72-php-xmlrpc php72-php-opcache

Запустите и включите PHP-FPM

$ sudo systemctl start php72-php-fpm
$ sudo systemctl enable php72-php-fpm

Проверьте версию PHP

[linuxuser @ centos7-lemp ~] $ php72 -v
PHP 7.2.8 (cli) (сборка: 17 июля 2018 г., 08:41:40) (NTS)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
с Zend OPcache v7.2.8, Copyright (c) 1999-2018, Zend Technologies

Базовая конфигурация безопасности PHP

Отредактируйте файл php.ini и найдите параметр cgi.fix_pathinfo, раскомментируйте его и установите на 0. По умолчанию этот параметр позволяет PHP выполнять ближайший файл, если он не находит точно соответствующий файл PHP. Следовательно, пользователи могут легко создавать вредоносные запросы PHP, которые PHP будет обрабатывать с легкостью.

$ sudo vim /etc/opt/remi/php72/php.ini

Изменить следующим образом:

; cgi.fix_pathinfo обеспечивает * реальную * PATH_INFO / PATH_TRANSLATED поддержку CGI. РНР
; предыдущее поведение было установить PATH_TRANSLATED в SCRIPT_FILENAME, а не грок
; что такое PATH_INFO Для получения дополнительной информации о PATH_INFO см. Спецификации cgi. настройка
; это к 1 заставит PHP CGI исправить свои пути, чтобы соответствовать спецификации. Настройка
; нуля заставляет PHP вести себя как раньше. По умолчанию 1. Вы должны исправить ваши скрипты
; использовать SCRIPT_FILENAME вместо PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
cgi.fix_pathinfo = 0

Настройте PHP-FPM для работы с Nginx

Отредактируйте файл конфигурации php-fpm следующим образом

$ sudo vim /etc/opt/remi/php72/php-fpm.d/www.conf
; Добавить пользователя Nginx
; Unix пользователь / группа процессов
; Примечание: пользователь обязателен. Если группа не установлена, группа пользователей по умолчанию
; будет использоваться.
; RPM: пользователь apache, выбранный для предоставления доступа к тем же каталогам, что и httpd
пользователь = nginx

; RPM: оставить группу разрешенной для записи в log dir.
group = nginx

; Адрес, по которому принимаются запросы FastCGI.
; Допустимые синтаксисы:
; «ip.add.re.ss: порт» – для прослушивания на сокете TCP определенного IPv4-адреса
; конкретный порт;
; ‘[ip: 6: addr: ess]: port’ – прослушивать на сокете TCP определенный IPv6-адрес
; конкретный порт;
; ‘порт’ – прослушивать на сокете TCP все адреса
; (Сопоставленные IPv6 и IPv4) на конкретном порту;
; ‘/ path / to / unix / socket’ – прослушивать сокет unix.
; Примечание: это значение обязательно.
слушай = 127.0.0.1:9000

Перезапустите службу php-fpm, чтобы изменения в конфигурации

$ sudo systemctl restart php72-php-fpm

Отредактируйте файл конфигурации Nginx

$ sudo vim /etc/nginx/sites-enabled/default.conf

После внесения изменений файл должен выглядеть следующим образом:

сервер {
слушай 80;
название сервера ;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

расположение / {
root / usr / share / nginx / html;
index index.php index.html index.htm;
}

error_page 404 /404.html;

# перенаправить страницы с ошибками сервера на статическую страницу /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root / usr / share / nginx / html;
}

# Прокси PHP скрипты для прослушивания Apache на 127.0.0.1:80
#
#location ~ \ .php $ {
# proxy_pass http://127.0.0.1;
#}

# передать PHP-скрипты серверу FastCGI, прослушивающему 127.0.0.1:9000
#
location ~ \ .php $ {
root / usr / share / nginx / html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
включить fastcgi_params;
}

# запретить доступ к файлам .htaccess, если корень документа Apache
# совпадает с тем, что у nginx
#
#location ~ /\.ht {
# отрицать все;
#}
}

Проверьте, все ли в порядке

[linuxuser @ centos7-lemp ~] $ sudo nginx -t
nginx: файл конфигурации /etc/nginx/nginx.conf в порядке
nginx: файл конфигурации /etc/nginx/nginx.conf тест пройден успешно

Перезапустите nginx, чтобы изменения вступили в силу

$ sudo systemctl restart nginx

Тест PHP

Создать файл Информация.php следующим образом и поместите его в корневой каталог Nginx web

$ sudo vim /usr/share/nginx/html/info.php
<?php phpinfo (); ?>

Сохраните и выйдите из файла.

Затем посетите адрес браузера – Http: //your_domain_or_server_public_IP/info.php

На веб-странице будет отображаться информация PHP о сервере. Это подтверждает, что Nginx правильно работает с PHP. В целях безопасности вы должны удалить файл info.php в корневом веб-каталоге..

Вывод

Теперь, когда вы успешно установили стек LEMP, теперь вы можете разместить свой потрясающий бизнес-сайт или веб-приложение в корневом каталоге / usr / share / nginx / html и обслуживать своих потенциальных клиентов. Это действительно очень просто!

Проверьте эти лучшие 3 хостинга MySQL:

А2 Хостинг

Стартовая цена:
$ 3,92


надежность
9,3


ценообразование
9,0


Дружественный интерфейс
9,3


Служба поддержки
9,3


особенности
9,3

Читать отзывы

Посетите A2 Хостинг

FastComet

Стартовая цена:
$ 2,95


надежность
9,7


ценообразование
9,5


Дружественный интерфейс
9,7


Служба поддержки
9,7


особенности
9,6

Читать отзывы

Посетите FastComet

Hostinger

Стартовая цена:
$ 0,99


надежность
9,3


ценообразование
9,3


Дружественный интерфейс
9,4


Служба поддержки
9,4


особенности
9,2

Читать отзывы

Посетить Hostinger

Связанные статьи с практическими рекомендациями

  • Как установить стек LEMP (Linux, Nginx, MySQL, PHP) на Vbu или выделенный сервер Ubuntu 18.04
    промежуточный
  • Как установить MYSQL 8.0 и создать базу данных на VOS или выделенном сервере CentOS 7 Linux
    промежуточный
  • Как установить phpMyAdmin на CentOS 7 VPS или выделенном сервере
    промежуточный
  • Как настроить и оптимизировать производительность MySQL 8.0 на сервере CentOS 7
    эксперт
  • Как установить CachetHQ на CentOS 7 VPS или выделенном сервере
    промежуточный
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me