快速部署Halo,拥有自己的个人网站 Halo技术
  • 创建时间:2023-02-27 / 最新修改时间:2023-02-27 09:24:04
  • 281810
  • 0
转载请注明本文出处:http://limpire.cn/artifact/heap/web/215.html


Hello Halo

网站刚刚建设起来。第一篇文章当然是写如何部署Halo.

环境

  • 腾讯云轻量应用服务器 CPU: 1核 内存: 2GB
  • 系统 Ubuntu 18.04
  • 腾讯云数据库 Mysql5.7

系统环境的准备

操作系统

云服务器的镜像选择 Ubuntu 18.04

数据库

由于我的数据库用的是腾讯的mysql(10年前特价买的)所以这里就不演示安装数据库了。 首先我们在Mysql中创建一个新的数据库,数据库名为halo

create database halo character set utf8mb4 collate utf8mb4_bin;

开始部署Halo

部署Halo有两种方式,一种直接部署在ubuntu系统上,一种使用它的Docker容器部署。 为了后期的维护方便和省去安装JDK等的麻烦,我选择了第二种方式,在Docker容器上部署。

所以第一步我们得要先安装Docker。

安装Docker

连接ssh打开终端。输入以下命令:

  • 刷新下仓库源 sudo apt-get update
  • 清理下旧版本docker (如果有,一般是没有的。哈)
    sudo apt-get remove docker docker-engine docker.io containerd runc
    
  • 安装一下所以组件
sudo apt-get update

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  • 添加Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  • 添加Docker apt源
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 安装完毕后输入 docker version

    输出: Client: Docker Engine - Community Version: 20.10.6 API version: 1.41 Go version: go1.13.15 Git commit: 370c289 Built: Fri Apr 9 22:46:01 2021 OS/Arch: linux/amd64 Context: default Experimental: true

到此,安装Docker完毕!

部署 Halo

搞定完Docker后接着就是到Halo

首先在用户目录下创建一个文件夹

mkdir ~/.halo && cd ~/.halo

这个文件夹将来会存放网站的配置文件(application.yaml 其实这是SpringBoot的配置文件),上传的资源,静态资源,模板主题等。反正就是可以供你修改和查看的东西。

下载官方application.yaml模板

wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

编辑 application.yaml

vim application.yaml

# 如果没有vim可以先执行 sudo apt-get -y install vim
配置文件如下:
server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:
    # MySQL database configuration.
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://数据库地址:3306/halo?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: xxxxx #替换你的数据库用户名
    password: xxxxx #替换你的数据库密码

halo:

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

  # memory or level
  cache: memory

上面是最基本配置,详细可以看官网的配置说明:参考配置

拉取Docker容器

拉取Halo官方给我们准备好的容器

sudo docker pull halohub/halo

启动容器

docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=always halohub/halo

解析一下上面重点参数

  • -p 映射的端口 主机端口:容器端口 其中容器端口要和application.yaml中配置的一样.
  • -v 目录的映射: 主机路径:/root/.halo 前者就是我们自己mkdir的目录,后者是不能修改的.

启动成功后,这时候已经可以使用 http://ip:8090 来访问Halo的安装程序了.当然,正常来说我们还需要一个域名,请看下面的反向代理.

反向代理

方向代理的作用呢,这里就只是为了绑定域名. Halo的后端使用的是SpringBoot,而SpringBoot内置了Tomcat. 一般来说我们只把SpringBoot当成一个容器而已.前端还是需要Apache和 Nginx等的支持.

使用 Nginx 进行反向代理

安装Nginx

sudo apt-get install nginx

检查下是否安装成功

nginx -v

配置反代文件

找到nginx的配置文件位置,然后cd进去.

/etc/nginx 这个是配置的主目录 /etc/nginx/conf.d 这个使我们需要cd进去的.

cd /etc/nginx/conf.d

新建配置文件

sudo vim limpire-cn-80.conf

文件名可以自定义,我一般是用域名加端口号. 配置内容如下:

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name limpire.cn www.linpire.cn;
  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;
  }
}
  • upstaream halo: halo为自定义的名字
  • server 127.0.0.1:8090 :其中 8090 的端口号请注意是否更启动Docker容器时候的缩主机的端口号是否一致.
  • server_name :请修改成自己的域名,这样才能绑定域名.
  • proxy_pass: 请改成upstream 后面跟着的名字

重启一下nginx

sudo nginx -s reload

Enjoy

配置反向代理后,直接使用域名访问就能进入Halo的安装向导. 主要是配置一些网站的信息和管理员的用户密码. 完事后就可以使用啦.


请说:

昵称 Email

评论:

2024-01-16 10:09:19

写得不错,支持!👍👍👍

blueBoy

***eBoy@google.com

2023-03-22 08:18:11

春风

***F@163.com

2023-02-28 02:49:21

😁🤐 正好需要

小米

***556350@qq.com

吃不起海鲜就买海鲜味的酱油

回车换行很爽,代表着一个段落或者一个小结的完成,打印出来之后就是一个可触摸的成品.围着这种意境,一起来技术性打酱油.

文章列表
分类目录
友情链接