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 mariadb
pkg search mariadb

Доступные версии MariaDB для FreeBSD 11

В этом руководстве мы установим последнюю версию базы данных и клиента 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*

**Проверка входа в базу данных MariaDB

Выполнение команды sockstat в FreeBSD быстро показывает, что MariaDB открыта для внешних сетевых подключений и может быть удаленно доступна из любой сети через порт 3306/TCP.

sockstat -4 -6

Проверка сокета и порта MariaDB

Чтобы полностью отключить удаленные сетевые подключения к MariaDB, вам нужно заставить сетевой сокет MySQL связываться только с loopback интерфейсом, добавив следующую строку в файл /etc/rc.conf с помощью следующей команды.

sysrc mysql_args="--bind-address=127.0.0.1"

После этого перезапустите демон MariaDB, чтобы применить изменения, и выполните команду sockstat снова, чтобы отобразить сетевой сокет для службы mysql. На этот раз служба MariaDB должна слушать сетевые подключения только на сокете localhost:3306.

service mysql-server restart
sockstat -4 -6|grep mysql

MariaDB привязана к интерфейсу localhost

Если вы разрабатываете удаленное веб-приложение, которому нужен доступ к базе данных на этой машине, отмените изменения сокета 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 в FreeBSD, выполните следующую команду. Во время установки бинарного пакета менеджер пакетов спросит вас, согласны ли вы с загрузкой и установкой пакета Nginx. Обычно вы должны ввести слово yes или y в приглашении, чтобы начать процесс установки. Чтобы избежать запроса, добавьте флаг –y при выполнении команды: pkg –y install nginx.

pkg install nginx

Установка Nginx на FreeBSD

После установки программного обеспечения веб-сервера 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

Место, где веб-файлы хранятся для 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;*

Изменение корневого каталога Nginx

Шаг 3 – Установка языка программирования PHP

По умолчанию веб-сервер Nginx не может напрямую обрабатывать скрипты PHP, Nginx должен передавать PHP-код через шлюз FastCGI демону PHP-FPM, который интерпретирует и выполняет скрипты PHP. Чтобы установить демон PHP-FPM в FreeBSD, найдите доступные предварительно скомпилированные бинарные пакеты PHP, выполнив следующие команды.

ls /usr/ports/lang/ | grep php
pkg 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

**Изменение пользователя PHP

По умолчанию демон Nginx работает с привилегиями системного пользователя ‘nobody‘. Измените пользователя времени выполнения Nginx, чтобы он соответствовал пользователю времени выполнения PHP-FPM, отредактировав файл /usr/local/etc/nginx/nginx.conf и обновив следующую строку:

user www;

Пользователь www

По умолчанию демон PHP-FPM в FreeBSD открывает сетевой сокет на localhost:9000 в состоянии прослушивания. Чтобы отобразить этот сокет, вы можете использовать команду sockstat, как показано в следующем примере.

sockstat -4 -6| grep php-fpm

Проверка сокета 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 Nginx

После того как вы внесли все вышеперечисленные изменения, создайте файл конфигурации для 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=yes
service php-fpm restart

Проверьте конфигурации nginx на наличие синтаксических ошибок:

nginx –t   
service nginx restart

Проверка синтаксиса nginx и перезапуск nginx

Чтобы получить текущую информацию о PHP, доступную для вашего стека FEMP в FreeBSD, создайте файл phpinfo.php в каталоге документов вашего сервера, выполнив следующую команду.

echo "" | tee /usr/local/www/nginx/phpinfo.php

Затем откройте браузер и перейдите на страницу phpinfo.php, посетив доменное имя вашего сервера или публичный IP-адрес, добавив файл /phpinfo.php, как показано на следующем скриншоте.

Вывод PHPinfo

Вот и все! Вы успешно установили и настроили стек FEMP в FreeBSD 11. Среда теперь готова и полностью функциональна для начала развертывания динамических веб-приложений на вашем предприятии.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.