Как установить plesk на centos 8

Обновлено: 05.07.2024

Программный стек LEMP – это группа программ, предназначенная для обслуживания динамических веб-страниц и приложений, написанных на PHP. Акроним LEMP расшифровывается как Linux (операционная система), Nginx (веб-сервер), MySQL (система управления базами данных) и PHP (язык для обработки динамического контента).

Обычно уровень БД в стеке LEMP обслуживается системой управления базами данных MySQL. Но до релиза CentOS 8 пакета MySQL не было в стандартном репозитории системы CentOS. Поэтому в качестве альтернативы на машинах CentOS стала широко использоваться система MariaDB, поддерживаемый сообществом форк MySQL. На практике это значит, что вы можете перейти на MariaDB, не меняя код или конфигурации своего приложения.

Этот мануал поможет вам установить все компоненты стека LEMP на сервер CentOS 8. Хотя пакет MySQL есть в стандартном репозитории системы CentOS 8, мы установим MariaDB.

Поскольку сервер использует операционную систему Linux, первый компонент уже установлен. Мануал поможет вам установить остальное.

Требования

Для работы вам понадобится сервер CentOS 8, настроенный согласно этому мануалу.

1: Установка Nginx

Для отображения страниц в стеке LEMP используется высокопроизводительный веб-сервер Nginx. Мы установим его с помощью dnf, нового стандартного менеджера пакетов CentOS 8.

Поскольку это первое взаимодействие с менеджером dnf в текущей сессии, нам нужно обновить индекс пакетов. После этого можно установить Nginx

sudo dnf update
sudo dnf install nginx

Чтобы подтвердить установку, нажмите y.

После завершения установки введите эту команду, чтобы включить и запустить сервер:

sudo systemctl start nginx

Чтобы убедиться, что политика брандмауэра изменилась, введите:

sudo firewall-cmd --permanent --list-all

Вы получите такой вывод:

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

sudo firewall-cmd --reload

Добавив новое правило брандмауэра, нужно проверить, работает ли сервер. Попробуйте открыть стандартную посадочную страницу в браузере по доменному имени или IP-адресу сервера.

Если вы не знаете своего IP-адреса, вы можете узнать его с помощью команды:

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

Команда вернёт несколько адресов. Проверьте каждый из них в браузере.

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

Полученный IP-адрес введите в браузер, чтобы убедиться, что веб-сервер работает должным образом.

На экране должна появиться стандартная посадочная страница Nginx:

Welcome to nginx on Red Hat Enterprise Linux!

2: Установка MariaDB

Теперь нужно установить MariaDB, СУБД, которая будет хранить и систематизировать данные сайта.

Чтобы сделать это, введите:

sudo dnf install mariadb-server

Когда установка завершится, включите и запустите сервис MariaDB:

sudo systemctl start mariadb

После установки MariaDB требует дополнительной настройки. Чтобы защитить установку, можно запустить простой скрипт безопасности, который удалит потенциально рискованные параметры. Запустите скрипт:

Скрипт задаст ряд вопросов. Сначала нужно указать root-пароль MariaDB. Это административная учетная запись MariaDB, которая имеет повышенные привилегии. Вы установили MariaDB только что и еще не внесли никаких изменений в конфигурацию, этого пароля пока у вас нет, поэтому просто нажмите Enter.

В следующем окне скрипт предложит настроить root пароль для базы данных. Введите N и нажмите клавишу Enter. Вместо пароля MariaDB использует для root более надежный метод аутентификации, поэтому пароль сейчас можно не устанавливать.

На остальные вопросы можно нажать Y и Enter. Это удалит анонимных пользователей и тестовые базы данных, отключит удалённый root логин и обновит текущие настройки MariaDB.

После этого откройте командную строку MariaDB в терминале:

Вы подключитесь к серверу MariaDB в качестве root пользователя базы данных. Вы должны увидеть примерно такой результат:

Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.17-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

Обратите внимание: вам не нужно было вводить свой пароль. Это потому, что для аутентификации администратора по умолчанию MariaDB использует метод unix_socket, а не password. Сначала такой подход может показаться проблемой для безопасности, но это делает сервер БД более защищенным, поскольку войти в систему как пользователь root MariaDB могут только системные пользователи с привилегиями sudo, подключающиеся с консоли или через приложение, работающее с теми же привилегиями. На практике это означает, что вы не сможете использовать аккаунт администратора для подключения с вашего PHP-приложения.

Для повышения безопасности лучше иметь для каждой БД отдельные учетные записи с более узкими привилегиями (особенно если вы планируете разместить на своем сервере несколько баз данных). Давайте создадим БД example_database и пользователя example_user для нее (вы можете заменить эти имена другими значениями).

Чтобы создать новую базу данных, введите следующую команду из консоли MariaDB:

CREATE DATABASE example_database;

Теперь вы можете создать нового пользователя и передать ему все права на новую БД. Следующая команда определяет условный пароль этого пользователя (password), а вы должны заменить это значение сложным паролем.

GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Это предоставит пользователю example_user права доступа к БД example_database, при этом запретив ему создавать или изменять другие базы данных на вашем сервере.

Затем выйдите из оболочки MariaDB:

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

mysql -u example_user -p

Обратите внимание на флаг -p, он запрашивает пароль, который вы указали при создании пользователя example_user. После входа в консоль MariaDB убедитесь, что у вас есть доступ к базе данных example_database:

Чтобы выйти из оболочки MariaDB, введите:

3: Установка PHP-FPM

PHP – это серверный язык сценариев для создания динамических страниц.

В отличие от Apache, Nginx поставляется без интерпретатора PHP. Потому Nginx нужна внешняя программа для обработки PHP и соединения самого интерпретатора PHP с веб-сервером. Это позволяет повысить общую производительность большинства веб-сайтов на основе PHP, но требует дополнительной настройки.

Сейчас нужно установить php-fpm (fastCGI process manager). Так Nginx сможет передавать PHP-запросы на обработку. Кроме того, вам понадобится php-mysqlnd (модуль PHP, который позволяет PHP взаимодействовать с MySQL-подобными БД). Базовые пакеты PHP будут автоматически установлены как зависимости.

sudo dnf install php-fpm php-mysqlnd

По умолчанию CentOS 8 поставляется с текстовым редактором vi. Это очень мощный редактор, но новичкам легко в нем запутаться. Вы можете установить более удобный редактор, например nano:

sudo dnf install nano

Откройте файл в этом редакторе:

Найдите директивы user и group. В nano можно выполнить поиск по открытому файлу с помощью клавиш CTRL+W.

Как видите, в этих директивах находится значение apache, что нужно изменить на nginx:

Сохраните и закройте файл (Ctrl + X, Y и Enter).

Чтобы включить и запустить сервис php-fpm, введите:

sudo systemctl start php-fpm

Перезапустите Nginx, чтобы он добавил конфигурацию установки php-fpm:

sudo systemctl restart nginx

4: Тестирование взаимодействия PHP и Nginx

В CentOS 8 стандартная установка php-fpm автоматически создает конфигурационные файлы, с помощью которых веб-сервер Nginx сможет обрабатывать файлы .php в корневом каталоге /usr/share/nginx/html. Вам не нужно вносить изменения в конфигурацию Nginx, чтобы PHP смог работать корректно.

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

Следующая команда передаст права на стандартный корневой каталог Nginx пользователю и группе по имени 8host (вместо этого условного имени вы должны указать в команде имя своего пользователя и группы).

sudo chown -R 8host.8host /usr/share/nginx/html/

Пора убедиться, что веб-сервер успешно обслуживает файлы PHP.

Для этого нужно создать тестовый файл info.php в каталоге document root.

Вставьте в этот файл следующий код:

<?php
phpinfo();

Сохраните и закройте файл.

Теперь попробуйте открыть его в браузере:

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

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

При необходимости вы всегда можете снова создать этот файл.

5: Тестирование соединения базы данных с PHP (опционально)

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

Сначала подключитесь к консоли MariaDB с помощью пользователя БД, которого вы создали в разделе 2 данного руководства:

mysql -u example_user -p

Создайте таблицу по имени todo_list. В консоли MariaDB выполните следующую команду:

CREATE TABLE example_database.todo_list (
item_id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(item_id)
);

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

INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

Чтобы подтвердить, что данные были успешно сохранены в вашей таблице, введите:

SELECT * FROM example_database.todo_list;

Вы увидите следующий вывод:

+---------+--------------------------+
| item_id | content |
+---------+--------------------------+
| 1 | My first important item |
| 2 | My second important item |
| 3 | My third important item |
| 4 | and this one more thing |
+---------+--------------------------+
4 rows in set (0.000 sec)

Убедившись, что в тестовой таблице есть ваши данные, вы можете выйти из консоли MariaDB:

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

Добавьте в файл PHP-скрипта следующие строки:

<?php
$user = "example_user";
$password = "password";
$database = "example_database";
$table = "todo_list";
try $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>TODO</h2><ol>";
foreach($db->query("SELECT content FROM $table") as $row) echo "<li>" . $row['content'] . "</li>";
>
echo "</ol>";
> catch (PDOException $e) print "Error!: " . $e->getMessage() . "<br/>";
die();
>

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

Теперь вы можете получить доступ к этой странице в своем браузере, посетив домен или внешний IP-адрес, который вы указали в конфигурации Nginx. К нему нужно добавить секцию /todo_list.php:

Вы должны увидеть тезначения, которые вы вставили в тестовую таблицу.

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

Заключение

Теперь на сервере CentOS 8 установлен программный стек LEMP – надёжная и гибкая платформа для развёртывания сайта или приложения. На этом этапе можно приступать к дальнейшей настойке сервера.

Недавно вышло обновление популярной панели управления хостингом Odin Plesk 12.5. В этой версии был значительно улучшен пользовательский интерфейс и добавлены функции безопасности, включая Server Shield Plus и MagicSpam. Администраторы серверов оценят обновленный дизайн интерфейса (в том числе для мобильных устройств), упрощающий взаимодействие с пользователями и доступ к инструментам восстановления.

Если вы используете классический хостинг и вам уже не хватает возможностей и скорости работы — Plesk поможет получить на VPS нужной мощности или в облаке привычный интерфейс хостинга, а также много полезных дополнительных возможностей по автоматизации обслуживания сайтов и обеспечению безопасности.

Что отличает обновление Plesk 12.5? Он стал действительно удобнее и проще. Даже если раньше вы попробовали Plesk и используете что-то другое, очень рекомендуем посмотреть на эту версию. Разница, как говорится, налицо. Пробную версию облачного сервера выдаем в конце статьи, чтобы вы могли протестировать новый Plesk.


В этой статье мы детальнее узнаем о новых возможностях Plesk 12.5 и рассмотрим процесс обновления Plesk с прошлой версии и процесс установки Plesk на чистый сервер.

Новые возможности

Среди новых возможностей Plesk 12.5 можно отметить:

  • Улучшения основных функций: Новый интерфейс позволяет пользователям проще развертывать и управлять веб-сайтами из единой платформы. В частности улучшен процесс настройки PHP и баз данных, добавлены инкрементальные бекапы. Улучшенные инструменты миграции позволяют проще переходить со старых версий или мигрировать с cPanel.
  • Улучшенная поддерживаемость: Сервера Plesk стало проще поддерживать пользователям с небольшим опытом в настройке серверов.
  • Инструменты самовосстановления: Многие проблемы теперь исправляются автоматически без необходимости обращения в техническую поддержку.
  • Проще обслуживать десятки и сотни сайтов: С помощью встроенного набора инструментов для Wordpress можно управлять темами и расширениями для многих инсталляций одновременно.
  • Sidekick.pro: расширение, помогающее ознакомиться с новыми функциями без обращения в поддержку. Встроенные руководства учат пользователя шаг за шагом с помощью задач, используя текстовые, голосовые и визуальные подсказки.
  • Обновленная безопасность с возможностью добавления Server Shield Plus: CloudFlare Web Application Firewall останавливает угрозы до того, как они достигли сервера, работает на уровне сети, не требует установки и любого дополнительного оборудования или программного обеспечения. Также в пакет безопасности e–mail теперь входит и MagicSpam.

Поддержка мобильных устройств

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



Переработанное резервнoe копирование

В Plesk 12.5 были значительно переработано резервное копирование. Наиболее долгожданное изменение — поддержка инкрементальных бекапов. Инкрементальные бекапы делаются гораздо быстрее и занимают меньше места на диске.


Самовосстановление

В идеальном мире программы не падают, базы данных всегда остаются целостными, файловые хранилища не деградируют, но Plesk работает в реальном мире, где все это может случиться. Поэтому в plesk встроены инструменты самовосстановления, которые ищут и исправляют проблемы автоматически. В Plesk 12.5 этими инструментами можно пользоваться «из коробки» как для Linux, так и для Windows.


Настройка разных версий PHP из панели управления

Раньше у Plesk уже была поддержка различных версий PHP и он устанавливался с разными версиями PHP в комплекте. Теперь вы можете управлять всеми этими версиями PHP из панели управления Plesk: включать и отключать PHP–хендлеры, редактировать php.ini и изменять настройки расширений PHP.


PHPInfo

Совсем маленькая фича, которая делает жизнь пользователей проще. Возможно все PHP–разработчики создавали PHP–файл с одной строкой


, запускали его и затем забывали удалить. Если вы хотите просмотреть информацию о хостинге, просто кликните на ссылку.


Plesk гарантирует, что файл будет удален после того, как вы его посмотрите.


Редактор кода

С помощью редактора кода вы сможете быстро исправлять небольшие ошибки на сайте.


Возможность просмотра логов в реальном времени


Обновление до Plesk 12.5

Если вы уже используете Plesk, перейдите в раздел Tools & Settings > Updates and Upgrades Settings и выберите канал обновлений Early Adopters Release.


Затем перейдите в Tools & Settings > Updates and Upgrades и обновитесь до последней версии Plesk 12.5.


После обновления вы сможете воспользоваться всеми преимуществами Plesk 12.5.

Создание сервера

Для установки вам потребуется сервер с Debian 8. Вы можете использовать облако InfoboxCloud или VPS от Infobox. Облако позволяет в любое время изменять объем ресурсов (CPU, Ram, Storage), доступный серверам и оплачивать только выделенные ресурсы. VPS экономичнее, если вы точно знаете, сколько ресурсов необходимо для вашего сервера на месяц.

После заказа облака войдите в панель управления и нажмите "Новый сервер".


В качестве пользовательского имени сервера укажите домен, на котором будет располагаться ваш первый сайт. Задайте необходимый объем ресурсов серверу. Не забудьте установить минимум 1 публичный ip–адрес серверу и достаточную скорость сети и нажмите «Далее».


Выберите ОС Debian 8 и нажмите далее.


Теперь просто подтвердите выбранные параметры, нажав «Готово». Вы получите на электронную почту данные для доступа к серверу.

Теперь, когда у вас есть VPS или облачный сервер, подключитесь к нему по SSH.

Установка Plesk 12.5

В A–записи DNS направьте домен, на котором будет располагаться наш первый сайт, на выделенный ip-адрес сервера.


На сервере обновите ОС и установите curl:


Если вы хотите установить Plesk без лишних вопросов в обычной конфигурации, введите команду:

Запустите установку Plesk командой:

Вам будет предложено прочитать лицензионное соглашение. Для продолжения введите «N» и нажмите «Enter».



  • Максимальная инсталляция Plesk занимает 2.7 гб дискового пространства. Если это слишком много для вас, нажмите P > Enter и выберите другой вариант установки. Если подходит, нажмите N > Enter.
  • На последнем шаге предлагается опытным пользователям выбрать, какие пакеты устанавливать из полного набора. Если вы не знаете, что вам нужно — нажмите N >Enter.

После окончания установки вы сможете открыть веб-интерфейс Plesk по адресу:
, где в качестве имени_домена используйте имя вашего домена, который через DNS вы направили на выделенный ip–адрес вашего сервера.

Вы увидите окно входа. Для первого входа используйте логин и пароль администратора сервера, который вы используете для доступа по SSH.


Вы увидите лицензионное соглашение. Примите его, нажав «Accept»


Выберите, как вы будете использовать Plesk.


Будет предложено сделать выбор интерфейса по-умолчанию. Если вы сами занимаетесь размещением сайтов клиентов или собственных сайтов, выберите «Power User View». Если вы хотите предоставить вашим пользователям доступ к Plesk, выберите «Service Provider View».


Теперь необходимо указать доменное имя для сервера, которое будет использоваться для управления. Для этого в любом вашем служебном домене направьте A–запись на выделенный ip–адрес сервера в DNS. Укажите этот домен при настройке Plesk.

Убедитесь, что Default IP–адрес соответствует выделенному IP–адресу сервера. Второй адрес в списке — адрес во внутренней сети. Также задайте пароль администратора, чтобы не использовать root–пароль от сервера для входа. При этом имя пользователя для входа в Plesk будет «admin».


Укажите контактные данные администратора.


Plesk попросит ввести лицензионный ключ или заказать 14-и дневную бесплатную пробную версию.

В панели управления InfoboxCloud на главной странице нажмите «Заказать новую услугу».


Выберите раздел «Аренда лицензий».


Добавьте в корзину необходимую редакцию. Сравнение редакций проводилось в обзоре Plesk 12.


Примите условия договора и нажмите «Оформить заказ»


После заказа вы получите ключ Plesk на вашу электронную почту.



Если вам необходимо получить пробный ключ Plesk, он доступен по этой ссылке.

После ввода ключа вам будет необходимо добавить пользователя системы для доступа к веб-пространству по FTP и SSH.


Plesk был успешно установлен и настроен. Вы уже имеете доступ к первому сайту на домене, который вы направили на сервер с Plesk.


Включаем русский язык по-умолчанию

Перейдите в раздел «Tools & Settings» и в группе «Plesk Apperance» выберите «Languages».



Выберите русский язык и нажмите «Make default».


Выйдите из панели управления и войдите в нее снова.


Теперь язык по-умолчанию русский.


Заключение

В этой статье мы рассмотрели некоторые новые возможности Plesk 12.5, процесс обновления с прошлой версии и процесс установки на чистый сервер. В следующих статьях мы продолжим рассмотрение Plesk на реальных примерах использования.

Уже сейчас можете попробовать Plesk 12.5 бесплатно в облаке InfoboxCloud. Для этого напишите нам на email ваше имя и желаемый регион облака: Москва, Санкт-Петербург или Амстердам. Срок действия пробной версии 14 дней.

Если вы не можете оставлять комментарии на Хабре, напишите нам в Сообществе.

Parallels Plesk Panel – удобная панель управления сервером, которая позволит вам в автоматическом режиме создавать и настраивать сайты, почтовые ящики и многое другое.

Сначала вам нужно скачать автоустановщик. Для этого введите команду:

Установите максимальные права для выполнения:


Следуйте подсказкам автоустановщика. На одном из шагов автоустановщик предложит выбрать устанавливаемую версию панели. Мы рекомендуем выбрать стабильную версию (с пометкой stable).

Затем откройте файл конфигурации для редактирования.

В файле исправьте везде 8443 на 18443 и сохраните изменения.
После чего перезапустите панель:


Кроме того, если устанавливать панель на сервер с уже установленной MySql, необходимо предварительно сделать пустым пароль пользователя root:


После этого панель будет доступна по адресу вида IP_сервера:18443 (например, 109.120.170.13:18443). При переходе по данному адресу вы попадете на страницу авторизации.


Данные (логин и пароль) для входа те же, что и для доступа на сервер при подключении по SSH.
При первой авторизации в панели нужно ознакомиться с лицензионным соглашением и согласиться с ним (поставьте отметки в конце странице и нажмите «Accept»). В противном случае работа с панелью будет невозможна.


На следующем шаге нужно указать необходимые параметры конфигурации сервера, в том числе пароль от панели:


Затем нужно выбрать интерфейс самой панели в зависимости от целей её использования:


После этого необходимо заполнить анкету администратора Parallels Plesk Panel. Рекомендуем вносить достоверные сведения, это упростит дальнейшую работу с панелью.


После заполнения всех данных вам предложат активировать панель при помощи лицензионного ключа. Для этого его нужно купить/продлить или установить.


Также есть возможность приобрести бесплатную версию лицензии на 14 дней. Для этого кликните по ссылке «14-day full-featured trial license». При этом откроется страница сайта компании Parallels, на которой можно заполнить несложную форму регистрации и получить лицензионный ключ (ключ будет выслан вам на указанный в форме e-mail):


Вернитесь на страницу активации панели и нажмите кнопку «Install Key». На следующем шаге введите ключ активации или же укажите файл лицензионного ключа, который вы получили на электронную почту.


Последний шаг — настройка веб-пространства, созданного для вашей панели.



Чтобы изменить язык интерфейса на русский, нажмите на имя пользователя вверху панели и выберите пункт Edit Profile.


В выпадающем меню в строке Panel Language выберите русский язык — RUSSIAN. Нажмите «ОК».

Веб-сервер, настроенный по данной инструкции можно будет использовать для размещения собственных сайтов в локальной сети или сети Интернет. Данная инструкция проверена для CentOS 8.

Общая настройка системы

Установка пакетов

1. Обновляем CentOS:

2. Устанавливаем репозиторий EPEL и дополнительные пакеты для загрузки и распаковки:

dnf install epel-release wget unzip

Время

1. Устанавливаем часовой пояс:

\cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

* данной командой мы установим часовой пояс по московскому времени.

2. Устанавливаем и запускаем службу для автоматической синхронизации времени:

dnf install chrony

systemctl enable chronyd

systemctl start chronyd

Настройка безопасности

1. Отключаем SELinux:

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

* первая команда редактирует конфигурационный файл, чтобы SELinux не запускался автоматически, вторая — отключает его разово. Подробнее читайте статью Как отключить SELinux.

2. Открываем необходимые порты в брандмауэре:

firewall-cmd --permanent --add-port=/tcp

firewall-cmd --permanent --add-port=/tcp

firewall-cmd --permanent --add-port=/tcp

* 80, 443 и 8080 порты для веб-сервера; 20, 21 порты нужны для работы FTP; 60000-65535 также необходимы для работы FTP (динамические порты для пассивного режима); 25, 465 и 587 порты нужны для работы почтового сервера по SMTP; последняя команда перезапускает firewalld, чтобы применить новые правила. Подробнее про настройку firewalld.

Установка NGINX

dnf install nginx

Внесем небольшую корректировку в файл nginx.conf:

* на практике, может встретиться ошибка could not build server_names_hash, you should increase server_names_hash_bucket_size: 32. Она возникает при большом количестве виртуальных серверов или если один из них будет иметь длинное название. Данная строка в конфиге исправит ситуацию.

Разрешаем автозапуск сервиса и запустим его:

systemctl enable nginx

systemctl start nginx

Проверим, что веб-сервер работает. Для этого открываем браузер на другом компьютере, который находится в одной сети и вводим в адресной строке IP-адрес сервера. В итоге мы должны увидеть заголовок «Welcome to nginx!»:

* обратите внимание, что данное приветствие может иметь и другой вид.

Установка PHP и PHP-FPM

Устанавливаем PHP и php-fpm следующей командой:

dnf install php php-fpm

* В CentOS 8 будет установлена версия php 7.2 и выше

Запускаем php-fpm и разрешаем его автозапуск:

systemctl enable php-fpm --now

Настройка связки NGINX + PHP

Открываем файл для настройки виртуального домена по умолчанию:

В секции location редактируем параметр index на следующее значение:

location / index index.php index.html index.htm;
>

* добавляем index.php в начало списка. Если параметра index нет, создаем его.

А внутри секции server добавим следующее:

Открываем настройки php-fpm:

Проверяем, что параметр listen настроен так:

. иначе, меняем значение. После перезагружаем php-fpm:

systemctl restart php-fpm

Проверяем правильность настроек nginx:

И перезагружаем его:

systemctl restart nginx

Создаем index.php в каталоге сайта по умолчанию со следующим содержимым:

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

Установка MariaDB или MySQL

В данной статье мы установим MariaDB, но процедура установки и настройки MySQL аналогичная. Все расхождения будут отмечены явно в инструкции.

Устанавливаем MariaDB следующей командой:

dnf install mariadb mariadb-server

* для установки mysql выполняем команду dnf install mysql

Разрешаем автозапуск и запускаем СУБД:

systemctl enable mariadb --now

* для работы с mysql меняем mariadb на mysql.

Сразу создаем пароль для учетной записи root:

mysqladmin -u root password

PHP + MariaDB (MySQL)

Для возможности подключаться к базе данных скриптами PHP необходимо установить следующие модули:

dnf install php-mysqli

Если мы установили php5, также ставим php-mysql:

dnf install php-mysql

После перезагружаем php-fpm:

systemctl restart php-fpm

И открываем наш сайт в браузере. В phpinfo появится новая секция MySQL:

В phpinfo появилась информация о поддержке MySQL

* нас не должно смущать, что установили мы mariadb, а заголовок mysql. Если посмотреть в таблицу, можно увидеть ячейку Client API version, в которой указано, что используется именно mariadb.

Установка phpMyAdmin

Переходим на сайт разработчика phpMyAdmin и копируем ссылку на нужную нам версию, например, последнюю:

Копируем ссылку на последнюю версию phpMyAdmin

Воспользовавшись скопированной ссылкой, скачиваем архив с установочными файлами:

Распаковываем скачанный архив:

Создаем каталог для phpmyadmin:

. и переносим в него содержимое распакованного архива:

mv phpMyAdmin-*-all-languages/* /usr/share/phpMyAdmin/

Задаем владельца для каталога:

chown -R apache:apache /usr/share/phpMyAdmin

* как правило, сервис, которых обрабатываем php-запросы работает от пользователя apache.

Устанавливаем модули php, необходимые для корректной работы phpMyAdmin:

dnf install php-json php-mbstring php-mysqli

Внесем небольшую настройку в конфигурацию phpMyAdmin.

Сгенерируем случайную последовательность символов:

Откроем на редактирование или создадим файл:

Внесем в него строку:

* где jd7n6yIcHOl55ikE7l5HAdNaWwunSHvR — последовательность, которую нам выдала команда head /dev/urandom . ; Также обратите внимание на <?php ?> — если мы создали новый файл, необходимо указать данные теги, так как они открывают код PHP. В противном случае, настройка не применится.

Теперь создадим для phpmyadmin отдельный виртуальный домен в NGINX:

И добавим в него следующее содержимое:

server listen 80;
server_name phpmyadmin.dmosk.local;
set $root_path /usr/share/phpMyAdmin;

location / root $root_path;
index index.php;
>

* где phpmyadmin.dmosk.local — адрес для виртуального домена, именно этот адрес должен быть введен в адресную строку браузера, чтобы открылся нужный сайт. Поэтому если нет возможности зарегистрировать домен и имя узла в DNS, можно воспользоваться локальным файлом hosts. /usr/share/phpMyAdmin — это каталог, в который по умолчанию устанавливается phpMyAdmin.

После перезапускаем NGINX:

systemctl reload nginx

Также нужно перезапустить php-fpm, так как в процессе установки были добавлены модули для PHP:

systemctl restart php-fpm

Установка Memcached

Первым этапом мы установим и настроим сервис memcached. Вторым — модуль php-memcached.

Сервис memcached

Выполняем установку пакетов:

dnf install memcached libmemcached

Создаем или открываем на редактирование конфигурационный файл для запуска сервиса:

Приводим его к виду:

* где PORT указываем на каком порту будет слушать сервис кэширования; USER — пользователь, под которым должен запускаться сервис; MAXCONN — максимальное число одновременных подключений; CACHESIZE — размер под кэш в мегабайтах; OPTIONS — параметры запуска (в данном примере наш сервис будет принимать запросы только с адреса локальной петли).

После разрешаем автозапуск и запускаем сервис кэширования:

systemctl enable memcached --now

Модуль для php

Копируем ссылку на исходник memcached

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

Скачиваем архив, ссылку на который мы скопировали:

Устанавливаем пакеты, необходимые для сборки php-pecl-memcached:

dnf install php-devel zlib-devel make

dnf --enablerepo=PowerTools install libmemcached-devel

Распаковываем скачанный архив:

tar -xvzf memcached-*.tgz

Переходим в распакованный каталог:

Запускаем компиляцию php-расширения:

Копируем созданный модуль в каталог php-модулей:

cp modules/memcached.so /usr/lib64/php/modules/

Создаем конфигурационной файл для подключения расширения:

После установки модуля перезапускаем php-fpm:

systemctl restart php-fpm

Чтобы проверить, что модуль memcached работаем, открываем наш сайт в браузере — в phpinfo должна появиться новая секция:

В phpinfo появилась информация о поддержке Memcached

. или вводим команду:

php -m | grep memcached

Мы должны получить:

Установка и настройка FTP-сервера

В качестве FTP-сервера будем использовать ProFTPd, так как он позволяет авторизовываться под uid системных учетных записей.

ProFTPd можно устанавливать командой:

dnf install proftpd

Загружаем скрипт ftpasswd:

Разрешаем запуск на выполнение скрипта:

chmod +x /etc/proftpd/ftpasswd

Создаем виртуального пользователя:

/etc/proftpd/ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpwww --uid=48 --gid=48 --home=/var/www --shell=/sbin/nologin

  • /etc/proftpd/ftpd.passwd — путь до файла, в котором хранятся пользователи;
  • ftpwww — имя пользователя (логин);
  • uid и gid — идентификаторы пользователя и группы системной учетной записи (apache);
  • /var/www — домашний каталог пользователя;
  • /sbin/nologin — оболочка, запрещающая локальный вход пользователя в систему.

Изменим права для созданного файла с паролями:

chmod 440 /etc/proftpd/ftpd.passwd

* в противном случае, при запуске proftpd мы получим ошибку «. fatal: AuthUserFile: unable to use /etc/proftpd.d/ftpd.passwd: Operation not permitted. »

Открываем на редактирование конфигурационный файл proftpd:

И редактируем следующее (комментируем):

Создадим конфигурационный файл со своими настройками:

И добавим следующее:

UseIPv6 off
IdentLookups off
PassivePorts 60000 65535

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
LoadModule mod_auth_file.c
AuthOrder mod_auth_file.c

* где 60000 - 65535 — диапазон динамических портов для пассивного режима.

Разрешаем автозапуск FTP-серверу и запускаем его:

systemctl enable proftpd --now

Пробуем подключиться к серверу, использую любые FTP-клиенты, например, FileZilla, Total Commander или тот же браузер.

Это базовая и самая простая настройка ProFTPd, но если необходимо настроить TLS или хранить виртуальных пользователей в базе MySQL, читайте подробнее инструкцию по настройке ProFTPd на CentOS.

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

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

Заходим в настройки:

И редактируем следующее:

* наш веб-сервер будет слушать на порту 8080, так как на 80 уже работает NGINX.

<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>

* если не указан конкретный скрипт, сначала веб-сервер пытается найти и запустить index.php, затем index.html

<Directory /var/www/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>

* где Directory — разрешенные каталоги для запуска из apache; Options — разрешенные опции; Require — с каких IP-адресов можно открывать сайты, определенные в данном каталоге. Итого, мы разрешаем все каталоги в /var/www, но только если следующий каталог будет www; разрешаем опции Indexes (возвращает список файлов, если нет индексного файла, например, index.php), ExecCGI (разрешены сценарии CGI), FollowSymLinks (включены символические ссылки в этом каталоге); доступ для данных каталогов разрешен со всех адресов (all granted).

И если получаем ответ:

. разрешаем автозапуск и запускаем службу:

Создаем php-файл со следующим содержимым:

NGINX + Apache

Ранее нами была настроена связка nginx + php-fpm. Теперь проверяем совместную работу первого с apache.

Открываем конфигурационный файл nginx:

Находим наш настроенный location для php-fpm:

Проверяем, есть ли файл:

. и если есть, комментируем его содержимое:

* в данном примере мы отключили обработку всех php-файлов с помощью php-fpm, так как это у нас должен делать apache.

Проверяем и перезапускаем nginx:

systemctl restart nginx

Apache Real IP

Для решения проблемы будем использовать модуль mod_rpaf. Устанавливаем набор разработчика для apache:

Переходим в каталог /usr/local/src:

Переходим в распакованный каталог:

Собираем модуль и устанавливаем его:

* при возникновении ошибки ./apxs.sh: line 15: -c: command not found, необходимо поставить which командой dnf install which.

Создаем конфигурационный файл со следующим содержимым:

Реальный IP-адрес при обращении к Apache

Postfix

Устанавливаем postfix командой:

dnf install postfix

Теперь нам необходимо сделать несколько простых настроек:

.
myorigin = $mydomain
.
inet_protocols = ipv4
.

Открываем карту пересылки:

* данной настройкой мы будем подставлять всем отправляемым письмам без поля FROM адрес no-reply@dmosk.local.

Для применения настроек перезагружаем почтовый сервер:

systemctl restart postfix

Тюнинг веб-сервера

Открываем на редактирование следующий файл:

И правим следующее:

upload_max_filesize = 512M
.
post_max_size = 512M
.
short_open_tag = On
.
date.timezone = "Europe/Moscow"

systemctl restart php-fpm

NGINX

Открываем на редактирование следующий файл:

После перезапускаем nginx:

systemctl restart nginx

Postfix

Чтобы отправляемая почта меньше попадала в СПАМ, необходимо выполнить следующие шаги:

Создание первого сайта

Задаем переменную, значение которой будет домен сайта:

Создаем новый файл виртуального домена NGINX:

* обязательно на конце должен быть .conf, так как только такие файлы веб-сервер подгружает в конфигурацию.

И добавляем следующее содержимое.

access_log /var/www/site1/log/nginx/access_log;
error_log /var/www/site1/log/nginx/error_log;

gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ expires modified +1w;
>
>

* где site1.local — домен, для которого создается виртуальный домен; /var/www/site1 — каталог, в котором будет размещаться сайт.
** все запросы будут переводиться на локальный сервер, порт 8080, на котором работает apache, кроме обращений к статическим файла (jpg, png, css и так далее).
*** обратите внимание на выделения полужирным — здесь нужно подставить свои данные.

server listen 443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;

access_log /var/www/site1/log/nginx/access_log;
error_log /var/www/site1/log/nginx/error_log;

gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;

* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|docx|xls|xlsx|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ expires modified +1w;
>
>

Теперь настроим виртуальный домен в Apache:

<VirtualHost *:8080>
Define root_domain site1.local
Define root_path /var/www/site1

ErrorLog $/log/apache/error_log
TransferLog $/log/apache/access_log
</VirtualHost>

Создаем каталоги для сайта:

mkdir -p /var/www/$TMP_SITE/

mkdir -p /var/www/$TMP_SITE/log/

Создаем индексный файл со следующим содержимым:

Задаем права на папки:

chown -R apache:apache /var/www/$TMP_SITE

chmod -R 775 /var/www/$TMP_SITE

Проверяем корректность настроек конфигурационных файлов:

systemctl reload nginx

Открываем сайт в браузере.

При необходимости, создаем базу данных.

> CREATE DATABASE site1 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

* данными sql-командами мы создаем базу данных site1 и предоставляем к ней доступ для учетной записи dbuser с паролем password. При желании сделать соединение более безопасным, можно убрать WITH GRANT OPTION.

Читайте также: