Установка Lighttpd, MySQL и PHP в FreeBSD 11.0

Lighttpd – это легкий открытый веб-сервер, оптимизированный для высокоскоростных сред, который при этом имеет низкий уровень использования ресурсов. Это отличная альтернатива широко используемым веб-серверам Nginx и Apache. В этом мануале вы узнаете, как установить и настроить Lighttpd на сервере FreeBSD 11.0, а также установить MySQL и PHP на веб-сервер Lighttpd, чтобы обслуживать веб-приложения и статический контент.

Требования

  • Сервер FreeBSD 11.0.
  • Пользователь с доступом к sudo (дополнительную информацию можно найти в руководстве Начало работы с FreeBSD).

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

Существует несколько методов установки Lighttpd, но в этом мануале веб-сервер будет установлен из пакетов. Установленные таким образом программы легче обновлять. Кроме того, это быстрее, чем компиляция из исходного кода или установка из портов.

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

Чтобы установить пакет Lighttpd, нужно обновить репозиторий системы:

sudo pkg update

Затем нужно загрузить и установить пакет lighttpd:

sudo pkg install lighttpd

Чтобы подтвердить, нажмите y.

Веб-сервер установлен.

При запуске сервера с конфигурацией по умолчанию вы увидите эту ошибку:

(network.c.260) warning: please use server.use-ipv6 only for hostnames, not without server.bind / empty address; your config will break if the kernel default for IPV6_V6ONLY changes

Это связано с тем, что конфигурация Lighttpd по умолчанию не полностью готова к поддержке IPv6. Чтобы избежать дальнейших ошибок, отредактируйте конфигурационный файл Lighttpd и отключите поддержку IPv6, для выполнения этого мануала она не нужна. Вы можете включить ее в будущем.

sudo ee /usr/local/etc/lighttpd/lighttpd.conf

Найдите этот раздел:

...
##
## Use IPv6?
##
server.use-ipv6 = "enable"
...

Замените enable на disable:

...
...
server.use-ipv6 = "disable"
...

Найдите эту строку в конце файла:

...
...
$SERVER["socket"] == "0.0.0.0:80" { }

Закомментируйте ее, она не нужна, если вы не используете IPv6.

...
...
#$SERVER["socket"] == "0.0.0.0:80" { }

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

2: Установка и настройка MySQL

MySQL – это популярная система управления базами данных. Ее можно использовать для управления данными PHP-приложений, которые будет обслуживать веб-сервер Lighttpd.

MySQL, как и Lighttpd, можно установить из пакетов. Затем нужно настроить пароль для root-пользователя MySQL и отключить тестовые опции СУБД.

Поскольку ранее вы уже обновили репозиторий pkg, сейчас этого делать не нужно. Установите пакет MySQL:

sudo pkg install mysql57-server

Чтобы подтвердить установку, нажмите y.

После завершения установки добавьте MySQL в автозагрузку.

sudo sysrc mysql_enable=yes

Запустите сервис mysql-server:

sudo service mysql-server start

После запуска службы защитите установку MySQL с помощью сценария mysql_secure_installation. Он удалит некоторые опасные значения по умолчанию и заблокирует доступ к СУБД. Запустите интерактивный сценарий:

sudo mysql_secure_installation

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

Securing the MySQL server deployment.
Connecting to MySQL server using password in '/root/.mysql_secret'

Сценарий предложит настроить плагин для валидации паролей:

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Важно! Если эта функция включена, пароли, которые не соответствуют указанным критериям, будут отклонены, а MySQL выдаст ошибку. Это вызовет проблемы при использовании слабых паролей и программного обеспечения, которое автоматически настраивает учетные данные пользователя MySQL. Вы можете отключить валидацию паролей, но при этом вы должны использовать сложные уникальные пароли.

Чтобы включить функцию, нажмите Y. Чтобы продолжить, не включая эту функцию, нажмите любую клавишу.

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

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:

Затем сценарий предложит изменить пароль пользователя root:

Change the password for root ? ((Press y|Y for Yes, any other key for No) :

Чтобы изменить его, введите Y.

Если вы включили валидацию пароля, сценарий проверит надежность текущего пароля root и предложит изменить этот пароль.

New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) :

Введите новый пароль и нажмите Y.

Чтобы ответить на остальные вопросы, можно нажать Y и Enter. Это удалит некоторых анонимных пользователей и тестовую базу данных, отключит удаленный root доступ и обновит правила MySQL, чтобы изменения сразу вступили в силу.

На всякий случай можно перезапустить mysql-server:

sudo service mysql-server restart

3: Установка и настройка PHP

PHP будет обрабатывать код и отображать динамический контент. PHP может запускать сценарии, подключаться к MySQL, извлекать данные из БД и передавать обработанный контент веб-серверу для отображения.

PHP также можно установить из пакетов. Также вам понадобится пакет mysqli, который включает поддержку MySQL.

sudo pkg install php71 php71-mysqli

Lighttpd не предоставляет встроенную PHP-обработку, как некоторые другие веб-серверы, поэтому нужно использовать PHP-FPM (FastCGI Process Manager). Настройте Lighttpd для обработки запросов PHP с помощью этого модуля. Но прежде нужно настроить PHP-FPM. Откройте конфигурационный файл PHP-FPM:

sudo ee /usr/local/etc/php-fpm.d/www.conf

Настройте PHP-FPM для использования сокета Unix вместо сетевого порта. Это более безопасный вариант для сервисов, обменивающихся данными на одном сервере.

Найдите эту строку в файле:

listen = 127.0.0.1:9000

Отредактируйте ее так:

listen = /var/run/php-fpm.sock

Теперь нужно установить права собственности и доступа на сокет. Найдите такие строки:

...
;listen.owner = www
;listen.group = www
;listen.mode = 0660
...

Раскомментируйте раздел, удалив точки с запятой в начале каждой строки:

...
listen.owner = www
listen.group = www
listen.mode = 0660
...

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

Затем создайте файл php.ini, который будет отвечать за общее поведение PHP. Есть два образца конфигурационного файла: php.ini-production и php.ini-development. В данной ситуации больше подходит php.ini-production, поэтому скопируйте его в /usr/local/etc/php.ini, где PHP будет искать свои настройки:

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

Откройте php.ini в текстовом редакторе:

sudo ee /usr/local/etc/php.ini

В файле найдите раздел для cgi.fix_pathinfo. Он будет закомментирован; значение по умолчанию – 1:

...
;cgi.fix_pathinfo=1
...

Раскомментируйте эту строку и установите значение 0. Теперь PHP не будет пытаться выполнить части пути, если заданный файл не найден. Злоумышленники могут использовать эту функцию для выполнения вредоносного кода.

...
cgi.fix_pathinfo=0
...

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

Добавьте сервис php-fpm в автозагрузку:

sudo sysrc php_fpm_enable=yes

Запустите сервис:

sudo service php-fpm start

4: Настройка Lighttpd для обслуживания приложений PHP

На этом этапе нужно настроить Lighttpd для поддержки FastCGI и PHP-FPM.

Сначала включите модуль FastCGI. Откройте конфигурационный файл Lighttpd:

sudo ee /usr/local/etc/lighttpd/modules.conf

Найдите такой раздел:

...
##
## FastCGI (mod_fastcgi)
##
#include "conf.d/fastcgi.conf"
...

Раскомментируйте строку include, удалив символ #. Если этой строки нет в файле, добавьте ее в конец файла:

...
##
## FastCGI (mod_fastcgi)
##
include "conf.d/fastcgi.conf"
...

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

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

sudo ee /usr/local/etc/lighttpd/conf.d/fastcgi.conf

Этот файл содержит несколько закомментированных примеров. Добавьте следующие конфигурации в конец файла, чтобы настроить Lighttpd для обработки файлов PHP с помощью FastCGI и PHP-FPM:

...
fastcgi.server += ( ".php" =>
((
"socket" => "/var/run/php-fpm.sock",
"broken-scriptfilename" => "enable"
))
)
...

Добавьте Lighttpd в автозагрузку.

sudo sysrc lighttpd_enable=yes

Запустите сервис lighttpd.

sudo service lighttpd start

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

Чтобы убедиться, что Lighttpd может обслуживать страницы, создайте каталог /usr/local/www/data, в котором Lighttpd ищет данные, которые нужно обслужить.

sudo mkdir -p /usr/local/www/data

В этом каталоге создайте файл info.php. Этот файл поможет проверить, работает ли PHP, и позволит вам просматривать информацию о настройке веб-сервера в браузере:

sudo ee /usr/local/www/data/info.php

Добавьте в файл:

<?php phpinfo(); ?>

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

Откройте в браузере ссылку:

http://your_server_ip/info.php

На экране появится информация о настройке веб-сервера.

На этой странице отображается информация о текущей операционной системе, веб-сервере и том, как он обрабатывает файлы PHP. Если страница открылась, значит, веб-сервер может корректно обслуживать файлы PHP.

Если вместо страницы на экране появилось сообщение об ошибке 503 Service Not Available, убедитесь, что сервис php-fpm запущен правильно.

После проверки важно сразу же удалить файл info.php, поскольку он предоставляет конфиденциальную информацию о сервере любому пользователю, который ее запрашивает.

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

Веб-сервер полностью готов к работе. Теперь вы можете размещать на нем веб-страницы, документы и другие файлы.

Tags: , , ,