個人部落格系統搭建筆記--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. 使用阿里雲映象
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