介绍
官网 Halo
一款现代化的开源博客/CMS系统
使用dockercompose 快速搭建
搭建环境
- centos7
- docker
- docker-compose
安装docker
- 先在centos7中安装gcc
1.先在centos7中安装gcc
yum -y install gcc
2.安装gcc-c++
yum -y install gcc-c++
- 下载docker引擎前的配置
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 更新yum软件包索引
yum makecache fast
- 安装docker引擎
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动docker
sudo systemctl start docker
- 测试
docker version
安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
编写docker-compose.yml
创建 Halo + MySQL + Redis 的实例
在系统任意位置创建一个文件夹,此文档以 ~/halo-app
为例
mkdir ~/halo-app && cd ~/halo-app
安装mysql5.7
配置挂载目录
- 新建/mydata/mysql/log文件夹
- 新建/mydata/mysql/data文件夹
- 新建/mydata/mysql/conf文件夹
- 然后进入conf
配置字符集 vim my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
启动容器,MYSQL_ROOT_PASSWORD密码请自己填入
docker run -d -p 3306:3306 --privileged=true -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=密码 -e MYSQL_DATABASE=halodb --name mysql mysql:5.7
编写docker-compose.yaml
vim docker-compose.yaml
yaml 内容如下:
填入数据库的密码
version: "3"
services:
halo:
image: halohub/halo:2.10
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- ./halo2:/root/.halo2
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halodb
- --spring.r2dbc.username=root
- --spring.r2dbc.password=
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
# 端口号 默认8090
- --server.port=8090
启动 Halo 服务
docker-compose up -d
然后在浏览器进入ip/console/ 地址就可以对博客初始化了
配置nginx
首先需要随便创建一个nginx的容器实例
docker run -p 80:80 --name nginxDemo nginx
在主机/mydata/下创建nginx目录
mkdir nginx & cd nginx
然后把nginxDemo容器内的conf目录拷贝到主机下
docker cp nginxDemo:/etc/nginx nginx
把考出来的nginx目录重新命名为conf
mv nginx conf
把nginxDemo容器删除
docker rm -f nginxDemo
正式创建nginx实例
docker run -p 80:80 --name nginx --privileged=true \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
在conf/conf.d目录中 复制一份nginx.conf
cp default.conf blog_nginx.conf
修改 blog_nginx.conf, 让80端口转发8090端口
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
# 输入自己的ip地址
proxy_pass http://ip:8090;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
重启nginx
docker restart nginx
可以直接使用ip地址访问自己的博客了