В Раздел 3, <<Подсистема rc и файловые системы в режиме только
чтения>> было указано, что файловая система
/var, создаваемая скриптом
/etc/rc.d/var, и наличие корневой файловой
системы, доступной только для чтения, приводят к проблемам при работе
многих распространенных программных пакетов, используемых во FreeBSD.
В этой статье будут даны рекомендации по настройке нормальной работы
cron и syslog, установке портов и веб-сервера Apache.
Во время загрузки содержимое каталог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.
В файле 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/*
Перед тем, как обсудить изменения, которые нужно сделать для
успешного использования дерева портов, необходимо напомнить о том,
что ваши файловые системы на флэш-носителях доступны только для чтения.
Поэтому вам нужно временно монтировать их в режиме чтения и записи,
используя параметры командной строки, как это показано в
Раздел 3, <<Подсистема rc и файловые системы в режиме только
чтения>>. Вы всегда должны перемонтировать эти файловые
системы в режим только для чтения после окончания работ -
излишние записи на флеш носитель могут значительно сократить его
срок эксплуатации.
Чтобы можно было войти в каталог с портами и успешно выполнить
команду 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.
Шаги, описанные в этой части статьи, необходимо выполнить лишь
в том случае, если 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 -rfapache_log_dir#ln -sapache_log_dir
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.