前言

作为一名开发人员,大家都喜欢拥有自己的博客,没事用来记录记录自己的开发经验和遇到的错误,是很不错的选择。
目前有很多小伙伴会使用Hexo+github或者Hexo+gitee来进行搭建,但是会出现一些问题,想改个文章的标题都需要重新提交一次git,并且有时候更新速度可能会很慢。
所以出个教程教大家如何搭建自己的博客。

正文

需要的环境:

  • 一台云主机:用于部署我们的服务。
  • docker:用来拉取远程仓库中的博客源码。
  • nginx:用来代理我们的域名到真正的端口。
  • 一个合适的域名:用来访问我们的博客,不想要域名的小伙伴也可以直接使用ip地址+端口来进行访问。

云主机可以在阿里云进行购买,下面附上购买连接,如果是学生党并且是阿里云新人,大家可以很便宜的买到一台自己的服务器!阿里云服务器购买链接

购买完服务器后,就可以使用终端工具进行登录了,输入自己的服务器ip地址,用户名,密码,即可登录。

登录服务器

安利一个ui超级好看的终端工具Termius~

下面是截图 美美的:

image.png

  • 第一步 :点击如下所示的按钮:
    image.png
  • 第二步:在弹出来的页面中填写相关信息。
    image.png
    主要填写的就是
    Address:你服务器的ip地址。
    Username:登录的用户名,一般是root。
    Password:服务器对应的密码。
    再就是可以在下面选择一下主题。

然后点击右上角的save就完成了服务器信息的保存。

接下来我们双击如下图的服务器块就可以进行连接了:
image.png

安装docker

登录服务器后,我们需要进行docker的安装。

  • 更新yum
sudo yum update -y
  • 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum缓存
yum makecache fast
  • 安装Docker
yum install docker-ce docker-ce-cli containerd.io
  • 启动Docker
systemctl start docker

因为有的时候下载会很慢,所以我们需要配置一下镜像下载源:

vim /etc/docker/daemon.json

复制下面的json串进去即可。

{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}
  • 配置结束后,重启服务
service docker restart

检测是否安装成功,输入如下命令:

docker version

安装成功后会出现Docker的版本信息,如下图所示:
image.png

安装nginx

第一步:安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

第二步:安装PCRE

cd /usr/local/src/ 
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

解压安装包:

tar zxvf pcre-8.35.tar.gz

进入安装包目录:

cd pcre-8.35

编译安装:

./configure
make && make install

检测是否安装成功:

pcre-config --version

如果安装成功,则会出现版本号。

第三步:安装Nginx

下载Nginx安装包:

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.2.tar.gz

解压安装包:

tar zxvf nginx-1.6.2.tar.gz

进入安装包目录:

cd nginx-1.6.2

编译安装:

#这里的目录都可自定义
./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
#编译
make
#安装
make install

查看Nginx版本信息

/usr/local/webserver/nginx/sbin/nginx -v

如果安装成功,则会打印Nginx的版本号。

Nginx添加软链接:

ln -s /usr/local/webserver/nginx/sbin/nginx /usr/bin/nginx

验证是否创建成功:

nginx -t

如果创建成功,则会出现Nginx的检查信息。

拉取博客,安装博客

我们使用的是Halo博客,这里我将Halo的官方部署文档复制一份过来,方便大家参考,并会附上原文链接。
原文链接:https://halo.run/archives/install-with-docker.html

自定义配置文件
考虑到部分用户的需要,可能需要自定义比如端口等设置项,我们提供了公共的配置文件,并且该配置文件是完全独立于安装包的。当然,你也可以使用安装包内的默认配置文件,但是安装包内的配置文件是不可修改的。请注意:配置文件的路径为 ~/.halo/application.yaml。

  • 下载配置文件到 ~/.halo 目录
    curl -o ~/.halo/application.yaml --create-dirs https://dl.halo.run/config/application-template.yaml
    修改配置文件
    完成上一步操作,我们就可以自己配置 Halo 的运行端口,以及数据库相关的配置了。

  • 使用 Vim 工具修改配置文件
    vim ~/.halo/application.yaml
    打开之后我们可以看到:


server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:

    # H2 database configuration.
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:~/.halo/db/halo
    username: admin
    password: 123456

    # MySQL database configuration.
#    driver-class-name: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
#    username: root
#    password: 123456

  # H2 database console configuration.
  h2:
    console:
      settings:
        web-allow-others: false
      path: /h2-console
      enabled: false

halo:

  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level
  cache: memory

如果需要自定义端口,修改 server 节点下的 port 即可。
默认使用的是 H2 Database 数据库,这是一种嵌入式的数据库,使用起来非常方便。需要注意的是,默认的用户名和密码为 admin 和 123456,这个是自定义的,最好将其修改,并妥善保存。
如果需要使用 MySQL 数据库,需要将 H2 Database 的所有相关配置都注释掉,并取消 MySQL 的相关配置。另外,MySQL 的默认数据库名为 halodb,请自行配置 MySQL 并创建数据库,以及修改配置文件中的用户名和密码。
h2 节点为 H2 Database 的控制台配置,默认是关闭的,如需使用请将 h2.console.settings.web-allow-others 和 h2.console.enabled 设置为 true。控制台地址即为 域名/h2-console。注意:非紧急情况,不建议开启该配置。
server.compression.enabled 为 Gzip 功能配置,如有需要请设置为 true,需要注意的是,如果你使用 Nginx 或者 Caddy 进行反向代理的话,默认是有开启 Gzip 的,所以这里可以保持默认。
halo.admin-path 为后台管理的根路径,默认为 admin,如果你害怕别人猜出来默认的 admin(就算猜出来,对方什么都做不了),请自行设置。仅支持一级,且前后不带 /。
halo.cache 为系统缓存形式的配置,可选 memory 和 level,默认为 memory,将数据缓存到内存,使用该方式的话,重启应用会导致缓存清空。如果选择 level,则会将数据缓存到磁盘,重启不会清空缓存。如不知道如何选择,建议默认。
拉取最新 Halo 镜像
sudo docker pull ruibaby/halo
创建容器并运行
docker run --rm -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo ruibaby/halo
--rm:停止之后自动删除容器。
--name:容器名。
-p:占用端口,前者为宿主机端口,后者为 Halo 的运行端口,可在 application.yaml 配置。
-v:目录映射,一般不要修改。
完成以上操作即可通过 ip:端口 访问了。不过在此之前,最好先完成后续操作,我们还需要让域名也可以访问到 Halo,请继续看 配置域名访问。

更新 Halo 版本

  • 停止容器
    sudo docker stop halo

  • 拉取最新的 Halo 镜像
    sudo docker pull ruibaby/halo

  • 创建容器
    docker run --rm -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo ruibaby/halo

使用Nginx代理域名到博客端口

我们知道,域名的DNS解析服务只能访问服务器的80端口,但是我们的服务是在8080或者9080这样的端口运行,这样该怎么办呢?
我们可以使用Nginx进行反向代理。

  • 我们现在Nginx的安装目录中的conf文件夹中,找到nginx.conf文件。
  • 使用vim进行文件的编辑。
vim nginx.conf
  • server代码块中编辑以下内容:
    下面是官方的配置,如果小伙伴安装的Nginx版本较低,可以参考我自己的配置
    官方配置:
upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.youdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    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;
  }
}

我自己的配置:

    server {
        listen       80;
	server_name  [你的域名地址];
   	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;
            root   html;
            index  index.html index.htm;
            #proxy_pass /.well-known/pki-validation/fileauth.txt;
        }
    }

到这里就结束啦,快来参考这篇文章搭建自己的播客吧~期待和你们的联动~

结语

能看到最后的小伙伴,可以在下面评论下吗 哈哈哈哈

无所谓啦 不管有没有人看 写就完事了!

Peace&Love

Q.E.D.


Hello welcome to my blog