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

Вступление

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

В этом руководстве мы установим стек LEMP на CentOS 7 VPS. CentOS выполнит наше первое требование: операционная система Linux.

[.note] #Note: Стек LEMP может быть автоматически установлен на вашу каплю, добавивthis script к его пользовательским данным при запуске. Ознакомьтесь сthis tutorial, чтобы узнать больше о пользовательских данных Droplet.
#

Предпосылки

Прежде чем вы начнете читать это руководство, у вас должна быть отдельная учетная запись без полномочий root, настроенная на вашем сервере. Вы можете узнать, как это сделать, выполнив шаги 1–4 вinitial server setup for CentOS 7.

Note about SELinux: Если у вас возникнут проблемы с неработающим Nginx, убедитесь, что контекст SELinux ваших файлов конфигурации Nginx правильный, или измените режим SELinux наpermissive илиdisabled.

[[step-one -—- install-nginx]] == Шаг первый - установка Nginx

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

Чтобы добавить репозиторий CentOS 7 EPEL, откройте терминал и используйте следующую команду:

sudo yum install epel-release

Поскольку мы используем командуsudo, эти операции выполняются с привилегиями root. Он запросит у вас пароль обычного пользователя, чтобы убедиться, что у вас есть разрешение на запуск команд с привилегиями root.

Теперь, когда репозиторий Nginx установлен на вашем сервере, установите Nginx, используя следующую командуyum:

sudo yum install nginx

После этого ваш веб-сервер будет установлен.

После его установки вы можете запустить Nginx на своем VPS:

sudo systemctl start nginx

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

Open in a web browser:http://server_domain_name_or_IP/

Вы увидите веб-страницу CentOS 7 Nginx по умолчанию, предназначенную для ознакомления и тестирования. Это должно выглядеть примерно так:

CentOS 7 Nginx Default

Если вы видите эту страницу, значит ваш веб-сервер теперь правильно установлен.

Прежде чем продолжить, вам нужно включить Nginx для запуска при загрузке. Для этого используйте следующую команду:

sudo systemctl enable nginx

Как найти публичный IP-адрес вашего сервера

Если вы не знаете, что такое публичный IP-адрес вашего сервера, вы можете найти его несколькими способами. Обычно это адрес, который вы используете для подключения к вашему серверу через SSH.

Из командной строки вы можете найти это несколькими способами. Во-первых, вы можете использовать инструментыiproute2, чтобы получить свой адрес, набрав это:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Это даст вам одну или две строки назад. Они оба являются правильными адресами, но ваш компьютер может использовать только один из них, поэтому не стесняйтесь пробовать каждый из них.

Альтернативный метод - использовать внешнюю сторону, чтобы сообщить вам, какit видит ваш сервер. Вы можете сделать это, задав конкретному серверу ваш IP-адрес:

curl http://icanhazip.com

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

[[step-two -—- install-mysql-mariadb]] == Шаг второй - установка MySQL (MariaDB)

Теперь, когда наш веб-сервер запущен и работает, пришло время установить MariaDB, замену MySQL. MariaDB является разработанным сообществом форком системы управления реляционными базами данных MySQL. По сути, он будет организовывать и предоставлять доступ к базам данных, где наш сайт может хранить информацию.

Опять же, мы можем использоватьyum для приобретения и установки нашего программного обеспечения. На этот раз мы также установим некоторые другие «вспомогательные» пакеты, которые помогут нам связать наши компоненты друг с другом:

sudo yum install mariadb-server mariadb

Когда установка завершится, нам нужно запустить MariaDB с помощью следующей команды:

sudo systemctl start mariadb

Теперь, когда наша база данных MySQL запущена, мы хотим запустить простой скрипт безопасности, который удалит некоторые опасные значения по умолчанию и немного заблокирует доступ к нашей системе баз данных. Запустите интерактивный скрипт, запустив:

sudo mysql_secure_installation

Приглашение попросит вас ввести ваш текущий пароль root. Поскольку вы только что установили MySQL, скорее всего, у вас его не будет, поэтому оставьте его пустым, нажав клавишу ввода. Затем на экране появится запрос, хотите ли вы установить пароль root. Вперед, введитеY и следуйте инструкциям:

mysql_secure_installation prompts:Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

New password: password
Re-enter new password: password
Password updated successfully!
Reloading privilege tables..
 ... Success!

Для остальных вопросов вы должны просто нажать клавишу «ВВОД» в каждом приглашении, чтобы принять значения по умолчанию. Это приведет к удалению некоторых примеров пользователей и баз данных, отключению удаленных учетных записей root и загрузке этих новых правил, чтобы MySQL немедленно учитывал сделанные нами изменения.

Последнее, что вам нужно сделать, это включить MariaDB для запуска при загрузке. Для этого используйте следующую команду:

sudo systemctl enable mariadb

На данный момент ваша система баз данных настроена, и мы можем двигаться дальше.

[[step-three -—- install-php]] == Шаг третий - установка PHP

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

Мы снова можем использовать системуyum для установки наших компонентов. Мы также собираемся включить пакеты php-mysql и php-fpm:

sudo yum install php php-mysql php-fpm

Настройте процессор PHP

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

Откройте основной файл конфигурации php-fpm с правами root:

sudo vi /etc/php.ini

В этом файле мы ищем параметр, который устанавливает cgi.fix_pathinfo. Это будет закомментировано точкой с запятой (;) и будет установлено в «1» по умолчанию.

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

Мы изменим оба эти условия, раскомментировав строку и установив ее в «0» следующим образом:

/etc/php.ini excerpt

cgi.fix_pathinfo=0

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

Затем откройте файл конфигурации php-fpmwww.conf:

sudo vi /etc/php-fpm.d/www.conf

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

/etc/php-php.d/www.conf — 1 of 3

listen = /var/run/php-fpm/php-fpm.sock

Затем найдите строки, которые устанавливаютlisten.owner иlisten.group, и раскомментируйте их. Они должны выглядеть так:

/etc/php-php.d/www.conf — 2 of 3

listen.owner = nobody
listen.group = nobody

Наконец, найдите строки, которые устанавливаютuser иgroup, и измените их значения с «apache» на «nginx»:

/etc/php-php.d/www.conf — 3 of 3

user = nginx
group = nginx

Затем сохраните и выйдите.

Теперь нам просто нужно запустить ваш PHP-процессор, набрав:

sudo systemctl start php-fpm

Это осуществит изменение, которое мы сделали.

Затем включите php-fpm для запуска при загрузке:

sudo systemctl enable php-fpm

[[step-four -—- configure-nginx-to-process-php-pages]] == Шаг четвертый - настройка Nginx для обработки страниц PHP

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

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

sudo vi /etc/nginx/conf.d/default.conf

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

/etc/nginx/conf.d/default.conf — original

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

Нам нужно внести некоторые изменения в этот файл для нашего сайта.

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

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

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

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

Изменения, которые вам нужно сделать, выделены красным цветом в тексте ниже. Если хотите, вы можете просто скопировать и вставить все, а затем заменить значениеserver_name на соответствующее доменное имя или IP-адрес:

/etc/nginx/conf.d/default.conf — updated

server {
    listen       80;
    server_name  server_domain_name_or_IP;

    # note that these lines are originally from the "location /" block
    root   /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

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

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

sudo systemctl restart nginx

[[step-five -—- test-php-processing-on-your-web-server]] == Шаг пятый - протестируйте обработку PHP на вашем веб-сервере

Чтобы проверить, правильно ли настроена наша система для PHP, мы можем создать очень простой скрипт PHP.

Мы назовем этот скриптinfo.php. Чтобы Apache мог найти файл и правильно его обслужить, он должен быть сохранен в очень конкретном каталоге, который называется «веб-корнем».

В CentOS 7 этот каталог находится в/usr/share/nginx/html/. Мы можем создать файл в этом месте, набрав:

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

Это откроет пустой файл. Мы хотим поместить в файл следующий текст, который является допустимым кодом PHP:

Тестовый скрипт PHP

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

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

Адрес, который вы хотите посетить, будет:

Open in a web browser:http://your_server_IP_address/info.php

Страница, на которую вы заходите, должна выглядеть примерно так:

CentOS 7 default PHP info

Эта страница в основном дает вам информацию о вашем сервере с точки зрения PHP. Это полезно для отладки и проверки правильности применения ваших настроек.

Если это было успешно, то ваш PHP работает как положено.

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

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

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

Заключение

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

Related