Установка ExpressionEngine на FreeBSD 12 с Nginx, PHP и MariaDB
Важно
- Замените example.com на ваш домен в командах и конфигурациях.
- Выполняйте команды от пользователя с sudo-привилегиями, если не указано иное.
Основная цель статьи
Пошагово описать установку ExpressionEngine на FreeBSD 12 с использованием PHP-FPM, MariaDB и Nginx, с опциями для HTTPS через acme.sh.
Быстрая карта разделов
- Требования
- Подготовка системы
- Установка PHP
- Установка MariaDB
- Получение сертификата (опционально)
- Установка и настройка Nginx
- Установка ExpressionEngine
- Завершение и приёмка
- Полезные дополнения: альтернативы, чек-листы, откат, тесты
Требования
ExpressionEngine требует веб‑сервер, PHP и базу данных MySQL/MariaDB. Рекомендуемый стек и версии:
- PHP 7.0 или новее, с PHP-FPM и расширениями: gd, fileinfo, intl, mbstring.
- MySQL 5.6+ или Percona 5.6+. В этом руководстве используется MariaDB.
- Веб‑сервер: Nginx или Apache. Здесь — Nginx.
Краткое определение: PHP-FPM — FastCGI Process Manager для PHP, рекомендуемый для производительных PHP‑сайтов.
Предварительные требования
- FreeBSD 12.x.
- Нерoot‑пользователь с sudo.
Используем домен example.com как пример. Замените на свой домен во всех конфигурациях и командах.
Начальные шаги
Проверьте версию FreeBSD:
uname -ro
# FreeBSD 12.0-RELEASEНастройте часовую зону:
tzsetupОбновите систему и пакеты:
freebsd-update fetch install
pkg update && pkg upgrade -yУстановите базовые утилиты:
pkg install -y sudo vim unzip wget bash socatУстановка PHP
Установите PHP и необходимые расширения. В примере используется php72, при необходимости замените на доступную версию (php73, php74 и т.д.).
sudo pkg install -y php72 php72-mbstring php72-tokenizer php72-pdo php72-pdo_mysql php72-openssl php72-hash php72-json php72-phar php72-filter php72-zlib php72-dom php72-xml php72-xmlwriter php72-xmlreader php72-curl php72-session php72-ctype php72-iconv php72-gd php72-simplexml php72-zip php72-filter php72-tokenizer php72-calendar php72-fileinfo php72-intl php72-phar php72-soap php72-xmlrpcПроверьте установленные модули:
php -mПроверьте версию PHP:
php --versionВключите и запустите PHP-FPM:
sudo sysrc php_fpm_enable=yes
sudo service php-fpm startВажно: убедитесь, что fastcgi слушает на 127.0.0.1:9000 или скорректируйте настройки Nginx под локальный сокет.
Установка MariaDB
Установите MariaDB сервер и клиент:
sudo pkg install -y mariadb102-client mariadb102-serverПроверьте версию:
mysql --versionВключите и запустите службу:
sudo sysrc mysql_enable="yes"
sudo service mysql-server startЗапустите скрипт безопасной настройки:
sudo mysql_secure_installationОтвечайте на вопросы скрипта по ситуации. Пример ответов (безопасно для продакшена):
Would you like to setup VALIDATE PASSWORD plugin? N
New password:
Re-enter new password:
Remove anonymous users? Y
Disallow root login remotely? Y
Remove test database and access to it? Y
Reload privilege tables now? Y Подключитесь к MariaDB и создайте базу и пользователя для ExpressionEngine:
sudo mysql -u root -p
mysql> CREATE DATABASE dbname;
mysql> GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
mysql> FLUSH PRIVILEGES;
mysql> exitЗамените dbname, username и password на свои значения.
Установка acme.sh и получение сертификата Let’s Encrypt (опционально)
SSL не обязателен, но настоятельно рекомендуется. Мы используем acme.sh — лёгкий клиент на shell без зависимостей.
sudo pkg install -y acme.shПроверьте версию acme.sh:
acme.sh --versionПолучите сертификаты RSA и ECDSA для example.com (замените домен):
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256Если нужен тестовый режим — добавьте флаг –staging.
Файлы будут в каталогах в домашней директории пользователя, например /home/username/example.com.
Создайте каталог для сертификатов и установите их туда (корректируйте пути при необходимости):
mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_eccУстановите сертификаты в целевую директорию, добавив команду перезагрузки Nginx:
# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"acme.sh автоматически обновляет сертификаты по расписанию.
Установка Nginx
Установите Nginx:
sudo pkg install -y nginxПроверьте версию:
nginx -vВключите и запустите сервис:
sudo sysrc nginx_enable=yes
sudo service nginx startСоздайте конфигурацию для ExpressionEngine:
sudo vim /usr/local/etc/nginx/expressionengine.confВставьте следующую конфигурацию и скорректируйте пути к сертификатам и root (замените example.com и пути если нужно):
server {
listen 443 ssl;
listen 80;
server_name example.com;
root /usr/local/www/expressionengine;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/example.com.key;
index index.php;
location / {
index index.php;
try_files $uri $uri/ @ee;
}
location @ee {
rewrite ^(.*) /index.php?$1 last;
}
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
include fastcgi_params;
fastcgi_index index.php5;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}Включите этот файл в основной nginx.conf, добавив в блок http:
include expressionEngine.conf;Проверьте конфигурацию и перезагрузите Nginx:
sudo nginx -t
sudo service nginx reloadПримечание: исправьте имена сертификатных файлов (fullchain.cer / .pem) и ключей в соответствии с тем, что создал acme.sh.
Установка ExpressionEngine
Создайте корневую директорию сайта и перейдите в неё:
sudo mkdir -p /usr/local/www/expressionengine
cd /usr/local/www/expressionengineСкачайте и распакуйте последнюю сборку ExpressionEngine:
sudo wget -O ee.zip --referer https://expressionengine.com/ 'https://expressionengine.com/?ACT=243'
sudo unzip ee.zip
sudo rm ee.zipУстановите владельца каталога на www:
sudo chown -R www:www /usr/local/www/expressionengineОткройте в браузере URL файла admin.php, например:
Следуйте мастеру установки. После успешной установки удалите или переименуйте каталог system/ee/installer/.
Завершение установки ExpressionEngine
Во время мастера введите данные базы и учётной записи администратора. Пример настройки администратора показан ниже.

После успешной установки вы увидите страницу входа по умолчанию.

Панель администратора ExpressionEngine выглядит так:

А фронтенд сайта может выглядеть примерно так:

Поздравляем — установка завершена.
Контрольный список перед переходом в прод
- Удалён или переименован каталог system/ee/installer/
- Конфигурация Nginx корректно указывает на root и SSL-файлы
- Файловые права установлены (владелец www), нет 777
- База данных создана и пользователь имеет только необходимые права
- PHP-FPM работает и слушает на заданном сокете/порту
- Автообновление сертификатов настроено (acme.sh)
Критерии приёмки
- Страница админки доступна и отвечает без ошибок.
- Вход в админ-панель работает с указанными данными администратора.
- Публичный фронтенд страницы возвращает HTTP 200 и выводит ожидаемый контент.
- HTTPS корректно настроен, сертификат действителен (если настроен).
Мини‑методология развертывания
- Подготовьте OS и обновите пакеты. 2. Установите стек (PHP, MariaDB, Nginx). 3. Настройте безопасный доступ к БД. 4. Получите сертификат (опционально). 5. Распакуйте EE, настройте права и веб‑сервер. 6. Пройдите мастер установки и проверку приёмки.
Альтернативные подходы
- Использовать Apache вместо Nginx, если вы привыкли к .htaccess и модульной структуре Apache.
- Заменить MariaDB на MySQL или Percona при корпоративных требованиях.
- Хостить PHP-FPM через сокет unix:/var/run/php-fpm.sock вместо 127.0.0.1:9000 для небольшой оптимизации.
Когда этот подход не подходит
- Если вам нужен готовый PaaS/managed хостинг — тогда проще выбрать платформу с предустановленным ExpressionEngine.
- Если ваша инфраструктура строго требует другой ОС (например, Debian/Ubuntu/CentOS), следуйте соответствующим гайдам.
Безопасность и резервирование
- Регулярно обновляйте ОС и пакеты.
- Защитите MariaDB паролями и ограничьте доступ по IP.
- Храните бэкапы базы и файлов вне основного сервера (sftp, rsync, облако).
- Настройте мониторинг свободного диска и загрузки CPU.
План отката (простая схема)
- Остановить Nginx и PHP-FPM.
- Восстановить файлы из последнего рабочего бэкапа в /usr/local/www/expressionengine.
- Восстановить дамп БД в MariaDB.
- Перезапустить службы и проверить доступность.
Тесты приёмки
- Открыть http(s)://example.com — получить 200 OK.
- Авторизоваться в админке — успешный вход.
- Создать тестовую запись и убедиться, что она отображается на фронтенде.
- Проверить логи Nginx и PHP-FPM на отсутствие ошибок.
Контрольные команды и шпаргалка
- Проверить службы: sudo service nginx status; sudo service php-fpm status; sudo service mysql-server status
- Проверить конфигурацию Nginx: sudo nginx -t
- Проверить права: ls -la /usr/local/www/expressionengine
- Проверить доступ к БД: mysql -u username -p -D dbname
Полезные ссылки
Краткое резюме
ExpressionEngine можно безопасно и стабильно установить на FreeBSD 12. Следуйте шагам: обновление системы → установка PHP и расширений → MariaDB → (опционально) SSL → Nginx → загрузка и установка ExpressionEngine. После установки проверьте рабочие сценарии и настройте бэкапы и мониторинг.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone