Halo博客搭建
这里使用的系统为CentOS
配置为2h2g
扩展服务器的swap交换内存
1.查看磁盘使用情况
free -h
2.添加swap(这里添加4G的交换机内存 8G的话4194304x2就行 16G同理)
dd if=/dev/zero of=/var/swapfile bs=1024 count=4194304
执行完命令后,会进行4G的读写操作,会有一些卡顿
3.对交换文件格式化 并 转换为swap分区
mkswap /var/swapfile
4.挂在并激活分区
swapon /var/swapfile
chmod -R 0600 /var/swapfile
5.查看新swap分区是否正常添加并激活使用
free -h
6.修改fstab配置,设置开机自动挂在该分区
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab
7.查看是否已经使用了交换机内存
top
安装docker、docker-compose
1.安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.添加软件源信息(国内可以用阿里云)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. 更新yum索引列表并安装Docker引擎
sudo yum makecache fast
4.安装docker
sudo yum install docker-ce
5.启动docker 并加入开机自启
systemctl start docker
systemctl enable docker
6.安装docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
7.给文件夹添加权限
chmod +x /usr/local/bin/docker-compose
8.查看docker-compose是否安装
docker-compose --version
使用dokcer方式部署halo网站
docker run -it -d --name halo -p 8090:8090 -v ~/.halo2:/root/.halo2 halohub/halo:2.12
-it:开启输入功能并连接伪终端
-d:后台运行容器
--name:为容器指定一个名称
-p:端口映射,格式为
主机(宿主)端口:容器端口
,可在application.yaml
配置。-v:工作目录映射。形式为:
-v 宿主机路径:/root/.halo2
,后者不能修改。
部署完成后,访问ip:8090端口可访问halo网站初始化界面
使用docker-compose部署halo网站(推荐)
1.创建站点文件夹
mkdir ~/halo && cd ~/halo
2.创建docker-compose配置文件,创建 Halo + MySQL 的实例 。文件内容如下,需修改spring.r2dbc.password
及MYSQL_ROOT_PASSWORD
密码
vi ~/halo/docker-compose.yaml
version: "3"
services:
halo:
image: halohub/halo:2.12
container_name: halo
restart: on-failure:3
depends_on:
halodb:
condition: service_healthy
networks:
halo_network:
volumes:
- ./halo2:/root/.halo2
ports:
- "8090:8090"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
interval: 30s
timeout: 5s
retries: 5
start_period: 30s
command:
- --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
- --spring.r2dbc.username=root
# MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
- --spring.r2dbc.password=o#DwN&JSa56
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
halodb:
image: mysql:8.1.0
container_name: halodb
restart: on-failure:3
networks:
halo_network:
command:
- --default-authentication-plugin=caching_sha2_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --explicit_defaults_for_timestamp=true
volumes:
- ./mysql:/var/lib/mysql
- ./mysqlBackup:/data/mysqlBackup
ports:
- "3306:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
interval: 3s
retries: 5
start_period: 30s
environment:
# 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
- MYSQL_ROOT_PASSWORD=o#DwN&JSa56
- MYSQL_DATABASE=halo
networks:
halo_network:
3.启动halo服务
docker-compose up -d
与 Nginx Proxy Manager 配合使用
1.创建一个目录来存放NPM的docker-compose.yaml文件
mkdir -p ~/data/docker_data/nginxproxymanager
cd ~/data/docker_data/nginxproxymanager
mkdir -p ~/data/docker_data/nginxproxymanager
cd ~/data/docker_data/nginxproxymanager
vi docker-compose.yml
//docker-compose.yaml内容如下:
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # 不建议修改端口
- '81:81' # 可以把冒号左边的 81 端口修改成你服务器上没有被占用的端口
- '443:443' # 不建议修改端口
volumes:
- ./data:/data # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 data 目录,用于存放数据,如果不存在的话,会自动创建
- ./letsencrypt:/etc/letsencrypt # 点号表示当前文件夹,冒号左边的意思是在当前文件夹下创建一个 letsencrypt 目录,用于存放证书,如果不存在的话,会自动创建
2.启动NPM
docker-compose up -d
// -d 表示后台运行
启动完成后访问http://ip:81 ,就可以访问NPM的网页端了
默认登陆的用户名:admin@example.com
密码:changeme
首次登录NMP网页端 会要求更改密码,建议设置复杂一点的密码
3.配置 Halo 的反向代理
点击Proxy Hosts
接着点击 Add Proxy Host ,弹出如下对话框:
以下是一个样例:
因为样例的 NPM 和 Halo 搭建在同一台 VPS 上,所以这边的 IP,图中填的是 172.17.0.1
,为 Docker 容器内部的 IP 地址
可以通过下面的命令查询:
ip addr show docker0
一键申请SSL证书
接着我们来申请一张 SSL 证书,让我们的网站支持 https 访问
如图所示,记得打开强制 SSL,其他四个的功能请自行研究,这边不多做讨论
不出意外,你将成功申请到 SSL 证书,证书会三个月自动续期。
再次点开配置,查看一下,将强制 SSL 打开。
评论区