5. Стратегии работы с системой для случаев небольших и доступных только для чтения файловых систем

В Разд. 3 было указано, что файловая система /var, создаваемая скриптом /etc/rc.d/var, и наличие корневой файловой системы, доступной только для чтения, приводят к проблемам при работе многих распространенных программных пакетов, используемых во FreeBSD. В этой статье будут даны рекомендации по настройке нормальной работы cron и syslog, установке портов и веб-сервера Apache.

5.1. cron

Во время загрузки содержимое каталогa /var формируется скриптом /etc/rc.d/var используя данные из /etc/mtree/BSD.var.dist, поэтому в нем создается несколько стандартных каталогов, в числе которых -- cron, cron/tabs, at.

Однако это не решает проблему с сохранением cron-таблиц между перезагрузками. Когда система перезагружается, то файловая система /var, которая располагается в памяти, будет уничтожена, вместе со всеми cron-таблицами, которые вы могли там иметь. Поэтому одним из решений может стать создание cron-таблиц для пользователей, которым они нужны, монтирование вашей файловой системы / в режиме чтения и записи, и копирование этих cron-таблиц в безопасное место, например, в /etc/tabs, и последующее добавление строки в конец скрипта /etc/rc.initdiskless для копирования этих cron-таблиц в каталог /var/cron/tabs после его создания во время инициализации системы. Вам может также потребоваться добавить строку, которая изменяет режимы доступа и права на каталоги, которые вы создали, и на файлы, которые вы скопировали в скрипте /etc/rc.initdiskless.

5.2. syslog

В файле syslog.conf задано местоположение некоторых файлов протоколов, которые имеются в каталоге /var/log. Эти файлы не создаются скриптом /etc/rc.d/var во время инициализации системы. Поэтому где-нибудь в скрипте /etc/rc.d/var, после секции, создающей каталоги в /var, вам нужно добавить нечто вроде следующего:

# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages
# chmod 0644 /var/log/*

5.3. Установка портов

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

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

Прежде всего создайте каталог с базой данных о пакаджах. Обычно это каталог /var/db/pkg, но мы не можем разместить базу именно здесь, так как она исчезнет после перезагрузки системы.

# mkdir /etc/pkg

Теперь в скрипт /etc/rc.d/var добавьте строку, которая связывает каталог /etc/pkg с /var/db/pkg. Например:

# ln -s /etc/pkg /var/db/pkg

Теперь каждый раз при монтировании ваших файловых систем для чтения и записи и установки пакаджа, команда make install будет работать, а информация о пакадже будет успешно записана в каталог /etc/pkg (так как файловая система будет в это время смонтирована для чтения и записи), который всегда будет доступным операционной системе как /var/db/pkg.

5.4. Веб-сервер Apache

Замечание: Шаги, описанные в этой части статьи, необходимо выполнить лишь в том случае, если Apache настроен сохранять свой pid или лог файл вне каталога /var. С настройками по умолчанию Apache формирует свой pid файл в /var/run/httpd.pid, а лог файлы -- в /var/log.

Далее в статье подразумевается, что Apache сохраняет свои лог файлы в каталог apache_log_dir вне каталога /var. Когда этот каталог расположен на файловой системе, смонтированной в режиме только для чтения, Apache не сможет сохранять лог файлы, что в свою очередь может вызывать проблемы в работе веб-сервера. В таком случае необходимо добавить новый каталог к списку каталогов из /etc/rc.d/var для их создания в каталоге /var и связать apache_log_dir с /var/log/apache. Нужно также задать права доступа и владельца нового каталога.

Сначала добавьте каталог log/apache к списку каталогов, создаваемых скриптом /etc/rc.d/var.

Затем добавьте в скрипт /etc/rc.d/var после секции создания каталогов такие команды:

# chmod 0774 /var/log/apache
# chown nobody:nobody /var/log/apache

И наконец, удалите существующий каталог apache_install/logs и замените его ссылкой:

# rm -rf apache_log_dir
# ln -s apache_log_dir

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.