一六七、Linux安装go并摆设go项目

[复制链接]
发表于 2026-2-9 13:01:49 | 显示全部楼层 |阅读模式
Linux 下安装 Golang

获取Golang下载所在



  • 标准官网:https://go.dev/
  • 国内镜像官网:https://golang.google.cn/
安装

1. 进入终端,登入root

  1. su - root
复制代码
2. 来到应用安装目次

  1. cd /usr/local
复制代码
3. 利用 wget 下载

如果没有安装 wget 可通过软件包管理器安装 wget
  1. yum install wget
复制代码
以 go1.19.3 版本下载链接演示
  1. wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
复制代码
4. 解压文件

如果之前已经安装过go的版本,先清空下go,否则大概会报错误
  1. rm -rf go
复制代码
解压go包
  1. tar -zxf go1.19.3.linux-amd64.tar.gz
复制代码
5. 设置环境变量


  • vim指令编辑 /etc/profile
  1. vim /etc/profile
复制代码

  • 严酷巨细写 按次序键入:G、o 来到文件末端添加以下设置
  1. #golang env config
  2. export GOROOT=/usr/local/go
  3. export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
复制代码
  go1.18 版本以后默认开启 go modules 模式,无需设置【export GO111MODULE=on】
go modules 模式下,可以不设置GOPATH,默认【/root/go】
  

  • 按下 Esc 退出编辑模式,输入 :wq 生存并退出
  • 使环境变量设置收效
  1. source /etc/profile
复制代码
6. 检察golang版本,测试是否设置乐成

  1. go version
复制代码
7. GO设置署理环境变量

再拉去go.dev的时间就不须要科学上网了。注意GO1.13才支持direct的写法
  1. go env
  2. -w GOPROXY=https://goproxy.cn,direct
复制代码
  1. go env
  2. -w GOPRIVATE=git.mycompany.com,github.com/my/private
复制代码
设置完后 检察Go环境变量
  1. go env
复制代码
go多版本安装与切换

摆设Go语言项目

本文以摆设 Go Web 步调为例,先容了在 CentOS7 服务器上摆设 Go 语言步调的多少方法。
独立摆设

Go 语言支持跨平台交织编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,而且将代码编译成可以大概在 Linux amd64 服务器上运行的步调。
对于简朴的项目,通常我们只须要将编译后的二进制文件拷贝到服务器上,然后设置为配景守卫历程运行即可。
编译

编译可以通过以下下令或编写 makefile 来利用。
  1. CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/bluebell
复制代码
下面假设我们将当地编译好的 bluebell 二进制文件、设置文件和静态文件等上传到服务器的/data/app/bluebell目次下。
增补一点,如果嫌弃编译后的二进制文件太大,可以在编译的时间加上-ldflags "-s -w"参数去掉符号表和调试信息,一样寻常能减小20%的巨细。
  1. CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./bin/bluebell
复制代码
如果还是嫌大的话可以继续利用 upx 工具对二进制可实行文件举行压缩。
nohup

nohup 用于在体系配景不挂断地运行下令,不挂断指的是退出实行下令的终端也不会影响步调的运行。
我们可以利用 nohup 下令来运行应用步调,使其作为配景守卫历程运行。由于在主流的 Linux 发行版中都会默认安装 nohup 下令工具,我们可以直接输入以下下令来启动我们的项目:
  1. sudo nohup ./bin/bluebell conf/config.yaml > nohup_bluebell.log 2>&1 &
复制代码
此中:


  • ./bluebell conf/config.yaml是我们应用步调的启动下令
  • nohup ... &表如今配景不挂断的实行上述应用步调的启动下令
  • > nohup_bluebell.log表现将下令的标准输出重定向到 nohup_bluebell.log 文件
  • 2>&1表现将标准错误输出也重定向到标准输出中,团结上一条就是把实行下令的输出都定向到 nohup_bluebell.log 文件
上面的下令实行后会返回历程 id
  1. [1] 6338
复制代码
固然我们也可以通过以下下令检察 bluebell 干系活动历程:
  1. ps -ef | grep bluebell
复制代码
输出:
  1. root      6338  4048  0 08:43 pts/0    00:00:00 ./bin/bluebell conf/config.yaml
  2. root      6376  4048  0 08:43 pts/0    00:00:00 grep --color=auto bluebell
复制代码
supervisor

Supervisor 是业界盛行的一个通用的历程管理步调,它能将一个平凡的下令行历程变为配景守卫历程,并监控监控该历程的运行状态,当该历程非常退出时能将其自动重启。
起首利用 yum 来安装 supervisor:
如果你还没有安装过 EPEL,可以通过运行下面的下令来完成安装,如果已安装则跳过此步调:
  1. sudo yum install epel-release
复制代码
安装 supervisor
  1. sudo yum install supervisor
复制代码
Supervisor 的设置文件为:/etc/supervisord.conf ,Supervisor 所管理的应用的设置文件放在 /etc/supervisord.d/ 目次中,这个目次可以在 supervisord.conf 中的include设置。
  1. [include]
  2. files = /etc/supervisord.d/*.conf
复制代码
启动supervisor服务:
  1. sudo supervisord -c /etc/supervisord.conf
复制代码
我们在/etc/supervisord.d目次下创建一个名为bluebell.conf的设置文件,详细内容如下。
  1. [program:bluebell]  ;程序名称
  2. user=root  ;执行程序的用户
  3. command=/data/app/bluebell/bin/bluebell /data/app/bluebell/conf/config.yaml  ;执行的命令
  4. directory=/data/app/bluebell/ ;命令执行的目录
  5. stopsignal=TERM  ;重启时发送的信号
  6. autostart=true  
  7. autorestart=true  ;是否自动重启
  8. stdout_logfile=/var/log/bluebell-stdout.log  ;标准输出日志日志位置
  9. stderr_logfile=/var/log/bluebell-stderr.log  ;标准错误日志日志位置
复制代码
创建好设置文件之后,重启supervisor服务
  1. sudo supervisorctl update # 更新配置文件并重启相关的程序
复制代码
检察bluebell的运行状态:
  1. sudo supervisorctl status bluebell
复制代码
输出:
  1. bluebell                         RUNNING   pid 10918, uptime 0:05:46
复制代码
末了增补一下常用的supervisr管理下令:
  1. supervisorctl status       # 查看所有任务状态
  2. supervisorctl shutdown     # 关闭所有任务
  3. supervisorctl start 程序名  # 启动任务
  4. supervisorctl stop 程序名   # 关闭任务
  5. supervisorctl reload       # 重启supervisor
复制代码
接下来就是打开欣赏器检察网站是否正常了。
搭配nginx摆设

在须要静态文件分离、须要设置多个域名及证书、须要自建负载均衡层等稍复杂的场景下,我们一样寻常须要搭配第三方的web服务器(Nginx、Apache)来摆设我们的步调。
正向署理与反向署理

正向署理可以简朴明确为客户端的署理,你访问墙外的网站用的谁人属于正向署理。
反向署理可以简朴明确为服务器的署理,通常说的 Nginx 和 Apache 就属于反向署理。
Nginx 是一个免费的、开源的、高性能的 HTTP 和反向署理服务,重要负责负载一些访问量比力大的站点。Nginx 可以作为一个独立的 Web 服务,也可以用来给 Apache 或是其他的 Web 服务做反向署理。相比于 Apache,Nginx 可以处理处罚更多的并发毗连,而且每个毗连的内存占用的非常小。
利用yum安装nginx

EPEL 堆栈中有 Nginx 的安装包。如果你还没有安装过 EPEL,可以通过运行下面的下令来完成安装:
  1. sudo yum install epel-release
复制代码
安装nginx
  1. sudo yum install nginx
复制代码
安装完成后,实行下面的下令设置Nginx开机启动:
  1. sudo systemctl enable nginx
复制代码
启动Nginx
  1. sudo systemctl start nginx
复制代码
检察Nginx运行状态:
  1. sudo systemctl status nginx
复制代码
Nginx设置文件

通过上面的方法安装的 nginx,全部干系的设置文件都在 /etc/nginx/ 目次中。Nginx 的主设置文件是 /etc/nginx/nginx.conf。
默认尚有一个nginx.conf.default的设置文件示例,可以作为参考。你可以为多个服务创建差别的设置文件(发起为每个服务(域名)创建一个单独的设置文件),每一个独立的 Nginx 服务设置文件都必须以 .conf 末端,并存储在 /etc/nginx/conf.d 目次中。
Nginx常用下令

增补几个 Nginx 常用下令。
  1. nginx -s stop    # 停止 Nginx 服务
  2. nginx -s reload
  3.   # 重新加载配置文件
  4. nginx -s quit    # 平滑停止 Nginx 服务
  5. nginx -t
  6.          # 测试配置文件是否正确
复制代码
Nginx反向署理摆设

我们保举利用 nginx 作为反向署理来摆设我们的步调,按下面的内容修改 nginx 的设置文件。
  1. worker_processes  1;
  2. events {
  3.     worker_connections  1024;
  4. }
  5. http {
  6.     include       mime.types;    default_type  application/octet-stream;
  7.     sendfile        on;    keepalive_timeout  65;
  8.     server {        listen       80;        server_name  localhost;
  9.         access_log   /var/log/bluebell-access.log;        error_log    /var/log/bluebell-error.log;
  10.         location / {            proxy_pass                 http://127.0.0.1:8084;            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;        }    }
  11. }
复制代码
实行下面的下令查抄设置文件语法:
  1. nginx -t
复制代码
实行下面的下令重新加载设置文件:
  1. nginx -s reload
复制代码
接下来就是打开欣赏器检察网站是否正常了。
固然我们还可以利用 nginx 的 upstream 设置来添加多个服务器所在实现负载均衡。
设置域名&反向署理

  1. server {
  2.   listen       80;
  3.   server_name  go-web.at-will.cn;
  4.           location / {
  5.             root   /home/go/go-blog/bluebell_frontend/dist;
  6.             index  index.html index.htm;
  7.             try_files $uri $uri/ /index.html;
  8.           }
  9.          #  api请求
  10.       location /api {
  11.         proxy_http_version 1.1;
  12.         proxy_set_header Upgrade $http_upgrade;
  13.         proxy_set_header Connection "upgrade";
  14.         proxy_set_header Host $host;
  15.         proxy_set_header X-Nginx-Proxy true;
  16.         proxy_cache_bypass $http_upgrade;
  17.         proxy_pass http://127.0.0.1:8181/api; #反向代理
  18.     }
  19. }
复制代码
访问网站http://go-web.at-will.cn/#/
打开postMan哀求

摆设完成


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表