Установка стека FAMP в FreeBSD 12.0

Стек FAMP – это то же самое, что LAMP в Linux, — группа открытого программного обеспечения, что на сервер FreeBSD устанавливается в связке для обслуживания динамических веб-сайтов и приложений. В акроним FAMP включены FreeBSD (операционная система), Apache (веб-сервер), MySQL (система управления базами данных) и PHP (язык сценариев для обработки динамического PHP-контента).

В этом мануале вы узнаете, как установить стек FAMP на облачный сервер FreeBSD 12.0 с помощью менеджера пакетов pkg.

Требования

Для выполнения этого мануала нужны:

  • Предварительно настроенный сервер FreeBSD0 (инструкции – здесь).
  • Учетная запись с привилегиями суперпользователя (это либо root-пользователь, либо пользователь с расширенными привилегиями sudo).
  • Базовый брандмауэр (настроить его поможет мануал Рекомендации по настройке сервера FreeBSD 12.0).
  • Знакомство с командной строкой и текстовым редактором vi (он почти идентичен Vim).

1: Установка Apache

На сегодняшний день Apache – самый популярный веб-сервер в мире.

Apache очень просто установить при помощи pkg, менеджера пакетов FreeBSD. Менеджер пакетов значительно упрощает установку программ, обращаясь к репозиторию, поддерживаемому FreeBSD.

Читайте также: Управление пакетами в FreeBSD 10.1

Чтобы установить Apache 2.4 с помощью pkg, используйте команду:

sudo pkg install apache24

Введите y для подтверждения.

Чтобы запустить Apache как сервис, добавьте строку apache24_enable=»YES» в файл /etc/rc.conf. это делается при помощи команды:

sudo sysrc apache24_enable="YES"

Затем запустите Apache:

sudo service apache24 start

Чтобы убедиться, что веб сервер запустился, введите команду:

sudo service apache24 status

Вы получите:

apache24 is running as pid 20815.

Теперь можно выполнить выборочную проверку, чтобы убедиться, что установка и запуск прошли успешно. Посетите внешний IP-адрес сервера в веб-браузере (чтобы узнать внешний IP-адрес, смотрите следующий раздел):

http://IP_адрес_сервера/

На экране появится стандартная страница Apache с сообщением «It Works!», что значит, что веб-сервер установлен и запущен.

Как узнать внешний IP-адрес сервера?

Есть несколько способов определить внешний IP-адрес сервера. Как правило, это адрес, который используется для подключения к серверу через SSH.

Один из наиболее простых способов получить эту информацию – использовать команду ifconfig, которая выведет информацию о сетевых интерфейсах. Чтобы сузить вывод команды до внешнего IP-адреса, используйте следующую команду (выделенная часть – имя сетевого интерфейса, которое может отличаться):

ifconfig vtnet0 | grep "inet " | awk '{ print $2; exit }'

Также внешний IP можно узнать с помощью curl – команда свяжется с третьей стороной, например, с icanhazip, и укажет, как другие видят ваш сервер в сети:

curl http://icanhazip.com

2: Установка MySQL

Веб-сервер установлен и запущен, теперь можно приступать к установке MySQL – это реляционная система управления базами данных (СУБД). Сервер MySQL обеспечит доступ к базам данных, в которых ваше приложение сможет хранить информацию.

Для установки MySQL можно снова использовать менеджер pkg; чтобы установить MySQL 8.0, введите команду:

sudo pkg install mysql80-server

Введите y для подтверждения установки. Эта команда установит серверные и клиентские пакеты MySQL.

Чтобы запустить MySQL как сервис, добавьте строку mysql_enable=»YES» в файл /etc/rc.conf. Это можно сделать с помощью команды sysrc.

sudo sysrc mysql_enable="YES"

Затем запустите сервер MySQL:

sudo service mysql-server start

Убедитесь, что он работает:

sudo service mysql-server status

Вы получите что-то вроде:

mysql is running as pid 21587.

После этого запустите скрипт безопасности, который удалит некоторые опасные параметры и ограничит доступ к БД; для этого введите:

sudo mysql_secure_installation

Командная строка запросит текущий root-пароль MySQL; поскольку это новая установка СУБД, такого пароля у вас пока нет, потому просто оставьте поле незаполненным, нажмите Y и следуйте инструкциям:

Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.
New password:  password
Re-enter new password:  password
Estimated strength of the password: 50
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

Остальные поля можно оставить по умолчанию. Для этого нажмите y, и скрипт установит стандартные значения. Также он удалит некоторых пользователей и базы данных, отключит удаленный root-логин и загрузит эти новые правила, чтобы система MySQL могла сразу применить их.

3: Установка PHP

PHP – это язык сценариев, который обрабатывает код для отображения динамического контента. Он позволяет запускать скрипты, подключаться к базам данных MySQL для получения информации и передавать обработанный контент веб-серверу для отображения пользователям.

Снова используйте pkg. Установка PHP будет содержать еще несколько дополнительных модулей и пакетов: mod_php, php-mysql и php-mysqli. Чтобы установить PHP 7.3, запустите команду:

sudo pkg install php73 php73-mysqli mod_php73

Подтвердите запуск, нажав y. Эта команда установит пакеты php73, mod_php73 и php73-mysqli .

Теперь скопируйте образец конфигурационного файла PHP:

sudo cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Запустите команду rehash, чтобы восстановить кэшированные данные системы об установленных исполняемых файлах:

rehash

Прежде чем запустить PHP, его нужно настроить для поддержки Apache.

Установка модулей PHP (опционально)

Чтобы расширить функции PHP, нужно установить дополнительные модули. Просмотреть список доступных модулей и библиотек PHP 7.3 можно с помощью этой команды:

pkg search php73

На экране появится такой список:

php73-7.3.5                    PHP Scripting Language
php73-aphpbreakdown-2.2.2      Code-Analyzer for PHP for Compatibility Check-UP
php73-aphpunit-1.8             Testing framework for unit tests
php73-bcmath-7.3.5             The bcmath shared extension for php
php73-brotli-0.6.2             Brotli extension for PHP
php73-bsdconv-11.5.0           PHP wrapper for bsdconv
php73-bz2-7.3.5                The bz2 shared extension for php
php73-calendar-7.3.5           The calendar shared extension for php
php73-composer-1.8.4           Dependency Manager for PHP
php73-ctype-7.3.5              The ctype shared extension for php
php73-curl-7.3.5               The curl shared extension for php
php73-dba-7.3.5                The dba shared extension for php
php73-deployer-6.4.3           Deployment tool for PHP
php73-dom-7.3.5                The dom shared extension for php
...

Чтобы узнать больше о любом необходимом модуле, можно открыть подробное описание пакета:

pkg search -f package_name

Вывод этой команды достаточно широкий; функции модуля описаны в поле Comment.

Например, чтобы получить описание пакета php73-calendar, нужно ввести:

pkg search -f php73-calendar

В выводе команды вы увидите следующий блок информации:

php73-calendar-7.3.5
Name           : php73-calendar
Version        : 7.3.5
...
Comment        : The calendar shared extension for php
...

Чтобы установить пакет после ознакомления с его функциями, используйте команду pkg install. Например, чтобы установить модуль php73-calendar, нужно ввести:

sudo pkg install php73-calendar

Чтобы установить несколько модулей за один раз, перечислите их в команде через пробел:

sudo pkg install package1 package2 ...

4: Настройка Apache для поддержки модуля PHP

Чтобы веб-сервер Apache мог обрабатывать  PHP-страницы, нужно настроить его для поддержки mod_php.

Откройте конфигурационный файл Apache:

sudo vi /usr/local/etc/apache24/modules.d/001_mod-php.conf

Добавьте в файл такие строки:

<IfModule dir_module>
DirectoryIndex index.php index.html
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
</IfModule>

Проверьте конфигурацию Apache:

sudo apachectl configtest

Вы получите вывод:

Performing sanity check on apache24 configuration:
Syntax OK

Сохраните и закройте файл. Перезапустите Apache, чтобы новые настройки вступили в силу.

sudo apachectl restart

Готово! Теперь FAMP stack установлен и настроен.

5: Тестирование стека FAMP

Чтобы убедиться, что установка стека FAMP прошла успешно, мы можем создать базовый скрипт PHP info.php.

Чтобы сервер Apache мог найти и корректно обработать файл, его нужно поместить в каталог DocumentRoot (именно здесь Apache ищет файлы, когда пользователь обращается к веб-серверу). Местонахождение каталога DocumentRoot указано в конфигурации Apache (/usr/local/etc/apache24/httpd.conf). По умолчанию это каталог /usr/local/www/apache24/data. Чтобы создать файл info.php в этом каталоге, наберите:

sudo vi /usr/local/www/apache24/data/info.php

На экране появится пустой файл. Внесите в него следующий код:

<?php phpinfo(); ?>

Сохраните и закройте файл.

Теперь можно проверить, корректно ли отображает веб-сервер сгенерированный PHP-контент. Для этого нужно просто открыть новую страницу в браузере:

http://your_server_IP_address/info.php

Эта страница выведет информацию о сервере с точки зрения PHP. Она очень полезна при отладке и проверке настроек.

Если все прошло успешно, значит PHP работает правильно и может взаимодействовать с веб-сервером.

Очень важно удалить этот файл после выполнения проверки. Он может предоставить конфиденциальную информацию о сервере неавторизованным пользователям или злоумышленникам.

sudo rm /usr/local/www/apache24/data/info.php

Эту страницу всегда можно быстро создать снова в случае необходимости.

Заключение

Теперь на сервере вашем сервере установлен стек FAMP – универсальная платформа для обслуживания сайтов.

Tags: , , , , ,