我正在学习如何配置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
在移动之前停止使用该文件的服务,因为在复制然后删除文件的过程中会有一个过渡期。
在这种情况下,如果您想最大程度地减少停机时间:
复制文件,尊重权限:
cp -a /var/www /srv/
- 编辑配置文件以指向
/srv/www
而不是/var/www
. - 删除下面的文件
/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 ——只需交换上述命令中的两个参数即可。