Установка mysql 8 freebsd 11. Установка Lighttpd. Устанавливаем ftp сервер vsftpd

Мы по шагам прошли весь процесс установки FreeBSD . Настало время добавить ей функциональность и сегодня мы займемся установкой и настройкой FAMP стека (F reeBSD, A pache, M ySQL, P HP).

Начиная с FreeBSD 9 в системе появился удобный инструмент управления пакетами. Как APT в Debian или DNF в Fedora. Во FreeBSD он называется скромно — pkg. Если раньше устанавливать программы необходимо было через компилирование исходных кодов, то теперь пакеты устанавливаются в бинарном виде, что сильно экономит время.

Для начала обновим дерево пакетов:

Установка Apache

Перейдем к непосредственно установке веб-сервера Apache последней версии 2.4:

Второй прописать все в одной команде с помощью echo:

Для управления веб-сервером используем команды start, stop, restart и прочие (остальные можно посмотреть в мануале). Включим:

Должны увидеть заветную фразу It works! Это значит что веб-сервер успешно запустился и работает. Разумеется можно посмотреть и через обычный браузер набрав в нем адрес вашего сервера.

Установка MySQL

Для баз данных наших сайтов будем использовать MySQL. Установка:

И запускаем демон:

Скрипт запросит ваш текущий пароль от рута mysql (не системы!). Мы его не задавали поэтому нажимаем Enter и устанавливаем новый. Далее можно на все вопросы отвечать утвердительно. Скрипт поинтересуется, хотим ли мы удалить анонимных пользователей, запретить удаленный доступ для рутовой учетки (хотя с недавнего времени порты MySQL наружу и так не светятся), а так же удалить тестовую базу и прочие вещи.

После этого мы можем заходить в MySQL и работать с нашими базами:

Функции mysql_* в PHP 7.0 имеют статус depricated, поэтому ставить пакет php70-mysql смысла нет.

После этого внесем изменения в конфиг Apache. У меня он по пути /usr/local/etc/apache24/httpd.conf Откройте его любым текстовым редактором и найдите строку начинающуюся с (Ctrl+W в nano, / в vi). Внесите в блок этого модуля следующие изменения:

< IfModule dir_module >

< FilesMatch "\.php$" >

SetHandler application / x - httpd - php

< / FilesMatch >

< FilesMatch "\.phps$" >

SetHandler application / x - httpd - php - source

< / FilesMatch >

Руководство по установке стека FAMP на виртуальные сервера с FreeBSD 11.

Что это такое?

FAMP Stack — это набор открытого программного обеспечения, который используется для создания веб-серверов. Аббревиатура является набором первых букв в названии технологий FreeBSD, Apache, MySQL и PHP. Поскольку на виртуальном сервере уже запущена нужная операционная система FreeBSD, мы рассмотрим установку всех остальных компонентов.

Причина, по которой ПО называют стеком, заключается в том, что каждый уровень зависит от его базового (нижнего) уровня. Ваша операционная система FreeBSD - это базовый уровень. Затем Apache, ваш веб-демон находится поверх вашей ОС. Затем база данных хранит всю информацию, обслуживаемую вашим веб-демоном, а PHP (или любой язык сценариев P*) используется для управления и отображения всех данных, а также для взаимодействия с пользователем.

Перед настройкой FAMP Stack

Установка нужного программного обеспечения происходит в привилегированном режиме, для этого необходимо авторизоваться на VPS под логином администратора. Логин и пароль администратора можно узнать в панели управления: “Сервер ”->”Состояние ”.

Установка Apache на FreeBSD

На текущий момент веб-сервер Apache является наиболее распространенным web-сервером в мире. Это отличный выбор для размещения вашего веб-сайта.

Чтобы установить Apache вам необходимо подключиться к своему серверу через программу Putty на Windows или с помощью терминала на Mac OS, Linux и FreeBSD и ввести следующие команды:

Pkg install apache24

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

Sysrc apache24_enable=yes

Стартуем с помощью команды:

Service apache24 start

Чтобы проверить установку Apache, можно открыть браузер на компьютере и набрать в адресную строку IP-адрес VPS FreeBSD. На заpгрузившейся странице должна появиться надпись:

Примечание: на официальном сайте можно ознакомиться с более подробной информацией по корректной настройке серверов для хостинга сайтов.

Установка MySQL на FreeBSD

В терминале исполните следующую команду: pkg install mysql56-server

Для добавления в автозагрузку FreeBSD выполните следующее действие:

Sysrc mysql_enable=yes

Стартуем сервер MySQL:

Service mysql-server start

Все устанавливаемые приложения набора Famp Stack как правило имеют набор стандартных настроек, которые являются небезопасными и ненадежными. С целью увеличения уровня безопасности использования ПО рекомендуется вносить изменения. Запустите скрипт безопасности, изменяющий типовые параметры:

Mysql_secure_installation

Вы можете подключиться с помощью специальной утилиты, которая позволяет работать с СУБД, указав имя пользователя:

Mysql -u <имя_пользователя> -p

Установка PHP на FreeBSD

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

Pkg install mod_php56 php56-mysql php56-mysqli

Скопируйте образец файла конфигурации PHP с помощью этой команды:

Cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

Теперь восстановим кэшированную информацию об установленных исполняемых файлах системы:

Примечание: для повышения функциональности PHP вы можете дополнительно установить некоторые модули.

Конфигурация Apache для использования модулей PHP

С помощью любого удобного для вас редактора текста откройте файл конфигурации Apache, например с помощью nano:

Nano /usr/local/etc/apache24/Includes/php.conf

Файл будет пустой. Внесите следующее содержимое:


DirectoryIndex index.php index.html

SetHandler application/x-httpd-php


SetHandler application/x-httpd-php-source

Для применения изменений перезапустите Apache:

Service apache24 restart

Проверка

Чтобы удостовериться в том, что PHP поставлен без ошибок, можно создать test-page на сервере.

Для этого нужно создать новый скриптовый файл:

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

И дописать в него следующие строки:

phpinfo();
?>

Http:///info.php

Например:

Http://5.101.77.24/info.php

Ожидаемый результат:

На этом установка всех компонентов FAMP Stack на FreeBSD завершена и вы можете использовать веб-сервер для развертывания вашего первого сайта.

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

Требования

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

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

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

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

Затем нужно загрузить и установить пакет 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

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

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

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: ,

Частях мы рассмотрели установку и настройку операционной системы Freebsd 10.1 для разворачивания на ней блога wordpress. Теперь предстоит установить и настроить программное обеспечение, необходимое для нашего web сервера.

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

Устанавливаем ftp сервер vsftpd

Начнем нашу настройку с установки ftp сервера vsftpd. Для авторизации мы будем использовать системные учетные записи, анонимный доступ отключим.

Первым делом обновим порты:

# portsnap fetch update

После обновления, ставим сервер:

# cd /usr/ports/ftp/vsftpd # make install clean

Компоненты оставляем по-умолчанию. Добавляем загрузку vsftpd в /etc/rc.conf :

# echo "vsftpd_enable="YES"" >> /etc/rc.conf

Редактируем конфиг /usr/local/etc/vsftpd.conf

Anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_file=/var/log/vsftpd.log listen=YES background=YES secure_chroot_dir=/usr/local/share/vsftpd/empty

Запускаем сервер:

# /usr/local/etc/rc.d/vsftpd start

Проверяем, запустился ли демон:

# sockstat | grep 21

В ответ должны увидеть что-то похожее:

Root vsftpd 4793 3 tcp4 *:21 *:*

Это означает, что сервер запустился и слушает входящие соединения на 21 порт. С текущими настройками можно залогиниться учетной записью root и перемещаться по всему серверу. Это очень небезопасно, призываю внимательно относиться к этим возможностям. Рекомендую подробнее ознакомиться с настройками сервера, обратить внимание на директивы userlist_enable, userlist_file, chroot_local_uses, chroot_list_enable, chroot_list_file. С помощью них можно ограничивать доступ к серверу и перемещение пользователей по папкам. Вообще, у vsftpd много настроек и возможностей, в интернете достаточно статей на подобную тему. Можно без проблем хранить базу пользователей сервера в mysql. В завершение порекомендую ограничить доступ к ftp через firewall.

Установка и настройка Mysql

# cd /usr/ports/databases/mysql55-server # make install clean

Настройки оставляем дефолтные.

Сервер тянет за собой достаточно большое количество зависимостей. Установка постоянно тормозится и выскакивает окно с настройками очередной зависимости. Чтобы не отвлекаться на это и не тормозить процесс, я рекомендую перед командой make install clean ввести команду:

# make config-recursive

Она проверит все зависимости и выведет сразу настройки этих зависимостей. Потом в процессе сборки пакета уже не будет прерываний.

После завершения установки добавляем запуск сервера в rc.conf:

# echo "mysql_enable="YES"" >> /etc/rc.conf # echo "mysql_dbdir="/web/mysql"" >> /etc/rc.conf

Создаем необходимые папки и выставляем права:

# mkdir /web && cd /web && mkdir mysql && chown mysql:mysql mysql/

Создаем файл конфигурации:

# touch /web/mysql/my.cnf # chown mysql:mysql /web/mysql/my.cnf

Записываем следующее содержание в файл настроек:

Port = 3306 socket = /tmp/mysql.sock port = 3306 bind-address =127.0.0.1 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M thread_concurrency = 8 #log=/var/log/mysql.log # Лог всех SQL-запросов #log-bin=/var/log/mysql-bin.log # Бинарный лог всех SQL-запросов log-error=/var/log/mysql-err.log # Лог ошибок в работе демона СУБД MySQL #log-slow-queries=/var/log/mysql.slow # Лог всех медленных SQL-запросов #log-bin=mysql-bin #log=/var/log/mysql.log #binlog_format=mixed server-id = 1 quick max_allowed_packet = 16M no-auto-rehash key_buffer_size = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M interactive-timeout

Закомментированные строки включаем на свое усмотрение в процессе отладки. Если будет включен лог всех SQL запросов, то нужно не забыть настроить ротацию логов, файл будет расти очень быстро, можно забыть и пропустить момент, когда файл займет все свободное место.

Лог файлы нужно обязательно создать самим и выставить на них права пользователя mysql. Если этого не сделать, то сервер не будет стартовать, и что самое неприятное, не будет никаких сообщений в лог файлах. Они будут созданы с правами root:wheel и сервер ничего туда не сможет записать. Так что создаем файлы сами:

# touch /var/log/mysql-err.log # chown mysql:mysql /var/log/mysql-err.log

И стартуем сервер:

# /usr/local/etc/rc.d/mysql-server start

Проверяем, все ли запустилось как следует:

# ps axw | grep mysql

Если все в порядке, то вы увидите что-то похожее на это:

52490 - Is 0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/web/mysql/my.cnf --user=mysql --datadir=/web/mysql --pid-file=/web/mysql/websrv.local.pid 52784 - I 0:00.17 /usr/local/libexec/mysqld --defaults-extra-file=/web/mysql/my.cnf --basedir=/usr/local --datadir=/web/mysql --plugin-dir=/usr/local/lib/mysql/plugin --user=mysql --log-err 52802 1 S+ 0:00.00 grep mysql

# /usr/local/bin/mysql_secure_installation

Задаем пароль root пользователя mysql. Обращаю внимание, что это не системный root. В mysql свои пользователи. На остальные вопросы отвечаем положительно, в принципе, там все понятно описано, ничего сложного нет. Удаляется тестовая база, тестовый пользователь, запрещается удаленный доступ к серверу.

Устанавливаем и настраиваем apache24

Устанавливаем непосредственно web сервер apache:

# cd /usr/ports/www/apache24 # make config-recursive

Оставляем все настройки по-умолчанию. Запускаем установку:

# make install clean

Добавляем apache в атозагрузку:

# echo "apache24_enable="YES"" >> /etc/rc.conf

Теперь создадим 2 виртуальных хоста. На первом будет располагаться phpmyadmin, на втором наш сайт, в данном случае wordpress. Не забываем настроить в DNS эти хосты. Раскомментируем строчку в конфиге /usr/local/etc/apache24/httpd.conf

Include etc/apache24/extra/httpd-vhosts.conf

ServerAdmin [email protected] DocumentRoot "/web/sites/websrv.local/www" ServerName websrv.local ServerAlias www.websrv.local ErrorLog "/web/sites/websrv.local/log/error.log" CustomLog "/web/sites/websrv.local/log/access.log" common php_admin_value open_basedir "/web/sites/websrv.local:." php_admin_value upload_tmp_dir "/web/sites/websrv.local/tmp" php_admin_value session.save_path "/web/sites/websrv.local/tmp" AllowOverride All RewriteEngine On Require all granted DirectoryIndex index.php index.html index.htm Order allow,deny Allow from All ServerAdmin [email protected] DocumentRoot "/web/sites/pma53.websrv.local/www" ServerName pma53.websrv.local ServerAlias www.pma53.websrv.local ErrorLog "/web/sites/pma53.websrv.local/log/error.log" CustomLog "/web/sites/pma53.websrv.local/log/access.log" common php_admin_value open_basedir "/web/sites/pma53.websrv.local:." php_admin_value upload_tmp_dir "/web/sites/pma53.websrv.local/tmp" php_admin_value session.save_path "/web/sites/pma53.websrv.local/tmp" AllowOverride All Require all granted DirectoryIndex index.php index.html index.htm Order allow,deny Allow from All

Я использую тестовый домен websrv.local В общем случае тут должен быть непосредственно домен вашего сайта, что-то вроде myblog.ru. Для phpmyadmin я использую поддомен с произвольным непопулярным именем, чтобы туда не заходил тот, кому не следует.

Обращаю внимание на параметр Require all granted . На предыдущих серверах я его не указывал. В этот же раз при обращении к виртуальному домену в логах получал ошибку:

AH01630: client denied by server configuration

Скорее всего это особенность apache24, до этого я пользовался более ранними версиями.

Сайты я размещаю в каталоге /web/sites. Для каждого домена отдельная папка. Для улучшения безопасности можно настроить отдельных пользователей для каждого поддомена, сделать пользователя ftp, доступ к логам и так далее. В этой статье я не буду касаться этого вопроса. У нас будет один сайт и один пользователь. Создаем необходимые папки:

# mkdir /web/sites # mkdir /web/sites/websrv.local && mkdir /web/sites/pma53.websrv.local # cd /web/sites/websrv.local && mkdir log tmp www # cd /web/sites/pma53.websrv.local && mkdir log tmp www # chown -R www:www /web/sites

На этом пока настройку apache закончим, мы к ней вернемся позже, когда установим остальные компоненты. Запускать его не будем, он все равно не запустится, выдаст ошибку.

Устанавливаем php и phpextensions

# cd /usr/ports/lang/php5 # make config-recursive # make install clean

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

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

Устанавливаем расширения:

# cd /usr/ports/lang/php5-extensions # make config-recursive

Помимо настроек по-умолчанию, обязательно добавляем CURL, DOM, POSIX, FTP, GD, HASH, ICONV, XML, JSON, MBSTRING, MYSQL, MYSQLI, OPENSSL, SOCKETS, TOKENIZER, XMLREADER, ZLIB, EXIF, GETTEXT,

# make install clean

Теперь поставим модуль php для apache. Он теперь стал почему-то отдельным портом. Я не сразу первый раз сообразил, куда делся модуль, который всегда ставился вместе с портом php. В общем, ставим отдельно:

# cd /usr/ports/www/mod_php5 # make install clean

Для того, чтобы apache правильно обрабатывал php файлы, необходимо в конфиг httpd.conf добавить следующие строки:

AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.php index.html

Теперь можно запустить apache и проверить, все ли у нас в порядке. Сначала проверим, нет ли у нас ошибок в конфигурации:

# apachectl -t AH00526: Syntax error on line 15 of /usr/local/etc/apache24/extra/httpd-vhosts.conf: Invalid command "RewriteEngine", perhaps misspelled or defined by a module not included in the server configuration

У нас ошибка, модуль mod_rewrite не подключен. Чтобы это исправить, раскомментируем в конфиге апача строку

LoadModule rewrite_module libexec/apache24/mod_rewrite.so

Проверяем снова:

# apachectl -t AH00557: httpd: apr_sockaddr_info_get() failed for websrv.local AH00558: httpd: Could not reliably determine the server"s fully qualified domain name, using 127.0.0.1. Set the "ServerName" directive globally to suppress this message Syntax OK

Снова ошибка, но не критичная, можно работать и с ней, но мы все равно ее исправим. В фале httpd.conf находим строку со значением ServerName и приводим ее к виду:

ServerName websrv.local:80

Сохраняем файл, проверяем конфигурацию:

# apachectl -t Syntax OK

Все в порядке, можно стартовать apache:

# /usr/local/etc/rc.d/apache24 start

Проверяем, все ли запустилось:

# ps ax | grep httpd 60555 - Ss 0:00.06 /usr/local/sbin/httpd -DNOHTTPACCEPT 60556 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60557 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60558 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60559 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT 60560 - I 0:00.00 /usr/local/sbin/httpd -DNOHTTPACCEPT

Если получаете что-то подобное, значит все в порядке. Сейчас можно в браузере набрать http://ip-сервера/ и увидеть страничку с одной единственной надписью:

It works!

Это означает, что веб сервер apache работает, все в порядке.

Настройка frontend сервера nginx

Теперь будем настраивать наш frontend — nginx. Он будет смотреть в интернет и принимать запросы от пользователей, чтобы потом их перенаправлять на apache. Идем в порты и устанавливаем nginx:

# cd /usr/ports/www/nginx-devel # make install clean

Выбираем опции:

[X] HTTP_MODULE Enable HTTP module [X] HTTP_ADDITION_MODULE Enable http_addition module [X] HTTP_DAV_MODULE Enable http_webdav module [X] HTTP_FLV_MODULE Enable http_flv module [X] HTTP_PERL_MODULE Enable http_perl module [X] HTTP_REALIP_MODULE Enable http_realip module [X] HTTP_REWRITE_MODULE Enable http_rewrite module [X] HTTP_SSL_MODULE Enable http_ssl module [X] HTTP_STATUS_MODULE Enable http_stub_status module [X] HTTP_SUB_MODULE Enable http_sub module [X] WWW Enable html sample files

Добавим nginx в автозагрузку:

# echo "nginx_enable="YES"" >> /etc/rc.conf

Редактируем конфиг nginx /usr/local/etc/nginx/nginx.conf , приводим его к следующему виду:

Worker_processes 1; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; sendfile on; keepalive_timeout 65; gzip on; server { listen 145.152.71.220:80; server_name localhost; location / { proxy_pass http://127.0.0.1; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_send_lowat 12000; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path /var/tmp/nginx; } } }

Listen 145.152.71.220:80;

Указываем свой внешний ip адрес. Проверяем настройки nginx:

# nginx -t

Если видите:

Nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

значит все в порядке.

Теперь необходимо изменить конфигурацию apache, чтобы он слушал только локальный интерфейс 127.0.0.1, а все внешние запросы принимал nginx и перенаправлял к apache. Меняем в /usr/local/etc/apache24/httpd.conf строку с параметром Listen, приводим к виду:

Listen 127.0.0.1:80

Перезапускаем apache:

# /usr/local/etc/rc.d/apache24 restart

Запускаем nginx:

# /usr/local/etc/rc.d/nginx start

Наш веб сервер готов. Теперь проверим его работу. Создадим в папке /web/sites/websrv.local/www файл index.php с содержимым

Заходим в браузере по адресу http://websrb.local

Если вы видите информацию о версии php и его модулях, значит все настроено и работает.

Установка phpmyadmin на виртуальный хост

Остался последний шаг в нашем деле — установка phpmyadmin. В принципе, wordpress можно установить уже сейчас, но без удобного средства работы с mysql как-то неловко. В будущем оно все равно пригодится. Так что ставим из портов:

# cd /usr/ports/databases/phpmyadmin # make install clean

По-умолчанию, phpmyadmin устанавливается в папку /usr/local/www/phpMyAdmin, но так как мы для него создали отдельный виртуальный хост, то переносим все содержимое папки туда:

# mv /usr/local/www/phpMyAdmin/* /web/sites/pma53.websrv.local/www/ # chown -R www:www /web/sites/pma53.websrv.local/www/

Создаем папку для конфига:

# mkdir /web/sites/pma53.websrv.local/www/config # chmod 0750 /web/sites/pma53.websrv.local/www/config && chown www:www /web/sites/pma53.websrv.local/www/config

Дальше идем по адресу http://pma53.websrv.local/setup/ нажимаем «новый сервер» и настраиваем. Не буду подробно на этом останавливаться, там все просто и многократно описано в интернете. Выбираем все значения инсталлятора по умолчанию.

На этом все. Наш web сервер готов. Загружаем скрипты сайта в /web/sites/websrv.local/www и пользуемся.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: