[图片] 博客搭建教程(go+vue+docker) 由于同步社区时,使用外链会产生图片无法显示的情况,请参见原网页 背景 作为搭建过无数博客的老司机,为啥又要折腾新轮子? Hexo, jekll 等静态博客可玩性不高,主要是看前端功底。 前后端分离、golang、docker、vue、CI/CD 等还是能玩一玩的。 ..

博客搭建教程 (go+vue+docker)

博客搭建教程(go+vue+docker)

由于同步社区时,使用外链会产生图片无法显示的情况,请参见原网页

背景

作为搭建过无数博客的老司机,为啥又要折腾新轮子?

要求

Docker

作为目前较成熟的虚拟化方式,推荐使用Docker安装,博主被赞助的云服务器为腾讯云、OS 版本为CentOS Linux release 7.6.1810 (Core) , 推荐使用 7 以上版本。

安装 docker

设置 repo 镜像

echo "OPTIONS='--registry-mirror=https://mirror.ccs.tencentyun.com'" >> /etc/sysconfig/docker

阿里云请自行谷歌配置、顶配 VPN 用户可无视该条。

开机启动及测试

由于 CentOS7 推荐使用 systemctl 来管理开机及守护进程,故此推荐使用 systemctl。centos6 的小伙伴请使用 service 或自行启动。
sudo systemctl enable docker 开机启动 docker 服务

sudo systemctl daemon-reload 重新加载 systemd 程序的配置文件 有 unit 的配置文件发生变化时需要执行 daemon-reload 子命令

sudo systemctl start docker 开机启动 docker 服务

docker -v 或systemctl status docker 能正常显示即安装成功

Nginx

同样推荐使用 yum 安装,yum 大法好, 请注意 yum 是否安装 fast-mirror 插件,大厂云服务器都已提前安装 😤。

yum -y install nginx

sudo systemctl enable nginx

sudo systemctl start nginx

测试服务

curl 127.0.0.1

Nginx正常

Mysql/MariaDB

CentOS7 默认的 MySQL 版本为 MariaDB, 未安装小伙伴建议安装MariaDB, 已安装Mysql小伙伴请直接跳至数据库配置,安装了 MySQL 的小伙伴请不要安装MariaDB,此处有深坑。

安装 MariaDB

yum 安装

yum -y install mariadb-server

sudo systemctl enable mariadb

sudo systemctl start mariadb

docker 安装

docker pull mariadb

mkdir -p /data/mariadb MySQL 数据卷文件夹

docker run -d -p 3306:3306 --name mariadb -v /data/mariadb/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mariadb:latest

数据库测试及设置

mysql -h127.0.0.1 -uroot -p123456 登陆数据库服务(docker 方式安装必须加-h 选项)

创建 pipe 表(名称必须一致)

CREATE DATABASE IF NOT EXISTS pipe default character set utf8mb4 COLLATE utf8mb4_general_ci;

配置域名

打开腾讯云或者阿里云的域名解析服务页面,新增以下两条 A 记录

前台 A 记录(二级域名随意,指向服务器公网 IP)

后台 A 记录(同上,这里的 ip 我随意编的)

启动项目

到目前为止你的所有准备工作已经完成。接下来只需设置反向代理和启动项目主程序即可。

设置反向代理

由于该项目的前后端部署在同一台服务器上,故此需要 nginx 设置反向代理来区分前后端。
vim /etc/nginx/conf.d/pipe.conf

upstream pipe {
    server localhost:5897; # 反向代理端口(如有冲突可改成其他值,但必须和下一步的docker容器启动命令中的端口映射一致)
}
server {
    listen 80; # 监听端口
    server_name admin.xxx.xxx; # 博客后台管理域名

    location / {
        proxy_pass http://pipe$request_uri;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  10m;
    }
}
server {
    listen 80;
    server_name blog.xxx.xxx; # 博客首页域名

    location / {
        proxy_pass http://pipe/blogs/xxx/;  # 注意这里的xxx必须和你的github用户名一致,使用github的oauth,否则前端页面会报错🤣
    }
}

sudo nginx -t

sudo systemctl reolad nginx

启动主程序

docker run --detach --name pipe --network=host \
    b3log/pipe --mysql="root:123456@(127.0.0.1:3306)/pipe?charset=utf8mb4&parseTime=True&loc=Local" --runtime_mode=prod --port=5897 --server=http://admin.xxx.xxx
  1. MySQL 参数只要能正常访问即可,如果 MySQL 服务不在本机,可尝试修改项目代码中的 pipe.json 文件
  2. port 值为 nginx 配置中反向代理配置的端口,简单的 docker 端口映射。
  3. server 的值为后端域名,修改请慎重 😇

网站设置

进入后台

在浏览器中输入管理后台地址,进行基本的配置,注意此处需要你的 GitHub 账号做 OAuth 认证

后台

访问前台

前台

结束语

参考资料

Docker从入门到放弃

Pipe 官网

5 回帖
请输入回帖内容...
  • csfwff

    doge 图片全挂了

  • limhu

    不会吧,我这挺好的,还是七牛的图床

  • Sierra

    WX201908121047562x.png
    图片确实挂了

  • limhu

    我看看是不是社区的问题 ~同步到社区估计不能用外链?

  • yaoqiwood

    图全挂了