凌峰创科服务平台

Linux如何搭建http文件服务器?

使用 Python (最简单,推荐快速使用)

如果你的 Linux 系统上安装了 Python (现在绝大多数系统都预装了 Python 3),这是最快的方法。

Linux如何搭建http文件服务器?-图1
(图片来源网络,侵删)

指定目录启动

打开终端,cd 到你想要共享的目录,然后运行以下命令:

# Python 3
python3 -m http.server 8000
# Python 2 (如果系统只有旧版 Python)
# python -m SimpleHTTPServer 8000
  • python3 -m http.server: 使用 Python 3 内置的 HTTP 服务器模块。
  • 8000: 是端口号,你可以改成任何你喜欢的未被占用的端口(8080, 8888 等)。

绑定到所有网络接口

默认情况下,服务器只监听 0.0.1 (本地回环),这意味着只有你自己的电脑可以访问,要让局域网内的其他设备也能访问,需要绑定到所有接口 (0.0.0):

python3 -m http.server 8000 --bind 0.0.0.0

如何访问?

  • 本机访问: 打开浏览器,访问 http://localhost:8000http://127.0.0.1:8000
  • 局域网访问: 从同一局域网内的另一台设备(手机、电脑)上,访问服务器的 IP 地址,你可以通过在终端运行 ip aifconfig 命令来找到你的 Linux 机的 IP 地址,如果 IP 是 168.1.100,就在另一台设备上访问 http://192.168.1.100:8000

优点:

  • 无需安装任何额外软件。
  • 命令简单,一行搞定。
  • 适合临时、快速地共享文件。

缺点:

Linux如何搭建http文件服务器?-图2
(图片来源网络,侵删)
  • 功能非常基础,没有用户认证、日志等。
  • 性能有限,不适合高并发或大流量。
  • 安全性较低,会将目录下的所有文件都暴露出去。

使用 Nginx (功能强大,生产环境推荐)

Nginx 是一个极其流行、高性能的反向代理和 Web 服务器,如果你需要更稳定、更安全、功能更丰富的服务,Nginx 是最佳选择。

安装 Nginx

根据你的 Linux 发行版选择命令:

Debian / Ubuntu:

sudo apt update
sudo apt install nginx

CentOS / RHEL / Fedora:

Linux如何搭建http文件服务器?-图3
(图片来源网络,侵删)
sudo yum install epel-release  # 对于 CentOS/RHEL 7/8
sudo yum install nginx
# 或者对于 dnf
sudo dnf install nginx

配置 Nginx

Nginx 的配置文件在 /etc/nginx/ 目录下,我们通常在 sites-available/ 目录下创建新的站点配置,然后通过 sites-enabled/ 目录来启用它。

  1. 创建一个新的配置文件,/etc/nginx/sites-available/share:

    sudo nano /etc/nginx/sites-available/share
  2. 在文件中添加以下内容,将 /path/to/your/share/folder 替换为你要共享的实际目录路径。

    server {
        listen 80; # 监听 80 端口,HTTP 标准端口
        listen [::]:80; # 监听 IPv6
        server_name _; # 接受所有域名
        root /path/to/your/share/folder; # 指定文件根目录
        autoindex on; # 开启目录列表功能,类似于 Python 服务器
        autoindex_exact_size off; # 显示文件大小为 KB, MB, GB 格式
        autoindex_localtime on; # 显示文件本地时间
        # 可选:添加基本认证,保护你的目录
        # auth_basic "Restricted Area";
        # auth_basic_user_file /etc/nginx/.htpasswd;
    }
  3. 创建符号链接以启用这个站点配置:

    sudo ln -s /etc/nginx/sites-available/share /etc/nginx/sites-enabled/
  4. 测试配置文件是否有语法错误,然后重新加载 Nginx:

    sudo nginx -t
    sudo systemctl reload nginx

如何访问?

直接在浏览器中访问服务器的 IP 地址或域名即可,http://192.168.1.100,Nginx 会自动列出 /path/to/your/share/folder 目录下的文件和文件夹。

优点:

  • 高性能:可以处理大量并发请求。
  • 功能丰富:支持反向代理、负载均衡、SSL/TLS (HTTPS)、虚拟主机等。
  • 高度可配置:可以非常精细地控制访问权限、日志记录等。
  • 稳定可靠:被广泛用于生产环境。

缺点:

  • 配置比 Python 方法复杂,需要学习 Nginx 的配置语法。
  • 需要单独安装。

使用 Samba (用于局域网文件共享)

如果你的目标是让局域网内的 Windows、macOS 和 Linux 设备都能像访问网络共享盘一样访问文件,Samba 是最佳选择,它实现了 SMB/CIFS 协议,是跨平台文件共享的事实标准。

安装 Samba

sudo apt install samba # Debian/Ubuntu
sudo yum install samba # CentOS/RHEL

创建共享目录并设置权限

sudo mkdir -p /srv/samba/share
sudo chmod -R 0775 /srv/samba/share
sudo chown -R nobody:nogroup /srv/samba/share

配置 Samba

编辑 Samba 的主配置文件:

sudo nano /etc/samba/smb.conf

在文件末尾添加如下配置:

[share]
    comment = Public Share
    path = /srv/samba/share
    browsable = yes
    guest ok = yes
    read only = no
    create mask = 0664
    directory mask = 0775
  • [share]: 这是你在网络邻居中看到的共享名称。
  • path: 共享的目录路径。
  • guest ok = yes: 允许客人访问,无需密码。(不安全!)
  • read only = no: 允许写入。

设置密码(可选,但推荐)

如果你不希望是公开共享,可以创建一个 Samba 用户(这个用户必须是系统用户):

# 创建一个系统用户(如果还没有)
sudo useradd -s /sbin/nologin smbuser
# 为这个用户设置 Samba 密码
sudo smbpasswd -a smbuser

然后将配置文件中的 guest ok = yes 改为 guest ok = no

启动 Samba 服务

sudo systemctl enable smbd nmbd
sudo systemctl start smbd nmbd

如何访问?

  • Windows: 在文件资源管理器的地址栏输入 \\192.168.1.100\share
  • macOS: 在“前往”菜单中选择“连接服务器”,输入 smb://192.168.1.100/share
  • Linux: 在文件管理器的地址栏输入 smb://192.168.1.100/share

优点:

  • 无缝集成:Windows 和 macOS 可以像访问本地盘一样访问。
  • 用户认证:可以精细地控制每个用户的访问权限。
  • 专为文件共享优化。

缺点:

  • 主要用于局域网,不适合公网访问。
  • 配置比 Python 复杂。

总结与选择

方法 适用场景 优点 缺点
Python 临时、快速、个人使用,无需安装 一行命令,极其简单 功能少,性能低,安全性差
Nginx 长期、稳定、功能丰富的服务,特别是公网或生产环境 高性能,功能强大,稳定,安全,可配置性高 需要安装,配置相对复杂
Samba 局域网内与 Windows、macOS 等设备无缝共享文件 跨平台支持好,用户权限管理完善 主要用于内网,配置较复杂

如何选择?

  • 只想临时给同事传个文件,或者自己快速测试一下? -> 用 Python
  • 你想搭建一个长期的、公开的下载站,或者需要 HTTPS、用户认证等高级功能? -> 用 Nginx
  • 你想让办公室的所有人(包括 Windows 用户)都能像访问网络盘一样访问一个共享文件夹? -> 用 Samba
分享:
扫描分享到社交APP
上一篇
下一篇