## Step 1: 打包Go项目 首先交叉编译,先需要设置目标操作系统为 `linux`,并指定目标 CPU 架构。最常见的 Linux 服务器架构是 `amd64` (也称为 x86-64) ```bash set GOOS=linux & set GOARCH=amd64 & go build -o app main.go ``` ## Step 2: 将文件上传至服务器 ** 现在,你需要将这个 `app` 文件传输到你的 Linux 服务器上。你可以使用 `scp` 命令、FTP客户端 (如 FileZilla) 或其他文件传输工具。 例如,使用 `scp` (通常需要 Git Bash 或 WSL on Windows 才能使用): ```bash # scp <本地文件路径> <用户名>@<服务器IP>:<服务器目标路径> scp ./app user@your-linux-server.com:/home/user/ ``` ## Step 3: 运行文件 ### 1. 授予权限 新上传的文件默认可能没有执行权限,需要使用 `chmod` 命令添加。 ```bash chmod +x app ``` ### 2. 运行程序 ```bash ./app ``` ## Step 4: 后台运行(systemed) `systemd` 是现代 Linux 发行版(如 Ubuntu 16.04+, CentOS 7+, Debian 8+)的默认系统和服务管理器。这是最健壮、最专业的进程守护方法。 **步骤:** 1. **创建 service 文件** 在 `/etc/systemd/system/` 目录下创建一个名为 `quiz-app.service` 的文件。 ```bash sudo nano /etc/systemd/system/app.service ``` 然后将以下内容粘贴进去。**请务必修改 `User` 和 `ExecStart`、`WorkingDirectory` 中的路径为你自己的实际路径和用户名**。 ```ini [Unit] Description=My App Service # 表示在网络服务启动后才启动本服务 After=network.target [Service] # 运行程序的用户名 (不建议使用root) User=root # 程序所在的目录 WorkingDirectory=/home/user # 启动命令 (必须使用绝对路径) ExecStart=/home/user/app # 关键:设置自动重启策略 # on-failure: 只在程序非正常退出时(exit code不为0)重启 # always: 无论如何都会重启 (推荐) # no 永不重启 Restart=always # 重启的间隔时间 RestartSec=3 # StandardOutput=append:/home/user/stdout.log # StandardError=append:/home/user/stdout.log [Install] # 表示在多用户模式下启用此服务 (即开机自启) WantedBy=multi-user.target ``` * **示例路径**:如果你的用户名是 `ubuntu`,程序放在 `/home/ubuntu/` 目录下,那么 `User=ubuntu`, `WorkingDirectory=/home/ubuntu/`, `ExecStart=/home/ubuntu/app`。 2. **重载 `systemd` 配置** 让 `systemd` 读取你新创建的配置文件。 ```bash sudo systemctl daemon-reload ``` 3. **管理你的服务** 现在你可以用 `systemctl` 命令来管理你的程序了。 * **启动服务**: ```bash sudo systemctl start app ``` * **查看服务状态**(非常重要,可以看是否在运行,以及最新的日志): ```bash sudo systemctl status app ``` * **停止服务**: ```bash sudo systemctl stop app ``` * **重启服务**: ```bash sudo systemctl restart app ``` * **设置开机自启**: ```bash sudo systemctl enable app ``` * **取消开机自启**: ```bash sudo systemctl disable app ``` 4. **查看日志** `systemd` 会自动捕获程序的标准输出和标准错误,可以用 `journalctl` 查看。 ```bash # 查看 quiz-app 服务的所有日志 sudo journalctl -u quiz-app # 实时跟踪最新的日志 (类似 tail -f) sudo journalctl -u quiz-app -f ``` Loading... ## Step 1: 打包Go项目 首先交叉编译,先需要设置目标操作系统为 `linux`,并指定目标 CPU 架构。最常见的 Linux 服务器架构是 `amd64` (也称为 x86-64) ```bash set GOOS=linux & set GOARCH=amd64 & go build -o app main.go ``` ## Step 2: 将文件上传至服务器 ** 现在,你需要将这个 `app` 文件传输到你的 Linux 服务器上。你可以使用 `scp` 命令、FTP客户端 (如 FileZilla) 或其他文件传输工具。 例如,使用 `scp` (通常需要 Git Bash 或 WSL on Windows 才能使用): ```bash # scp <本地文件路径> <用户名>@<服务器IP>:<服务器目标路径> scp ./app user@your-linux-server.com:/home/user/ ``` ## Step 3: 运行文件 ### 1. 授予权限 新上传的文件默认可能没有执行权限,需要使用 `chmod` 命令添加。 ```bash chmod +x app ``` ### 2. 运行程序 ```bash ./app ``` ## Step 4: 后台运行(systemed) `systemd` 是现代 Linux 发行版(如 Ubuntu 16.04+, CentOS 7+, Debian 8+)的默认系统和服务管理器。这是最健壮、最专业的进程守护方法。 **步骤:** 1. **创建 service 文件** 在 `/etc/systemd/system/` 目录下创建一个名为 `quiz-app.service` 的文件。 ```bash sudo nano /etc/systemd/system/app.service ``` 然后将以下内容粘贴进去。**请务必修改 `User` 和 `ExecStart`、`WorkingDirectory` 中的路径为你自己的实际路径和用户名**。 ```ini [Unit] Description=My App Service # 表示在网络服务启动后才启动本服务 After=network.target [Service] # 运行程序的用户名 (不建议使用root) User=root # 程序所在的目录 WorkingDirectory=/home/user # 启动命令 (必须使用绝对路径) ExecStart=/home/user/app # 关键:设置自动重启策略 # on-failure: 只在程序非正常退出时(exit code不为0)重启 # always: 无论如何都会重启 (推荐) # no 永不重启 Restart=always # 重启的间隔时间 RestartSec=3 # StandardOutput=append:/home/user/stdout.log # StandardError=append:/home/user/stdout.log [Install] # 表示在多用户模式下启用此服务 (即开机自启) WantedBy=multi-user.target ``` * **示例路径**:如果你的用户名是 `ubuntu`,程序放在 `/home/ubuntu/` 目录下,那么 `User=ubuntu`, `WorkingDirectory=/home/ubuntu/`, `ExecStart=/home/ubuntu/app`。 2. **重载 `systemd` 配置** 让 `systemd` 读取你新创建的配置文件。 ```bash sudo systemctl daemon-reload ``` 3. **管理你的服务** 现在你可以用 `systemctl` 命令来管理你的程序了。 * **启动服务**: ```bash sudo systemctl start app ``` * **查看服务状态**(非常重要,可以看是否在运行,以及最新的日志): ```bash sudo systemctl status app ``` * **停止服务**: ```bash sudo systemctl stop app ``` * **重启服务**: ```bash sudo systemctl restart app ``` * **设置开机自启**: ```bash sudo systemctl enable app ``` * **取消开机自启**: ```bash sudo systemctl disable app ``` 4. **查看日志** `systemd` 会自动捕获程序的标准输出和标准错误,可以用 `journalctl` 查看。 ```bash # 查看 quiz-app 服务的所有日志 sudo journalctl -u quiz-app # 实时跟踪最新的日志 (类似 tail -f) sudo journalctl -u quiz-app -f ``` 最后修改:2025 年 07 月 23 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏