快速部署Halo,拥有自己的个人网站 Halo技术
- 创建时间:2023-02-27 / 最新修改时间:2023-02-27 09:24:04
- 281985
- 0
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的安装向导. 主要是配置一些网站的信息和管理员的用户密码. 完事后就可以使用啦.