使用 systemd 系统服务来实现开机自启,更符合 Linux 系统服务管理的最佳实践
以我的一个Golang服务为例,创建一个新的服务文件。
1
| >touch /etc/systemd/system/beegoblog.service
|
文件内容
1 2 3 4 5 6 7 8 9 10 11 12 13
| [Unit] Description=Beego Application After=network.target //服务在 network.target 之后启动
[Service] //可执行文件路径,不是main.go ExecStart=/path/to/your/beego_app/your_beego_executable WorkingDirectory=/path/to/your/beego_app //应用的工作目录 Restart=on-failure //服务在失败时自动重启 User=your_user_name //指定运行服务的用户,最好不要是root,存在安全风险
[Install] WantedBy=multi-user.target
|
User 设置为 root 存在安全风险。一般不建议以 root 用户运行应用程序,因为 root 用户拥有系统的最高权限,如果应用程序出现安全漏洞,可能会导致整个系统受到威胁。最好创建一个专门的普通用户来运行 Beego 应用。
生成可执行文件:
1 2
| >cd /var/www/go/src/BeegoBlog/AllSrcCode/ >go build -o /var/www/go/src/BeegoBlog/AllSrcCode/bin/beegoblogapp
|
当代码更新后,重新执行 go build 命令会自动覆盖旧的可执行文件,无需手动删除。
1
| >go clean //清理项目中的构建缓存和旧的构建产物
|
再次执行 go build 命令,这样可以确保生成的可执行文件完全基于最新的代码。
1
| >go build -o /var/www/go/src/BeegoBlog/AllSrcCode/bin/beegoblogapp
|
使 systemd 配置生效
1 2 3 4 5 6 7 8 9 10 11
| >sudo systemctl daemon-reload #设置开机自启: >sudo systemctl enable beegoblog.service #启动服务: >sudo systemctl start beegoblog.service #检查服务状态: >sudo systemctl status beegoblog.service #停止服务: >sudo systemctl stop beegoblog.service #关闭开机自启,从开机自启服务列表中移除 >sudo systemctl disable beegoblog.service
|