1. 核心概念:网站文件存放在哪里?
  2. Apache 服务器的默认目录
  3. Nginx 服务器的默认目录
  4. 如何修改默认网站目录
  5. 网站目录的最佳实践(权限管理)

核心概念

在 Linux 系统中,网站文件(HTML、CSS、JavaScript、PHP、图片等)都存放在文件系统的特定目录下,这个目录被称为 Web 根目录网站根目录

ubuntu 网站目录
(图片来源网络,侵删)

当用户在浏览器中输入您的域名(如 www.example.com)时,Web 服务器(Apache 或 Nginx)会去这个 Web 根目录下寻找对应的文件,并将其内容返回给用户的浏览器。


Apache 服务器的默认目录

Ubuntu 系统上,Apache2 的默认网站目录是:

/var/www/html/

详细说明:

  • /var/:这是一个标准的 Linux 目录,通常用于存放经常变化的文件,如日志文件、缓存、邮件等。
  • www/:是 "World Wide Web" 的缩写,专门用来存放网站相关文件。
  • html/:明确指出这个目录主要存放 HTML 文件。

如何验证:

ubuntu 网站目录
(图片来源网络,侵删)
  1. 查看 Apache 默认配置文件: Apache 的主配置文件是 /etc/apache2/apache2.conf,你可以打开它,会找到这样一行:

    DocumentRoot /var/www/html

    DocumentRoot 指令就定义了网站的根目录。

  2. 查看站点配置文件: 在 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"。

ubuntu 网站目录
(图片来源网络,侵删)

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:

  1. 创建新的网站目录

    sudo mkdir -p /home/myuser/my-site
  2. 修改站点配置文件: 打开默认站点配置文件:

    sudo nano /etc/apache2/sites-available/000-default.conf

    找到 DocumentRoot /var/www/html 这一行,将其修改为你的新目录:

    DocumentRoot /home/myuser/my-site
  3. (可选)创建新的虚拟主机配置文件: 更好的做法是为你的新站点创建一个独立的配置文件(my-site.conf),并禁用默认站点。

  4. 设置正确的权限: 这是非常重要的一步,否则你的网站可能无法写入文件(上传图片)。

    # 将目录的所有者改为你的用户
    sudo chown -R myuser:myuser /home/myuser/my-site
    # 给予所有者读写权限,给其他用户读和进入目录的权限
    sudo chmod -R 755 /home/myuser/my-site
  5. 重启 Apache 服务使配置生效

    sudo systemctl restart apache2

对于 Nginx:

  1. 创建新的网站目录

    sudo mkdir -p /home/myuser/my-site
  2. 修改站点配置文件: 打开默认站点配置文件:

    sudo nano /etc/nginx/sites-available/default

    找到 root /var/www/html; 这一行,将其修改为你的新目录:

    root /home/myuser/my-site;
  3. 设置正确的权限: 和 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

  4. 测试并重启 Nginx 服务: 在重启前,最好先测试配置文件是否有语法错误:

    sudo nginx -t

    如果显示 syntax is oktest is successful,则重启服务:

    sudo systemctl restart nginx

网站目录的最佳实践(权限管理)

这是最关键也最容易出错的部分,不正确的权限设置会导致网站无法正常运行,甚至带来安全隐患。

推荐方案:www-data:www-data

这是在 Ubuntu 上最安全、最标准的做法。

  1. 创建一个专门的网站用户组: 我们已经有一个 www-data 用户和组,这是 Apache 和 Nginx 默认运行时所使用的用户。

  2. 将你的用户添加到 www-data: 假设你的用户名是 myuser

    sudo usermod -aG www-data myuser

    注意:你需要注销并重新登录,或者使用 newgrp www-data 命令,才能让组的变更生效。

  3. 设置目录和文件的所有者

    • 目录:所有者设为 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

核心要点:

  1. 默认目录:无论是 Apache 还是 Nginx,在 Ubuntu 上的默认网站目录都是 /var/www/html/
  2. 修改目录:通过编辑各自的配置文件(Apache 的 DocumentRoot,Nginx 的 root)来更改网站根目录。
  3. 权限为王:设置正确的文件和目录权限是确保网站安全和功能正常的关键,推荐使用 www-data:www-data 作为所有者,并设置 755 (目录) 和 644 (文件) 的权限。

希望这份详细的指南能帮助您更好地理解和管理 Ubuntu 上的网站目录!