在 Fedora 16 上将 /var/www/ 移动到 /srv/www/

在 Fedora 16 上将 /var/www/ 移动到 /srv/www/

我正在学习如何配置linux、apache、php、mysql。

我遵循了这些脚步、如何设置root:www-dev对/var/www/下的文件和文件夹的权限

现在我想知道如何移动目录 /var/www/ 并且我假设我设置的权限将保留。我很确定我必须编辑一些 apache 配置才能让 apache 知道它的目录已更改位置。

我不确定 mysql 位于哪里,我还假设 php 是 apache 的一个模块,因此它应该位于 /var/www/ 中的某个位置

我只是在尝试总体了解 Linux,以及如何配置一个简单的 Web 服务器。


除了我设置的权限之外,我目前的配置是默认的。

# yum install httpd
# yum install mysql mysql-server
# yum install php php-mysql

答案1

以安全的方式进行!

cp -pr /var/www /srv/www

它将以递归方式(-r 开关)将 /var/www 的内容复制到新文件夹 /srv/www 并保持完整的权限(-p 开关)

你需要改变

DocumentRoot 

您的网站或虚拟主机配置文件中的设置。

您不必担心 php 模块或 mysql 模块适合您的情况。

答案2

如果/var/srv位于同一文件系统上,那么您可以原子地将www目录从一个文件系统移动到另一个文件系统:

mv /var/www /srv/

当您这样做时,任何在其下打开文件的进程www都会保持该文件打开。

如果/var/srv位于不同的文件系统上,则最好www在移动之前停止使用该文件的服务,因为在复制然后删除文件的过程中会有一个过渡期。

在这种情况下,如果您想最大程度地减少停机时间:

  1. 复制文件,尊重权限:

    cp -a /var/www /srv/
    
  2. 编辑配置文件以指向/srv/www而不是/var/www.
  3. 删除下面的文件/var/www

如果先复制然后删除,则会有一个过渡期,在此期间存在文件的两个副本。因此,您必须确保www在过渡期间该目录下没有写入任何内容;否则两个副本将不同步,并且一些数据可能会丢失。

查看需要更改的内容:

  • 搜索 下的文件/etc,或者可能是/var/www其自身下的文件,以查找对 的引用/var/www

    grep -r '/var/www' /etc /var/www
    
  • 查找引用的任何绝对符号链接/var/www

    find /etc /var/www -lname '/var/www*'
    

答案3

您确实需要更改DocumentRoot,但也可以这样做:

ln -si /var/www /srv/www

这将创建从第一个到第二个的符号链接。或者正如 kaji 所说,执行相反的操作,但将 /var/www 符号链接到 /srv/www ——只需交换上述命令中的两个参数即可。

相关内容