下面是关于将Go程序部署到Linux上运行的完整攻略。
1. 准备工作
在开始部署之前需要进行一些准备工作:
1.1 确保本地环境已经安装 Go
需要先在本地环境安装好 Go 开发环境,可以通过官方文档进行安装。
官方文档:https://golang.org/doc/install
1.2 确保远程服务器已经准备好
需要确保已经有准备好的远程服务器,并且拥有 root 权限以便我们进行部署工作。
2. 生成可执行文件
需要先将 Go 项目编译成可执行文件,才能在 Linux 上运行。
使用以下命令进行编译:
go build -o my-app main.go
其中 my-app
为可执行文件生成的名称,可以自定义。
3. 传输可执行文件到 Linux 服务器
可以使用 scp 命令,将可执行文件传输到 Linux 服务器上。
假设服务器 IP 为 192.168.1.10
,用户名为 root
,可执行文件名为 my-app
,则命令如下:
scp my-app root@192.168.1.10:/root/my-app
此时,my-app
文件已经上传到了服务器的 /root/
目录下。
4. 设置可执行权限
需要设置可执行权限,使用以下命令进行设置:
chmod +x /root/my-app
这样我们就可以在 Linux 中运行 Go 应用程序了。
5. 后台运行程序
为了让程序在 Linux 上一直运行,可以使用 nohup
命令在后台启动该程序。
使用以下命令进行启动:
nohup /root/my-app &
示例说明1:使用 Nginx 反向代理进行应用访问
可以使用 Nginx 反向代理来进行应用的访问。
1. 安装 Nginx
使用以下命令进行安装:
sudo apt-get update
sudo apt-get install nginx
2. 配置 Nginx
使用以下命令进行配置:
sudo nano /etc/nginx/conf.d/my-app.conf
将以下内容添加进文件:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
其中 example.com
为你的域名或服务器 IP,localhost:8080
为应用程序监听的地址和端口。
3. 重启 Nginx
使用以下命令进行重启:
sudo service nginx restart
4. 访问应用程序
使用浏览器访问 http://example.com
,即可访问应用程序。
示例说明2:使用 systemd 进行进程守护
使用 systemd 可以进行进程守护,确保应用程序在服务器中一直运行。
1. 创建 Systemd 配置文件
使用以下命令创建一个名为 my-app.service
的 Systemd 配置文件:
sudo nano /etc/systemd/system/my-app.service
将以下内容添加到文件中:
[Unit]
Description=My Go application
After=syslog.target
[Service]
User=root
Group=root
ExecStart=/root/my-app
WorkingDirectory=/root/
Restart=always
SyslogIdentifier=my-app
[Install]
WantedBy=multi-user.target
2. 重新加载 systemd
使用以下命令进行重新加载:
sudo systemctl daemon-reload
3. 启动应用程序
使用以下命令进行启动:
sudo systemctl start my-app.service
4. 使用 systemctl 进行管理
我们可以使用 systemctl 命令对应用程序进行管理,例如:
sudo systemctl start my-app.service
: 启动应用程序;sudo systemctl stop my-app.service
: 停止应用程序;sudo systemctl restart my-app.service
: 重启应用程序;sudo systemctl status my-app.service
: 查看应用程序运行状态。
以上就是将 Go 程序部署到 Linux 上运行的完整攻略,希望能够对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:go程序部署到linux上运行的实现方法 - Python技术站