前情提要

卧*,明明就是刚开始,哪儿来的前情...
不!这个还是可以有的。作为众多猿中的一只,总会想着有一个属于自己的博客网站的,N久之前就尝试着自己从0开始搭建一个自己博客(害,别提了,有点费劲)。经过不记得多久的努力,终于,我成功了!我成功的做好了首页..你别说,这玩意光想想好像没有多少东西,但是真要开始实现会发现权限、文章系统(什么标签啊分类啊)、页面设计(不会,还得从网上借鉴)等等乱七八糟的好多东西,最主要的就是可能费了好大功夫终于做好了,自己看一眼,我去~真TM丑!!!然后上次我就放弃了。过了不记得多久到了最近,突然心血来潮又想到了这事,网上看一看有没有大神的实现。嘿!看来这玩意没有谁会完全自己实现啊!但是不经意间,对,就是不经意间发现了Halo,Github逛一逛,官网逛一逛,最终我被其简单的搭建方式和贼好看的主题吸引了,于是决定动手搭建一个。

ps:其实自己还想集成一些其他博客之外的东西,比如会看到或学到一些有英吹思婷的东西,可以做到自己的网站上。但是权衡一下还是觉得好像先用Halo搭一个更合适,毕竟以后可以自己在作者的基础上进行更新,加入自己的东西。[手动滑稽]

开始搭建

服务器

云服务器嘛,公司用的是阿里云,自己用着也比较习惯,搞一台!biu~ 于是就有了一台CentOS 7.3系统的云服务器。有了服务器之后,需要去安全组中按需增加端口访问规则(80,必须;443,如果有SSL;3306,如果外网访问数据库...)。

系统环境

docker

看了一下就用了docker(别问怎么看的)。biu~

yum update
yum install -y docker
# 查看版本,可选
docker version
systemctl start docker

MySQL(可不安装)

Halo默认使用H2数据库的,但是如果大家用Mysql比较多也比较熟建议安装并使用。biu~

# 个人选择了mysql5.7版本
docker pull mysql:5.7
# 设置自己的root密码,要记下,后面使用
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD --name mysql -v ~/mysql:/var/lib/mysql mysql:5.7

# 与mysql容器进行交互
docker exec -it mysql /bin/bash
# 连接数据库
mysql -uroot -p
# 输入自己设置的密码,成功连接数据库
# 创建数据库halodb(可自行更改,但是要和后面的配置文件中的数据库保持一致)

Halo

按照Halo安装文档安装一下,这里面有一个配置文件,按个人情况选择使用H2数据库还是MySQL。

# 拉取镜像
docker pull ruibaby/halo
# 下载配置文件
curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
# 编辑配置文件
# vim ~/.halo/application.yaml

# 使用H2数据库启动
docker run -d --name halo -p 8090:8090  -v ~/.halo:/root/.halo docker.io/ruibaby/halo

# 使用MySQL数据库启动,这里--link让我们在配置文件中的数据库连接地址可以写成mysql:3306
docker run -d --name halo -p 8090:8090 --link mysql:mysql -v ~/.halo:/root/.halo docker.io/ruibaby/halo

这时如果整个过程都成功进行,那么恭喜,这时候Halo已经搭建好了。但是时候这个革命尚未成功,因为还无法外网访问。

Nginx

使用Nginx进行转发,使得外网访问ip或者域名可以直接访问到8090。

yum install -y nginx
systemctl start nginx.service
vim /etc/nginx/nginx.conf

把80端口的监听中的部分更新为下方配置。

location / {
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-Proto $scheme;
            	proxy_set_header X-Real-IP $remote_addr;
            	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            	proxy_pass http://localhost:8090;
        }

然后保存文件,reload一下nginx。

service nginx reload

此时,就可以在浏览器中敲入ip地址进行访问了。

其他相关

主题

可以在官网上的主题仓库找一套自己喜欢的,然后上传、更换、配置。

域名&备案&SSL

有了阿里云服务器之后可以直接在阿里云上面购买免费的SSL证书,然后在服务器上配置一下Nginx进而实现https以及http自动跳转至https等。
关于备案,阿里云上面专门有一套帮助备案的系统,所以可以直接在上面按照指示进行就好了。

CDN加速

如果说站内你要放一些图片或者其他比较大的资源文件,还是建议使用CDN加速的。

Q.E.D.