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

Установка SuiteCRM на CentOS 7 с Nginx, PHP-FPM и HTTPS (LEMP)

7 min read CRM Обновлено 26 Nov 2025
SuiteCRM на CentOS 7 с Nginx и HTTPS
SuiteCRM на CentOS 7 с Nginx и HTTPS

Этот пошаговый гид показывает, как установить и настроить SuiteCRM под стеком LEMP на CentOS 7: Nginx, PHP-FPM 7, MariaDB и бесплатный SSL от Let’s Encrypt. Включены команды, конфигурационные фрагменты, рекомендации по безопасности, проверкам и устранению неполадок. Подойдёт для системных администраторов и инженеров DevOps.

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

SuiteCRM — свободное CRM‑приложение на PHP, форк SugarCRM. LEMP — комбинация Linux, Nginx (веб‑сервер), MariaDB (СУБД) и PHP‑FPM (обработка PHP через сокеты). Let’s Encrypt — сервис бесплатных SSL сертификатов. PHP‑FPM — демон, обрабатывающий PHP‑скрипты.

Что мы будем делать

  1. Установим Nginx
  2. Установим и настроим PHP‑FPM 7
  3. Установим и настроим MariaDB
  4. Скачиваем и готовим SuiteCRM
  5. Настроим виртуальный хост Nginx и SSL
  6. Установим SuiteCRM через веб‑инсталлятор
  7. Выполним финальную настройку и cron

Требования

  • Сервер с CentOS 7
  • Права root или sudo
  • Домен, указывающий на сервер
  • Открытые порты 80 и 443 или возможности проброса

Пошаговое руководство

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

Подключитесь по SSH как root:

ssh [email protected]

Установите репозиторий EPEL и Nginx:

yum -y install epel-release
yum -y install nginx

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

systemctl start nginx
systemctl enable nginx

Проверьте, что Nginx слушает порт 80 и отвечает 200:

netstat -plntu
curl -I localhost

Проверка, что Nginx прослушивает нужные порты

Шаг 2 — Установка и настройка PHP‑FPM 7

CentOS 7 по умолчанию не содержит современных PHP‑пакетов, поэтому добавляем сторонний репозиторий webtatic и устанавливаем PHP 7.1 (пример из оригинала). Если вы предпочитаете Remi или SCL, можно использовать их — в разделе «Альтернативные подходы» ниже описано подробнее.

sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
sudo yum install -y php71w-fpm php71w-cli php71w-common php71w-imap php71w-gd php71w-mbstring php71w-mcrypt php71w-mysql php71w-xml

Откройте php.ini для базовых настроек (vim /etc/php.ini) и измените ключевые параметры:

upload_max_filesize = 100M
cgi.fix_pathinfo=0
session.save_path = "/var/lib/php/session"

Создайте каталог сессий и назначьте владельцем nginx:

mkdir -p /var/lib/php/session
chown -R nginx:nginx /var/lib/php/session

Отредактируйте пул www.conf (обычно /etc/php-fpm.d/www.conf) и установите пользователя/группу nginx, слушание через unix‑сокет и права на сокет:

user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660

Запустите и включите php-fpm:

systemctl start php-fpm
systemctl enable php-fpm

Проверьте наличие сокета:

netstat -pl | grep php

Настройка PHP-FPM и проверка сокета

Важно: если в системе включён SELinux, потребуется отдельная настройка контекстов; см. раздел «SELinux и права доступа» далее.

Шаг 3 — Установка и настройка MariaDB

Установите MariaDB и включите автозапуск:

yum install -y mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb

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

mysql_secure_installation

Следуйте подсказкам: установите пароль root, удалите анонимных пользователей, запретите удалённый вход root, удалите тестовую БД и перезагрузите привилегии.

Создайте базу и пользователя для SuiteCRM (введите реальные надёжные пароли):

mysql -u root -p
CREATE DATABASE suitecrm_db;
CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
FLUSH PRIVILEGES;

Создание базы данных для SuiteCRM

Важно: используйте сильные пароли и, по возможности, ограничьте доступ к порту СУБД по IP.

Шаг 4 — Загрузка и подготовка SuiteCRM

Установим git и клонируем репозиторий в /opt:

yum -y install git
cd /opt/
git clone https://github.com/salesagility/SuiteCRM.git suitecrm

Создайте необходимые каталоги, права и назначьте владельца nginx:

cd /opt/suitecrm
mkdir -p /opt/suitecrm/cache
chmod -R 775 cache custom modules themes data upload config_override.php
chown nginx:nginx -R /opt/suitecrm

Скачивание исходников SuiteCRM

Настройка Firewalld

Если у вас установлен firewalld, откройте HTTP/HTTPS и перезагрузите правила:

yum -y install firewalld
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
firewall-cmd --list-all

Настройка брандмауэра для HTTP/HTTPS

Получение SSL от Let’s Encrypt

Установите certbot и получите сертификат для своего домена (замените домен на ваш):

yum -y install certbot
certbot certonly --standalone -d suitecrm.hakase-labs.co

Следуйте подсказкам по email и соглашению. Файлы сертификатов появляются в /etc/letsencrypt/live/вашдомен.

Генерация SSL сертификата Let's Encrypt

Успешная выдача SSL сертификата

Настройка виртуального хоста Nginx для SuiteCRM

Создайте /etc/nginx/conf.d/suitecrm.conf со следующим содержимым (замените server_name и пути сертификатов на ваши):


 # Server Config - hakase-labs
 server {
     listen 80;
     server_name suitecrm.hakase-labs.co;

     # Automatically redirect to HTTPS
     return 301 https://$host$request_uri;
 }

 # Nginx SSL for SuiteCRM
 server {

     server_name suitecrm.hakase-labs.co;

     # Enable http2
     listen 443 http2 ssl;

     # SSL Config
     ssl_certificate /etc/letsencrypt/live/suitecrm.hakase-labs.co/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/suitecrm.hakase-labs.co/privkey.pem;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

     client_max_body_size 50M;

     index index.php index.html index.htm;
     root /opt/suitecrm;

     location / {
         root /opt/suitecrm;
         index index.php index.html index.htm;
     }

     error_page 500 502 503 504 /50x.html;
     error_log /var/log/nginx/suitecrm.irsyadf.me.error.log;

     location = /50x.html {
         root /usr/share/nginx/html;
     }

     ## Images and static content is treated different
     location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|xml|svg|wgoff2)$ {
         access_log off;
         expires max;
         root /opt/suitecrm;
     }

     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;
     }

     location ~ /\.ht {
         deny all;
     }

 }

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

nginx -t
systemctl restart nginx

Настройка Nginx для SuiteCRM

Замечание: обновите журнал ошибок и пути под вашу систему.

Шаг 5 — Веб‑инсталлятор SuiteCRM

Откройте в браузере https://suitecrm.hakase-labs.co/install.php. При первом запуске вы увидите экран лицензии GNU Affero — примите и продолжайте.

Веб инсталлятор SuiteCRM

Проверьте системные требования — все проверки должны быть OK.

Проверка системных требований

Внесите настройки базы данных (имя БД, пользователь, пароль) и административного аккаунта. На форме введите данные, которые вы создали ранее.

Настройки базы данных в веб инсталяции

После установки вы попадёте на страницу входа, введите admin‑учётные данные и откройте дашборд.

Страница входа SuiteCRM

Дашборд SuiteCRM

Шаг 6 — Финальная настройка и cron

Создайте crontab для пользователя nginx, чтобы запустить планировщик SuiteCRM каждые 60 секунд:

sudo crontab -e -u nginx

Добавьте строку:

*    *    *    *    *     cd /opt/suitecrm; php -f cron.php > /dev/null 2>&1

Сохраните и выйдите. Проверьте, что задачи выполняются — в логе SuiteCRM или через системный мониторинг.

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

Дополнительные темы и рекомендации

SELinux и права доступа

На CentOS 7 SELinux по умолчанию включён. Если SELinux включён и вы видите ошибки доступа, выполните:

# Для разрешения nginx обращаться к сокетам php-fpm
setsebool -P httpd_can_network_connect 1
# Для корректных меток в папках SuiteCRM
semanage fcontext -a -t httpd_sys_rw_content_t "/opt/suitecrm(/.*)?"
restorecon -Rv /opt/suitecrm

Если semanage отсутствует, установите policycoreutils-python.

Важно: полностью отключать SELinux не рекомендуется в продакшне.

Let’s Encrypt и автоматическое обновление сертификатов

Создайте cron для автоматического обновления certbot:

0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"

Проверяйте логи обновления и убедитесь, что на сервере не мешают временные веб‑серверы (standalone mode останавливает nginx при выпуске сертификата).

Безопасность Nginx и SSL

  • Отключите устаревшие протоколы и алгоритмы (TLSv1 и TLSv1.1 устарели); в примере включены для совместимости — рекомендуется оставить только TLSv1.2 и TLSv1.3, если поддерживается.
  • Включите HSTS: add_header Strict-Transport-Security “max-age=31536000; includeSubDomains; preload”;
  • Настройте безопасные заголовки Content-Security-Policy и X-Frame-Options.

Пример для nginx (в секции server):

add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Referrer-Policy no-referrer-when-downgrade;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

Разрешения файлов и безопасность

SuiteCRM требует, чтобы определённые каталоги были записываемыми веб‑сервером. Примеры областей:

  • cache, custom, modules, themes, data, upload, config_override.php

Используйте umask и права 775 для директорий и 664 для файлов. Не устанавливайте 777 — это риск безопасности.

Резервное копирование и восстановление

Рекомендуется:

  • Регулярно бэкапить директорию /opt/suitecrm
  • Дампить БД: mysqldump –single-transaction –quick –lock-tables=false suitecrm_db > suitecrm_db.sql
  • Регулярно тестировать восстановление в отдельной среде

Мониторинг и производительность

  • Установите мониторинг использования CPU, памяти и IO (например, Prometheus + Grafana или Zabbix).
  • Для больших инсталляций настройте кэширование (APCu или Redis) и оптимизируйте настройки MariaDB (innodb_buffer_pool_size).

Обновления и миграция

  • Для обновлений SuiteCRM следуйте официальному руководству и делайте бэкап до обновления.
  • При миграции с SugarCRM проверьте совместимость данных и используйте инструменты миграции официальной документации.

Логи и отладка

  • Nginx лог ошибок: /var/log/nginx/
  • PHP‑FPM лог: /var/log/php-fpm/
  • SuiteCRM лог: в папке /opt/suitecrm в логах приложения

Полезные команды для отладки:

tail -f /var/log/nginx/suitecrm.irsyadf.me.error.log
journalctl -u php-fpm -f
mysql -u crmadmin -p -e "SHOW TABLES;"

Альтернативные подходы и варианты развёртывания

  1. Apache вместо Nginx
    • Apache имеет модуль mod_php и может быть проще для тех, кто уже знаком с .htaccess и модулем rewrite. Nginx даёт лучшую производительность при статике и обратном проксировании.
  2. Docker-контейнеры
    • Быстрая развёртка с контейнерным стеком (Nginx, PHP‑FPM, MariaDB). Подходит для изоляции и масштабирования. В разделе «Решение: Docker или нативная установка» ниже есть дерево решений.
  3. Разные репозитории PHP
    • Remi или SCL предлагают более свежие и поддерживаемые пакеты PHP.
  4. Использование managed DB или RDS
    • Можно вынести БД на управляемую платформу для отказоустойчивости.

Когда этот подход не подходит

  • У вас ограничены привилегии root и вы не можете ставить репозитории или менять systemd‑сервисы.
  • Требуется высокая доступность и кластеризация из коробки — стоит рассмотреть Docker Swarm/Kubernetes и HA‑настройки для MariaDB.

Ментальные модели и чек‑лист для принятия решения

  • Простота развёртывания: нативная установка на CentOS — быстро и прозрачно.
  • Масштабируемость: контейнеризация даёт гибкость.
  • Безопасность: управляемые сервисы для БД и выделенный секретный менеджер предпочтительнее.

Мини‑чеклист перед запуском в продакшн:

  • DNS указывает на сервер
  • Порты 80/443 открыты и защищены
  • SSL валиден и автоматическое обновление настроено
  • Бэкапы БД и файлов настроены
  • SELinux/ACL проверены
  • cron запущен от пользователя nginx

Роль‑ориентированные контрольные списки

Системный администратор:

  • Настроить Nginx, PHP‑FPM и MariaDB
  • Настроить SSL и автоматическое обновление certbot
  • Проверить SELinux и контексты
  • Настроить бэкапы

Инженер безопасности:

  • Настроить HSTS и secure headers
  • Проверить права на файлы, закрыть 777
  • Настроить мониторинг доступа и IDS

Администратор CRM:

  • Пройти веб‑инсталлятор и создать админ‑аккаунт
  • Настроить cron и проверить выполнение задач
  • Создать FAQ для пользователей и планы восстановления

Пример дерева решений в формате Mermaid

flowchart TD
  A[Начало: Нужно развернуть SuiteCRM?] --> B{Имеется root доступ?}
  B -- Да --> C{Хотите контейнеры?}
  B -- Нет --> D[Использовать managed host или PaaS]
  C -- Да --> E[Использовать Docker или Kubernetes]
  C -- Нет --> F[Нативная установка на CentOS 7 'этот гид']
  E --> G[Преимущества: масштабируемость, изоляция]
  F --> H[Преимущества: простота настройки, прямой контроль]

Критерии приёмки

  • Веб‑страница SuiteCRM доступна по HTTPS и сертификат валиден
  • Вход в админскую панель успешен
  • Cron‑задачи выполняются (нет накопившихся задач)
  • Бэкапы БД и файлов созданы и тест восстановлен
  • Логи не содержат критических ошибок при старте

Частые проблемы и способы решения

Проблема: 502 Bad Gateway при обращении к PHP

  • Проверьте, что php-fpm запущен и сокет существует
  • Проверьте права на сокет и владельца

Проблема: SSL не обновляется

  • Убедитесь, что certbot имеет права останавливать/запускать nginx или используйте webroot метод

Проблема: Ошибки записи в SuiteCRM

  • Проверьте права на каталоги, SELinux контексты и владельца nginx

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

SuiteCRM можно успешно развернуть на CentOS 7 с использованием Nginx, PHP‑FPM, MariaDB и Let’s Encrypt. Ключевые темы: корректные права и SELinux, автоматическое обновление сертификатов, cron для задач CRM и регулярные бэкапы.

Важно: перед развёртыванием в продакшн адаптируйте параметры PHP, настройки SSL и политику бэкапов под ваши бизнес‑требования.

Ресурсы

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

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

Как получить Xbox Wrapped 2022 — неофициальный обзор
Игры

Как получить Xbox Wrapped 2022 — неофициальный обзор

Как установить расширения вне Chrome Web Store
браузер

Как установить расширения вне Chrome Web Store

Освоение Unity в Ubuntu: 8 ключевых приёмов
Ubuntu

Освоение Unity в Ubuntu: 8 ключевых приёмов

Запуск от другого пользователя в Windows 11
Windows 11

Запуск от другого пользователя в Windows 11

Копировать текст с изображения в Windows 11
Windows

Копировать текст с изображения в Windows 11

Закрепление ярлыков на рабочем столе Synology DSM
Synology

Закрепление ярлыков на рабочем столе Synology DSM