- 核心概念:网站文件存放在哪里?
- Apache 服务器的默认目录
- Nginx 服务器的默认目录
- 如何修改默认网站目录
- 网站目录的最佳实践(权限管理)
核心概念
在 Linux 系统中,网站文件(HTML、CSS、JavaScript、PHP、图片等)都存放在文件系统的特定目录下,这个目录被称为 Web 根目录 或 网站根目录。

当用户在浏览器中输入您的域名(如 www.example.com)时,Web 服务器(Apache 或 Nginx)会去这个 Web 根目录下寻找对应的文件,并将其内容返回给用户的浏览器。
Apache 服务器的默认目录
Ubuntu 系统上,Apache2 的默认网站目录是:
/var/www/html/
详细说明:
/var/:这是一个标准的 Linux 目录,通常用于存放经常变化的文件,如日志文件、缓存、邮件等。www/:是 "World Wide Web" 的缩写,专门用来存放网站相关文件。html/:明确指出这个目录主要存放 HTML 文件。
如何验证:

-
查看 Apache 默认配置文件: Apache 的主配置文件是
/etc/apache2/apache2.conf,你可以打开它,会找到这样一行:DocumentRoot /var/www/html
DocumentRoot指令就定义了网站的根目录。 -
查看站点配置文件: 在 Ubuntu 中,每个虚拟主机(或站点)通常有自己的配置文件,位于
/etc/apache2/sites-available/目录下,默认的站点配置文件叫做000-default.conf,打开它,你也会看到:<VirtualHost *:80> # ... 其他配置 ... DocumentRoot /var/www/html # ... 其他配置 ... </VirtualHost>
默认情况下,/var/www/html/ 目录里会有一个 index.html 文件,这就是当你访问你的服务器 IP 地址时看到的 "Apache2 Ubuntu Default Page"。

Nginx 服务器的默认目录
Ubuntu 系统上,Nginx 的默认网站目录是:
/var/www/html/
注意:有趣的是,Nginx 在 Ubuntu 上的默认目录和 Apache 是一样的!但它们的配置方式完全不同。
详细说明:
- 同样,Nginx 也使用
/var/www/html/作为存放网站文件的默认位置。
如何验证:
Nginx 的配置结构稍有不同,默认的站点配置文件是 /etc/nginx/sites-available/default,打开它,你会找到:
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
# ...
root /var/www/html; # <-- 这就是定义网站根目录的指令
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# ... 其他配置 ...
}
这里的 root 指令就相当于 Apache 的 DocumentRoot。
如何修改默认网站目录
假设你想把你的网站文件放在 /home/myuser/my-site 目录下,你需要修改服务器的配置。
对于 Apache:
-
创建新的网站目录:
sudo mkdir -p /home/myuser/my-site
-
修改站点配置文件: 打开默认站点配置文件:
sudo nano /etc/apache2/sites-available/000-default.conf
找到
DocumentRoot /var/www/html这一行,将其修改为你的新目录:DocumentRoot /home/myuser/my-site
-
(可选)创建新的虚拟主机配置文件: 更好的做法是为你的新站点创建一个独立的配置文件(
my-site.conf),并禁用默认站点。 -
设置正确的权限: 这是非常重要的一步,否则你的网站可能无法写入文件(上传图片)。
# 将目录的所有者改为你的用户 sudo chown -R myuser:myuser /home/myuser/my-site # 给予所有者读写权限,给其他用户读和进入目录的权限 sudo chmod -R 755 /home/myuser/my-site
-
重启 Apache 服务使配置生效:
sudo systemctl restart apache2
对于 Nginx:
-
创建新的网站目录:
sudo mkdir -p /home/myuser/my-site
-
修改站点配置文件: 打开默认站点配置文件:
sudo nano /etc/nginx/sites-available/default
找到
root /var/www/html;这一行,将其修改为你的新目录:root /home/myuser/my-site;
-
设置正确的权限: 和 Apache 一样,这是关键步骤。
sudo chown -R www-data:www-data /home/myuser/my-site sudo chmod -R 755 /home/myuser/my-site
注意:Nginx 默认以
www-data用户运行,所以所有者应该设为www-data。 -
测试并重启 Nginx 服务: 在重启前,最好先测试配置文件是否有语法错误:
sudo nginx -t
如果显示
syntax is ok和test is successful,则重启服务:sudo systemctl restart nginx
网站目录的最佳实践(权限管理)
这是最关键也最容易出错的部分,不正确的权限设置会导致网站无法正常运行,甚至带来安全隐患。
推荐方案:www-data:www-data 组
这是在 Ubuntu 上最安全、最标准的做法。
-
创建一个专门的网站用户组: 我们已经有一个
www-data用户和组,这是 Apache 和 Nginx 默认运行时所使用的用户。 -
将你的用户添加到
www-data组: 假设你的用户名是myuser:sudo usermod -aG www-data myuser
注意:你需要注销并重新登录,或者使用
newgrp www-data命令,才能让组的变更生效。 -
设置目录和文件的所有者:
- 目录:所有者设为
myuser,组设为www-data。 - 文件:所有者设为
myuser,组设为www-data。 - 设置权限:
- 目录需要
755(所有者可读/写/执行,组和其他用户可读/执行),这样才能让 Web 服务器进入目录。 - 文件需要
644(所有者可读/写,组和其他用户只读)。
- 目录需要
可以用一条命令完成:
# 设置目录所有者 sudo chown -R myuser:www-data /path/to/your/website # 设置目录权限 find /path/to/your/website -type d -exec chmod 755 {} \; # 设置文件权限 find /path/to/your/website -type f -exec chmod 644 {} \; - 目录:所有者设为
这样做的优势:
- 安全性:Web 服务器(
www-data用户)只能读取和执行你的网站文件,不能随意修改,只有你(myuser用户)可以写入文件。 - 功能性:如果你的网站需要上传文件(WordPress 的附件),Web 服务器可以在
www-data组的权限下向目录写入文件,而不会因为权限不足而出错。
| 服务器 | 默认网站目录 | 核心配置指令 | 推荐所有者 | 推荐权限 |
|---|---|---|---|---|
| Apache | /var/www/html/ |
DocumentRoot |
www-data:www-data |
目录 755,文件 644 |
| Nginx | /var/www/html/ |
root |
www-data:www-data |
目录 755,文件 644 |
核心要点:
- 默认目录:无论是 Apache 还是 Nginx,在 Ubuntu 上的默认网站目录都是
/var/www/html/。 - 修改目录:通过编辑各自的配置文件(Apache 的
DocumentRoot,Nginx 的root)来更改网站根目录。 - 权限为王:设置正确的文件和目录权限是确保网站安全和功能正常的关键,推荐使用
www-data:www-data作为所有者,并设置755(目录) 和644(文件) 的权限。
希望这份详细的指南能帮助您更好地理解和管理 Ubuntu 上的网站目录!
