feat: add cross-platform support (Windows/Linux/macOS), update README
This commit is contained in:
@@ -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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user