Как установить Lighttpd с MySQL и PHP на FreeBSD 11.0

Вступление

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

Предпосылки

Для завершения этого урока вам понадобится:

  • Сервер под управлением FreeBSD 11.0.

  • Учетная запись пользователя, настроенная для запуска команд с помощью + sudo +. Для этого урока подойдет учетная запись * freebsd * по умолчанию, которая поставляется с каплей Digital Ocean FreeBSD. Чтобы узнать больше о настройке FreeBSD, ознакомьтесь с учебным пособием Getting Started with FreeBSD.

Шаг 1 - Установка Lighttpd

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

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

sudo pkg update

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

sudo pkg install lighttpd

Подтвердите установку, набрав + y +. Lighttpd установит.

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

Output(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

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

/usr/local/etc/lighttpd/lighttpd.conf

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

Измените + enable на` + disable`:

/usr/local/etc/lighttpd/lighttpd.conf

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

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

/usr/local/etc/lighttpd/lighttpd.conf

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

Закомментируйте это, поскольку это не нужно, когда мы не используем IPv6:

/usr/local/etc/lighttpd/lighttpd.conf

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

Затем сохраните файл и выйдите из редактора.

Давайте настроим MySQL дальше.

Шаг 2 - Установка и настройка MySQL

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

Вы установите MySQL через его пакет, как вы это сделали для Lighttpd. Затем вы установите пароль для пользователя MySQL * root * и отключите некоторые другие параметры тестирования. Это гарантирует, что у вас будет безопасная настройка MySQL.

Поскольку вы уже обновили информацию о репозитории + pkg + в шаге 1, вы можете быстро загрузить и установить серверный пакет 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

Вы увидите следующее сообщение:

OutputSecuring the MySQL server deployment.

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

Далее вас спросят, хотите ли вы настроить плагин для проверки паролей:

OutputVALIDATE 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?

Ответьте + Y + за да или что-либо еще, чтобы продолжить без включения.

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

OutputThere 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 *:

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

Нажмите + Y +, чтобы изменить этот пароль.

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

OutputNew 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

Когда экземпляр MySQL запущен и работает, мы можем установить и настроить PHP.

Шаг 3 - Установка и настройка PHP

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

Еще раз, используйте систему пакетов для установки PHP вместе с расширением 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-сокета вместо сетевого порта для связи. Это более безопасно для служб, взаимодействующих на одном сервере.

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

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

listen = 127.0.0.1:9000

Измените эту строку, чтобы использовать сокет + php-fpm +:

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

listen =

Теперь установите владельца, группу и разрешения для сокета, который будет создан. Посмотрите на этот раздел файла конфигурации:

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

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

Раскомментируйте следующий раздел, удалив точку с запятой в начале каждой строки, поэтому этот раздел выглядит следующим образом:

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

...
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 is`, место, которое PHP ожидает найти конфигурационный файл:

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

Откройте новый файл + php.ini в вашем текстовом редакторе:

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

Внутри файла конфигурации найдите раздел для поведения + cgi.fix_pathinfo +. Он будет закомментирован и по умолчанию установлен на «+ 1 +»:

/usr/local/etc/php.ini

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

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

/usr/local/etc/php.ini

...
cgi.fix_pathinfo=
...

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

Затем включите службу + php-fpm + для запуска при загрузке:

sudo sysrc php_fpm_enable=yes

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

sudo service php-fpm start

Далее, давайте настроим Lighttpd для обслуживания приложений PHP.

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

На этом шаге вы настроите Lighttpd для использования FastCGI и PHP-FPM. Это включит PHP на Lighttpd и обеспечит быструю и эффективную поддержку PHP.

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

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

Найдите следующий раздел:

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

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

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

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

...
##
## FastCGI (mod_fastcgi)
##

...

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

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

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

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

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

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

Затем включите Lighttpd для запуска при загрузке. Таким образом, Lighttpd будет запускаться автоматически при перезапуске веб-сервера:

sudo sysrc lighttpd_enable=yes

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

sudo service lighttpd start

Теперь, когда PHP готов к работе, давайте убедимся, что все работает.

Шаг 5 - Тестирование установки сервера

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

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

Затем создайте + info.php + в папке + / usr / local / www / data / +. Этот файл проверит работу PHP и позволит вам просмотреть информацию о настройке веб-сервера в веб-браузере:

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

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

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

<?php phpinfo(); ?>

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

Посетите + http: /// info.php + в вашем веб-браузере. Вы увидите страницу, которая выглядит следующим образом:

изображение: https: //assets.digitalocean.com/articles/lighttpd_php_freebsd11/NXq8JIE.png [Страница информации PHP]

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

Если вы не видите эту страницу и вместо этого видите * Ошибка 503 Служба недоступна *, убедитесь, что служба + php-fpm + запущена правильно на предыдущем шаге.

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

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

Веб-сервер полностью настроен и готов к работе. Поместите ваши файлы в + / usr / local / www / data + для их обслуживания.

Заключение

Теперь, когда веб-сервер Lighttpd полностью запущен, вы можете размещать веб-страницы, документы и другие файлы на своем веб-сервере. Чтобы сделать ваш веб-сервер более безопасным, добавив конфигурацию SSL и другие функции безопасности. Для получения дополнительной информации о Lighttpd посетите Lighttpd форумы.

Related