账号是:sofiaboutella 密码是:Hy.123...

Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,文章自动推送到社区后可以让很多人看到,产生丰富的交流互动。

image-20260503124504774.png

下面使用docker进行部署,我个人非常的喜欢的使用docker,你看使用其他的容器。比如ctr,podman。

  • 配置docker的加速地址

  • 如果可以上外网,有科学上网的方法那么可以跳过这一步。

[root@Server ~]# cat /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "5"
  },
  "registry-mirrors": [
    "https://docker.sunzishaokao.com",
    "https://docker.1panel.live",
    "https://docker.kejilion.pro",
    "https://docker-registry.nmqu.com"
  ]
}
[root@Server ~]#

重启docker 要demon一下

[root@Server ~]# systemctl daemon-reload
[root@Server ~]# systemctl restart docker.service
[root@Server ~]#

下载MySQL:8.0镜像和solo博客镜像

[root@Server ~]#  docker pull b3log/solo
Using default tag: latest
latest: Pulling from b3log/solo
Digest: sha256:f8f748b9d53ab144dc72703471a6a01bb2c74735d54170de3481f209373c400f
Status: Image is up to date for b3log/solo:latest
docker.io/b3log/solo:latest
[root@Server ~]#
[root@Mydb ~]# docker pull mysql:8.0
8.0: Pulling from library/mysql
139627f60883: Pull complete
caa784df8611: Pull complete
fe997c72f3e9: Pull complete
4f7cfd23b111: Pull complete
38fe0e0986de: Pull complete
09b552d72653: Pull complete
a0db31010df3: Pull complete
b723faee7585: Pull complete
c689d1836928: Pull complete
bb5107df7baa: Pull complete
62f1cc0a64ca: Pull complete
5ea08437b3cf: Download complete
cc9a862b4c10: Download complete
Digest: sha256:d0304ed9fdb64a3f6c7ad11a5fb4f13abfc10e6dfa3f288d652e7320c34df7f9
Status: Downloaded newer image for mysql:8.0
docker.io/library/mysql:8.0

创建数据库,创建数据库的账号和密码并进行授权,进行数据库备份,进行一些优化。

[root@Mydb ~]# mkdir -p /opt/mysql/{conf,data,logs}
[root@Mydb ~]# chmod -R 777 /opt/mysql
########################################################################################################
[root@Mydb ~]# cat /opt/mysql/conf/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
innodb_buffer_pool_size = 10G
innodb_log_file_size = 2G
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 1  # 事务安全优先(金融场景)
innodb_flush_method = O_DIRECT
innodb_read_io_threads = 16
innodb_write_io_threads = 16
innodb_file_per_table = ON
innodb_max_dirty_pages_pct = 75  # 减少突发刷盘
# 连接与安全
max_connections = 1500
wait_timeout = 3600
interactive_timeout = 3600
max_user_connections = 200
skip-name-resolve = ON
# 禁用符号链接,避免安全风险
symbolic-links = 0
########################################################################################################
[root@Mydb ~]# docker run -d \
--name mysql \
--restart=always \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=Root.000 \
-v /opt/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/logs:/var/log/mysql \
mysql:8.0
2190f189cc458572f9f5e0594ae2c70c3a30d68d041e1e33db645199c13b884c

检查和验证一下,进去数据库的内部查看。

[root@Mydb ~]# docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS NAMES
9bbee3c38d86   mysql:8.0   "docker-entrypoint.s…"   16 seconds ago   Up 15 seconds   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp mysql
[root@Mydb ~]# docker ps -a
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS NAMES
9bbee3c38d86   mysql:8.0   "docker-entrypoint.s…"   17 seconds ago   Up 16 seconds   0.0.0.0:3306->3306/tcp, [::]:3306->3306/tcp, 33060/tcp mysql
########################################################################################################
[root@Mydb ~]# docker exec -it mysql bash
bash-5.1#
bash-5.1#
bash-5.1#
bash-5.1# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.46 MySQL Community Server - GPL
​
Copyright (c) 2000, 2026, Oracle and/or its affiliates.
​
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
mysql>
mysql>
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
########################################################################################################
mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
########################################################################################################
mysql> CREATE DATABASE Blogs DEFAULT charset "utf8";
Query OK, 1 row affected, 1 warning (0.00 sec)
########################################################################################################
mysql> CREATE USER 'Blogs'@'%' IDENTIFIED BY '000000';
Query OK, 0 rows affected (0.01 sec)
########################################################################################################
mysql> GRANT ALL ON Blogs.* TO 'Blogs'@'%';
Query OK, 0 rows affected (0.00 sec)
########################################################################################################
mysql> FLUSH PRIVILEGES ;
Query OK, 0 rows affected (0.00 sec)
########################################################################################################
mysql> SELECT * FROM user LIMIT 1\G;
*************************** 1. row ***************************
                    Host: %
                    User: Blogs
             Select_priv: N
             Insert_priv: N
             Update_priv: N
             Delete_priv: N
             Create_priv: N
               Drop_priv: N
             Reload_priv: N
           Shutdown_priv: N
            Process_priv: N
               File_priv: N
              Grant_priv: N
         References_priv: N
              Index_priv: N
              Alter_priv: N
            Show_db_priv: N
              Super_priv: N
   Create_tmp_table_priv: N
        Lock_tables_priv: N
            Execute_priv: N
         Repl_slave_priv: N
        Repl_client_priv: N
        Create_view_priv: N
          Show_view_priv: N
     Create_routine_priv: N
      Alter_routine_priv: N
        Create_user_priv: N
              Event_priv: N
            Trigger_priv: N
  Create_tablespace_priv: N
                ssl_type:
              ssl_cipher: 0x
             x509_issuer: 0x
            x509_subject: 0x
           max_questions: 0
             max_updates: 0
         max_connections: 0
    max_user_connections: 0
                  plugin: caching_sha2_password
   authentication_string: $A$005$F3=I<P
TGNVP,|t(omfV/0c.A9N1PdOawPw1q9k2LPHbGaBPBI5vEFowOb4
        password_expired: N
   password_last_changed: 2026-05-03 02:59:08
       password_lifetime: NULL
          account_locked: N
        Create_role_priv: N
          Drop_role_priv: N
  Password_reuse_history: NULL
     Password_reuse_time: NULL
Password_require_current: NULL
         User_attributes: NULL
1 row in set (0.00 sec)
​
ERROR:
No query specified

启动solo博客容器,一条命令就可以搞定。如果是手动通过源码去进行创建和部署的话实在是太慢了。

docker run --detach --name solo  -p 8080:8080   --env RUNTIME_DB="MYSQL"     --env JDBC_USERNAME="Blogs"     --env JDBC_PASSWORD="000000"     --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"     --env JDBC_URL="jdbc:mysql://172.126.9.42:3306/Blogs?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true"     b3log/solo --listen_port=8080 --server_scheme=http --server_host=172.126.9.41
########################################################################################################
[root@Server ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED             STATUS             PORTS                                         NAMES
fab4eb397cd3   b3log/solo     "java -cp lib/*:. or…"   About an hour ago   Up About an hour   0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp   solo
e372356ddc7b   nginx:latest   "/docker-entrypoint.…"   22 hours ago        Up 18 hours        0.0.0.0:81->80/tcp, [::]:81->80/tcp           nginx-webfile
########################################################################################################
#查看看一下MySQL数据库有没有同步过来
mysql> USE Blogs;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SHOW TABLES;
+-----------------------------+
| Tables_in_Blogs             |
+-----------------------------+
| b3_solo_archivedate         |
| b3_solo_archivedate_article |
| b3_solo_article             |
| b3_solo_category            |
| b3_solo_category_tag        |
| b3_solo_link                |
| b3_solo_option              |
| b3_solo_page                |
| b3_solo_plugin              |
| b3_solo_tag                 |
| b3_solo_tag_article         |
| b3_solo_user                |
+-----------------------------+
12 rows in set (0.00 sec)
  • 输入自己的服务器的IP地址或者域名加8080端口,进行登陆注册

  • 可以使用微信,QQ,中国大陆手机号

  • 接下来就可以开始使用solo博客去写自己的技术文档了