一、環境準備
要想在公網訪問你的博客,首先你需要一臺云服務器,也就是租用各大云廠商的服務器,像我就是花68塊買了一年青云的1核2g的服務器,你現在看到的博客就是在這臺服務器上,最好也購買一個專屬的域名。一年十幾就夠了。
二、安裝docker
因為我們是用docker部署solo博客。所以我們首先要安裝docker,關于docker的介紹請各位同學自行百度。
配置yum源
1
2
3
4
|
sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ http: //mirrors .aliyun.com /docker-ce/linux/centos/docker-ce .repo |
安裝docker
1
|
sudo yum install -y docker-ce docker-ce-cli containerd.io |
啟動
1
|
systemctl enable docker --now |
配置加速
這里額外添加了docker的生產環境核心配置cgroup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon .json <<- 'eof' { "registry-mirrors" : [ "https://82m9ar63.mirror.aliyuncs.com" ], "exec-opts" : [ "native.cgroupdriver=systemd" ], "log-driver" : "json-file" , "log-opts" : { "max-size" : "100m" }, "storage-driver" : "overlay2" } eof sudo systemctl daemon-reload sudo systemctl restart docker |
測試:
輸入 docker version 看到如下顯示就安裝成功了
三、安裝mysql主從數據庫
我們前面已經安裝了docker,這里我們直接用命令一鍵部署mysql數據庫(筆者部署的主從的mysql)
3.1、mysql環境準備
1
2
|
mkdir -p /data/master/data/mysql-master && mkdir -p /data/master/data/mysql-slave ##數據目錄 mkdir -p /data/master/master && mkdir -p /data/master/slave ##配置目錄 |
往配置目錄分別放兩個配置文件,master.cnf slave.cnf 內容分別如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@website master] # cat master/master.cnf [mysqld] log-bin=mysql-bin binlog_format=row server- id =1 log-error= /var/log/mysqld .log [root@website master] # cat slave/slave.cnf [mysqld] log-bin=mysql-bin binlog_format=row server- id =2 log-error= /var/log/mysqld .log |
3.2、啟動mysql主庫從庫
注意:這里的密碼設置為123456,將mysql的默認數據存放目錄映射給了我的/data/master/data
1
2
|
docker run -itd --name mysql-master - v /data/master/data/mysql-master : /var/lib/mysql - v /data/master/master : /etc/mysql/conf .d -e mysql_root_password=123456 -p 3306:3306 mysql:5.6 docker run -itd --name mysql-slave - v /data/master/data/mysql-slave : /var/lib/mysql - v /data/master/slave : /etc/mysql/conf .d -e mysql_root_password=123456 -p 3316:3306 mysql:5.6 |
3.3、登陸mysql主庫
1
2
3
4
5
6
7
8
9
|
docker ps -a ## 查看兩個mysql數據庫的狀態是否都是up docker exec -it mysql-master /bin/bash mysql -u root -p123456 ## 登陸mysql show variables like 'log_bin' ; ##查看bin-log的開啟狀態,如果是on代表開啟成功,我們主從同步是一定要開binlog show master status; ## 查詢出的file名字與 position要記一下,后面配置從庫會用到 ## 創建用戶并賦權 create user 'bakup' @ '%' identified by '123456' ; grant all on *.* to 'bakup' @ '%' ; create database solo; |
3.4、登陸mysql從庫
1
2
3
4
5
|
docker exec -it mysql-slave /bin/bash ## 進入從庫 mysql -u root -p123456 ## 登陸mysql change master to master_host= '192.168.1.5' , master_port=3306,master_user= 'bakup' ,master_password= 'bakup' , master_log_file= 'mysql-bin.000001' ,master_log_pos=154; ##配置主從連接 start slave; ## 啟動從庫備份 show slave status\g; ##查看狀態 |
看到兩個yes大功告成!
3.5、主從參數說明
- master_host:主庫的ip地址/服務器地址
- master_port:主庫的端口
- master_user:主庫開放出來的用戶
- master_password:用戶的密碼
- master_log_file:主庫的日志文件,二進制日志文件,進行同步的。就是上面show master status 里面的file
- master_log_pos:上面show master status 里面的position
四、搭建solo博客
前面的準備工作都做完后,就可以開始安裝solo了
docker 啟動solo
1
2
3
4
5
6
7
|
docker run --detach --name solo -- env runtime_db= "mysql" -- env jdbc_username= "root" -- env jdbc_password= "123456" --publish 8080:8080 --link mysql-master:mysql-master -- env jdbc_driver= "com.mysql.cj.jdbc.driver" -- env jdbc_url= "jdbc:mysql://192.168.1.5:3306/solo?useunicode=yes&characterencoding=utf-8&usessl=false&servertimezone=utc" b3log /solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=8080 docker logs solo ## 查看容器solo的日志 [info ]-[2021-11-12 18:30:32]-[org.b3log.solo.server:254]: solo is booting [ver=4.3.1, os=linux, isdocker= true , injar= false , luteavailable= false , pid=1, runtimedatabase=mysql, runtimemode=production, jdbc.username=root, jdbc.url=jdbc:mysql: //192 .168.1.5:3306 /solo ?useunicode= yes &characterencoding=utf-8&usessl= false &servertimezone=utc] [info ]-[2021-11-12 18:30:34]-[org.b3log.solo.service.initservice:177]: it's your first time setup solo, initialize tables in database [mysql] [warn ]-[2021-11-12 18:30:36]-[org.b3log.solo.service.initservice:150]: solo has not been initialized, please open your browser to init solo |
當出現solo has not been initialized, please open your browser to init solo,代表solo安裝成功,但是未進行初始化,可以看到我們前面啟動的端口是8080,我們用域名加端口感覺很low,所以我們用nginx去轉發一下。
五、nginx實現反向代理solo博客
關于nginx的安裝,在這里就不在贅述,同學們可以去百度一哈
上配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
http { sendfile on; include mime.types; default_type application /octet-stream ; keepalive_timeout 65; gzip on; upstream backend { server localhost:8080; } server { listen 80; server_name yunxue521. top ; location / { proxy_pass http: //backend $request_uri; proxy_set_header host $http_host; proxy_set_header x-real-ip $remote_addr; } } |
可以看到我們定義了一個backend的地址指向我們本機的8080端口,nginx監聽80端口,當我們去訪問80端口時,就會都轉發到8080端口,進而實現端口的轉發!
六、成果展示
到此這篇關于docker實現從零開始搭建solo個人博客的文章就介紹到這了,更多相關docker實現從零開始搭建solo個人博客內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/weixin_43143310/article/details/121309033