В Раздел 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 -rf
apache_log_dir
#
ln -s
apache_log_dir
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.