部署Golang服务

这篇具有很好参考价值的文章主要介绍了部署Golang服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

独立部署

对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。

本文以项目:https://github.com/johncxf/go_practice 为例

编译

编译为 linux 系统可执行的二进制文件,二进制文件为 ./bin/go-api,可自行修改

$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/go-api

可以使用 -ldflags "-s -w"参数去掉符号表和调试信息,可以压缩二进制文件大小

$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./bin/go-api

大小对比:

$ ll ./bin
total 92168
-rwxr-xr-x  1 chen  staff    27M  1 16 22:03 go-api
-rwxr-xr-x  1 chen  staff    18M  1 16 22:53 go-api-1
上传文件

在服务器新建一个目录,用来存放该项目:

$ mkdir /www/wwwroot/go-project & cd /www/wwwroot/go-project

上传编辑的二进制文件到对应项目目录下,并将静态资源文件、配置文件等项目依赖的文件同时上传

.
├─ bin
| ├─ go-api
├─ config
| └─ env.yml
启动服务
直接启动:
# 在项目根目录下
$ ./bin/go-api config/env.yml

直接启动可以键盘 control + c 直接退出即可

后台启动:

这里使用nohup进行启动,也可以使用其他进程管理工具进行启动(如:supervisor)

$ sudo nohup ./bin/go-api config/env.yml > nohup_go-api.log 2>&1 &

# 执行后控制台会输出进程号
[1] 19935
  • ./bin/go-api config/env.yml:是我们应用程序的启动命令
  • nohup ... &表示在后台不挂断的执行上述应用程序的启动命令
  • > nohup_api-admin.log表示将命令的标准输出重定向到 nohup_api-adminlog 文件
  • 2>&1表示将标准错误输出也重定向到标准输出中,结合上一条就是把执行命令的输出都定向到 nohup_api-admin.log 文件

后台启动找到对应进程,直接 kill 即可

$ ps -ef | grep go-api

[root@VM-0-11-centos go-project]# ps -ef | grep go-api
root     19935 32326  0 22:47 pts/0    00:00:00 sudo nohup ./bin/go-api config/env.yml
root     19936 19935  0 22:47 pts/0    00:00:00 ./bin/go-api config/env.yml
root     28488 32326  0 23:12 pts/0    00:00:00 grep --color=auto go-api

$ kill -9 19936

其他指令:

# 查看所有后台进程
$ jobs -l
端口开放

腾讯云或者阿里云等服务器都需要开放对于的端口,才能进行访问。

以腾讯云为例,在控制台设置对于服务器的安全组规则,在安全组中添加一条对应端口开放的规则即可,实际操作可以参考对应服务器服务商提供的文档。

访问

访问:http://服务器公网ip:端口/uri即可使用

如果需要通过域名访问,则需要搭配 nginx 来使用。

结合Nginx部署

在需要静态文件分离、需要配置多个域名及证书、需要自建负载均衡层等稍复杂的场景下,我们一般需要搭配第三方的web服务器(Nginx、Apache)来部署我们的程序。

首先需要安装 nginx,nginx 安装教程这里不再赘述。

这里简单介绍通过 nginx 做反向代理,实现通过域名访问Go应用的示例。

修改 nginx 配置,配置反向代理即可:

...
http {
    ...
    server {
        # 端口
        listen       80;
        # 域名
        server_name  api.yiqiesuifeng.cn;

        access_log   /var/log/api-access.log;
        error_log    /var/log/api-error.log;

		# 静态文件请求
        location ~ .*\.(gif|jpg|jpeg|png|js|css|eot|ttf|woff|svg|otf)$ {
            access_log off;
            expires    1d;
            root       /www/wwwroot/go-project;
        }

        # index.html页面请求
        location / {
            root /www/wwwroot/go-project;
            index index.html;
            try_files $uri $uri/ /index.html;
        }
		
        # API 请求
        location /api {
            # 代理到go服务
            proxy_pass                 http://127.0.0.1:8088;
            proxy_redirect             off;
            proxy_set_header           Host             $host;
            proxy_set_header           X-Real-IP        $remote_addr;
            proxy_set_header           X-Forwarded-For  $proxy_add_x_forwarded_for;
        }
    }
}

修改 ngxin 配置后重新 nginx 即可。文章来源地址https://www.toymoban.com/news/detail-815371.html

到了这里,关于部署Golang服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Golang】VScode配置Go语言环境

    安装VScode请参考我的上一篇博客:VScode安装_㫪548的博客-CSDN博客 接下来我们直接进入正题: Go语言(又称Golang)是一种开源的编程语言,由Google开发并于2009年首次发布。Go语言具有简洁、高效、可靠和易于阅读的特点,被设计用于解决大型项目的开发需求。它结合了静态类型

    2024年02月03日
    浏览(66)
  • 搭建golang开发环境

    这里参考一篇文章: golang环境变量链接,还不错

    2024年02月15日
    浏览(42)
  • Linux的开发环境安装配置与后端项目部署

    目录 一.安装开发环境 1.准备阶段 1.1 创建新目录 1.2 解压文件 2.JDK的安装与配置环境变量 2.1 解压jdk压缩包 2.2 配置环境变量 2.3 设置环境变量生效  2.4 验证是否安装成功 3.Tomcat的安装与使用 3.1 解压安装 3.2 开启服务 3.3 开放端口   3.4 访问成功 4.MySQL的安装 4.1 检查卸载原有

    2024年02月06日
    浏览(46)
  • 部署Golang服务

    对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。 本文以项目:https://github.com/johncxf/go_practice 为例 编译 编译为 linux 系统可执行的二进制文件,二进制文件为 ./bin/go-api ,可自行修改 可以使用 -ldflags \\\"-s -w\\\" 参数去掉

    2024年01月22日
    浏览(37)
  • Docker部署Golang服务

    不管是开发还是生产环境,通过 docker 方式部署服务都是一种不错的选择,能够解决不同开发环境一致性的问题。 本文以项目:https://github.com/johncxf/go-api 为例。 Dockerfile 构建 Go 运用环境 在项目根目录下添加 Dockerfile 文件: 如果需要缩小镜像大小,则可以用以下方式进行构建

    2024年01月22日
    浏览(42)
  • MacOS搭建golang开发环境

    使用homebrew安装golang。homebrew是MacOS 平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等功能。开发者不需要关心依赖和文件路径。如果系统没有安装homebrew,终端内执行以下命令安装homebrew。 安装完homebrew后执行以下命令安装golang。 当然,也可以从go语言中文网

    2024年02月04日
    浏览(43)
  • Golang开发环境搭建-Vim篇

    本文于2017年3月份完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。 最近在研究docker的使用方法,恰好手边有一本docker源码分析的书,所以在ubuntu环境下准备了一套golang的开发环境,便于在学习docker使用的

    2024年02月04日
    浏览(43)
  • Docker Golang 开发环境搭建指南

    在 Golang 开发中,搭建合适的开发环境是非常重要的。然而,由于 Golang 的跨平台特性,不同操作系统之间的配置差异可能会导致环境搭建过程变得复杂。为了简化这个过程并保持开发环境的一致性,我们可以使用 Docker 来创建一个统一的 Golang 开发环境。 本文将介绍如何使用

    2024年02月03日
    浏览(61)
  • 【云原生 | 37】Docker快速部署编程语言Golang

    🍁 博主简介 :         🏅云计算领域优质创作者         🏅新星计划第三季python赛道第一名         🏅阿里云ACE认证高级工程师         🏅阿里云开发者社区专家博主 ✒️ 博主微信 :15575411187 💊 交流社区 :小鹏linux(个人社区)欢迎您的加入! 目录

    2024年02月01日
    浏览(65)
  • windows 下将golang项目按linux环境打包, 并使用宝塔进行部署

    1.在windows开发目录中,cd 到main.go目录下,在地址栏输入cmd 回车,打开当前目录的命令窗口,然后依次运行 打包配置命令 2.开始打包linux 二进制运行文件 3.在main.go目录下生成一个以项目名称命名的文件,此文件是没有格式的,如果打包成.exe文件证明第一步设置不成功,删除

    2024年02月07日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包