1. 程式人生 > 其它 >個人部落格系統搭建筆記--Docker篇

個人部落格系統搭建筆記--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

結果如下:

3.映象加速器配置

預設情況下Docker從Docker Hub上下載映象資源,但速度很慢,可以通過配置國內的映象加速器來解決。

3.1. 使用阿里雲映象

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

3.2. 進入容器映象服務

3.3. 進入管理控制檯

3.4. 進入映象加速器

3.5. 選擇對應的OS並配置

3.6. 驗證映象加速器是否配置成功

通過docker info命令驗證映象加速器配置,結果如下:

三、安裝redis

1.獲取redis映象

docker pull redis:6.0.5

2.檢視本地映象

docker images

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,可以不修改該配置。

資料夾如下:

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

四、安裝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

5.解析檔案

不解析,必須通過重啟才能生效。只要解析不需要重啟了

source /etc/profile

6.檢視配置是否成功

java -version

七、安裝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常用目錄簡介

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

6.啟動solr

Solr內嵌Jetty,直接啟動即可。預設監聽8983埠。
Solr預設不推薦root賬戶啟動,如果是root賬戶啟動需要新增-force引數。

./solr start -force

啟動成功如下圖所示:

注意:阿里雲伺服器8983埠放行

7.視覺化管理介面

在瀏覽器輸入ip:8983就可以開啟solr視覺化管理頁面了

左側有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

在視覺化管理介面填寫如下資訊

最後點選Add Core按鈕建立

建立成功結果如下:

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

9.4 重啟

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

9.5 驗證

圖片來源於: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>

10.2 新建data-config.xml

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