Установка SuiteCRM на Ubuntu 16.04 с Nginx, PHP-FPM и MariaDB
Кратко: пошаговая инструкция по установке открытого CRM SuiteCRM на Ubuntu 16.04 с Nginx, PHP‑FPM и MariaDB. Включены подготовка сервера, установка компонентов, настройка SSL (Let’s Encrypt), конфигурация Nginx, настройка cron‑заданий, рекомендации по безопасности и чек‑листы для приёмки.
Важно: Ubuntu 16.04 устарела по современным стандартам — по возможности планируйте миграцию на LTS‑версию (20.04/22.04) после тестов.
Что мы сделаем
- Установим веб‑сервер Nginx
- Установим и настроим PHP‑FPM
- Установим и настроим MariaDB
- Скачаем и подготовим SuiteCRM
- Пройдём веб‑инсталлятор SuiteCRM
- Финальные шаги: cron, права, безопасность
Требования
- Сервер Ubuntu 16.04 (root или sudo)
- Доступ к интернету для скачивания пакетов и сертификатов
- Домен, указывающий на ваш сервер (нужен для Let’s Encrypt)
Шаг 1 — Установка Nginx
SuiteCRM — веб‑приложение, поэтому нужен веб‑сервер. Здесь используется Nginx.
Подключитесь к серверу и обновите репозитории:
ssh [email protected]
sudo apt updateУстановите Nginx:
apt install -y nginxЗапустите и включите автозапуск:
systemctl start nginx
systemctl enable nginxПроверьте, что Nginx слушает 80‑й порт:
netstat -plntu
curl -I localhost
ALT: Скриншот успешной установки и запуска Nginx на Ubuntu с выводом статуса HTTP
Шаг 2 — Установка и настройка PHP‑FPM
SuiteCRM совместим с несколькими версиями PHP. В исходном руководстве использовался PHP 7.0. Если у вас старый релиз Ubuntu, используйте доступную версию PHP от репозиториев или репозитории с поддержкой нужной версии.
Установим PHP и необходимые расширения (пример для PHP 7.0):
apt install -y php7.0-fpm php7.0-mcrypt php7.0-imap php7.0-curl php7.0-cli php7.0-mysql php7.0-gd php7.0-xsl php7.0-json php7.0-intl php-pear php7.0-dev php7.0-common php7.0-mbstring php7.0-zip php-soap libcurl3 curlПерейдите в каталог конфигурации PHP:
cd /etc/php/7.0/Отредактируйте php.ini для cli и fpm:
vim cli/php.ini
vim fpm/php.iniОбязательная настройка для SuiteCRM:
- увеличить upload_max_filesize до 100M (SuiteCRM требует минимум ~6M)
upload_max_filesize = 100M- установить cgi.fix_pathinfo в 0
cgi.fix_pathinfo=0- убедиться, что указана директория сессий
session.save_path = "/var/lib/php/sessions"Создайте директорию для сессий и назначьте владельца www‑data:
mkdir -p /var/lib/php/sessions
chown -R www-data:www-data /var/lib/php/sessionsЗапустите и включите PHP‑FPM:
systemctl start php7.0-fpm
systemctl enable php7.0-fpmПроверьте, что PHP‑FPM слушает unix‑сокет:
netstat -pl | grep php
ALT: Скриншот вывода проверки PHP‑FPM и состояния сокета на сервере
Примечание: если вы используете более новую Ubuntu, названия пакетов и пути к сокету будут отличаться (например, php7.4-fpm и /run/php/php7.4-fpm.sock).
Шаг 3 — Установка и настройка MariaDB
Установим MariaDB и настроим root‑пароль, затем создадим базу и пользователя для SuiteCRM.
apt install -y mariadb-server mariadb-clientЗапустите сервис и включите автозапуск:
systemctl start mysql
systemctl enable mysqlЗащитите установку и задайте пароль root:
mysql_secure_installationОтветьте “Y” на предлагаемые вопросы (удаление анонимных пользователей, запрет удалённого входа root и т.д.).
Создайте базу данных и пользователя (пример):
mysql -u root -p
# Введите пароль root
CREATE DATABASE suitecrm_db;
CREATE USER 'crmadmin'@'localhost' IDENTIFIED BY 'hakase-labs123';
GRANT ALL PRIVILEGES ON suitecrm_db.* TO 'crmadmin'@'localhost';
FLUSH PRIVILEGES;
ALT: Скриншот команд создания базы данных и пользователя в MariaDB
Совет по безопасности: используйте надежный пароль и ограничьте доступ к базе по необходимости (например, через локальный сокет или firewall).
Шаг 4 — Скачивание и подготовка SuiteCRM
Задачи на этом этапе: скачать исходники SuiteCRM, настроить права, корректно открыть порты на firewall, получить SSL‑сертификат и настроить виртуальный хост Nginx.
- Скачиваем код
Убедитесь, что git установлен:
apt install -y gitКлонируйте репозиторий в /opt:
cd /opt/
git clone https://github.com/salesagility/SuiteCRM.git suitecrmПерейдите в каталог и подготовьте папки и права:
cd /opt/suitecrm
mkdir -p /opt/suitecrm/cache
chmod -R 775 cache custom modules themes data upload config_override.php
chown www-data:www-data -R /opt/suitecrm
ALT: Скриншот файловой структуры SuiteCRM после клонирования и изменения прав
- Настройка UFW
Откройте SSH, HTTP и HTTPS:
ufw allow ssh
ufw allow http
ufw allow https
ufw enableПроверьте статус:
ufw status
ALT: Скриншот статуса UFW с открытыми портами SSH, HTTP и HTTPS
- Получение сертификата Let’s Encrypt
Для HTTPS мы используем бесплатные сертификаты от Let’s Encrypt. Установите клиента certbot/letsencrypt:
apt install -y letsencryptОстановите Nginx на время получения сертификата (certbot запустит временный сервер):
systemctl stop nginxПолучите сертификат (пример для домена suitecrm.hakase-labs.co):
letsencrypt certonly --standalone -d suitecrm.hakase-labs.coВо время генерации укажите ваш email и согласитесь с соглашением Let’s Encrypt.

ALT: Скриншот процесса ввода email для Let’s Encrypt
Сертификаты появятся в /etc/letsencrypt/live/<ваш_домен>.

ALT: Скриншот успешной генерации сертификата и пути сохранения
- Настройка Nginx virtual host
Создайте файл /etc/nginx/sites-available/suitecrm с конфигурацией ниже (пример):
# 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 HIGH:!aNULL:!MD5;
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 /var/www/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:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}Активируйте виртуальный хост, проверьте конфигурацию и перезапустите Nginx:
ln -s /etc/nginx/sites-available/suitecrm /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginxПосле этого веб‑сервер будет принимать HTTPS‑запросы для вашего домена.
Шаг 5 — Веб‑инсталлятор SuiteCRM
Откройте в браузере https://suitecrm.hakase-labs.co (замените домен на ваш).
Вы увидите страницу install.php и лицензию GNU AGPL. Примите лицензию и перейдите дальше.
Проверьте системные требования на странице проверок. Все пункты должны показывать OK.

ALT: Скриншот страницы установщика SuiteCRM с предложением принять лицензию
Заполните параметры базы данных: имя базы suitecrm_db, пользователь crmadmin и пароль hakase-labs123. Задайте данные администратора SuiteCRM.

ALT: Скриншот страницы ввода настроек базы данных и административных данных
Запустите установку и дождитесь завершения. После успешной установки вы попадёте на страницу входа.

ALT: Скриншот страницы входа SuiteCRM после установки
Войдите под администратором и проверьте стандартную панель управления.

ALT: Скриншот стандартной панели SuiteCRM после первой авторизации
Шаг 6 — Финальные шаги
Добавьте cron‑задачу от имени www‑data для запуска встроенных задач SuiteCRM:
sudo crontab -e -u www-dataВставьте строку:
* * * * * cd /opt/suitecrm; php -f cron.php > /dev/null 2>&1Сохраните и перезапустите cron:
systemctl restart cronПроверьте, что cron выполняет задания (по логам SuiteCRM или по изменению timestamp в файлах).
Контрольные проверки и приёмка
Критерии приёмки
- Веб‑интерфейс доступен по HTTPS без предупреждений браузера
- Успешный вход под админом и загрузка дашборда
- Cron выполняется каждую минуту (проверяется по логам SuiteCRM)
- Права на /opt/suitecrm установлены для www‑data
- Бэкап конфигураций и базы данных созданы
Пост‑проверки
- nginx -t проходит без ошибок
- mysql доступен локально для пользователя crmadmin
- сертификат Let’s Encrypt корректно установлен в /etc/letsencrypt/live
Рекомендации по безопасности
- Используйте сильные пароли для базы и админа
- Закройте доступ к серверу по SSH для неавторизованных пользователей, включите ключи
- Настройте регулярное резервное копирование (файлы + дамп БД)
- Обновляйте ОС и пакеты; планируйте переход с Ubuntu 16.04 на более новые LTS
- Минимизируйте набор установленных PHP расширений
- Настройте мониторинг логов и SLO для критичных сервисов
Таблица совместимости — ориентир
- Ubuntu 16.04: совместимо с PHP 7.0 (как в инструкции), но лучше использовать Ubuntu 18.04/20.04 с PHP 7.2–7.4
- MariaDB: 10.x обычно подходит; проверяйте требования версии SuiteCRM
- Nginx: любая современная версия; важен корректный fastcgi_pass для php‑fpm
Примечание: точные версии зависят от релиза SuiteCRM. Всегда проверяйте официальную документацию SuiteCRM перед продакшен‑развёртыванием.
Рольные чек‑листы
Администратор инфраструктуры
- Настроил DNS и домен
- Настроил UFW
- Установил и настроил Nginx, PHP‑FPM, MariaDB
- Настроил автоматические обновления ОС (по возможности тестово)
Администратор приложения
- Скачал SuiteCRM и назначил права (www‑data)
- Прогнал веб‑инсталлятор и проверил систему
- Настроил cron и подтвердил выполнение задач
- Сделал бэкап конфигурации и базы
Оператор безопасности
- Проверил HTTPS и цепочку сертификатов
- Настроил журналы и ротацию логов
- Настроил бэкап и проверил восстановление
SOP — быстрый план установки (4 шага)
- Подготовка сервера: обновить пакеты, настроить UFW, DNS
- Установка стека: nginx, php‑fpm, mariadb
- Подготовка SuiteCRM: клонирование, права, SSL, конфиг nginx
- Установка через веб, проверка cron, снэпшот системы и бэкап БД
Диагностика часто встречаемых проблем
Проблема: Страница установщика не открывается
- Проверьте nginx (nginx -t и systemctl status nginx)
- Проверьте, что порт 443 открыт (ufw status)
- Убедитесь, что сертификат находится в указанном пути
Проблема: 502 Bad Gateway при обращении к PHP
- Убедитесь, что PHP‑FPM работает и путь сокета совпадает в конфиге nginx
- Выполните
systemctl status php7.0-fpmиjournalctl -u php7.0-fpm
Проблема: Ошибки записи файлов в SuiteCRM
- Проверьте права на директории /opt/suitecrm, особенно upload, cache, custom
- chown -R www-data:www-data /opt/suitecrm
- chmod корректно на папках, не давая 777 в продакшене
Советы по обновлению и миграции
- При переходе на новую Ubuntu или новую версию PHP сперва протестируйте всё на копии сервера
- Проверьте совместимость PHP‑расширений и версий MariaDB
- Экспортируйте базу и файлы перед обновлением, делайте бэкап
FAQ
Q: Можно ли использовать Apache вместо Nginx? A: Да. SuiteCRM совместим с Apache и Nginx. Для Apache потребуется настроить mod_php или php‑fpm и соответствующие правила для .htaccess/rewrites.
Q: Нужно ли ставить Let’s Encrypt в продакшен? A: Рекомендуется использовать действительный сертификат для защиты данных. Let’s Encrypt — бесплатный и автоматизируемый вариант.
Q: Как часто обновлять SuiteCRM? A: Обновляйте в соответствии с политикой стабильности вашей организации. На тестовой среде проверяйте обновления перед применением в продакшене.
Резюме
- Инструкция покрывает полный путь: от установки стека до запуска SuiteCRM через веб‑инсталлятор.
- Обязательно проверьте права, cron и SSL.
- Планируйте миграцию с Ubuntu 16.04 на более новый LTS для устойчивой поддержки.
Источники
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone