# 前言介绍
在企业数字化转型过程中,官网下载中心是一个高频使用的功能模块。无论是产品手册、软件安装包、技术文档还是营销素材,都需要一个集中管理、权限可控的下载平台。很多企业初期只是将文件直接放在服务器目录下,或者使用网盘链接,这种方式不仅管理混乱,而且无法控制谁可以下载、谁可以上传,容易造成敏感文件泄露或服务器资源被滥用。
本教程将手把手教你从零搭建一个功能完整的官网下载中心,重点解决文件上传与下载的权限控制问题。整个搭建过程基于常见的Web服务器环境(Nginx + PHP),使用开源的FileGator文件管理器作为核心工具,无需开发基础,按照步骤操作即可完成。
# 前置准备
在开始搭建之前,请确保你已经具备以下条件:
1. **一台云服务器或虚拟主机**:建议使用Linux系统(CentOS 7/8 或 Ubuntu 20.04/22.04),服务器配置至少1核2G内存,硬盘空间根据文件存储需求选择,建议至少20GB。
2. **域名**:一个已解析到服务器IP的域名,例如 download.yourcompany.com。
3. **SSH客户端**:推荐使用Xshell、Putty或Termius(Mac用户),用于远程连接服务器。
4. **Web环境**:服务器上已安装Nginx + PHP 7.4以上版本 + MySQL/MariaDB(非必需,但推荐用于用户管理)。如果未安装,本教程会提供安装命令。
5. **FileGator安装包**:从官网 https://filegator.io 下载最新版本,或者使用wget命令直接下载到服务器。
6. **基础Linux命令知识**:了解cd、ls、chmod、vim等基础命令用法。
# 分步操作步骤
## 第一步:安装Web运行环境
1. 使用SSH客户端连接到服务器,输入以下命令更新系统包:
```
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian系统
sudo yum update -y # CentOS/RHEL系统
```
2. 安装Nginx Web服务器:
```
sudo apt install nginx -y # Ubuntu/Debian
sudo yum install nginx -y # CentOS
```
3. 启动Nginx并设置开机自启:
```
sudo systemctl start nginx
sudo systemctl enable nginx
```
4. 安装PHP及必要扩展(FileGator需要PHP 7.4+,推荐PHP 8.1):
```
sudo apt install php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-zip php8.1-curl -y # Ubuntu添加PHP源后执行
```
如果是CentOS系统,先安装EPEL和Remi源:
```
sudo yum install epel-release -y
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm -y # CentOS 7
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y # CentOS 8
sudo yum module reset php -y
sudo yum module enable php:remi-8.1 -y
sudo yum install php php-fpm php-mysqlnd php-xml php-mbstring php-zip php-curl -y
```
5. 启动PHP-FPM并设置开机自启:
```
sudo systemctl start php8.1-fpm # Ubuntu
sudo systemctl start php-fpm # CentOS
sudo systemctl enable php8.1-fpm # Ubuntu
sudo systemctl enable php-fpm # CentOS
```
6. 验证PHP是否安装成功,创建一个测试文件:
```
echo "" | sudo tee /var/www/html/info.php
```
然后在浏览器访问 http://你的服务器IP/info.php,如果看到PHP信息页面,说明环境安装成功。测试完成后删除该文件:
```
sudo rm /var/www/html/info.php
```
## 第二步:下载并部署FileGator
1. 进入Web根目录(通常为/var/www/html):
```
cd /var/www/html
```
2. 下载FileGator最新版本(建议从GitHub获取):
```
sudo wget https://github.com/filegator/filegator/releases/latest/download/filegator.zip
```
3. 解压安装包:
```
sudo unzip filegator.zip -d filegator
```
4. 设置目录权限,确保Web服务器有写入权限:
```
sudo chown -R www-data:www-data /var/www/html/filegator # Ubuntu/Debian
sudo chown -R nginx:nginx /var/www/html/filegator # CentOS/RHEL
sudo chmod -R 755 /var/www/html/filegator
sudo chmod -R 775 /var/www/html/filegator/private # 私有目录需要可写
sudo chmod -R 775 /var/www/html/filegator/repository # 文件存储目录需要可写
```
5. 进入FileGator目录,复制配置文件:
```
cd /var/www/html/filegator
sudo cp configuration.php.example configuration.php
```
6. 编辑配置文件,设置基本参数:
```
sudo vim configuration.php
```
找到以下配置项并修改:
- `'app_name' => '官网下载中心'` // 修改为你想要的站点名称
- `'app_timezone' => 'Asia/Shanghai'` // 设置时区
- `'language' => 'zh-CN'` // 设置语言为中文
- `'frontend_config' => ['app_name' => '官网下载中心', 'upload' => false]` // 默认关闭前端上传功能,后续权限控制会开启
保存并退出(vim中按Esc,输入:wq回车)。
## 第三步:配置Nginx虚拟主机
1. 创建Nginx站点配置文件:
```
sudo vim /etc/nginx/sites-available/download.yourcompany.com # Ubuntu
sudo vim /etc/nginx/conf.d/download.yourcompany.com.conf # CentOS
```
2. 写入以下配置内容(将域名替换为你自己的域名,路径根据实际调整):
```nginx
server {
listen 80;
server_name download.yourcompany.com;
root /var/www/html/filegator;
index index.php index.html;
# 设置上传文件大小限制(根据需求调整,这里设置为200MB)
client_max_body_size 200M;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf; # Ubuntu路径
# include fastcgi.conf; # CentOS用这个
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # Ubuntu
# fastcgi_pass unix:/var/run/php-fpm/www.sock; # CentOS用这个
}
# 禁止访问私有目录
location ~ /(private|repository) {
internal;
}
# 缓存静态资源
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
}
```
3. 启用站点配置(Ubuntu需要创建软链接):
```
sudo ln -s /etc/nginx/sites-available/download.yourcompany.com /etc/nginx/sites-enabled/ # Ubuntu
```
4. 测试配置是否正确:
```
sudo nginx -t
```
5. 如果测试通过,重启Nginx:
```
sudo systemctl restart nginx
```
6. 配置防火墙,开放80端口(如果启用了防火墙):
```
sudo ufw allow 80/tcp # Ubuntu
sudo firewall-cmd --permanent --add-port=80/tcp # CentOS
sudo firewall-cmd --reload
```
## 第四步:初始化FileGator并创建管理员账号
1. 在浏览器中访问 http://download.yourcompany.com,你会看到FileGator的安装向导页面。
2. 页面会检测服务器环境是否满足要求,确保所有绿色勾号都显示通过。如果有红色叉号,根据提示安装缺失的PHP扩展或修改权限。
3. 点击“下一步”进入数据库配置。FileGator支持SQLite和MySQL。对于小规模使用,选择SQLite即可(无需额外配置数据库)。如果需要多用户管理,建议选择MySQL:
- 选择“MySQL”后,填写数据库主机(通常为localhost)、数据库名、用户名和密码。
- 如果你还没有创建MySQL数据库,先登录MySQL创建:
```
sudo mysql -u root -p
CREATE DATABASE filegator;
CREATE USER 'filegator_user'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON filegator.* TO 'filegator_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
4. 点击“下一步”创建管理员账号:
- 用户名:admin(建议修改为其他名称)
- 密码:设置一个强密码(至少8位,包含大小写字母和数字)
- 邮箱:填写管理员邮箱
5. 点击“安装”完成初始化。安装成功后,系统会提示删除安装目录:
```
sudo rm -rf /var/www/html/filegator/installation
```
6. 使用刚才创建的管理员账号登录后台。
## 第五步:配置文件上传与下载权限
1. 登录后台后,点击左侧菜单“用户管理”,你会看到默认的管理员账号。FileGator的权限体系分为三个角色:
- **管理员**:拥有所有权限,包括上传、下载、删除、管理用户
- **用户**:可以上传和下载文件,但不能管理其他用户
- **访客**:只能下载公开文件,不能上传
2. **创建普通用户(用于上传文件的人员)**:
- 点击“添加用户”
- 用户名:例如“uploader01”
- 密码:设置独立密码
- 角色:选择“用户”
- 点击“保存”
3. **配置访客下载权限**:
- 点击左侧菜单“设置”
- 找到“访客权限”部分
- 勾选“允许访客下载文件” - 这样未登录用户也能下载文件
- 取消勾选“允许访客上传文件” - 防止匿名上传
- 点击“保存设置”
4. **设置文件目录权限**:
- 点击左侧菜单“文件管理”
- 你会看到默认的根目录“/”
- 点击目录右侧的“权限”图标(锁形图标)
- 在弹出的窗口中,你可以为每个目录单独设置权限:
- **公开下载**:勾选后,该目录下的文件所有访客都可以下载
- **需要登录**:勾选后,只有登录用户才能下载
- **允许上传**:勾选后,该目录允许用户上传文件
- 例如,创建一个“产品手册”目录,设置为“公开下载”和“允许上传”,这样上传者可以上传文件,所有访客可以下载
5. **配置上传文件类型限制**:
- 在“设置”页面中,找到“文件上传”部分
- 在“允许的文件类型”输入框中,填写允许上传的扩展名,用逗号分隔,例如:pdf,doc,docx,xls,xlsx,zip,rar,exe,msi
- 在“最大文件大小”输入框中,填写允许上传的最大值,例如200MB
- 点击“保存设置”
6. **配置下载限速(防止服务器带宽被占满)**:
- 在Nginx配置中增加限速设置,编辑站点配置文件:
```
sudo vim /etc/nginx/sites-available/download.yourcompany.com
```
- 在server块中添加以下内容:
```nginx
# 限制每个IP的下载速度为500KB/s
limit_rate 500k;
# 限制每个IP的连接数为5
limit_conn addr 5;
```
- 保存后重启Nginx:
```
sudo systemctl restart nginx
```
## 第六步:测试上传与下载功能
1. **测试文件上传**:
- 使用普通用户账号(例如uploader01)登录下载中心
- 进入你之前设置好的可上传目录(例如“产品手册”)
- 点击页面右上角的“上传”按钮
- 选择文件,点击“开始上传”
- 上传成功后,文件会显示在目录列表中
2. **测试文件下载**:
- 退出登录,以访客身份访问下载中心
- 进入“产品手册”目录
- 点击文件旁边的“下载”按钮
- 如果配置正确,文件应该开始下载,且下载速度受到限速配置的限制
3. **测试权限控制**:
- 创建一个新目录,设置为“需要登录”
- 以访客身份访问该目录,应该看不到文件列表或无法下载
- 登录后再次访问,应该可以正常下载
4. **测试文件删除权限**:
- 以普通用户身份登录,尝试删除其他用户上传的文件
- 默认情况下,普通用户只能删除自己上传的文件
- 管理员可以删除所有文件
# 常见问题
**问题1:上传文件时提示“413 Request Entity Too Large”**
原因:Nginx默认上传大小限制为1MB。
解决方法:按照第三步中的配置,在Nginx站点配置中添加 `client_max_body_size 200M;`,然后重启Nginx。
**问题2:访问下载中心显示503或空白页**
原因:PHP-FPM服务未运行或Nginx与PHP通信配置错误。
解决方法:检查PHP-FPM状态 `sudo systemctl status php8.1-fpm`,确认sock文件路径是否正确。在Nginx配置中,fastcgi_pass的路径必须与PHP-FPM的实际监听路径一致。
**问题3:文件上传后无法在目录中看到**
原因:文件存储目录权限不足,或者PHP用户无法写入。
解决方法:检查repository目录权限 `ls -la /var/www/html/filegator/repository`,确保所有者是www-data(Ubuntu)或nginx(CentOS)。如果权限不对,执行 `sudo chown -R www-data:www-data /var/www/html/filegator/repository`。
**问题4:访客可以下载但无法看到文件列表**
原因:FileGator默认隐藏文件列表,只提供直接下载链接。
解决方法:在后台“设置”中,找到“访客权限”,勾选“允许访客查看文件列表”。或者在前端模板中修改显示逻辑。
**问题5:下载速度太慢或太快**
原因:Nginx限速配置不准确,或者未生效。
解决方法:检查Nginx配置中limit_rate指令是否在正确的上下文中。如果限速未生效,尝试在location块中添加 `limit_rate 500k;`。注意,限速是对每个连接生效,如果用户使用多线程下载工具,实际速度会叠加。
**问题6:忘记管理员密码**
解决方法:通过数据库重置。如果使用SQLite,数据库文件在 `/var/www/html/filegator/private/filegator.sqlite`。使用SQLite客户端连接后,执行 `UPDATE users SET password = '$2y$10$...' WHERE username = 'admin';` 其中密码哈希值需要通过PHP的password_hash函数生成。更简单的方法是重新安装FileGator(注意备份文件),或者通过配置文件中的密码重置功能(如果有)。
**问题7:上传的文件名包含中文导致乱码**
原因:服务器区域设置或PHP编码问题。
解决方法:在FileGator的configuration.php中设置 `'app_charset' => 'UTF-8'`,并确保服务器系统语言为UTF-8。上传前在客户端将文件名转换为UTF-8编码。
# 收尾总结
通过以上六个步骤,你已经成功搭建了一个功能完整的官网下载中心,并实现了文件上传与下载的精细化权限控制。整个系统基于FileGator开源项目,具有以下核心能力:
- **角色权限体系**:管理员、普通用户、访客三级权限,每个角色可独立配置上传、下载、查看、删除等操作。
- **目录级权限控制**:可以为每个文件夹单独设置公开下载、需要登录、允许上传等权限,灵活应对不同业务场景。
- **上传限制**:支持文件类型白名单、文件大小上限、上传频率控制,防止服务器被恶意上传占用。
- **下载保护**:支持下载限速、连接数限制、私有目录隐藏,有效保护服务器带宽和文件安全。
- **多用户管理**:可以创建多个上传账号,每个账号只能管理自己的文件,管理员可以全局管控。
后续你可以根据业务需求进一步扩展:集成LDAP/AD用户认证、对接CDN加速下载、添加文件版本管理、实现文件预览功能(PDF/图片/视频在线查看)等。定期检查服务器日志和文件存储空间,及时清理过期文件,确保下载中心长期稳定运行。