Развертывание сервера

Общая установка и настройка

Установка системы на серверную машину производится любым из доступных способов, например с CD- или DVD-носителя. Опуская специфичные для каждого конкретного класса (и каждого конкретного дистрибутива) подробности этого процесса, обратим внимание на некоторые детали.

Во-первых, при разметке диска рекомендуется учитывать следующие факторы:

Приведем простейшую схему разбиения жесткого диска объемом в 28 гигабайт (примерно 30 миллиардов байт):

 1 GB swap
10 GB /
17 GB /srv (nosuid,nodev)

Во-вторых, при настройке сети рекомендуется привязать имена сетевых интерфейсов в системе к MAC-адресам физических устройств. В дистрибутивах ПСПО это можно осуществить либо выбором соответствующей опции при установке, либо с помощью ручного редактирования конфигурационного файла /etc/iftab (за справкой отошлем к странице руководства iftab(5)). Ручная настройка в простейшем случае может свестись к выполнению следующей команды:

# ip -o link show | sed -nr '/link\/ether/s+^[[:digit:]]*: ([[:alnum:]]*):.*link/ether ([[:alnum:]:]*).*$+\1\tmac \2+p' > /etc/iftab

В большинстве случаев сервер разумно использовать в качестве маршрутизатора, если для его клиентов планируется доступ во внешнюю сеть. Подробнее о настройке маршрутизации ---  Практика использования iptables: продолжение

В простейшем случае достаточно присвоить параметру net.ipv4.ip_forward в файле /etc/net/sysctl.conf значение 1. Тогда при настроенной маршрутизации на сервере подключенные к нему клиенты получат через него доступ во внешнюю сеть. При значении 0 сервер перестаёт работать как маршрутизатор и у клиентов остаётся только локальная сеть.

Установка и конфигурирование сетевых служб

Предварительные действия

Будем теперь считать, что первичная настройка системы, включая конфигурирование сети, выполнена. Подключим необходимые хранилища (рекомендуется использование Sisyphus school branch) и обновим локальные индексы диспетчера пакетов:

# apt-get update

Установим необходимые для функционирования класса сетевые службы:

# apt-get install rsync-server nfs-server dhcp-server tftp-server apt-utils pdnsd rdate

(Заметим, что rdate непосредственно использоваться не будет.)

Займемся теперь конфигурированием этих служб.

Службы, поддерживаемые метадемоном xinetd

Вначале откроем файл /etc/xinetd.conf и закомментируем строку с параметром only_from, поставив в ее начале символ решетки:

        #only_from = 127.0.0.1

Сохраним изменения и отредактируем конфигурационный файл rsync-сервера --- /etc/rsyncd.conf. Впишем в его конец следующие строки:

uid = root
gid = root

[profiles]
        path = /srv/profiles

[update-profiles]
        path = /srv/profiles
        read only = no
        auth users = updater
        list = no
        secrets file = /etc/rsyncd.secrets

Как видим, здесь мы ссылаемся на файл /etc/rsyncd.secrets, который должен содержать базу данных пользователей службы rsync. Создадим этот файл и впишем в него единственную строку:

updater:updpassword

Здесь updater --- имя пользователя, которому будет разрешено обновлять данные профилей в нашем классе. Его можно оставить без изменений, а можно задать и иным (но тогда нужно будет вносить изменения в инициальные настройки synchrone). Что же касается строки updpassword, то она задает пароль для этого пользователя --- этот пароль обязательно следует заменить на другой; лучше --- более сложный. Сохранив файл /etc/rsyncd.secrets, ограничим права доступа к нему:

# chmod 600 /etc/rsyncd.secrets

Теперь правом на чтение и изменение этого файла обладает лишь суперпользователь нашего сервера.

В основном конфигурационном файле службы rsync упоминался также каталог /srv/profiles --- это место, где будут храниться данные профилей. Создадим этот каталог уже сейчас:

# mkdir /srv/profiles

Помимо этих изменений, нам нужно внести изменения в конфигурационный файл метадемона xinetd, отвечающий за обслуживание rsync-сервера. Этот файл называется /etc/xinetd.d/rsync. Откроем его и отредактируем строку с параметром rlimit_as, отвечающую за накладываемые на rsync ограничения по объему адресного пространства. В нашем случае она должна выглядеть так:

        rlimit_as               = UNLIMITED

На этом настройку службы rsync можно считать завершенной. Задействуем ее по умолчанию:

# chkconfig rsync on

Нам также необходимо включить запуск при старте системы двух других служб, поддерживаемых метадемоном xinetd: это tftp и time-tcp.

# chkconfig tftp on
# chkconfig time-tcp on

Чтобы эти службы (и, кроме них, rsync-сервер) запустились прямо сейчас, дадим следующую команду:

# for i in rsync tftp time-tcp; do service $i start; done

На всякий случай дадим команду для включения самого демона xinetd:

# service xinetd start

Служба DHCP

Для функционирования класса нам пригодится служба DHCP. Поскольку пакет dhcp-server был нами установлен, то для настройки осталось создать корректный конфигурационный файл /etc/dhcp/dhcpd.conf. Его содержимое должно выглядеть примерно так:

# See dhcpd.conf(5) for further configuration

ddns-update-style none;

subnet 192.168.201.0 netmask 255.255.255.0 {} 

subnet 10.30.5.0 netmask 255.255.255.0 {
        option routers                  10.30.5.1;
        option subnet-mask              255.255.255.0;

        #option nis-domain              "domain.org";
        option domain-name              "class305.mpgu.edu.ru";
        option domain-name-servers      10.30.5.1;

        range dynamic-bootp 10.30.5.101 10.30.5.199;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "pxelinux.0";
        next-server 10.30.5.1;
}

Обратим внимание на используемые IP-адреса. 10.30.5.1 следует заменить на внутренний IP-адрес нашего сервера (обратим внимание, что он встречается в тексте нашего файла трижды), 10.30.5.101 и 10.30.5.199 --- на границы диапазона выдаваемых клиентским компьютерам адресов. Строку subnet 10.30.5.0 netmask 255.255.255.0 следует привести в соответствие с используемыми в классе сетевыми адресами, а строку subnet 192.168.201.0 netmask 255.255.255.0 {} --- с "внешним" IP-адресом настраиваемого нами сервера (заметим, что для каждой непосредственно доступной нашему серверу сети в dhcpd.conf должна содержаться строка данного вида).

Сохранив конфигурационный файл на диск, включим запуск DHCP-сервера при старте системы:

# chkconfig dhcpd on

Для включения же его прямо сейчас воспользуемся другой командой:

# service dhcpd start

Служба доменных имен

Сконфигурируем установленный нами простейший сервер доменных имен --- pdnsd. Откроем его конфигурационный файл /etc/pdnsd.conf и внесем в него два изменения. Во-первых, закомментируем параметр server_ip в разделе global --- соответствующая строка должна выглядеть примерно так:

#       server_ip="127.0.0.1";

Во-вторых, в первом из разделов server заменим в строке с параметром ip используемый по умолчанию IP-адрес одного из корневых серверов службы DNS на IP-адрес сервера DNS, предоставляемого нашим провайдером. Сохраним внесенные в файл изменения и организуем запуск демона pdnsd при старте системы:

# chkconfig pdnsd on

Перед включением pdnsd полезно сгенерировать разумный файл /etc/hosts. В простейшем случае это достигается двумя командами:

# echo "127.0.0.1 localhost.localdomain localhost" > /etc/hosts
# for i in `seq 254`; do echo "10.30.5.${i}     host${i}.class305.mpgu.edu.ru   host${i}"; done >> /etc/hosts

Строку 10.30.5. следует при этом заменить на используемый в нашем классе адрес сети без последнего байта, а строку class305.mpgu.edu.ru --- на имя внутреннего домена (оно может быть и фиктивным, таким как class15.school123.zhukovsky.moscow-region.ru). После этого можно заменить адрес используемого сервера DNS на 127.0.0.1 в файле /etc/resolv.conf (можно воспользоваться также "Центром управления системой" --- конфигуратором Alterator).

Чтобы запустить pdnsd, дадим следующую команду:

# service pdnsd start

Сетевая файловая система

Организуем теперь на нашем сервере раздачу посредством сетевой файловой системы NFS нужных для функционирования класса каталогов: клиентских /home (он будет соответствовать каталогу /srv/home на сервере) и каталога для сетевой загрузки (его мы поместим в /srv/boot). Вначале создадим их:

# mkdir /srv/home /srv/boot

Теперь составим корректный конфигурационный файл для службы NFS со списком раздаваемых каталогов. Он должен называться /etc/exports и содержать следующие строки (адрес 10.30.5.0/24 следует заменить на используемый в классе адрес сети)::

/srv/boot       *(ro,no_subtree_check,no_root_squash)
/srv/home       10.30.5.0/24(rw,no_subtree_check,no_root_squash)

Сохраним этот файл на диск и организуем службы NFS при старте системы:

# chkconfig nfs on
# chkconfig nfslock on

Непосредственный же запуск NFS отложим до разворачивания всех необходимых нам данных.

Организация сетевой установки: предварительные действия

Осталось организовать сетевую загрузку и установку. Во-первых, нам понадобятся данные с загрузочного диска дистрибутива ПСПО "Легкий Линукс" (возможно, подойдет и какой-либо другой дистрибутив из семейства ALT Linux). Будем считать, что соответствующая файловая система уже примонтирована к каталогу /media/cdrom. Скопируем все содержимое диска в подкаталог каталога /srv/boot:

# cp -a /media/cdrom /srv/boot/lite

Теперь зайдем в системный каталог, который отвечает за этап загрузки, поддерживаемый уже настроенным нами tftp-сервером:

# cd /var/lib/tftpboot

Создадим в нем подкаталог, соответствующий установке по сети:

# mkdir install

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

# cp /srv/boot/lite/syslinux/alt0/* install/
# cp /usr/lib/syslinux/pxelinux.0 .

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

# mkdir pxelinux.cfg

В нем нужно создать файл с именем default (полным путем к нему будет, естественно, /var/lib/tftpboot/pxelinux.cfg/default) со следующим содержимым:

timeout 10
prompt 1
default install

label install
 kernel install/vmlinuz
 append initrd=install/full.cz fastboot automatic=method:nfs,network:dhcp,server:10.30.5.1,directory:/srv/boot/lite ai live stagename=altinst

Осталось внести нужные нам модификации в установщик.

Организация сетевой установки: модификация установщика

Для внесения изменений в установщик нам понадобится архив со всеми необходимыми файлами (прикладывается к инструкции). Будем производить все действия из домашнего каталога суперпользователя /root:

# cd

Пусть имя файла с архивом --- hack-pkg.tgz. Распакуем его:

# tar xvvzf hack-pkg.tgz

Все файлы из архива будут помещены в каталог hack. Перейдем в него:

# cd hack

Вначале следует отредактировать файл options, содержащий общие настройки. В нашем случае он должен выглядеть примерно так:

# NFS server name

SERVER=host1

# NFS home export

NFS_HOME=/srv/home

# server-side directories:

# hack home

HACK_HOME=/root/hack

SOURCE="$HACK_HOME"/src
BIN="$HACK_HOME"/bin

# installer

DEST=/srv/boot/lite

# installer subdirectory names:

REPO=ALTLinux
META=Metadata

# absolute paths:

REPODIR="$DEST/$REPO"
METADIR="$DEST/$META"

Если значения каких-либо переменных не соответствуют действительности, то в options следует внести соответствующие изменения. host1 --- это имя нашего сервера с точки зрения службы NFS, /srv/home --- расположение домашних каталогов пользователей клиентских компьютеров. /root/hack --- наше текущее "местонахождение", /srv/boot/lite --- каталог с содержимым диска выбранного нами дистрибутива ПСПО.

После сохранения изменений нужно модифицировать также файл src/synchrone-src/etc/synchrone/config/global. Этот файл содержит основные настройки утилиты synchrone и будет при установке распространен по всем клиентским компьютерам. Следует привести его содержимое примерно к такому виду:

# Configuration file for synchrone (simply sourced)

# Server-related options

SERVER_ADDRESS=10.30.5.1
SERVER_PORT=873
SERVER_PUB=/profiles
SERVER_UPLOAD=/update-profiles
UPLOAD_USER=updater

# Local destination

TARGET=/

# End of configuration settings

# (you should NOT probably change any line below this
# unless you know exactly what you are doing!)

# Local settings are kept in a seperate file
# so they shall not be syncronized

CONFIG_LOCAL=/etc/synchrone/config/local

if [ -r "$CONFIG_LOCAL" ]; then
        . "$CONFIG_LOCAL"
fi

Здесь нужно вписать IP-адрес нашего сервера вместо 10.30.5.1, а также задать имя пользователя из базы данных rsync (/etc/rsyncd.secrets), который будет отвечать за сохранение профилей клиентских компьютеров на нашем сервере (в нашем случае это updater, что соответствует сделанной нами ранее записи в /etc/rsyncd.secrets).

Сохраним изменения и отредактируем еще один файл --- им будет src/synchrone-src/etc/rc.d/init.d/synchrone. Чтобы обеспечить автоматическую (при загрузке) синхронизацию времени на клиентских компьютерах со временем на нашем сервере, раскомментируем несколько строк в ветке start) в данном сценарии, удалив пять стоящих столбцом символов решетки # (один должен остаться). Содержимое файла должно выглядеть так:

# Init file for synchrone
#
# chkconfig: 2345 12 88
# description: synchrone is a simple wrapper for rsync(1)
#
# config: /etc/synchrone/config/global
# config: /etc/synchrone/config/local
# config: /etc/synchrone/rules/main
# config: /etc/synchrone/rules/local
# config: /etc/synchrone/rules/upgrade

WITHOUT_RC_COMPAT=1

SYNCHRONE=/usr/bin/synchrone

case "$1" in
        start)
                # synchonize time
                if which rdate > /dev/null 2>&1; then
                        rdate -s host1
                        hwclock --systohc
                fi
                "$SYNCHRONE" --upgrade
                "$SYNCHRONE" --get
                ;;
        stop)
                ;;
        restart)
                #"$SYNCHRONE" --get
                ;;
        reload)
                ;;
        status)
                ;;
        *)
                ;;
esac

exit 0

Сохраним изменения и в этом файле. Последнее изменение, которое нам необходимо внести, касается сценария автоматической установки, находящегося в файле src/metadata-mod/autoinstall.scm. В нем следует заменить строку pass1word на пароль суперпользователя клиентских компьютеров (обратим внимание, что данная строка встречается в файле четырежды). Заметим также, что в данном сценарии задаются также регистрационное имя и пароль "резервного" пользователя (гостя): по умолчанию это guest и guest.

После записи сценария автоматической установки на диск запустим собственно модификатор установщика, передав ему в качестве параметра имя файла с основными настройками:

# ./modify-installer.sh options

Когда модификатор завершит свою работу, в нашем классе появится возможность выполнять установку ОС на клиентские компьютеры по сети в автоматическом режиме. Единственное действие (отложенное нами ранее), которое необходимо выполнить для включения данной возможности, --- это включение службы NFS:

# service nfs start
# service nfslock start

После это действия по разворачиванию сервера можно считать оконченными.

DmitryChistikov/ComputerClass/ServerSetup (последним исправлял пользователь lorien 2008-11-03 19:22:25)