我使用 Ubuntu 12.04 (服务器) VM 作为开发 Web 服务器。我将服务文件保存在 VM 主机上,因此 Apache 使用 NFS 挂载目录。为了DocumentRoot
保持自动化,我将 Apache 设置为在启动时启动。
- 在启动时自动挂载 NFS 我没有遇到任何问题。
- 我在启动时启动 Apache 没有任何问题。
问题:mountall
开始后新贵启动了 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
...
否则,该脚本就是最初安装的脚本(在此处查看默认文件)。
笔记
- 我尝试过使用
mountall
而不是按名称安装 NFS 共享。- 这会导致其他错误消息(特别是
swapon
没有挂载我的交换分区) - (但是)最终启动时,一切似乎都很好。
- 这会导致其他错误消息(特别是
- 该虚拟机将被压缩并提供给其他开发人员。有些可能使用 NFS 安装,有些可能使用 Samba。
答案1
解决这个问题的一种方法是修改 init 脚本调用它们的顺序,从而改变加载这些内容的顺序。可能还有其他(更简单的)方法可以做到这一点,但最直接的方法是 -
- 通过发出命令(以 root 身份)“runlevel”来查找服务器正在运行的运行级别。
- 转到 /etc/rcX.d,其中 X 是您所在的运行级别号。
- 您将在该目录中看到大量符号链接 - 它们通常采用 SxxNAME 格式,其中“S”表示开始,xx 是顺序 - 较早的脚本首先运行 - 名称是此链接到的脚本的名称,位于 etc/rc.d. 中。将 apache 脚本重命名为比 nfs 脚本更高的数字。