Назад | Перейти на главную страницу

Правильный способ автоматического монтирования общих ресурсов NFS / Samba перед запуском Apache при загрузке?

Я использую виртуальную машину Ubuntu 12.04 (сервер) в качестве веб-сервера разработки. Я храню обслуживаемые файлы на хосте виртуальной машины, поэтому Apache использует смонтированные каталоги NFS для DocumentRoot Чтобы все было автоматизировано, у меня установлен запуск Apache при загрузке.

Эта проблема: mountall начинается после upstart запускает Apache.

После возни с upstart и initctl Я придумал хитрость, которая работает, но определенно не идеальный - ни портативный.

/etc/fstab

nfs_server:/    /mnt/nfs_server  nfs4   _netdev,noauto  0   0

/etc/init.d/apache2
Следующее было вставлено вверху под НАЧАЛЬНАЯ ИНФОРМАЦИЯ раздел:

if [ ! -s "/var/www/default/index.php" ]; then
    echo -n "  Mounting NFS and Samba shares...."
    mount nfs_server:/
    result=$?
    if [ 0 -ne $result ]; then
        echo "  ERROR. mount returned $result";
    else
        echo "    [ OK ]";
    fi
fi
...

В противном случае это сценарий, который был установлен изначально ( см. файл по умолчанию здесь ).

Ноты

  1. Я пробовал использовать mountall вместо монтирования общего ресурса NFS по имени.
    • Это приводит к появлению других сообщений об ошибках (в частности, swapon не смонтировал мой раздел подкачки)
    • (однако) при окончательном запуске все выглядит нормально.
  2. Эта виртуальная машина будет заархивирована и передана другим разработчикам. Некоторые могут монтироваться с использованием NFS, некоторые могут использовать Samba.

Один из способов решить эту проблему - изменить порядок, в котором эти вещи загружаются, изменив порядок, в котором их вызывает сценарий инициализации. Могут быть другие (более простые) способы сделать это, но самый простой способ:

  1. Найдите уровень запуска, на котором работает сервер, выполнив команду (от имени пользователя root) «runlevel».
  2. Перейдите в /etc/rcX.d, где X - номер уровня выполнения, на котором вы находитесь.
  3. Вы увидите множество символических ссылок в этом каталоге - они обычно будут в форме SxxNAME, где «S» означает начало, xx - порядок - более ранние скрипты запускаются первыми - а name - это имя скрипта, на который эта ссылка указывает в и т.д. / rc.d. Переименуйте сценарий apache, чтобы он имел более высокий номер, чем сценарий nfs.