Linux系统部署Golang版的博客程序过程

这段时间对Golang的学习,根据自己的需要对博客进行了简单的一个改版,这次改版也是参照了网友的布局改造,让博客更简单,快速。其实更重要的是使用Golang来编写,当然现阶段也只是完成了前端的渲染效果,后台还在完善中。

不得不说部署Golang程序比起Python容易多了,不再像以为部署Python那样安装依赖环境。Go直接打包成系统相应环境的包加个执行权限即可跑起来。

系统:CentOS 7.3

为了方便使用了Nginx来代理把请求转发到后端的Golnag中。

因为在Windows环境中编写的代码,在完成后需要打包成Linux环境的相应格式,在Windows下的一个简单bat文件:执行会同时打包成Windows环境和Linux环境的文件;

@echo off

echo building Windows64 program
SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
go build

echo building Linux 64 program
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build

项目大致结构:

E:\GolangProjects\blog58>tree
卷 新加卷 的文件夹 PATH 列表
卷序列号为 3CB9-B637
E:.
├─.idea
│  └─inspectionProfiles
├─static
│  ├─css
│  ├─img
│  └─js
└─templates

其实部署需要一个编译后的文件和静态资源,就是:执行文件、Static目录、Templates目录,还有就是配置文件,xml文件等;

把这几个目录和执行文件上传到Linux中,解压到相应的目录,再给执行文件加个可执行权限即可。

[root@VM_0_5_centos blog58]# ls
blog58  nohup.out  static  templates

启动服务:

nohup ./blog58 & >/dev/null 2>&1

Nginx的配置参考了beego的:我这里使用了HTTPS

server {
    listen 80 default_server;
    server_name _;
    return 444;
}
server {
  listen       80;
  server_name  www.58jb.com 58jb.com;
  return 301 https://www.58jb.com$request_uri;
}

server {
    # SSL Configuration
    listen 443 ssl http2;
    ssl_session_timeout 1d;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/nginx/cert/214798587930532.pem;
    ssl_certificate_key /etc/nginx/cert/214798587930532.key;
    add_header Strict-Transport-Security "max-age=31536000";
    charset utf-8;
    access_log /var/log/nginx/access.log main;

    location /static/ {
        access_log off;
        expires 1d;
        root "/blog58/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;
    }
}