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;
}
}