Docker 方式部署 Solo 博客系统总结

  此篇为Docker部署方式,另有Tomcat部署方式,请参考文章《Tomcat 方式部署 Solo 博客系统总结》

  最近搭建了一个博客系统,作为自己的主页,方便记录一些平时所见所闻,学习收获等内容,正如你所看到的这个网站。再搭建过程中遇见了不少的困难和问题,再此做下记录和总结。想了解Solo开源博客系统的可以去Solo官网了解下!

  开始正题:

一、搭建方式概述

  基于阿里云服务器通过Docker方式部署,操作系统使用CentOS,数据库使用MySQL(也正是Solo默认推荐的数据库)。为了方便部署和提高效率,我还使用了Xshell和Xftp工具,基本所有的操作任务在这两个工具中都可以完成。

二、步骤概述

1、购买阿里云服务器;

2、本地安装Xshell和Xftp工具;

3、服务器安装配置MySQL数据库;

4、服务器安装Docker;

5、通过Docker获取Solo镜像;

6、创建容器并运行。

三、具体内容

1、购买阿里云服务器并配置

  本人选择的是阿里云主机作为服务器,相对来说便于维护,若有条件也可用个人物理主机作为服务器。不过从便捷性上了来说推荐使用云服务器,代表有阿里云,腾讯云,华为云等等。具体不同云服务商的购买步骤不尽相同,不细展开,具体参考服务商官网。假如你现在已经有了自己的服务器了,其中系统为纯净CentOS7,那么看下一步。

2、本地电脑上安装XShell和XFtp软件

  安装过程略。

  这里只简单说下这两个工具连接CentOS的过程中的注意事项:CentOS的22端口需要打开,默认是打开的,如果没打开的话,需要操作两方面,一.CentOS系统本身的防火墙中打开22端口,二.阿里云对应该主机的安全组需要添加22端口的访问策略。

  首次连接时,建议记住密码,否则后期使用时,会经常让输入密码,很麻烦。

3、安装配置MySQL 8

mysql80-community-release-el7-1.noarch.rpm
$ yum -y install mysql80-community-release-el7-1.noarch.rpm
yum-y
$ yum -y install mysql-community-server

  服务注册完成后,执行下面命令启动服务:

$ systemctl start  mysqld.service
servicesystemctl
$ grep "password" /var/log/mysqld.log
2019-05-02T03:50:17.570037Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Dn!URfyNl6HP

  根据ROOT 用户名和密码登录服务:

$ mysql -u root -p

  接着让输入密码,就是刚才找到的密码,正确输入后登录成功。登录成功后就可以输入MySQL相关的命令来操作MySQL数据库了。这时候,第一件事,就是修改密码,执行如下和命令进行初始密码的修改:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

  注意:MySQL的命令全是以分号结尾,不要丢掉分号。且新密码要满足:同时含有大小写字母、数字、符号,并牢记。

  下面,需要新建一个数据库用户:

#创建用户:
mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password';
#默认新建用户的加密规则是caching_sha2_password方式,有些客户端不支持,所以修改为mysql_native_password方式:
mysql> alter user 'username'@'host' identified with mysql_native_password by 'password';
%
#退出MySQL命令模式
mysql> \q

  重启MySQL服务:

$ service mysqld restart
soloutf8mb4utf8mb4_general_ci
CREATE DATABASE  `name` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

  到此,数据库部分已完成。

4、服务器安装Docker

  Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

uname -ryum update

  安装需要的软件包

#yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装最新稳定版docker
$ yum install docker-ce
#启动
$ systemctl start docker
#加入开机启动
$ systemctl enable docker
#验证安装是否成功
$ docker version

5、通过Docker获取Solo镜像

$ docker pull b3log/solo

6、创建容器并运行

/usr/local/tmp/solo/skins/usr/local/tmp/solo/images
$ docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="username" \
--env JDBC_PASSWORD="password" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
--volume /usr/local/tmp/solo/skins:/opt/solo/skins \
--volume /usr/local/tmp/solo/images:/opt/solo/images \
b3log/solo --listen_port=80 --server_scheme=http --server_host=域名

  此时,容器被创建并开始运行。