feat: add cross-platform support (Windows/Linux/macOS), update README

This commit is contained in:
Your Name
2026-04-28 20:59:28 +08:00
parent d82d2e6d53
commit e94c730def
2 changed files with 75 additions and 6 deletions
+72 -5
View File
@@ -1,6 +1,6 @@
# FTP Server for Windows # FTP Server
基于 Go 语言开发的轻量级 FTP 服务器,带 Web 管理面板,专为 Windows 环境设计 基于 Go 语言开发的轻量级 FTP 服务器,带 Web 管理面板,**跨平台支持 Windows / Linux / macOS**
## 功能特性 ## 功能特性
@@ -25,11 +25,23 @@
确保已安装 Go 1.21+,然后执行: 确保已安装 Go 1.21+,然后执行:
```bash ```bash
go build -o ftp-server.exe ./cmd/ # 编译为当前平台
go build -o ftp-server ./cmd/
# 交叉编译 - Windows (64位)
GOOS=windows GOARCH=amd64 go build -o ftp-server.exe ./cmd/
# 交叉编译 - Linux (64位)
GOOS=linux GOARCH=amd64 go build -o ftp-server ./cmd/
# 交叉编译 - macOS
GOOS=darwin GOARCH=amd64 go build -o ftp-server ./cmd/
``` ```
### 运行 ### 运行
**Windows:**
```bash ```bash
# 使用默认配置启动 # 使用默认配置启动
.\ftp-server.exe .\ftp-server.exe
@@ -38,6 +50,19 @@ go build -o ftp-server.exe ./cmd/
.\ftp-server.exe -config myconfig.json .\ftp-server.exe -config myconfig.json
``` ```
**Linux / macOS:**
```bash
# 使用默认配置启动
./ftp-server
# 指定配置文件
./ftp-server -config myconfig.json
# 后台运行
nohup ./ftp-server > ftp-server.log 2>&1 &
```
首次运行会自动生成 `config.json` 配置文件和 `ftp_root` 根目录。 首次运行会自动生成 `config.json` 配置文件和 `ftp_root` 根目录。
### 访问 ### 访问
@@ -56,6 +81,48 @@ go build -o ftp-server.exe ./cmd/
> 请在首次登录后立即修改默认密码。 > 请在首次登录后立即修改默认密码。
## Linux Systemd 服务(可选)
在 Linux 上可以配置为 systemd 服务,实现开机自启:
```bash
# 创建服务文件
sudo nano /etc/systemd/system/ftp-server.service
```
写入以下内容(按实际路径修改):
```ini
[Unit]
Description=FTP Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/ftp-server
ExecStart=/opt/ftp-server/ftp-server -config /opt/ftp-server/config.json
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
```
启动并设置开机自启:
```bash
sudo systemctl daemon-reload
sudo systemctl start ftp-server
sudo systemctl enable ftp-server
# 查看状态
sudo systemctl status ftp-server
# 查看日志
sudo journalctl -u ftp-server -f
```
## 配置说明 ## 配置说明
配置文件为 `config.json`,结构如下: 配置文件为 `config.json`,结构如下:
@@ -103,7 +170,7 @@ go build -o ftp-server.exe ./cmd/
## FTP 客户端连接 ## FTP 客户端连接
推荐使用 [FileZilla](https://filezilla-project.org/) 或 Windows 资源管理器连接: 推荐使用 [FileZilla](https://filezilla-project.org/) 连接:
``` ```
主机: localhost 主机: localhost
@@ -127,7 +194,7 @@ FTP-server/
## 技术栈 ## 技术栈
- **Go** — 无需运行时依赖,单文件部署 - **Go** — 无需运行时依赖,单文件部署,跨平台支持
- **标准库 net/http** — Web 管理面板 - **标准库 net/http** — Web 管理面板
- **标准库 net** — FTP 协议实现 - **标准库 net** — FTP 协议实现
- **内嵌 HTML/CSS/JS** — 无需额外前端文件 - **内嵌 HTML/CSS/JS** — 无需额外前端文件
+3 -1
View File
@@ -6,6 +6,7 @@ import (
"log" "log"
"os" "os"
"os/signal" "os/signal"
"runtime"
"syscall" "syscall"
"ftp-server/config" "ftp-server/config"
@@ -24,8 +25,9 @@ func main() {
} }
fmt.Println("======================================") fmt.Println("======================================")
fmt.Println(" FTP Server for Windows") fmt.Println(" FTP Server (Cross-Platform)")
fmt.Println("======================================") fmt.Println("======================================")
fmt.Printf("OS/Arch: %s/%s\n", runtime.GOOS, runtime.GOARCH)
fmt.Printf("FTP Port: %d\n", cfg.FTP.Port) fmt.Printf("FTP Port: %d\n", cfg.FTP.Port)
fmt.Printf("Web Admin: http://127.0.0.1:%d\n", cfg.Web.Port) fmt.Printf("Web Admin: http://127.0.0.1:%d\n", cfg.Web.Port)
fmt.Printf("Admin User: %s\n", cfg.Admin.Username) fmt.Printf("Admin User: %s\n", cfg.Admin.Username)