个人博客系统搭建笔记--Docker篇

1.什么是Docker

Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化(通俗解释:Docker内嵌极小型系统,例如Linux只有5M多,windows也是)。它是内核级的虚拟化。期望达到使项目运行环境“一次封装,到处运行的目的”。

在Docker里面可以设置使用Windows还是Linux系统,默认是用Linux系统,基于Ubuntu的,只有5M多,包含了最基本功能。
利用docker创建的运行环境叫做docker容器,容器是通过docker镜像创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。
官网地址:https://www.docker.com

二、Docker 安装与启动

1.安装

1.1.下载docker-ce repo

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

1.2. 安装依赖

yum install -y https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpm

1.3. 安装docker-ce

yum install -y docker-ce

2.启动

2.1. 启动命令

systemctl start docker

2.2. 查看Docker状态

docker info

结果如下:

image-20211003144315752

3.镜像加速器配置

默认情况下Docker从Docker Hub上下载镜像资源,但速度很慢,可以通过配置国内的镜像加速器来解决。

3.1. 使用阿里云镜像

网址:https://www.aliyun.com/

3.2. 进入容器镜像服务

img

3.3. 进入管理控制台

img

3.4. 进入镜像加速器

img

3.5. 选择对应的OS并配置

img

3.6. 验证镜像加速器是否配置成功

通过docker info命令验证镜像加速器配置,结果如下:

image-20211003145815941

三、安装redis

1.获取redis镜像

docker pull redis:6.0.5

image-20211003150145019

2.查看本地镜像

docker images

image-20211003150246436

3.从官网获取redis.config配置文件

# 进入文件夹
cd /local/docker
wget http://download.redis.io/redis-stable/redis.conf   //下载redis配置文件
vim redis.conf  //修改配置文件

1.注释bind 127.0.0.1。这里限制redis只能本地访问,注释掉之后使redis可以外部访问;
2.protected-mode yes 修改为 protected-mode no。默认yes,开启保护模式,限制仅本地访问,改为no之后使redis可以外部访问;
3.daemonize no 。默认no,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。 改为yes意为以守护进程方式启动,该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程,如果改为yes会使以配置文件方式启动redis的方式失败。
4.requirepass pwd。这里的pwd是自己设置的密码,可以不开启,不开启表示无需密码即可连接。
5.databases 16。默认数据库个数16,可以不修改。
6.appendonly no。默认 no,表示不开启aof方式持久化,改为appendonly yes表示开启aof,可以不修改该配置。

文件夹如下:

image-20211003183929810

4. 启动redis

docker run \
--name redis \
-p 6379:6379 \
--restart unless-stopped \
-v /local/docker/redis/data:/data \
-v /local/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf \

5. 查看redis运行是否成功

#查看redis容器运行
docker ps |grep redis 
#进入redis容器中
docker exec -it redis /bin/bash
#使用redis客户端
redis-cli
#设置密码
config set requirepass 123456

image-20211003220721877

四、安装mysql

1. 拉取镜像

docker pull mysql:8.0.16

2. 创建数据目录和配置文件

[root@king docker]# mkdir -p mysql
[root@king docker]# cd mysql/
[root@king mysql]# mkdir data
[root@king mysql]# mkdir conf
[root@king mysql]# chmod -R 755 /local/docker/mysql
[root@king conf]# vim my.cnf

添加以下内容到上述创建的配置文件中

[client]

#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file        = /var/run/mysqld/mysqld.pid

#socket          = /var/run/mysqld/mysqld.sock

#datadir         = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid

datadir = /local/docker/mysql/data

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

3.启动创建容器

docker run --restart=unless-stopped -d --name mysql \
-v /local/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /local/docker/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.16

查看容器启动情况

docker info

4.修改mysql密码以及可访问主机

  • 进入mysql容器内部
[root@king conf]# docker exec -it mysql /bin/bash
  • 连接mysql

    mysql -uroot -p
    
  • 使用mysql库

    use mysql
    
  • 修改访问主机以及密码等,设置为所有主机可访问

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    
  • 刷新

    flush privileges
    

五、Halo服务器安装

1.创建工作文件夹

# 创建工作文件夹
[root@king local]# mkdir halo 
[root@king local]# ls
docker  halo  upload
[root@king local]# cd halo/
#下载配置文件
[root@king halo]# wget https://dl.halo.run/config/application-template.yaml -O ./application.yaml

2.修改配置文件

vim application.yaml

Halo默认内嵌了H2数据库,在这里我使用了mysql数据库

server:
  port: 8090

  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/halodb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: root
    password: 123456
halo:

  # Your admin client path is https://your-domain/{admin-path}
  admin-path: admin

  # memory or level
  cache: memory

创建数据库

create database halodb character set utf8mb4 collate utf8mb4_bin;

3.拉取镜像

docker pull halohub/halo

4.创建并启动容器

docker run -it -d --name halo -p 8090:8090 -v /local/docker/halo:/root/.halo --restart=unless-stopped halohub/halo

六、安装JDK8

1.上传文件

将jdk文件上传到/local/upload

2.解压压缩包

tar zxf jdk-8u221-linux-x64.tar.gz 

3.移动文件

mv jdk1.8.0_221 /local/soft/jdk

4.配置环境变量

在linux中/etc/profile此文件为环境变量配置文件。

#export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/local/soft/jdk
export PATH=$JAVA_HOME/bin:$PATH
#进入etc文件夹并且编译profile文件
cd /etc && vim profile

image-20211004113003179

5.解析文件

不解析,必须通过重启才能生效。只要解析不需要重启了

source /etc/profile

6.查看配置是否成功

java -version

image-20211004113221989

七、安装solr

1.上传文件

上传压缩包solr-8.2.0.tgz到/local/upload中。

2.解压

[root@king upload]# tar zxf solr-8.2.0.tgz 

3.移动文件

mv solr-8.2.0 /local/soft/solr

4.Solr常用目录简介

image-20211004113700431

bin目录:可执行文件所在目录。
dist目录:Solr对外提供的核心、扩展、插件等代码jar文件。
server目录:Solr搜索应用服务器核心目录。
server/solr:Solr的索引库所在位置
server/solr-webapp:Solr的WAR核心应用
server/etc:Solr的核心配置

5.修改启动参数

修改启动参数,否则启动时报警告。提示设置SOLR_ULIMIT_CHECKS=false

[root@king solr]# cd bin && vim solr.in.sh

img

6.启动solr

Solr内嵌Jetty,直接启动即可。默认监听8983端口。
Solr默认不推荐root账户启动,如果是root账户启动需要添加-force参数。

./solr start -force

启动成功如下图所示:

image-20211004114327791

注意:阿里云服务器8983端口放行

image-20211004114629744

7.可视化管理界面

在浏览器输入ip:8983就可以打开solr可视化管理页面了

image-20211004114856090

左侧有5个菜单。分别是:
(1)Dashboard:面板显示Solr的总体信息。
(2)Logging:日志
(3)Core Admin:Solr的核心。类似于数据的Database
(4)Java Perperties:所有Java相关属性。
(5)Thread Dump:线程相关信息。
(6)如果有Core,将显示在此处。

8.创建核心(索引库)

Solr安装完成后默认是没有核心的。需要手动配置。

需要在solr/server/solr下新建文件夹,并给定配置文件,否则无法建立。

8.1 新建目录

在 /local/soft/solr/server/solr中新建自定义名称目录。这里我创建了名为blog的目录

#进入对应文件夹
[root@king ~]# cd /local/soft/solr/server/solr
#创建blog文件夹
[root@king solr]# mkdir blog

8.2 复制配置文件

在configsets里面包含了_default和sample_techproducts_configs。里面都是配置文件示例。_default属于默认配置,较纯净。sample_techproducts_configs是带有了一些配置示例。

[root@king solr]# cp -r configsets/_default/conf/ blog/

8.3 创建 core

在可视化管理界面填写如下信息

image-20211004174045581

最后点击Add Core按钮创建

创建成功结果如下:

image-20211004174415937

9.安装中文分词器

9.1上传文件

上传ik-analyzer-8.2.0.jar到/local/upload文件夹下

9.2复制文件

将ik-analyzer-8.2.0.jar文件复制/local/soft/solr/server/solr-webapp/webapp/WEB-INF/lib文件夹下

[root@king upload]# cp ik-analyzer-8.2.0.jar /local/soft/solr/server/solr-webapp/webapp/WEB-INF/lib/

9.3修改配置文件

修改managed-schema文件

[root@king /]# vim /local/soft/solr/server/solr/blog/conf/managed-schema
<fieldType name="text_zh_cn" class="solr.TextField">
            <analyzer>
                    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
                    <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
            <analyzer type="query">
                    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
                    <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
</fieldType>
<!--自定义字段,类似于设计数据表一样-->
	<!--ID-->
	<!--ID 已经在前面有了-->
	<!--浏览量-->
	<field name="blog_view_count" type="int" indexed="true" stored="true" required="true" multiValued="false" />
	<!--标题-->
	<field name="blog_title" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="false" />
	<!--内容-->
	<field name="blog_content" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="false" />
	<!--创建时间-->
	<field name="blog_create_time" type="date" indexed="true" stored="true" required="true" multiValued="false" />
	<!--标签-->
	<field name="blog_labels" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<!--文章链接-->
	<field name="blog_url" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<!--分类ID-->
	<field name="blog_category_id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
	<!--搜索item-->
	<field name="search_item" type="text_zh_cn" indexed="true" stored="true" required="true" multiValued="true" />
	<copyField source="blog_title" dest="search_item"/>
	<copyField source="blog_content" dest="search_item"/>
	<copyField source="blog_labels" dest="search_item"/>

排版:Esc 退出编辑状态下:gg=G

image-20211004220435973

9.4 重启

[root@king /]# cd /local/soft/solr/bin/
[root@king bin]# ./solr stop -all
[root@king bin]# ./solr start -force

9.5 验证

image-20211004225457462

img

图片来源于:https://upload-images.jianshu.io/upload_images/10139744-19785d5c0484474c.jpg

10.配置Dataimport

使用Solr自带的Dataimport功能把数据库中数据快速导入到solr中.
必须保证managed-schema和数据库中表的列对应。

10.1 修改solrconfig.xml配置文件

[root@king bin]# cd /local/soft/solr/server/solr/blog/conf/
[root@king conf]# vim solrconfig.xml 
  <!-- 配置数据导入的处理器 -->
 <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
        <lst name="defaults">
        <!--  加载data-config.xml  -->
            <str name="config">data-config.xml</str>
        </lst>
</requestHandler>

image-20211004230456904

10.2 新建data-config.xml

和solrconfig.xml同一目录下新建data-config.xml

posted @ 2021-10-08 14:17  皮皮匠  阅读(574)  评论(0)    收藏  举报