Поиск по сайту:

Установите Nginx, MariaDB и PHP (стек FEMP) на FreeBSD 11


На этой странице

  1. Шаг 1. Установите базу данных MariaDB.
  2. Шаг 2. Установите веб-сервер Nginx
  3. Шаг 3. Установите язык программирования PHP.

В этом руководстве я опишу процесс установки и настройки стека FEMP на FreeBSD 11.x. Программный стек FEMP — это аббревиатура, обозначающая группу программ, которые обычно устанавливаются в операционных системах Unix/Linux и в основном используются для развертывания динамических веб-приложений. В данном случае аббревиатура FEMP относится к Unix-подобной операционной системе 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 показывает несколько версий MariaDB, как показано в следующем выводе команды. Кроме того, запуск команды pkg диспетчера пакетов отображает те же результаты.

ls -al /usr/ports/databases/ | grep mariadb
pkg 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
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
 
In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
 
Enter current password for root (enter for none):
OK, successfully used password, moving on...
 
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using 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 restart
sockstat -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. Простой поиск в репозиториях портов в разделе 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 в вашей системе и к каким сетевым сокетам она привязана. Обычно он должен по умолчанию связываться с TCP-сокетом *:80. Вы можете использовать фильтр командной строки grep, чтобы отобразить только те сокеты, которые соответствуют серверу nginx.

sockstat -4 -6 | grep nginx

Чтобы посетить веб-страницу Nginx по умолчанию, откройте браузер на компьютере в вашей сети и перейдите к IP-адресу вашего сервера по протоколу HTTP. Если вы зарегистрировали доменное имя или используете локальный DNS-сервер в своем помещении, вы можете указать полное доменное имя вашего компьютера или доменное имя в поле URI браузера. В браузере должно отображаться заглавное сообщение \Добро пожаловать в nginx!\ вместе с несколькими строками HTML, как показано на следующем снимке экрана.

  • http://вашдомен.com

Местом хранения веб-файлов для 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

Это будет новый корневой путь для 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 php
pkg search –o php

Из множества версий PHP, доступных в репозиториях портов FreeBSD, выберите установку последней версии интерпретатора 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 запускается с привилегиями системного пользователя none. Измените пользователя среды выполнения Nginx, чтобы он соответствовал пользователю среды выполнения PHP-FPM, отредактировав файл /usr/local/etc/nginx/nginx.conf и обновив следующую строку:

user www;

По умолчанию демон PHP-FPM во FreeBSD открывает сетевой сокет на TCP-порте 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=yes
service php-fpm restart

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

nginx –t  
service nginx restart

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

echo "<?php phpinfo(); ?>" | tee /usr/local/www/nginx/phpinfo.php

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

  • http://domain.com/phpinfo.php

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