Гид по технологиям

Установка Neos CMS на Rocky Linux 8 — пошаговое руководство

8 min read CMS Обновлено 27 Nov 2025
Установка Neos CMS на Rocky Linux 8 — руководство
Установка Neos CMS на Rocky Linux 8 — руководство

Вид сайта Neos на экране ноутбука

Neos — свободная система управления контентом (CMS) с визуальным редактированием. Она подходит для блогов, корпоративных сайтов, портфолио и новостных порталов. В Neos есть встроенные инструменты SEO, человекочитаемые URL, управление плагинами, предпросмотр для устройств и поддержка множества шаблонов. Также система совместима с современными интерфейсами: REST API, JSON, GraphQL и oEmbed.

В этом пошаговом руководстве вы установите Neos на сервер с Rocky Linux 8. Я подробно опишу подготовку сервера, установку компонентов LEMP-стека, настройку SELinux и SSL, а также финальную настройку Neos.

Кому это руководство подходит

  • Системным администраторам и девопс-инженерам
  • Разработчикам, которые хотят развернуть Neos для клиента
  • Тем, кто настраивает сайт на собственном VPS

Краткое определение: Neos — PHP-база с зависимостями через Composer и файловой структурой в /var/www/neos.

Требования и предпосылки

  • Сервер с Rocky Linux 8 (root доступ или не-root sudo пользователь).
  • Наличие не-root sudo-пользователя.
  • Доменное имя, указывающее на сервер (например neos.example.com).
  • Время на выполнение: от 30 минут до 2 часов, в зависимости от скорости сервера и интернета.

Проверьте и обновите систему:

$ sudo dnf update

Установите базовые утилиты (некоторые могут быть уже установлены):

$ sudo dnf install wget curl nano unzip yum-utils -y

План работ (коротко)

  1. Конфигурация брандмауэра (firewalld)
  2. Установка Nginx (официальный репозиторий)
  3. Установка PHP 8.0 и расширений (Remi)
  4. Установка MySQL, создание базы и пользователя
  5. Установка Composer
  6. Установка Neos через Composer
  7. Настройка SELinux
  8. Настройка и получение SSL с помощью Certbot
  9. Конфигурация Nginx и PHP-FPM для Neos
  10. Финальная настройка через веб-интерфейс Neos

Шаг 1 — Настройка брандмауэра (firewalld)

Проверьте статус firewalld:

$ sudo firewall-cmd --state
running

Список сервисов в зоне по умолчанию (обычно public):

$ sudo firewall-cmd --permanent --list-services

Разрешите HTTP и HTTPS:

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --reload

Проверьте, что в выводе присутствуют http и https.

Важное: если вы используете нестандартные порты (например альтернативный порт SSH или админ-порт), разрешите их явно.


Шаг 2 — Установка Nginx

Rocky Linux обычно поставляется с более старой версией Nginx. Для актуальной версии используйте официальный репозиторий Nginx.

Создайте файл /etc/yum.repos.d/nginx.repo:

$ sudo nano /etc/yum.repos.d/nginx.repo

Вставьте содержимое:

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Сохраните (Ctrl+X, Y).

Установите Nginx и включите сервис:

$ sudo dnf install nginx
$ nginx -v
$ sudo systemctl enable nginx --now

Если Nginx не запускается, проверьте журналы: sudo journalctl -u nginx —no-pager.


Шаг 3 — Установка PHP и расширений

Neos требует современной версии PHP. В этом руководстве мы используем репозиторий Remi и PHP 8.0.

Установите EPEL и Remi:

$ sudo dnf install epel-release
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Просмотрите доступные потоки PHP:

$ dnf module list php -y

Сбросьте модуль и включите remi-8.0:

$ sudo dnf module reset php
$ sudo dnf module enable php:remi-8.0

Установите PHP-FPM и необходимые расширения для Neos:

$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-imagick ImageMagick php-intl

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

$ php --version

Запустите php-fpm:

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

Совет: если вы планируете использовать OPcache, установите и настройте его в php.ini для повышения производительности.


Шаг 4 — Установка и настройка MySQL

Установите MySQL Server из стандартного репозитория:

$ sudo dnf install mysql-server
$ sudo systemctl enable mysqld --now

Запустите скрипт безопасной настройки:

$ sudo mysql_secure_installation

Выберите включение Validate Password Plugin (Y) и уровень STRONG (2), если хотите более строгую политику паролей.

Создайте пользователя и базу для Neos:

$ mysql -u root -p
mysql> CREATE USER 'neos'@'localhost' IDENTIFIED BY 'Your_password2';
mysql> CREATE DATABASE neosdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> GRANT ALL PRIVILEGES ON neosdb.* TO 'neos'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> exit

Примечание: используйте надёжный пароль, соответствующий политике Validate Password.


Шаг 5 — Установка Composer

Composer — менеджер зависимостей для PHP. Он нужен для установки Neos.

Скачайте установщик и проверьте его сигнатуру:

$ curl -sS https://getcomposer.org/installer -o composer-setup.php
$ HASH=`curl -sS https://composer.github.io/installer.sig`
$ echo $HASH
$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

Установите Composer глобально:

$ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
$ composer --version

Если вы используете старую версию Composer, обновите: composer self-update –2


Шаг 6 — Установка Neos CMS

Создайте корневой каталог и установите Neos через Composer:

$ sudo mkdir -p /var/www/neos
$ sudo chown -R $USER:$USER /var/www/neos
$ cd /var/www/neos
$ composer create-project --no-dev neos/neos-base-distribution .

Во время установки Composer может запросить подтверждение для плагинов — отвечайте “y”, чтобы разрешить установку.

Установите права и добавьте пользователя в группу nginx:

$ sudo ./flow core:setfilepermissions $USER nginx nginx
$ sudo usermod -a -G nginx $USER

Важно: точный набор прав зависит от вашей политики безопасности; в продакшене минимизируйте права записи.


Шаг 7 — Настройка SELinux

Если SELinux активен, задайте правильные контексты файлов и разрешите подключение к сети для httpd-процессов:

$ sudo chcon -t httpd_sys_content_t /var/www/neos -R
$ sudo chcon -t httpd_sys_rw_content_t /var/www/neos -R
$ sudo setsebool -P httpd_can_network_connect on

Отладка SELinux: если что-то не работает, смотрите /var/log/audit/audit.log и используйте команду audit2why/audit2allow для анализа.

Совет: для постоянного восстановления контекстов используйте restorecon -R /var/www/neos.


Шаг 8 — Установка и настройка SSL (Let’s Encrypt)

Установите certbot (EPEL уже установлен ранее):

$ sudo dnf install certbot

Остановите Nginx, чтобы Certbot мог занять порт 80 (если вы используете standalone режим):

$ sudo systemctl stop nginx

Запрос сертификата (замените email и домен):

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m your-email@example.com -d neos.example.com

Сертификат появится в /etc/letsencrypt/live/neos.example.com.

Создайте Diffie-Hellman параметры для дополнительной криптографической стойкости:

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

Подготовьте веб-корень для автообновления и cron-скрипт для продления сертификата:

$ sudo mkdir -p /var/lib/letsencrypt
$ sudo nano /etc/cron.daily/certbot-renew

Вставьте:

#!/bin/sh
certbot renew --cert-name neos.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Сделайте исполняемым:

$ sudo chmod +x /etc/cron.daily/certbot-renew

Совет: для автоматического продления можно также настроить systemd таймер или отказаться от остановки Nginx, использовав –nginx плагин certbot.


Шаг 9 — Настройка PHP-FPM и Nginx для Neos

Настройка PHP-FPM

Откройте /etc/php-fpm.d/www.conf и установите пользователя/группу nginx:

$ sudo nano /etc/php-fpm.d/www.conf

Измените значения (пример):

user = nginx
group = nginx

Запустите/перезапустите php-fpm:

$ sudo systemctl restart php-fpm

Конфигурация Nginx для Neos

Создайте файл /etc/nginx/conf.d/neos.conf:

$ sudo nano /etc/nginx/conf.d/neos.conf

Вставьте (замените server_name на ваш домен):

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  neos.example.com;

    access_log  /var/log/nginx/neos.access.log;
    error_log   /var/log/nginx/neos.error.log;
    
    # SSL
    ssl_certificate      /etc/letsencrypt/live/neos.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/neos.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/neos.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    root /var/www/neos/Web/;
    index index.php;
    
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # Pass PHP Scripts To FastCGI Server
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param FLOW_REWRITEURLS  1;
    fastcgi_param FLOW_CONTEXT  Production;
        fastcgi_param X-Forwarded-For $proxy_add_x_forwarded_for;
    fastcgi_param X-Forwarded-Port $proxy_port;
        fastcgi_param REMOTE_ADDR $remote_addr;
    fastcgi_param REMOTE_PORT $remote_port;
        fastcgi_param SERVER_ADDR $server_addr;
    fastcgi_param SERVER_NAME $http_host;
        fastcgi_read_timeout 300;
    fastcgi_buffer_size  128k;
        fastcgi_buffers  256 16k;
    fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        include fastcgi_params;
        try_files $uri =404;
    }

    location ~ /_Resources/ {
        access_log off;
    log_not_found off;
    expires max;

        if (!-f $request_filename) {
            rewrite "/_Resources/Persistent/([a-z0-9]{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break;
            rewrite "/_Resources/Persistent(?>/[a-z0-9]{5}){8}/([a-f0-9]{40})/.+\.(.+)" /_Resources/Persistent/$1.$2 break;
        }
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  neos.example.com;
    return 301   https://$host$request_uri;
}

Обратите внимание: root директива указывает на /var/www/neos/Web/.

Добавьте в /etc/nginx/nginx.conf строку server_names_hash_bucket_size 64; перед include /etc/nginx/conf.d/*.conf;

Проверьте конфигурацию и перезапустите Nginx:

$ sudo nginx -t
$ sudo systemctl restart nginx

Если при перезапуске возникнут ошибки, проверьте /var/log/nginx/neos.error.log и системный журнал.


Шаг 10 — Завершение установки Neos через веб-интерфейс

Откройте в браузере https://neos.example.com (замените домен). Вы увидите экран настройки.

Экран установки Neos

Нажмите “Go to setup” и войдите, используя временный пароль, который хранится в файле /var/www/neos/Data/SetupPassword.txt.

Экран входа Neos

Посмотреть пароль можно так:

$ cat /var/www/neos/Data/SetupPassword.txt
The setup password is:

SCPUYmmQ

After you successfully logged in, this file is automatically deleted for security reasons.
Make sure to save the setup password for later use.

Neos проверит наличие необходимых PHP-расширений и затем попросит данные базы (используйте neos / neosdb / Your_password2).

Проверка PHP в Neos

При успешном подключении вы увидите сообщение “Connection established” и далее сможете создать администратора.

Настройка базы Neos

Выберите импорт демо-сайта или создание с нуля. При создании с нуля на странице не будет CSS — это нормальное поведение.

Выбор создания сайта Neos

После завершения установки откройте бэкенд и удалите тестовые страницы (например “Try me”), чтобы не оставлять публичного доступа к настройкам.

Панель управления Neos

Удаление тестовой страницы Neos

Публикация изменений в Neos

Поздравляем — установка завершена.


Рекомендации по безопасности и эксплуатации

  • Удалите или ограничьте доступ к SetupPassword.txt сразу после использования.
  • Примените строгие права на каталоги: файлы — 644, каталоги — 755, файлы с открытой записью только для владельца/группы nginx.
  • Отключите ненужные публичные страницы и демо-контент.
  • Настройте бэкап базы MySQL и каталога /var/www/neos/Data и /var/www/neos/Sites.
  • Настройте мониторинг доступности (uptime checks) и логирование (файлы Nginx, системный journal).

Полезные сценарии обслуживания (SOP, кратко)

  1. Резервное копирование (ежедневно):
    • База: mysqldump –single-transaction neosdb > neosdb-$(date +%F).sql
    • Файлы: tar -czf neos-www-$(date +%F).tar.gz /var/www/neos
  2. Обновление зависимостей проекта:
    • Перейдите в /var/www/neos, выполните composer update (только после тестирования в staging).
  3. Роллбек (быстрый):
    • Разверните последнюю рабочую резервную копию базы и файлов.

Отладка — часто встречающиеся проблемы и решения

  • Nginx 502 Bad Gateway: проверьте, что php-fpm запущен и сокет совпадает с fastcgi_pass; проверьте права на сокет (/run/php-fpm/www.sock).
  • Ошибки прав доступа: убедитесь, что nginx имеет доступ на чтение к /var/www/neos и права записи там, где нужно (Data, Packages, Configuration в зависимости от настроек).
  • SELinux блокирует операции: проверьте /var/log/audit/audit.log и используйте audit2allow, или временно переключитесь в permissive для диагностики.
  • Certbot не может получить порт 80: убедитесь, что Nginx остановлен или используйте –nginx плагин.

Тесты и критерии приёмки

Минимальные тесты перед вводом в эксплуатацию:

  • Доступ к https://neos.example.com (валидный сертификат).
  • Успешная авторизация в бэкенде и создание страниц.
  • Публикация контента доступна на фронтенде.
  • Бэкап базы и файлов выполняется успешно.

Примеры acceptance-steps:

  1. Проверка HTTPS: curl -I https://neos.example.com — код 200 и заголовок Strict-Transport-Security.
  2. Проверка PHP: php -m | grep -E “(curl|mbstring|gd|imagick|intl)”.
  3. Проверка прав: ls -la /var/www/neos и отсутствие права записи для «other».

Резервные решения и альтернативы

  • Веб-сервер: Apache (mod_php или php-fpm) вместо Nginx.
  • База данных: MariaDB совместима с MySQL и часто используется как замена.
  • SSL: коммерческие SSL-сертификаты вместо Let’s Encrypt, если нужна расширенная поддержка.
  • Хостинг: использование PaaS/managed-хостинга для снижения операционной нагрузки.

Советы по производительности

  • Включите OPcache и настройте memory_consumption, max_accelerated_files.
  • Настройте gzip/HTTP/2 в Nginx.
  • Настройте кэширование статики с длительным expires и CDN.
  • Следите за размерами логов и ротацией (logrotate).

Контроль совместимости и миграция

  • Версии PHP: Neos требует современный PHP; проверяйте требования в документации Neos для конкретной версии.
  • При миграции с другой CMS экспортируйте контент через CSV/JSON или API, затем импортируйте в Neos.
  • Тестируйте обновления сначала в тестовой среде.

Краткий глоссарий (1 строка на термин)

  • LEMP: Nginx + MySQL + PHP-FPM.
  • PHP-FPM: FastCGI-процесс менеджер для PHP.
  • Composer: менеджер зависимостей PHP.
  • Certbot: клиент Let’s Encrypt для получения SSL.

Контрольный чек-лист перед запуском (роль: оператор)

  • Сертификат установлен и действует.
  • База данных создана и доступна.
  • PHP и расширения установлены.
  • SELinux и firewall настроены.
  • Права файлов установлены корректно.
  • Резервное копирование настроено.

Короткое объявление (100–200 слов)

Neos CMS успешно установлен на сервере Rocky Linux 8 по инструкции LEMP. Руководство включает пошаговую установку Nginx, PHP 8.0 через Remi, MySQL, Composer и Certbot для HTTPS. Представлены советы по SELinux, настройке прав, автоматическому продлению SSL и бэкапам. После выполнения всех шагов вы получите работоспособный сайт с визуальным редактором и административной панелью Neos. Рекомендую протестировать все этапы в staging-среде перед переносом в продакшен.


Краткое резюме

Neos установлен и настроен. Проверьте доступность сайта по HTTPS, убедитесь в корректности прав и настройте резервное копирование. Для дальнейшего улучшения — настройте OPcache, CDN и мониторинг.

Вопросы? Оставьте комментарий или опишите проблему — помогу с диагностикой.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство