golang前后端部署到linux服务器

后端部署

后端代码部署有两种方式:在本地生成二进制文件,上传到Linux服务器运行;其二, linux搭建好环境,将代码上传,然后对代码进行编译,运行即可。

方法一 ----- 本地生成二进制文件
// cmd 到 main.go 文件目录下
set GOARCH=amd64
set GOOS=linux
go build main.go  //会生成一个没有后缀的二进制文件 main
// 将该文件放入linux系统某个文件夹下
// 赋予权限
chmod 777 main
// 最后执行 ./main 就行了。
// 如果想让项目在后台执行:执行 nohup ./main & ,这样就可以程序在后台运行了
方法二 ----- 代码直接上传Linux

第一步 — 搭建相应的代码环境

使用二进制安装包安装或者源码安装,首先下载安装包,wget + 地址 下载,配置环境变量,重新载入环境变量 ~/.bashrc。
源码安装
从源码安装,首先要进行编译。Go 1.5实现了bootstrapping,所以编译1.5以后的版本和编译1.5以前的版本会略有不同。bootstrapping是编译器领域的一个术语,中文翻译为自举或自展,通俗地讲“用要编译的目标语言编写其编译器(汇编器)”。Go1.5开始编译器和运行时完全用Go语言编写(还有少量汇编);go1.4是最后一个用C编写工具链的发布。

Go 1.5开始编译器和运行时用go自身编写,要编译它们,首先要安装go编译器。all.bash 编译脚本会在GOROOT_BOOTSTRAP环境变量中查找一个已经存在的go tool chain,实际上就是要有一个编译好的bin/go程序,$GOROOT_BOOTSTRAP/bin/go应该是go二进制命令。有很多选择,可以在官网(https://golang.org/dl/)下载go发布包;也可以用go1.4源码编译,也就是按照上面的步骤编译go1.4,然后再去编译更高版本的go。

二进制文件安装

// 下载安装包
wget -c https://studygolang.com/dl/golang/go1.10.3.linux-amd64.tar.gz
// 解压到/usr/local
tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz 
// 配置环境变量
vi /etc/profile
// 在文件末尾添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
// 生效环境变量
source /etc/profile
// 验证
go version
go version go1.10.3 linux/amd64
// 安装成功

第二步 — 上传代码编译
上传后端go的代码,如果有vendor 则不需要重新引包,然后路径要跟本地的一样。 可直接打包上传,或通过 gitlab。上传后对代码进行编译,go build -o xx main.go,编译完成后进行部署,使用nohup ./xx 2>&1 &使程序在后台跑。

前端部署

前端调用后端接口,使用nginx做转发,解决前后端的跨域问题。

nginx环境搭建

    wget http://nginx.org/download/nginx-1.11.2.tar.gz  # 下载安装包
    tar -xzvf nginx-1.11.2.tar.gz -C /usr/src  # 解压
    # 安装依赖
    sudo apt-get install gcc libpcre3 libpcre3-dev openssl libssl-dev libssl0.9.8 perl libperl-dev
    cd /usr/src/nginx-1.11.2
    # 以下是一行。。用于生成makefile。如果需要添加第三方模块,使用--add-module=/path/module1的方法编译
    ./configure --prefix=/usr/local/nginx --with-ipv6 --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_perl_module --with-mail --with-mail_ssl_module
    # make是生成在objs目录中,make install则安装到上一步prefix所示的目录中
    make && make install  # 或者分开执行
    # 没有错误出现的话,就可以进入nginx安装目录(/usr/local/nginx)配置。
    #配置完conf之后启动nginx

配置文件摆上

前端生成静态文件

# 前端在本地生成静态文件
npm run build

然后将dist静态文件放到nginx的html文件夹中,编辑nginx配置文件conf,重启nginx。

conf 配置文件示例:

server{
            # 服务器监听端口
            listen 80;
            # 访问域名
            server_name www.example.com
            # 编码格式,如果网页编码与此设置不同,则将被自动转码,覆盖全局的编码。。
            # charset koi8-r;
            # 设置虚拟主机的访问日志
            # access_log logs/www.example.com.access.log main;
            
            # 对URL进行匹配,访问server_name的时候进入这里
            location / {
                # 网页根目录,“当前目录”在nginx的安装目录,即/usr/local/nginx,可以用绝对路径或相对路径,以下的html是相对安装目录
                root html;
                # 默认的首页文件(有先后顺序),访问www.example.com则寻找root下的index.html返回,如果找不到,就找index.htm
                index index.html index.htm;
            }
            
            # 设置错误代码对应的错误页面
            # error_page 404 /404.html
            # error_page 500 502 503 504 /50x.html
            
            # 略去配置代理和HTTPS Server
        }

你可能感兴趣的:(golang前后端部署到linux服务器)