Gin编译部署到centos并搭配Nginx运行

Gin编译部署到centos并搭配Nginx运行

      自从入门Go语言之后,上回学了beego框架并做了一个小东西,最近学了Gin框架并写了一个API接口,今天尝试部署到Centos上,并让他运行,网上查找了相关的资料,对于这方面到介绍很少,基于上回部署beego项目,我在想是不是也可以把他打包成二进制文件,然后用利用Nginx端口进行转发,经过试验,最终发现是可行性的。

      下面介绍如何进行打包编译,分为Mac环境跟Win环境打包编译。

       一、编译打包

       Win环境下打包编译:

set GOARCH=amd64 
set GOOS=linux
go build

      Mac环境下打包编译:

go env -w GOARCH=amd64
go env -w GOOS=linux
go build

这样编译后项目根目录下就会生成一个二进制文件

123.png

编译打包后,记得把环境改回原来的,不然本地调试可能报错

      win:

set GOOS=windows

      mac:

go env -w GOOS=darwin

这样我们就在本地完成编译打包。

     二、Centos环境运行

     上传我们刚刚打包编译好的二进制文件,并赋予777权限,命令如下

chmod 777 personApi

     运行二进制文件

./personApi

正常运行是没报错,然后可以通过ip地址:端口进行访问。

     但是如果我们关闭SSH连接工具,就不能访问了,所以我们可以让后台守护进程运行,命令行如下:

nohup ./personApi&

     并通过以下命令行看看是否运行成功:

netstat -ntlp

     如果想终止运行可以通过上面的命令行查看进程占用哪个端口,并输入以下命令行进行终止:

kill PID

      三、使用Nginx进行转发端口

      前提步骤,注册个域名并解析到当前服务器IP,并申请证书提前下到目录下。

      然后我们打开Nginx配置文件,在server后面再加入一段server配置,请将下图到域名以及证书目录改成自己到

server {
    listen       80;
    listen       443 ssl;
    server_name  .test.com;

    charset utf-8;
    access_log  /www/wwwroot/test.com.access.log;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #HTTP_TO_HTTPS_START
    if ($server_port !~ 443){
        rewrite ^(/.*)$ https://$host$1 permanent;
    }
    #HTTP_TO_HTTPS_END
    ssl_certificate    /www/wwwroot/test.com.pem;
    ssl_certificate_key    /www/wwwroot/test.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    error_page 497  https://$host$request_uri;

    #SSL-END

    location /(css|js|fonts|img)/ {
        access_log off;
        expires 1d;

        root "/www/wwwroot/test.com/api/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:9999;
    }
}

配置完之后,请重启Nginx,然后直接通过域名访问,成功打开就可以了。