FEMP установка · 10 min read · Jan 26, 2026
Установка Nginx, MariaDB и PHP (стек FEMP) на FreeBSD 11
В этом руководстве я опишу процесс установки и настройки стека FEMP на FreeBSD 11.x. Стек программного обеспечения FEMP — это аббревиатура, которая обозначает группу программ, которые обычно устанавливаются в операционных системах Unix/Linux и в основном используются для развертывания динамических веб-приложений. В данном случае аббревиатура FEMP относится к операционной системе FreeBSD, на которую устанавливаются следующие приложения:
- Nginx веб-сервер, который является быстрорастущим популярным веб-сервером, в основном используемым для обслуживания HTML-контента, но также может предоставлять балансировку нагрузки, высокую доступность или обратный прокси для веб-сервера или других сетевых служб.
- PHP интерпретатор динамического языка программирования, используемый на серверной стороне для манипуляции данными баз данных и создания динамического веб-контента, который может быть включен в обычный HTML. Скрипты PHP выполняются только на стороне сервера, никогда на стороне клиента (в браузерах).
- MariaDB\MySQL СУБД, в которой хранятся данные на сервере, в то время как динамическая обработка осуществляется PHP. В этом руководстве мы установим и будем использовать систему управления реляционными базами данных MariaDB, сообществом форк MySQL, в пользу базы данных MySQL, которая теперь принадлежит и разрабатывается Oracle.
ТРЕБОВАНИЯ:
- Минимальная установка FreeBSD 11.x.
- Статический IP-адрес, настроенный для сетевого интерфейса.
- Обычная учетная запись с правами root или прямой доступ к системе через учетную запись root.
- Предпочтительно, публично зарегистрированное доменное имя, настроенное с минимальными записями DNS (записи A и CNAME).
Шаг 1 – Установка базы данных MariaDB
На первом шаге мы установим систему управления базами данных MariaDB, которая является компонентом FEMP, который будет использоваться для хранения и управления динамическими данными веб-сайта. MariaDB/MySQL является одной из самых используемых открытых реляционных баз данных в мире в сочетании с веб-сервером Nginx или Apache. Оба сервера широко используются для создания и разработки сложных веб-приложений или динамических веб-сайтов. MariaDB может быть установлена в FreeBSD непосредственно из бинарных файлов, предоставленных репозиториями PORTS. Однако простой поиск с помощью команды ls в разделе баз данных FreeBSD Ports показывает несколько версий MariaDB, как показано в следующем выводе команды. Также выполнение команды менеджера пакетов pkg отображает те же результаты.
ls -al /usr/ports/databases/ | grep mariadbpkg search mariadb
В этом руководстве мы установим последнюю версию базы данных и клиента MariaDB, используя команду pkg, как показано в следующем отрывке.
pkg install mariadb102-server mariadb102-clientПосле завершения установки MariaDB в системе выполните следующую команду, чтобы включить сервер MySQL на уровне всей системы. Также убедитесь, что вы запустили демон MariaDB, как показано ниже.
sysrc mysql_enable="YES"service mysql-server startДалее нам нужно будет обеспечить безопасность базы данных MariaDB, запустив скрипт mysql_secure_installation. Во время выполнения скрипта будет задано несколько вопросов. Цель этих вопросов — обеспечить уровень безопасности для движка MySQL, например, установить пароль root для пользователя root MySQL, удалить анонимного пользователя, отключить удаленный вход для пользователя root и удалить тестовую базу данных. После выбора надежного пароля для пользователя root MySQL ответьте да на все вопросы, как показано в следующем примере скрипта. Не путайте пользователя root базы данных MariaDB с пользователем root системы. Хотя эти учетные записи имеют одно и то же имя, root, они не эквивалентны и используются для разных целей: одна для администрирования системы, а другая для администрирования базы данных.
/usr/local/bin/mysql_secure_installationПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MariaDB СЕРВЕРОВ В ПРОИЗВОДСТВЕ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ! Чтобы войти в MariaDB и обеспечить ее безопасность, нам нужен текущийпароль для пользователя root. Если вы только что установили MariaDB, ивы еще не установили пароль root, пароль будет пустым,поэтому вам просто нужно нажать Enter здесь. Введите текущий пароль для root (нажмите Enter для отсутствия):Хорошо, пароль успешно использован, продолжаем... Установка пароля root гарантирует, что никто не сможет войти в MariaDBпользователем root без надлежащей авторизации.Установить пароль root? [Y/n]y
Новый пароль:Повторите новый пароль:Пароль успешно обновлен!Перезагрузка таблиц привилегий.. ... Успех!По умолчанию установка MariaDB имеет анонимного пользователя, позволяя любомувойти в MariaDB, не имея учетной записи пользователя.Это предназначено только для тестирования и для упрощения установки.Вы должны удалить их перед переходом впроизводственную среду.Удалить анонимных пользователей? [Y/n]y
... Успех!Обычно пользователю root разрешается подключаться только с 'localhost'. Этогарантирует, что кто-то не сможет угадать пароль root из сети.Запретить удаленный вход для root? [Y/n]y
... Успех!По умолчанию MariaDB поставляется с базой данных с именем 'test', к которой любой можетполучить доступ. Это также предназначено только для тестирования и должно быть удаленоперед переходом в производственную среду.Удалить тестовую базу данных и доступ к ней? [Y/n]y
- Удаление тестовой базы данных... ... Успех! - Удаление привилегий на тестовую базу данных... ... Успех!Перезагрузка таблиц привилегий обеспечит, что все изменения, сделанные до сих пор,вступят в силу немедленно.Перезагрузить таблицы привилегий сейчас? [Y/n]y**
... Успех!Очистка...Все готово! Если вы завершили все вышеперечисленные шаги, ваша установка MariaDBтеперь должна быть безопасной.Спасибо за использование MariaDB!Наконец, после завершения обеспечения безопасности базы данных MariaDB проверьте, разрешено ли вам выполнять локальный вход в базу данных из учетной записи root, выполнив следующую команду. После подключения к приглашению базы данных просто введите quit или exit, чтобы покинуть консоль базы данных и вернуться к приглашению консоли пользователя системы, как показано на следующем скриншоте.
mysql -u root -p*MariaDB> quit***
Выполнение команды sockstat в FreeBSD быстро показывает, что MariaDB открыта для внешних сетевых подключений и может быть удаленно доступна из любой сети через порт 3306/TCP.
sockstat -4 -6
Чтобы полностью отключить удаленные сетевые подключения к MariaDB, вам нужно заставить сетевой сокет MySQL связываться только с loopback интерфейсом, добавив следующую строку в файл /etc/rc.conf с помощью следующей команды.
sysrc mysql_args="--bind-address=127.0.0.1"После этого перезапустите демон MariaDB, чтобы применить изменения, и выполните команду sockstat снова, чтобы отобразить сетевой сокет для службы mysql. На этот раз служба MariaDB должна слушать сетевые подключения только на сокете localhost:3306.
service mysql-server restartsockstat -4 -6|grep mysql
Если вы разрабатываете удаленное веб-приложение, которому нужен доступ к базе данных на этой машине, отмените изменения сокета MySQL, сделанные до сих пор, удалив или закомментировав строку mysql_args=”–bind-address=127.0.0.1” из файла /etc/rc.conf и перезапустив базу данных, чтобы отразить изменения. В этом случае вам следует учитывать другие альтернативы для ограничения или запрета удаленного доступа к MySQL, такие как запуск локального брандмауэра и фильтрация IP-адресов клиентов, которым нужен удаленный вход, или создание пользователей MySQL с соответствующими правами IP-адресов для входа на сервер.
Шаг 2 – Установка веб-сервера Nginx
Следующим важным демоном, который мы установим в FreeBSD для нашего стека FEMP, является веб-сервер, представленный службой Nginx. Процесс установки веб-сервера Nginx в FreeBSD довольно прост. Веб-сервер Nginx можно установить из бинарных файлов, предоставленных FreeBSD 11.x Ports. Простой поиск по репозиториям Ports в разделе www может показать список доступных предварительно скомпилированных версий программного обеспечения Nginx, как показано в следующем отрывке команды.
ls /usr/ports/www/ | grep nginxВыполнение команды управления пакетами может отобразить те же результаты, как показано на следующем изображении.
pkg search –o nginx
Чтобы установить наиболее распространенную версию Nginx в FreeBSD, выполните следующую команду. Во время установки бинарного пакета менеджер пакетов спросит вас, согласны ли вы с загрузкой и установкой пакета Nginx. Обычно вы должны ввести слово yes или y в приглашении, чтобы начать процесс установки. Чтобы избежать запроса, добавьте флаг –y при выполнении команды: pkg –y install nginx.
pkg install nginx
После установки программного обеспечения веб-сервера Nginx на вашу систему вы должны включить и запустить службу, выполнив следующие команды.
sysrc nginx_enable="yes"service nginx startВы можете выполнить команду sockstat, чтобы проверить, запущена ли служба Nginx на вашей системе и на каких сетевых сокетах она связывается. Обычно она должна связываться по умолчанию на :80 TCP сокете. Вы можете использовать фильтр командной строки grep, чтобы отобразить только сокеты, соответствующие серверу *nginx.
sockstat -4 -6 | grep nginxЧтобы посетить страницу по умолчанию Nginx, откройте браузер на компьютере в вашей сети и перейдите по IP-адресу вашего сервера через протокол HTTP. В случае, если вы зарегистрировали доменное имя или используете локальный DNS-сервер на вашем предприятии, вы можете ввести полное доменное имя вашей машины или доменное имя в поле URI браузера. Сообщение заголовка с текстом “Добро пожаловать в nginx!” вместе с несколькими строками HTML должно отображаться в вашем браузере, как показано на следующем скриншоте.

Место, где веб-файлы хранятся для Nginx в FreeBSD 11.x, — это каталог /usr/local/www/nginx/. Этот каталог является символической ссылкой на каталог nginx-dist. Чтобы развернуть веб-сайт, скопируйте файлы html или php-скриптов в этот каталог. Чтобы изменить каталог webroot по умолчанию Nginx, откройте файл конфигурации Nginx из каталога /usr/local/etc/nginx/ и обновите строку root, как показано в следующем примере.
nano /usr/local/etc/nginx/nginx.confЭто будет новый путь webroot для Nginx:
*root /usr/local/www/new_html_directory;*
Шаг 3 – Установка языка программирования PHP
По умолчанию веб-сервер Nginx не может напрямую обрабатывать скрипты PHP, Nginx должен передавать PHP-код через шлюз FastCGI демону PHP-FPM, который интерпретирует и выполняет скрипты PHP. Чтобы установить демон PHP-FPM в FreeBSD, найдите доступные предварительно скомпилированные бинарные пакеты PHP, выполнив следующие команды.
ls /usr/ports/lang/ | grep phppkg search –o phpИз множества доступных версий PHP в репозиториях FreeBSD Ports выберите установку последней версии интерпретатора PHP, в настоящее время версии PHP 7.1, выполнив следующую команду.
pkg install php71Чтобы установить некоторые дополнительные расширения PHP, которые могут понадобиться для развертывания сложных веб-приложений, выполните следующую команду. Список официально поддерживаемых расширений PHP можно найти, посетив следующую ссылку: http://php.net/manual/en/extensions.alphabetical.php
Если вы планируете создать веб-сайт на основе системы управления контентом, ознакомьтесь с документацией CMS, чтобы узнать требования к вашей системе, особенно какие модули или расширения PHP необходимы.
php71-mcrypt mod_php71 php71-mbstring php71-curl php71-zlib php71-gd php71-jsonПоскольку мы запускаем сервер базы данных в нашей настройке, мы также должны установить расширение драйвера базы данных PHP, которое используется интерпретатором PHP для подключения к базе данных MariaDB.
pkg install php71-mysqliДалее обновите пользователя и группу PHP-FPM, чтобы они соответствовали пользователю времени выполнения Nginx, отредактировав файл конфигурации PHP-FPM. Измените переменные строк пользователя и группы на www, как показано в следующем отрывке.
cp /usr/local/etc/php-fpm.d/www.conf{,.backup}nano /usr/local/etc/php-fpm.d/www.confИзмените следующие строки, чтобы они выглядели следующим образом.
user = www
group = www**
По умолчанию демон Nginx работает с привилегиями системного пользователя ‘nobody‘. Измените пользователя времени выполнения Nginx, чтобы он соответствовал пользователю времени выполнения PHP-FPM, отредактировав файл /usr/local/etc/nginx/nginx.conf и обновив следующую строку:
user www;
По умолчанию демон PHP-FPM в FreeBSD открывает сетевой сокет на localhost:9000 в состоянии прослушивания. Чтобы отобразить этот сокет, вы можете использовать команду sockstat, как показано в следующем примере.
sockstat -4 -6| grep php-fpm
Чтобы веб-сервер Nginx мог обмениваться скриптами PHP с шлюзом PHP FastCGI на 127.0.0.1:9000 сетевом сокете, откройте файл конфигурации Nginx и обновите блок PHP-FPM, как показано в следующем примере.
Пример PHP FastCGI шлюза для Nginx:
location ~ \.php$ {
root /usr/local/www/nginx;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
После того как вы внесли все вышеперечисленные изменения, создайте файл конфигурации для PHP на основе файла по умолчанию для производства, выполнив следующую команду. Вы можете изменить настройки времени выполнения PHP, отредактировав переменные, присутствующие в файле php.ini.
ln -s /usr/local/etc/php.ini-production /usr/local/etc/php.iniНаконец, чтобы применить все изменения, сделанные до сих пор, включите демон PHP-FPM на уровне всей системы и перезапустите службы PHP-FPM и Nginx, выполнив следующие команды.
sysrc php_fpm_enable=yesservice php-fpm restartПроверьте конфигурации nginx на наличие синтаксических ошибок:
nginx –t service nginx restart
Чтобы получить текущую информацию о PHP, доступную для вашего стека FEMP в FreeBSD, создайте файл phpinfo.php в каталоге документов вашего сервера, выполнив следующую команду.
echo "" | tee /usr/local/www/nginx/phpinfo.phpЗатем откройте браузер и перейдите на страницу phpinfo.php, посетив доменное имя вашего сервера или публичный IP-адрес, добавив файл /phpinfo.php, как показано на следующем скриншоте.

Вот и все! Вы успешно установили и настроили стек FEMP в FreeBSD 11. Среда теперь готова и полностью функциональна для начала развертывания динамических веб-приложений на вашем предприятии.
Get new posts in your inbox
No spam. Unsubscribe anytime.