Как настроить стек FEMP (FreeBSD, Nginx, MySQL 8 и PHP 7.4) на FreeBSD 12
На этой странице
- Требования
- Начальные шаги
- Шаг 1. Установка основной ветки Nginx
- Шаг 2. Установка MySQL 8.0
- Шаг 3. Установка PHP 7.4
- Установка модулей PHP (необязательно)
Стек FEMP, аналогичный стеку LEMP в Linux, представляет собой набор программного обеспечения с открытым исходным кодом, которое обычно устанавливается вместе, чтобы позволить серверу FreeBSD размещать динамические веб-сайты и веб-приложения. FEMP — это аббревиатура, обозначающая FreeBSD (операционная система), Nginx (HTTP-сервер, произносится как Engine-x), MySQL (сервер базы данных) и PHP (язык программирования для обработки динамического содержимого PHP).
В этом руководстве вы хорошо настроите компоненты стека FEMP на сервере FreeBSD 12.1 с помощью
pkg
, менеджера пакетов FreeBSD.Требования
Прежде чем приступить к работе с этим руководством, вам потребуется следующее:
- FreeBSD 12.1.
- Пользователь с привилегиями root или пользователь
sudo
для внесения изменений в конфигурацию. - Рекомендуется базовое знакомство с системой FreeBSD и интерфейсом командной строки.
Начальные шаги
Проверьте версию FreeBSD.
uname -ro
# FreeBSD 12.1-RELEASEУбедитесь, что ваша система FreeBSD обновлена.
freebsd-update fetch install
pkg update && pkg upgrade -yУстановите необходимые пакеты.
pkg install -y sudo vim bash curl
Создайте новую учетную запись пользователя с предпочтительным именем пользователя. Мы используем
johndoe
.adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!Запустите команду
visudo
и раскомментируйте строку%wheel ALL=(ALL) ALL
, чтобы члены группыwheel
могли выполнять любую команду.visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALLТеперь переключитесь на только что созданного пользователя с помощью
su
:su - johndoe
ПРИМЕЧАНИЕ. Замените
johndoe
своим именем пользователя.Настройте часовой пояс:
sudo tzsetup
Шаг 1 — Установка основного Nginx
Веб-сервер Nginx в настоящее время является одним из самых популярных веб-серверов в мире. Это отличный выбор для размещения веб-сайта.
Вы можете установить Nginx с помощью менеджера пакетов FreeBSD,
pkg
. Менеджер пакетов позволяет без особых усилий устанавливать большинство программ из репозитория, поддерживаемого FreeBSD. Вы можете узнать больше о том, как использоватьpkg
здесь.Чтобы установить последнюю основную ветку Nginx, введите следующую команду:
sudo pkg install -y nginx-devel
Проверьте версию:
nginx -v
# nginx version: nginx/1.17.7Эта команда установит последнюю основную версию, которую можно надежно использовать на рабочем сервере. Если вы хотите установить последнюю стабильную версию, просто используйте пакет
nginx
вместоnginx-devel
.Теперь включите и запустите Nginx:
sudo sysrc nginx_enable=yes
sudo service nginx startЧтобы убедиться, что Nginx запущен, вы можете запустить следующую команду:
sudo service nginx status
В результате вы увидите что-то похожее на:
# Output
nginx is running as pid 17607.Вы можете убедиться, что Nginx был установлен и работает без ошибок, посетив общедоступный IP-адрес вашего сервера в веб-браузере. Перейдите к
your_server_IP
. Вы увидите стандартную страницу \Добро пожаловать в nginx!\.Шаг 2 — Установка MySQL 8.0
Теперь, когда ваш веб-сервер запущен и работает, пришло время установить MySQL, систему управления реляционными базами данных. Сервер MySQL организует и предоставит доступ к базам данных, где ваш сервер может хранить информацию.
Опять же, вы можете использовать
pkg
для получения и установки программного обеспечения.Чтобы установить MySQL
8.0
с помощьюpkg
, используйте эту команду:sudo pkg install -y mysql80-client mysql80-server
Эта команда установит последнюю версию клиента и сервера MySQL, в настоящее время это
8.x.x
.Проверьте версию:
mysql --version
# mysql Ver 8.0.17 for FreeBSD12.0 on amd64 (Source distribution)Теперь включите и запустите MySQL:
sudo sysrc mysql_enable=yes
sudo service mysql-server startЧтобы убедиться, что MySQL запущен, вы можете запустить следующую команду:
sudo service mysql-server status
Вы увидите что-то похожее на следующее:
# Output
mysql is running as pid 19066.В качестве хорошей практики вы можете запустить сценарий безопасности
mysql_secure_installation
, который удалит некоторые небезопасные значения по умолчанию и немного ограничит доступ к вашей системе баз данных.sudo mysql_secure_installation
Вам будет предложено установить пароль, а затем некоторые другие вопросы. Введите надежный пароль, а затем для остальных вопросов нажмите ENTER, чтобы выбрать значения по умолчанию.
Шаг 3 — Установка PHP 7.4
PHP — это серверный язык сценариев, предназначенный для веб-разработки. PHP является незаменимым компонентом стека FEMP. Кроме того, вместо PHP обычно используются Python или Perl. Однако чаще всего используется PHP как наиболее популярный вариант. Вместе с базой данных это обеспечит динамическое поведение ваших веб-сайтов или приложений.
Еще раз используйте систему
pkg
для установки компонентов PHP.Чтобы установить PHP
7.4
с помощьюpkg
, выполните следующую команду:sudo pkg install -y php74
Проверьте версию PHP:
php --version
# PHP 7.4.0 (cli) (built: Jul 18 2019 01:14:37) ( NTS )
# Copyright (c) 1997-2018 The PHP Group
# Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend TechnologiesЭта команда установит последнюю версию PHP,
7.4
.Теперь включите и запустите PHP-FPM:
sudo sysrc php_fpm_enable=yes
sudo service php-fpm startЧтобы убедиться, что PHP-FPM запущен, вы можете запустить следующую команду:
sudo service php-fpm status
В результате вы увидите что-то похожее на:
# Output
php_fpm is running as pid 23005.Установка модулей PHP (необязательно)
Для расширения функциональности PHP вы можете дополнительно установить некоторые дополнительные модули.
Чтобы увидеть в настоящее время скомпилированные модули PHP, вы можете запустить это:
php -m
# [PHP Modules]
# Core # date
# libxml
# mysqlnd
# pcre
# Reflection
# SPL
# standard
# [Zend Modules]Для поиска доступных модулей PHP вы можете использовать эту команду:
pkg search ^php74-*
Результатом будут в основном модули PHP 7.4, которые вы можете установить:
# Output
# php74-7.4.7 PHP Scripting Language
# php74-Ice37-3.7.2 Modern alternative to object middleware such as CORBA/COM/DCOM/COM+
# php74-aphpbreakdown-2.2.2 Code-Analyzer for PHP for Compatibility Check-UP
# php74-aphpunit-1.8 Testing framework for unit tests
# php74-bcmath-7.4.7 The bcmath shared extension for php
# php74-brotli-0.7.0 Brotli extension for PHP
# php74-bsdconv-11.5.0 PHP wrapper for bsdconv
# php74-bz2-7.4.7 The bz2 shared extension for php
# php74-calendar-7.4.7 The calendar shared extension for php
# php74-composer-1.8.6 Dependency Manager for PHP
# php74-ctype-7.4.7 The ctype shared extension for php
# php74-curl-7.4.7 The curl shared extension for php
# . . .Если после изучения вы решите, что вам нужно установить пакет, вы можете сделать это с помощью команды
pkg install
. Большинству веб-приложений PHP потребуются дополнительные модули, поэтому полезно знать, как их искать.Шаг 4 — Настройка Nginx для использования модуля PHP
Перед использованием PHP необходимо настроить его для работы с Nginx.
Запустите
sudo vim /usr/local/etc/nginx/test.conf
и заполните файл следующим содержимым:server { listen 80; server_name SERVER_IP; # Replace with your IP or hostname root /usr/local/www/nginx-dist; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
Сохраните файл и выйдите из vim.
Теперь нам нужно включить
test.conf
в основной файлnginx.conf
. Основной файл конфигурации для Nginx находится в папке/usr/local/etc/nginx
какnginx.conf
.Запустите
sudo vim /usr/local/etc/nginx/nginx.conf
, чтобы открыть основной файл конфигурации в Vim, и добавьте следующую строку в блокhttp {}
.include test.conf;
Тестовая конфигурация Nginx:
sudo nginx -t
Поскольку вы внесли изменения в конфигурацию Nginx, вам необходимо перезагрузить службу, чтобы применить их. В противном случае Nginx по-прежнему будет работать с более ранней конфигурацией:
sudo service nginx reload
Шаг 5 — Тестирование обработки PHP
Чтобы проверить правильность настройки вашей системы для PHP, вы можете создать очень простой PHP-скрипт. Вы назовете этот скрипт
info.php
. По умолчанию дляroot
установлено значение/usr/local/www/nginx-dist
. Вы можете создать файлinfo.php
в этом месте, набрав:sudo vim /usr/local/www/nginx-dist/info.php
И добавьте этот код в этот файл:
<?php phpinfo(); ?>
Перейдите к
http://your_server_IP/info.php
, и вы увидите следующую страницу:После установки и настройки стека FEMP необходимо удалить файл
info.php
, чтобы не раскрывать информацию о сервере в открытом доступе:sudo rm /usr/local/www/nginx-dist/info.php
Заключение
Поздравляем, вы успешно установили стек FEMP на свой VPS FreeBSD 12.1. Теперь у вас есть несколько вариантов, что делать дальше. Вы установили платформу, которая позволит вам устанавливать поверх нее большинство видов веб-сайтов и веб-приложений.