Настройка веб-сервера под FreeBSD. Часть 2.
Снова приветствую вас.
В этой части статьи рассказано про конфигурацию ядра и загрузчика системы (на примере ветки 6.x с архитектурой i386; конфигурация других систем будет аналогичной).
Для конфигурации ядра и загрузчика крайне желательно иметь физический доступ к серверу, т.к. в случае, если что-то пойдёт не так как должно, чтобы была возможность восстановить работоспособность системы. Крайне не советую использовать удалённый (SSH) доступ выполняя описанные в статье действия.
Конфигурация ядра — процесс продолжительный. Время, которое уйдёт на компиляцию, напрямую зависит от частоты процессора. Например, с процессором Pentium III, частотой 733МГц, процесс компицялии занимает примерно от получаса до 40 минут. Интернет при этом не используется, так что сеть можно смело отключить (временно).
Итак, начнём.
Дальнейшее описание предполагает, хотябы, базовые знания систем *NIX.
После установки и базовой настройки системы, приступаем к более глубокой настройке — конфигурации ядра.
Для этого желательно использовать файловый менеджер, например, deco.
Для начала, определимся с названием нашего нового ядра. Для примера я выбрал название WEBSERVER.
Переходим в папку /usr/src/sys/i386 (или amd64, если установлена система с такой архитектурой) и делаем следующее:
cp GENERIC.hints WEBSERVER.hints
cp NOTES WEBSERVER
Файл GENERIC.hints трогать не нужно, а вот с файлом WEBSERVER прийдётся поработать — в него нужно добавить необходимые опции из других файлов с базовой конфигурацией. Комментариев с моей стороны не будет, т.к. там всё уже достаточно прокомментировано. Однако, советую не компилировать в ядро драйверы на все устройства — только самое основное. Остальные драйверы подгружать загрузчиком.
Для себя за несколько лет я вывел такую конфигурацию (FreeBSD 6.x, i386, No PAE):
ident WEBSERVER
machine i386
cpu I686_CPU
maxusers 0
options SCHED_4BSD
options SMP
options ADAPTIVE_GIANT
options PREEMPTION
options COMPAT_43
options COMPAT_FREEBSD4
options COMPAT_FREEBSD5
options SYSVSHM
options SYSVSEM
options SYSVMSG
options INET
device apic
device ether
device loop
device bpf
options IPFIREWALL
options IPFIREWALL_VERBOSE
options DUMMYNET
options ZERO_COPY_SOCKETS
options FFS
options SOFTUPDATES
options UFS_DIRHASH
options QUOTA
device random
device mem
options _KPOSIX_PRIORITY_SCHEDULING
options HZ=2000
options PPS_SYNC
device pty
options LIBICONV
device atkbdc
device atkbd
options ATKBD_DFLT_KEYMAP
makeoptions ATKBD_DFLT_KEYMAP=ru.koi8-r
options KBD_DISABLE_KEYMAP_LOAD
options KBD_INSTALL_CDEV
device vga
device sc
options MAXCONS=8
options SC_DFLT_FONT
makeoptions SC_DFLT_FONT=cp866
options SC_DISABLE_KDBKEY
options SC_DISABLE_REBOOT
options SC_HISTORY_SIZE=100
options SC_MOUSE_CHAR=0x3
options SC_PIXEL_MODE
options SC_NO_CUTPASTE
options SC_NO_SYSMOUSE
device ata
device atadisk
options ATA_STATIC_ID
device sio
options CONSPEED=115200
device miibus
device pci
device crypto
device cryptodev
options INIT_PATH=/sbin/init
options PANIC_REBOOT_WAIT_TIME=10
options DIRECTIO
После создания файла необходимо выполнить такие команды:
config WEBSERVER
cd ../compile/WEBSERVER
make cleandepend
make depend
make
make install
make clean
Затем переходим в каталог /boot/defaults и делаем:
cp loader.conf /boot/loader.conf_
Далее открываем в редакторе файл /boot/loader.conf_
Раскомментируем строку autoboot_delay=«10» и заменяем 10 на 1. Зачем ждать целых 10 секунд при загрузке? Однако, выключать это я крайне не советую, т.к. это, возможно, единственый шанс загрузить старое ядро, если новое не хочет грузиться.
Далее раскомментируем строку beastie_disable=«NO» и пишем YES вместо NO, чтобы убрать при загрузке диалог с вариантами загрузки системы.
Далее находим блок с интерфейсами и разрешаем загружать драйвер только для наших сетевых адапторов, чтобы не грузить ненужные драйверы. Например, так:
if_fxp_load=«YES»
Собственно, всё.
После редактирования файла, выполняем команду:
mv /boot/loader.conf_ /boot/loader.conf
чтобы заменить loader.conf
Перезагружаем сервер.
В принципе, винчестер с настроенной системой можно будет подключить к другой материнской плате и система будет работать. Однако, подключить его необходимо к такому же контроллеру (т.е., например, был Primary Master и должен остаться Primary Master). В противном случае, прийдётся править файл /etc/fstab, указав в нём правильные названия разделов.
В случае возникновения нештатной ситуации, система должна быть загружена в однопользовательском режиме. При этом, корневая файловая система доступна только на чтение. Восстановить права на запись поможет команда:
mount -u -w /
При неудачной загрузке нового ядра, необходимо через меню загрузчика загрузить ядро /boot/kernel.old, удалить папку /boot/kernel и переименовать /boot/kernel.old в /boot/kernel, перезагрузить систему и заново переконфигурировать ядро, внимательно пересмотрев его конфигурационный файл.
Однако, предупрежу, что NTP будет ругаться при перезагрузках, что недоступны IPv6 интерфейсы. К сожалению, это глюк такой. Следует просто игнорировать эти сообщения.
Продолжение с установкой дополнительных сервисов в третей части статьи.
Спасибо за внимание, с вами был Eugen.