标签: go打包

  • go 打包到不同平台

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。

    1、Mac下编译Linux, Windows平台的64位可执行程序:

    $ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
    

    2、Linux下编译Mac, Windows平台的64位可执行程序:

    $ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go
    $ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
    

    3、Windows下编译Mac, Linux平台的64位可执行程序:

    $ SET CGO_ENABLED=0SET GOOS=darwin3 SET GOARCH=amd64 go build test.go
    $ SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build  test.go
    

    注:如果编译web等工程项目,直接cd到工程目录下直接执行以上命令

    GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
    GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm

  • Beego打包部署到Linux

    打包

    打开Terminal 定位到工程的 main.go 文件夹目录

    使用命令 bee pack -be GOOS=linux 进行打包

    打包成Windows 命令 bee pack -be GOOS=windows

    阿里云部署

    打包后会产生 xxx.tar.gz文件(当然 前提 不出现错误),通过工具或命令将该压缩文件发送到阿里云ECS指定的目录下;然后 登录阿里云ECS 并进入相应的目录对发送过来的文件解压缩;

    解压缩成功后 可以看到2个文件:conf 、目标文件(可执行文件),运行目标文件 ,运行成功后结束;

    普通部署

    将打包好的程序,放到Linux上的某个目录。

    将程序放在后台运行,这里使用screen命令进行操作。一般来说,Linux都会自带了screen,如果没有,则可通过命令 sudo apt-get install screen 或 sudo yum install screen进行安装。

    安装完成screen后,使用命令screen -S ***进入到screen后台界面,其中打 *** 号的是给这个屏幕建一个别名,这样好知道后台部署的程序在哪个screen的容器内。

    在进入到某个screen后,就可在这里进行运行你的程序的操作。这里使用nohup进行运行,如nohup ./app &进行运行。

    执行结束后,按键盘 ctrl+A+D键进入到前台。

    需要查看有哪些screen在使用,可使用screen -ls查看。如下:

    [root@izwz9j9o61ggn****hbz ~]# screen -ls
    There is a screen on:
    6931.golang***Api (Detached)
    1 Socket in /var/run/screen/S-root.

    其中,6931即为该实例的ID号。后面即可通过 screen -r 6931 再次进入到该实例进行操作。若出现使用以上命令无法进入,则使用screen -d 6931 后再次使用-r命令即可进入。

    这样,在linux上部署golang程序就算结束。

    Nginx转发代理

    有时候,我们的后台设计,可能采用的是微服务的架构,不同的功能点,调用不同的服务进行请求,这里就可以使用Nginx进行做统一的请求转发。

    打开Nginx的配置 nginx.conf文件,添加如下代码

    server {
    listen 80;// 监听的端口
    server_name .a.com; // 服务的域名
    charset utf-8;
    access_log /home/a.com.access.log;
    location /(css|js|fonts|img)/ {
    access_log off;
    expires 1d;
    root “/path/to/app_a/static”;
    try_files $uri @backend;
    }
    location / {
    try_files /_not_exists_ @backend;
    }
    location @backend {
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $http_host;
    proxy_pass http://127.0.0.1:8080; //你刚才部署golang程序监听的端口
    }
    }

    重启Nginx服务 systemctl restart nginx