准备工作 切换到root用户
升级packages Debian系统比较干净,安装常用的软件
1 2 apt update -y apt install wget curl sudo vim git
halo官方要求mysql数据库需要5.7+,8.0需要6RAM以上,推荐就5.7。php和phpmyadmin选最新,其他随意。 默认是使用的H2数据库使用mysql数据库则将H2配置打上注释,将mysql配置注释放开修改username和password为mysql的账号和密码,密码在宝塔数据库界面可查看若在容器中使用数据库,则需要将127.0.0.1换成数据库的容器名,端口为容器内部端口 例:将127.0.0.1:3306换成blog_mysql:3306以下根据个人需求配置: port为halo博客运行的端口
(centos、ubuntu/debian)安装docker 1 2 3 4 5 6 #centos 安装 docker yum -y install docker #ubuntu/debian 安装 docker wget -qO- https://get.docker.com/ | sh #查看 Docker 版本 docker version
安装完成。 启动 Docker 后台服务
启动 Docker 后台服务
开机自动启动
1 systemctl enable docker.service
创建halo项目文件夹 1 mkdir ~/.halo && cd ~/.halo
下载示例配置文件到 工作目录 1 wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml
使用 Vim 工具修改配置文件application.yaml vim ~/.halo/application.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 server: port: 8090 # Response data gzip. compression: enabled: true 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://172.17.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
①直接使用本地数据库 进入mysql 创建halodb数据库 1 create database halodb character set utf8mb4 collate utf8mb4_bin;
注意这里官方要求字符集为utf8mb4,排序规则为utf8mb4_bin
拉取最新的 Halo 镜像 1 docker pull halohub/halo:1.6.1
从 1.4.3 开始,Docker 镜像已经转移到 halohub 组织,不再是 ruibaby/halo
创建halo容器并使用本地数据库 1 docker run -itd --net host --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.1
参数说明:
-i, 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用 -t, 分配一个伪tty,一般与 -i 连用 -d,在后台运行容器,并且打印容器id
-name,容器名 -net,指定容器的网络配置 -net=bridge 这个是默认值,连接到默认的网桥。 -net=host 容器使用本地主机的网络,它拥有完全的本地主机接口访问权限 -net=container:NAME_or_ID 让Docker使用其他容器的网路,共享IP和PORT等网络资源,两者进程可以直接通过 lo 环回接口通信 -net=none 容器使用自己的网络,但是不进行网络配置,之后用户可以自行配置 -p, 容器内部端口绑定到指定的主机端口,主机端口:容器端口 -v, 挂载目录,这里是将主机的目录~/.halo挂载到容器的目录/root/.halo上 –restart=unless-stopped,当docker重启时,容器自动启动 docker默认的网络模式是bridge,因此默认容器内无法访问本地127.0.0.1
②利用容器间的关联使用容器中的数据库 拉取mysql5.7镜像 创建并启动mysql容器 1 2 3 4 5 6 7 #docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag -p : 端口映射,使得外部可以通过虚拟机的3306端口访问容器的3306端口 --name :the name of the container -e :the password of the root user -d :后台运行 docker run -p 3306:3306 --name halo_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
-name,容器名-e 设置环境变量,MYSQL_ROOT_PASSWORD为数据库密码,自行修改,用户名默认root 进入容器 1 docker exec -it halo_mysql /bin/bash
进入mysql并创建halo必要数据库halodb,注意字符集和排序规则 1 2 mysql -u root -p create database halodb character set utf8mb4 collate utf8mb4_bin;
拉取最新的 Halo 镜像 1 docker pull halohub/halo:1.6.1
创建halo容器并使其关联数据库容器 1 docker run -itd --name halo --link halo_mysql -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.1
参数说明: -i, 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用 -t, 分配一个伪tty,一般与 -i 连用 -d,在后台运行容器,并且打印容器id
-name,容器名 -link,指定容器间的关联 -p, 容器内部端口绑定到指定的主机端口,主机端口:容器端口 -v, 挂载目录,这里是将主机的目录~/.halo挂载到容器的目录/root/.halo上 -restart=always,当docker重启时,容器自动启动 PS:如果要使用外部数据库管理工具远程管理mysql,则需要用户开启远程登录功能1 2 Grant all privileges on *.* to 'root'@'%' identified by ‘password’with grant option; flush privileges; 刷新权限
. 为 数据库.表 ,root为用户,%代表所有主机 ,password处填写用户密码
注意事项 创建并启动halo容器后,会有20s左右的初始化建表时间,初始化后在数据库halodb当中能看见自动创建的表,若没有表,请检查问题 Halo工作目录的绝对路径为 ~/.halo,这个工作目录是固定的,Halo容器运行后里面通常包含下列目录或文件: db:存放 H2 Database 的物理文件,如果您使用 MySQL 数据库,那么不会存在这个目录 templates/themes:里面包含用户所下载的主题 static:相当于网站的根目录 logs:运行日志目录 application.yaml:配置文件
放行端口80 443 8090!!! 云服务器防火墙和宝塔的防火墙两边都要放行!!!
到这里我们就可以以http://ip:8090的方式访问halo安装程序了 可以先配置好域名访问和SSL再进行安装