<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[小破站]]></title> 
<atom:link href="https://www.jishuliu.cn/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[随便写写，文章都是原创，服务不是。]]></description>
<link>https://www.jishuliu.cn/</link>
<language>zh-cn</language>
<generator>emlog</generator>

<item>
    <title>ubuntu18部署wvp-pro国标平台</title>
    <link>https://www.jishuliu.cn/?post=37</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>部署基础服务</h1>
<h2>安装openjdk等依赖包</h2>
<pre><code>apt install -y openjdk-11-jre git maven build-essential cmake ffmpeg libssl-dev libsdl-dev libavcodec-dev libavutil-dev</code></pre>
<h2>安装nodejs</h2>
<pre><code>#下载nodejs包
root@VM-16-7-ubuntu:~# wget https://nodejs.org/download/release/v14.9.0/node-v14.9.0-linux-x64.tar.gz
--2023-12-25 10:10:40--  https://nodejs.org/dist/v17.9.1/node-v17.9.1-linux-x64.tar.xz
Resolving nodejs.org (nodejs.org)... 104.20.23.46, 104.20.22.46, 2606:4700:10::6814:172e, ...
Connecting to nodejs.org (nodejs.org)|104.20.23.46|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 22672072 (22M) [application/x-xz]
Saving to: ‘node-v17.9.1-linux-x64.tar.xz’

node-v17.9.1-linux-x64.tar.xz                                       100%[=================================================================================================================================================================&gt;]  21.62M  15.5MB/s    in 1.4s

2023-12-25 10:10:42 (15.5 MB/s) - ‘node-v14.9.0-linux-x64.tar.gz’ saved [22672072/22672072]

#解压
root@VM-16-7-ubuntu:~# tar xf node-v14.9.0-linux-x64.tar.gz
#移动到指定位置
root@VM-16-7-ubuntu:~# mv node-v14.9.0-linux-x64 /usr/local/node/
#输入环境变量
root@VM-16-7-ubuntu:~# echo "export PATH CLASSPATH" &gt;&gt; /etc/profile
root@VM-16-7-ubuntu:~# echo "export NODE_HOME=/usr/local/node" &gt;&gt; /etc/profile
root@VM-16-7-ubuntu:~# echo "PATH=:$PATH:$NODE_HOME/bin" &gt;&gt; /etc/profile
#重新加载全局环境变量
root@VM-16-7-ubuntu:~# source /etc/profile
#检查node版本
root@VM-16-7-ubuntu:~# node -v
v17.9.1
#检查npm版本
root@VM-16-7-ubuntu:~# npm -v
8.11.0</code></pre>
<h2>安装mysql</h2>
<ul>
<li>安装mysql</li>
</ul>
<pre><code>#创建mysql路径
root@VM-16-7-ubuntu:~# mkdir mysql 
#下载mysql安装包
root@VM-16-7-ubuntu:~/mysql# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar 
#解压mysql安装包
root@VM-16-7-ubuntu:~/mysql# tar xf mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tar 
#开始安装MySQL
root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-common_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package mysql-common.
(Reading database ... 107198 files and directories currently installed.)
Preparing to unpack mysql-common_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-common (5.7.42-1ubuntu18.04) ...
Setting up mysql-common (5.7.42-1ubuntu18.04) ...
update-alternatives: using /etc/mysql/my.cnf.fallback to provide /etc/mysql/my.cnf (my.cnf) in auto mode

root@VM-16-7-ubuntu:~/mysql# dpkg-preconfigure mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb #此处需要输入mysql的密码

root@VM-16-7-ubuntu:~/mysql# dpkg -i libmysqlclient20_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package libmysqlclient20:amd64.
(Reading database ... 107213 files and directories currently installed.)
Preparing to unpack libmysqlclient20_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking libmysqlclient20:amd64 (5.7.42-1ubuntu18.04) ...
Setting up libmysqlclient20:amd64 (5.7.42-1ubuntu18.04) ...
Processing triggers for libc-bin (2.27-3ubuntu1.6) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i libmysqlclient-dev_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package libmysqlclient-dev.
(Reading database ... 107221 files and directories currently installed.)
Preparing to unpack libmysqlclient-dev_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking libmysqlclient-dev (5.7.42-1ubuntu18.04) ...
Setting up libmysqlclient-dev (5.7.42-1ubuntu18.04) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i libmysqld-dev_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package libmysqld-dev.
(Reading database ... 107341 files and directories currently installed.)
Preparing to unpack libmysqld-dev_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking libmysqld-dev (5.7.42-1ubuntu18.04) ...
Setting up libmysqld-dev (5.7.42-1ubuntu18.04) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-community-client_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package mysql-community-client.
(Reading database ... 107349 files and directories currently installed.)
Preparing to unpack mysql-community-client_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-community-client (5.7.42-1ubuntu18.04) ...
Setting up mysql-community-client (5.7.42-1ubuntu18.04) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-client_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package mysql-client.
(Reading database ... 107406 files and directories currently installed.)
Preparing to unpack mysql-client_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-client (5.7.42-1ubuntu18.04) ...
Setting up mysql-client (5.7.42-1ubuntu18.04) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-common_5.7.42-1ubuntu18.04_amd64.deb 
(Reading database ... 107412 files and directories currently installed.)
Preparing to unpack mysql-common_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-common (5.7.42-1ubuntu18.04) over (5.7.42-1ubuntu18.04) ...
Setting up mysql-common (5.7.42-1ubuntu18.04) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package mysql-community-server.
(Reading database ... 107412 files and directories currently installed.)
Preparing to unpack mysql-community-server_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-community-server (5.7.42-1ubuntu18.04) ...
Setting up mysql-community-server (5.7.42-1ubuntu18.04) ...
update-alternatives: using /etc/mysql/mysql.cnf to provide /etc/mysql/my.cnf (my.cnf) in auto mode
Created symlink /etc/systemd/system/multi-user.target.wants/mysql.service → /lib/systemd/system/mysql.service.
Processing triggers for systemd (237-3ubuntu10.57) ...
Processing triggers for ureadahead (0.100.0-21) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

root@VM-16-7-ubuntu:~/mysql# dpkg -i mysql-server_5.7.42-1ubuntu18.04_amd64.deb 
Selecting previously unselected package mysql-server.
(Reading database ... 107574 files and directories currently installed.)
Preparing to unpack mysql-server_5.7.42-1ubuntu18.04_amd64.deb ...
Unpacking mysql-server (5.7.42-1ubuntu18.04) ...
Setting up mysql-server (5.7.42-1ubuntu18.04) ...</code></pre>
<ul>
<li>配置mysql</li>
</ul>
<pre><code># mysql配置文件
root@VM-16-7-ubuntu:~/mysql# cat /etc/mysql/mysql.conf.d/mysqld.cnf 
[mysqld_safe]
socket          = /var/run/mysqld/mysqld.sock
nice            = 0

[mysql]
default-character-set=utf8

[mysqld]
character-set-server = utf8
collation-server = utf8_general_ci
ngram_token_size=1
max_connections=2000
wait_timeout=7200
interactive_timeout=300
init_connect='SET NAMES utf8mb4'
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
datadir     = /var/lib/mysql
log-error   = /var/log/mysql/error.log
user            = mysql
port            = 3306
basedir         = /usr
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
key_buffer_size         = 16M
max_allowed_packet      = 16M
thread_stack            = 192K
thread_cache_size       = 8
myisam-recover-options  = BACKUP
query_cache_limit       = 1M
query_cache_size        = 16M
expire_logs_days        = 10
max_binlog_size   =100M
group_concat_max_len = 102400
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
server-id       = 2
log-bin         = mysql-bin
gtid_mode = on
enforce_gtid_consistency = on
slow_query_log = 1
long_query_time = 5
log_timestamps=SYSTEM
symbolic-links=0

#创建wvp库
root@VM-16-7-ubuntu:~/mysql# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.42-log MySQL Community Server (GPL)

Copyright (c) 2000, 2023, 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&gt; CREATE DATABASE wvp CHARACTER SET utf8 COLLATE utf8_general_ci; #创建数据库并设置字符集
Query OK, 1 row affected (0.00 sec)

mysql&gt; exit</code></pre>
<h2>安装redis</h2>
<ul>
<li>安装redis</li>
</ul>
<pre><code>root@VM-16-7-ubuntu:~# apt install -y redis</code></pre>
<ul>
<li>配置redis</li>
</ul>
<pre><code>注释行：bind 127.0.0.1 ::1
取消注释行：requirepass foobared  #foobared为redis密码</code></pre>
<ul>
<li>启动并测试redis</li>
</ul>
<pre><code>#启动redis
root@VM-16-7-ubuntu:~/mysql# service redis restart
#进入redis控制台
root@VM-16-7-ubuntu:~/mysql# redis-cli
127.0.0.1:6379&gt; auth foobared
OK
127.0.0.1:6379&gt; </code></pre>
<h1>ZLMediaKit</h1>
<h2>部署ZLMediaKit</h2>
<pre><code>#进入data路径
root@VM-16-7-ubuntu:~# cd /data
#拉代码
root@VM-16-7-ubuntu:/data# git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
Cloning into 'ZLMediaKit'...
remote: Enumerating objects: 668, done.
remote: Counting objects: 100% (668/668), done.
remote: Compressing objects: 100% (582/582), done.
remote: Total 668 (delta 81), reused 381 (delta 47), pack-reused 0
Receiving objects: 100% (668/668), 21.92 MiB | 2.36 MiB/s, done.
Resolving deltas: 100% (81/81), done.
#进入代码路径
root@VM-16-7-ubuntu:/data# cd ZLMediaKit/
#拉第三方代码
root@VM-16-7-ubuntu:/data/ZLMediaKit# git submodule update --init
Submodule 'ZLToolKit' (https://gitee.com/xia-chu/ZLToolKit) registered for path '3rdpart/ZLToolKit'
Submodule '3rdpart/jsoncpp' (https://gitee.com/mirrors/jsoncpp.git) registered for path '3rdpart/jsoncpp'
Submodule '3rdpart/media-server' (https://gitee.com/ireader/media-server) registered for path '3rdpart/media-server'
Submodule 'www/webassist' (https://gitee.com/victor1002/zlm_webassist) registered for path 'www/webassist'
Cloning into '/data/ZLMediaKit/3rdpart/ZLToolKit'...
Cloning into '/data/ZLMediaKit/3rdpart/jsoncpp'...
Cloning into '/data/ZLMediaKit/3rdpart/media-server'...
Cloning into '/data/ZLMediaKit/www/webassist'...
Submodule path '3rdpart/ZLToolKit': checked out '6a8bdfc80db3930d2ba8067d06db467dad8baddf'
Submodule path '3rdpart/jsoncpp': checked out '69098a18b9af0c47549d9a271c054d13ca92b006'
Submodule path '3rdpart/media-server': checked out 'a8a80e0738b052aa5671ef82a295ef388bd28e13'
Submodule path 'www/webassist': checked out 'b02d2a4c1abf95db45e50bb77d789defa0fcc4b7'
#创建安装路径
root@VM-16-7-ubuntu:/data/ZLMediaKit# mkdir build
#进入安装路径
root@VM-16-7-ubuntu:/data/ZLMediaKit# cd build/
#编译
root@VM-16-7-ubuntu:/data/ZLMediaKit/build# cmake ..
………………………………
-- Build files have been written to: /data/ZLMediaKit/build
#构建
root@VM-16-7-ubuntu:/data/ZLMediaKit/build# make -j4
………………………………
make[2]: Leaving directory '/data/ZLMediaKit/build'
[100%] Built target api_tester_httpclient
make[1]: Leaving directory '/data/ZLMediaKit/build'
/usr/bin/cmake-E cmake_progress_start /data/ZLMediaKit/build/CMakeFiles 0</code></pre>
<h2>配置ZLMediaKit</h2>
<pre><code>root@VM-16-7-ubuntu:/data/ZLMediaKit/build# cd ..
root@VM-16-7-ubuntu:/data/ZLMediaKit# ls
3rdpart  api      build                   cmake           conf         docker      ext-codec      LICENSE  player   README_en.md  release  sources.list  srt    tools          webrtc         www
Android  AUTHORS  build_docker_images.sh  CMakeLists.txt  default.pem  dockerfile  k8s_readme.md  package  postman  README.md     server   src           tests  version.h.ini  webrtc_player
#进入代码路径
root@VM-16-7-ubuntu:/data/ZLMediaKit# cd release/linux/Debug/
#查看文件
root@VM-16-7-ubuntu:/data/ZLMediaKit/release/linux/Debug# ls
api_tester_h264_media_server  api_tester_server     config.ini      libflv.a      libmov.a   libzlmediakit.a  tab                 test_bench_pull  test_httpApi     test_pusherMp4  test_sortor    www
api_tester_httpclient         api_tester_websocket  default.pem     libjsoncpp.a  libmpeg.a  libzltoolkit.a   test_bench_forward  test_bench_push  test_httpClient  test_rtp        test_wsClient
api_tester_pusher             bom                   libext-codec.a  libmk_api.so  libsrt.a   MediaServer      test_bench_proxy    test_flv         test_pusher      test_server     test_wsServer
#修改配置文件config.ini的[http]内的port为18080
    #http服务器监听端口
    port=18080

#修改配置文件config.ini的[general]内的mediaServerId为自定义ID
    mediaServerId=test-txu
#启动ZLMediaKit
root@VM-16-7-ubuntu:/data/ZLMediaKit/release/linux/Debug# nohup ./MediaServer -d -m 3 2&gt;&amp;1 &amp;</code></pre>
<h2>推流测试</h2>
<pre><code>* 上传一个视频"469b14cdf7fa0de2be1bf8bcd6916149.mp4"到服务器的/root下
root@VM-16-7-ubuntu:/data/ZLMediaKit/release/linux/Debug# ffmpeg -re -i "/root/469b14cdf7fa0de2be1bf8bcd6916149.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

ffmpeg version 3.4.11-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/469b14cdf7fa0de2be1bf8bcd6916149.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
  Duration: 00:05:19.90, start: 0.000000, bitrate: 735 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x544, 680 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 47 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -&gt; #0:0 (h264 (native) -&gt; h264 (libx264))
  Stream #0:1 -&gt; #0:1 (aac (native) -&gt; aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x55aecffeace0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x55aecffeace0] profile High, level 3.1</code></pre>
<h1>wvp-pro</h1>
<h2>部署wvp-pro-assist</h2>
<ul>
<li>拉代码</li>
</ul>
<pre><code>root@VM-16-7-ubuntu:/data# git clone https://github.com/648540858/wvp-pro-assist.git
Cloning into 'wvp-pro-assist'...
remote: Enumerating objects: 882, done.
remote: Counting objects: 100% (398/398), done.
remote: Compressing objects: 100% (181/181), done.
remote: Total 882 (delta 183), reused 331 (delta 147), pack-reused 484
Receiving objects: 100% (882/882), 34.54 MiB | 11.63 MiB/s, done.
Resolving deltas: 100% (334/334), done.</code></pre>
<h3>修改配置文件</h3>
<pre><code>root@VM-16-7-ubuntu:/data# cd wvp-pro-assist/
root@VM-16-7-ubuntu:/data/wvp-pro-assist# vim src/main/resources/application-dev.yml
spring:
    # REDIS数据库配置
    redis:
        # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
        host: 127.0.0.1
        # [必须修改] 端口号
        port: 6379
        # [可选] 数据库 DB
        database: 8
        # [可选] 访问密码,若你的redis服务器没有设置密码，就不需要用密码去连接
        password: foobared
        # [可选] 超时时间
        timeout: 10000

# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
    port: 28080
    # [可选] HTTPS配置， 默认不开启
    ssl:
        # [可选] 是否开启HTTPS访问
        enabled: false
        # [可选] 证书文件路径，放置在resource/目录下即可，修改xxx为文件名
        key-store: classpath:xxx.jks
        # [可选] 证书密码
        key-password: password
        # [可选] 证书类型， 默认为jks，根据实际修改
        key-store-type: JKS

# [根据业务需求配置]
userSettings:
    id: 1
    # [可选 ] zlm配置的录像路径，
    record: /data/wvp-record
    # [可选 ] 录像保存时长（单位： 天）每天晚12点自动对过期文件执行清理
    recordDay: 30
    # [可选 ] 录像下载合成临时文件保存时长， 不配置默认取值recordDay（单位： 天）每天晚12点自动对过期文件执行清理
    # recordTempDay: 7
    # [必选 ] ffmpeg路径
    ffmpeg: /usr/bin/ffmpeg
    # [必选 ] ffprobe路径， 一般安装ffmpeg就会自带， 一般跟ffmpeg在同一目录,用于查询文件的信息
    ffprobe: /usr/bin/ffprobe
    # [可选 ] 限制 ffmpeg 合并文件使用的线程数，间接限制cpu使用率， 默认2 限制到50%
    threads: 2

swagger-ui:

# [可选] 日志配置, 一般不需要改
logging:
    file:
        name: logs/wvp.log
        max-history: 30
        max-size: 10MB
        total-size-cap: 300MB
    level:
        root: WARN
        top:
            panll:
                assist: info
</code></pre>
<h3>编译wvp-pro-assist</h3>
<pre><code>root@VM-16-7-ubuntu:/data/wvp-pro-assist# mvn package
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:26 min
[INFO] Finished at: 2023-12-25T13:18:03+08:00
[INFO] ------------------------------------------------------------------------</code></pre>
<h3>启动wvp-pro-assist</h3>
<pre><code>root@VM-16-7-ubuntu:/data/wvp-pro-assist# cd target/
root@VM-16-7-ubuntu:/data/wvp-pro-assist/target# nohup java -jar 
classes/                           generated-sources/                 generated-test-sources/            maven-archiver/                    maven-status/                      test-classes/                      wvp-pro-assist-2.6.8-12250515.jar
root@VM-16-7-ubuntu:/data/wvp-pro-assist/target# nohup java -jar wvp-pro-assist-2.6.8-12250515.jar --spring.config.location=../src/main/resources/application-dev.yml 2&gt;&amp;1 &amp;
[1] 7428
root@VM-16-7-ubuntu:/data/wvp-pro-assist/target# nohup: ignoring input and appending output to 'nohup.out'
root@VM-16-7-ubuntu:/data/wvp-pro-assist/target# netstat -anpt |grep LISTEN|grep java
tcp6       0      0 :::28080                :::*                    LISTEN      7928/java   </code></pre>
<h2>部署wvp-GB28181-pro</h2>
<ul>
<li>拉代码</li>
</ul>
<pre><code>root@VM-16-7-ubuntu:/data# git clone https://github.com/648540858/wvp-GB28181-pro.git
Cloning into 'wvp-GB28181-pro'...
remote: Enumerating objects: 35893, done.
remote: Counting objects: 100% (8255/8255), done.
remote: Compressing objects: 100% (1753/1753), done.
remote: Total 35893 (delta 5902), reused 7611 (delta 5583), pack-reused 27638
Receiving objects: 100% (35893/35893), 29.97 MiB | 15.50 MiB/s, done.
Resolving deltas: 100% (19821/19821), done.</code></pre>
<h3>编译前端页面</h3>
<pre><code>root@VM-16-7-ubuntu:/data/# cd wvp-GB28181-pro/web_src/
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/web_src# ls
build  config  index.html  package.json  package-lock.json  README.md  src  static
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/web_src# npm --registry=https://registry.npmmirror.com install
------------------------------------------------------------------------

added 1322 packages in 1m

8 packages are looking for funding
  run `npm fund` for details

root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/web_src# npm run build

&gt; gb_web@1.0.0 build
&gt; node build/build.js

⠙ building for production...Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db

Why you should do it regularly:
https://github.com/browserslist/browserslist#browsers-data-updating
Hash: c97dc830b57bf0640cc0
Version: webpack 3.12.0
Time: 47391ms
                                                  Asset       Size  Chunks                    Chunk Names
                        static/img/zlm-logo.5f8bbf7.png      49 kB          [emitted]         
                static/fonts/element-icons.535877f.woff    28.2 kB          [emitted]         
                 static/fonts/element-icons.732389d.ttf      56 kB          [emitted]         
               static/js/vendor.0096e9b933add0d16e5f.js    3.43 MB       0  [emitted]  [big]  vendor
                  static/js/app.aa5e1cd3718a86d7fdfd.js     312 kB       1  [emitted]  [big]  app
             static/js/manifest.2ae2e69a05c33dfc65f8.js  857 bytes       2  [emitted]         manifest
    static/css/app.e8bfaf0bf95e38540654aed4c131bcbb.css     267 kB       1  [emitted]  [big]  app
static/css/app.e8bfaf0bf95e38540654aed4c131bcbb.css.map     415 kB          [emitted]         
           static/js/vendor.0096e9b933add0d16e5f.js.map    14.9 MB       0  [emitted]         vendor
              static/js/app.aa5e1cd3718a86d7fdfd.js.map    1.09 MB       1  [emitted]         app
         static/js/manifest.2ae2e69a05c33dfc65f8.js.map    4.97 kB       2  [emitted]         manifest
                                             index.html    1.06 kB          [emitted]         
                                static/images/arrow.png    5.05 kB          [emitted]         
                             static/images/zlm-logo.png      49 kB          [emitted]         
                                static/css/iconfont.css    24.7 kB          [emitted]         
                              static/css/iconfont.woff2    54.9 kB          [emitted]         
                                   static/css/login.css     8.5 kB          [emitted]         
                                     static/favicon.ico    9.89 kB          [emitted]         
                                  static/EasyPlayer.swf    75.3 kB          [emitted]         
                                 static/file/推流通道导入.zip    15.2 kB          [emitted]         
                  static/fonts/poppins/Poppins-Bold.ttf     141 kB          [emitted]         
                static/fonts/poppins/Poppins-Medium.ttf     144 kB          [emitted]         
                   static/images/gis/camera-offline.png    8.89 kB          [emitted]         
                           static/images/gis/camera.png    10.3 kB          [emitted]         
               static/fonts/poppins/Poppins-Regular.ttf     145 kB          [emitted]         
                          static/images/gis/camera1.png    13.1 kB          [emitted]         
                  static/images/gis/camera1-offline.png    10.5 kB          [emitted]         
                  static/images/gis/camera2-offline.png    10.1 kB          [emitted]         
              static/fonts/poppins/Poppins-SemiBold.ttf     142 kB          [emitted]         
                          static/images/gis/camera2.png    12.6 kB          [emitted]         
                          static/images/gis/camera3.png      13 kB          [emitted]         
                                    static/js/config.js  553 bytes          [emitted]         
                  static/images/gis/camera3-offline.png    10.5 kB          [emitted]         
                         static/js/jessibuca/decoder.js     110 kB          [emitted]         
                     static/js/jessibuca/jessibuca.d.ts    19.5 kB          [emitted]         
                       static/js/jessibuca/jessibuca.js     206 kB          [emitted]         
                              static/js/ZLMRTCClient.js     256 kB          [emitted]  [big]  
                                        static/logo.png    67.1 kB          [emitted]         
                          static/js/ZLMRTCClient.js.map     507 kB          [emitted]         
                       static/js/jessibuca/decoder.wasm    1.05 MB          [emitted]  [big]  
                            static/js/EasyWasmPlayer.js    2.31 MB          [emitted]  [big]  
                                 static/libDecoder.wasm    2.39 MB          [emitted]  [big]  
                                        crossdomain.xml  123 bytes          [emitted]         
                                         liveplayer.swf    75.3 kB          [emitted]         
                        static/js/liveplayer-lib.min.js     844 kB          [emitted]  [big]  

  Build complete.

  Tip: built files are meant to be served over an HTTP server.
  Opening index.html over file:// won't work.
</code></pre>
<h3>生成jar包</h3>
<pre><code>root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/web_src# cd /data/wvp-GB28181-pro/
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro# mvn package
------------------------------------------------------------------------
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  13:44 min
[INFO] Finished at: 2023-12-25T12:40:13+08:00
[INFO] ------------------------------------------------------------------------</code></pre>
<h3>修改配置文件</h3>
<pre><code>#redis配置
redis:
    # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
    host: 127.0.0.1
    # [必须修改] 端口号
    port: 6379
    # [可选] 数据库 DB
    database: 7
    # [可选] 访问密码,若你的redis服务器没有设置密码，就不需要用密码去连接
    password: foobared
    # [可选] 超时时间
    timeout: 10000
    # mysql数据源
  #数据库配置
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    #MySQL链接地址
    url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&amp;characterEncoding=UTF8&amp;rewriteBatchedStatements=true&amp;serverTimezone=PRC&amp;useSSL=false&amp;allowMultiQueries=true
    #数据库账号
    username: root
    #数据库密码
    password: root

#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
  port: 18081
  # [可选] HTTPS配置， 默认不开启
  ssl:
    # [可选] 是否开启HTTPS访问
    enabled: false
    # [可选] 证书文件路径，放置在resource/目录下即可，修改xxx为文件名
    key-store: classpath:test.monitor.89iot.cn.jks
    # [可选] 证书密码
    key-store-password: gpf64qmw
    # [可选] 证书类型， 默认为jks，根据实际修改
    key-store-type: JKS

# 作为28181服务器的配置
sip:
  # [必须修改] 本机的IP，对应你的网卡，监听什么ip就是使用什么网卡，
  # 如果要监听多张网卡，可以使用逗号分隔多个IP， 例如： 192.168.1.4,10.0.0.4
  # 如果不明白，就使用0.0.0.0，大部分情况都是可以的
  # 请不要使用127.0.0.1，任何包括localhost在内的域名都是不可以的。
  ip: 0.0.0.0
  # [可选] 28181服务监听的端口
  port: 18082
  # 根据国标6.1.2中规定，domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码（由省级、市级、区级、基层编号组成，参照GB/T 2260-2007）
  # 后两位为行业编码，定义参照附录D.3
  # 3701020049标识山东济南历下区 信息行业接入
  # [可选]
  domain: 4101050000
  # [可选]
  id: 41010500002000000001
  # [可选] 默认设备认证密码，后续扩展使用设备单独密码, 移除密码将不进行校验
  password: bajiuwulian1006
  # 是否存储alarm信息
  alarm: true
#zlm 默认服务器配置
media:
  id: test-txu
  # [必须修改] zlm服务器的内网IP
  ip: 127.0.0.1
  # [必须修改] zlm服务器的http.port
  http-port: 18080
  # [可选] 返回流地址时的ip，置空使用 media.ip
  stream-ip: 43.129.237.157
  # [可选] wvp在国标信令中使用的ip，此ip为摄像机可以访问到的ip， 置空使用 media.ip
  sdp-ip: 43.129.237.157
  # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip
  hook-ip:
  # [可选] zlm服务器的http.sslport, 置空使用zlm配置文件配置
  http-ssl-port:
  # [可选] zlm服务器的hook.admin_params=secret
  secret: b3D1wDkAyW1KywUb4zhzwvo9yQERVhOU
  # 启用多端口模式, 多端口模式使用端口区分每路流，兼容性更好。 单端口使用流的ssrc区分， 点播超时建议使用多端口测试
  rtp:
    # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
    enable: true
    # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性，不然自动配置此属性可能不成功
    port-range: 30000,35000 # 端口范围
    # [可选] 国标级联在此范围内选择端口发送媒体流,
    send-port-range: 30000,35000 # 端口范围
  # 录像辅助服务， 部署此服务可以实现zlm录像的管理与下载， 0 表示不使用
  record-assist-port: 28080
# [根据业务需求配置]
user-settings:
  # 点播/录像回放 等待超时时间,单位：毫秒
  play-timeout: 180000
  # [可选] 自动点播， 使用固定流地址进行播放时，如果未点播则自动进行点播, 需要rtp.enable=true
  auto-apply-play: true
  # 设备/通道状态变化时发送消息
  device-status-notify: true
  # 跨域配置，配置你访问前端页面的地址即可， 可以配置多个
  allowed-origins:
    - http://localhost:8080
    - http://43.129.237.157:18081</code></pre>
<h3>导入数据库</h3>
<pre><code>root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/sql# cd /data/wvp-GB28181-pro/sql/
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/sql# ls
2.6.6-2.6.7更新.sql  2.6.8升级2.6.9.sql  2.6.8补丁更新.sql  2.6.9更新.sql  clean.sql  初始化.sql
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/sql# mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.7.42-log MySQL Community Server (GPL)

Copyright (c) 2000, 2023, 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&gt; use wvp;
Database changed
mysql&gt; source /data/wvp-GB28181-pro/sql/初始化.sql;
Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

mysql&gt; exit
Bye</code></pre>
<h3>启动wvp-GB28181-pro</h3>
<pre><code>root@VM-16-7-ubuntu:/data/wvp-GB28181-pro# cd target/
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/target# nohup java -jar wvp-pro-2.6.9-12250426.jar --spring.config.location=../src/main/resources/application-dev.yml 2&gt;&amp;1 &amp;
[2] 8865
root@VM-16-7-ubuntu:/data/wvp-GB28181-pro/target# tail -f logs/wvp-2023-12-25.0.log 
2023-12-25 13:32:50.945 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:55 - Starting VManageBootstrap v2.6.9 using Java 11.0.19 on VM-16-7-ubuntu with PID 11204 (/data/wvp-GB28181-pro/target/wvp-pro-2.6.9-12250426.jar started by root in /data/wvp-GB28181-pro/target)
2023-12-25 13:32:50.949 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:632 - No active profile set, falling back to 1 default profile: "default"
2023-12-25 13:32:56.178 [main] INFO  com.genersoft.iot.vmp.conf.ServiceInfo:24 - 项目启动获取启动的端口号:  18081
2023-12-25 13:32:56.747 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:61 - Started VManageBootstrap in 6.477 seconds (JVM running for 6.987)
2023-12-25 13:32:56.759 [main] INFO  c.g.i.v.g.t.e.r.i.m.n.c.AlarmNotifyMessageHandler:59 - [SIP日志]已关闭
2023-12-25 13:32:57.048 [main] INFO  com.genersoft.iot.vmp.gb28181.SipLayer:80 - [SIP SERVER] tcp://0.0.0.0:18082 启动成功
2023-12-25 13:32:57.066 [main] INFO  com.genersoft.iot.vmp.gb28181.SipLayer:97 - [SIP SERVER] udp://0.0.0.0:18082 启动成功
2023-12-25 13:32:57.399 [main] INFO  com.genersoft.iot.vmp.media.zlm.ZLMRunner:82 - [zlm] 等待默认zlm中...
2023-12-25 13:32:57.402 [main] INFO  c.g.iot.vmp.service.impl.MediaServerServiceImpl:125 - [zlm] 缓存初始化 
2023-12-25 13:32:57.875 [main] INFO  c.g.iot.vmp.service.impl.MediaServerServiceImpl:383 - [ZLM] 正在连接 : test-txu -&gt; 127.0.0.1:18080
2023-12-25 13:32:58.170 [main] INFO  c.g.iot.vmp.service.impl.MediaServerServiceImpl:566 - [ZLM] 正在设置 ：test-txu -&gt; 127.0.0.1:18080
2023-12-25 13:32:58.178 [main] INFO  c.g.iot.vmp.service.impl.MediaServerServiceImpl:621 - [ZLM] 设置成功,开始重启以保证配置生效 test-txu -&gt; 127.0.0.1:18080
2023-12-25 13:32:58.198 [main] INFO  c.g.iot.vmp.service.impl.MediaServerServiceImpl:442 - [ZLM] 连接成功 test-txu - 127.0.0.1:18080 
2023-12-25 13:32:58.210 [wvp-1] INFO  c.g.iot.vmp.media.zlm.event.ZLMStatusEventListener:42 - [ZLM] 上线 ID：test-txu
2023-12-25 13:32:58.303 [main] INFO  com.genersoft.iot.vmp.conf.CivilCodeFileConf:79 - [行政区划] 加载成功，共加载数据3219条
2023-12-25 13:32:58.305 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:37 - 构建版本： 2.6.9
2023-12-25 13:32:58.305 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:38 - 构建时间： 20231225
2023-12-25 13:32:58.306 [main] INFO  com.genersoft.iot.vmp.VManageBootstrap:39 - GIT最后提交时间： 20231218</code></pre>
<h2>功能测试</h2>
<h3>页面访问</h3>
<ul>
<li>访问服务器外网IP的wvp-GB28181-pro配置文件内的server.port。默认账号密码admin、admin</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/65db1703482663.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/65db1703482663.png" alt="" /></a></p>
<ul>
<li>查看节点</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/1f2c1703482781.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/1f2c1703482781.png" alt="" /></a></p>
<h3>推流测试播放</h3>
<ul>
<li>登录后点击用户管理获取pushkey</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/e2361703482745.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/e2361703482745.png" alt="" /></a></p>
<ul>
<li>使用ffmpeg测试推流</li>
</ul>
<blockquote>
<p>推送链接的格式应该为：rtsp://127.0.0.1/live/test?callId=&amp;sign=。<br />
其中callID可以自定义，sign为callId+pushkey加密为md5，如果我的callId为123456，pushkey为e80d1762a324d5b0ff636e0bd16f1e3，那我应该这么推流</p>
</blockquote>
<pre><code>#获取md5字符串
root@VM-16-7-ubuntu:~# echo -n "123456_3e80d1762a324d5b0ff636e0bd16f1e3" | md5sum
51f5e5c90afe80b329edd5735e620853  -
#推流测试
root@VM-16-7-ubuntu:~# ffmpeg -re -i "/root/469b14cdf7fa0de2be1bf8bcd6916149.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp "rtsp://127.0.0.1/live/test?callId=123456&amp;sign=51f5e5c90afe80b329edd5735e620853"
ffmpeg version 3.4.11-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/root/469b14cdf7fa0de2be1bf8bcd6916149.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
  Duration: 00:05:19.90, start: 0.000000, bitrate: 735 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 720x544, 680 kb/s, 30 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 47 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -&gt; #0:0 (h264 (native) -&gt; h264 (libx264))
  Stream #0:1 -&gt; #0:1 (aac (native) -&gt; aac (native))
Press [q] to stop, [?] for help
[libx264 @ 0x560b25c73ce0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
[libx264 @ 0x560b25c73ce0] profile High, level 3.1
[libx264 @ 0x560b25c73ce0] 264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, rtsp, to 'rtsp://127.0.0.1/live/test?callId=123456&amp;sign=51f5e5c90afe80b329edd5735e620853':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.83.100
    Stream #0:0(und): Video: h264 (libx264), yuv420p, 720x544, q=-1--1, 30 fps, 90k tbn, 30 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      encoder         : Lavc57.107.100 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(und): Audio: aac (LC), 44100 Hz, mono, fltp, 69 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      encoder         : Lavc57.107.100 aac
frame= 2572 fps= 30 q=-1.0 Lsize=N/A time=00:01:25.84 bitrate=N/A speed=0.997x  </code></pre>
<ul>
<li>在页面的推流列表可以看到推流视频</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/38b41703483575.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/38b41703483575.png" alt="" /></a></p>
<ul>
<li>在对应的推流视频点击播放可以播放对应视频</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/c98c1703483646.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/c98c1703483646.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/b8181703483584.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/b8181703483584.png" alt="" /></a></p>
<ul>
<li>在云端录像可以看到推流的录像，也可以下载</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/be6f1703483668.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/be6f1703483668.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/4d8d1703483680.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/4d8d1703483680.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/f0491703483687.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/f0491703483687.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202312/d0851703483736.png"><img src="https://www.jishuliu.cn/content/uploadfile/202312/d0851703483736.png" alt="" /></a></p>]]></description>
    <pubDate>Mon, 25 Dec 2023 09:48:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=37</guid>
</item>
<item>
    <title>minio配置https</title>
    <link>https://www.jishuliu.cn/?post=36</link>
    <description><![CDATA[<ul>
<li>创建证书存放路径</li>
</ul>
<pre><code>[root@VM-0-10-centos ~]# mkdir root/.minio/certs
[root@VM-0-10-centos ~]# cd .minio/certs</code></pre>
<ul>
<li>生成私钥</li>
</ul>
<pre><code>[root@VM-0-10-centos certs]# openssl genrsa -out private.key 1024
Generating RSA private key, 1024 bit long modulus
.............++++++
.........................................................++++++
e is 65537 (0x10001)</code></pre>
<ul>
<li>生成证书申请文件csr</li>
</ul>
<pre><code>[root@VM-0-10-centos certs]# openssl req -new -key private.key -out private.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:bj
Locality Name (eg, city) [Default City]:bj
Organization Name (eg, company) [Default Company Ltd]:bj
Organizational Unit Name (eg, section) []:bj
Common Name (eg, your name or your server's hostname) []:minio.jishuliu.cn  #绑定的域名(此处随便写)
Email Address []:bj

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #密码建议为空
An optional company name []:  #密码建议为空</code></pre>
<ul>
<li>生成证书</li>
</ul>
<pre><code>[root@VM-0-10-centos certs]# openssl x509 -req -in private.csr -out public.crt -signkey private.key -days 3650
Signature ok
subject=/C=cn/ST=bj/L=bj/O=bj/OU=bj/CN=minio.jishuliu.cn/emailAddress=bj
Getting Private key</code></pre>
<ul>
<li>配置域名映射</li>
</ul>
<pre><code>[root@VM-0-10-centos certs]# ip addr show eth0  |grep inet
    inet 10.206.0.10/20 brd 10.206.15.255 scope global eth0
    inet6 fe80::5054:ff:fed6:e7d7/64 scope link 
[root@VM-0-10-centos certs]# echo "10.206.0.10 minio.jishuliu.cn" &gt;&gt; /etc/hosts  #证书的域名和本地的内网IP地址</code></pre>
<ul>
<li>启动minio</li>
</ul>
<pre><code>[root@VM-0-10-centos ~]# ./minio server /data --address "minio.jishuliu.cn:9000"

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ You are running an older version of MinIO released 2 years ago ┃
┃ Update: Run `mc admin update`                                  ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Endpoint: https://minio.jishuliu.cn:9000 
RootUser: minioadmin 
RootPass: minioadmin 

Browser Access:
   https://minio.jishuliu.cn:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio https://minio.jishuliu.cn:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide

Certificate:
    Signature Algorithm: SHA256-RSA
    Issuer: C=cn, ST=bj, UnknownOID=2.5.4.7, O=bj, OU=bj, CN=minio.jishuliu.cn, emailAddress=bj
    Validity
        Not Before: Sun, 08 Oct 2023 06:22:20 GMT
        Not After : Wed, 05 Oct 2033 06:22:20 GMT

Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD'
IAM initialization complete</code></pre>
<ul>
<li>访问需配置本地host访问minio指定的域名</li>
</ul>]]></description>
    <pubDate>Sun, 08 Oct 2023 14:34:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=36</guid>
</item>
<item>
    <title>nginx配置支持国密</title>
    <link>https://www.jishuliu.cn/?post=35</link>
    <description><![CDATA[<p>[TOC]</p>
<ul>
<li>本次环境：nginx1.25.2、openssl1.1.1l、gmssl_openssl_1.1_b8、centos7.6、腾讯云按量付费服务器、南京二区、开房防火墙22及443、2C-2G-50G</li>
</ul>
<p>aaaaa</p>
<h1>升级&quot;openssl&quot;</h1>
<ul>
<li>查看当前&quot;openssl&quot;版本。1.1.1以上支持国密算法，如果&quot;openssl&quot;高于该版本，则跳过升级&quot;openssl&quot;此步骤</li>
</ul>
<pre><code>[root@VM-16-11-centos openssl-1.1.1l]# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017
[root@VM-16-11-centos openssl-1.1.1l]# </code></pre>
<ul>
<li>安装&quot;openssl&quot;依赖</li>
</ul>
<pre><code>[root@VM-16-11-centos ~]#  yum install -y wget gcc perl-core zlib-devel
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel                                                                                                                                                                                                                      | 4.7 kB  00:00:00     
extras                                                                                                                                                                                                                    | 2.9 kB  00:00:00     
os                                                                                                                                                                                                                        | 3.6 kB  00:00:00     
updates                                                                                                                                                                                                                   | 2.9 kB  00:00:00     
Package wget-1.14-18.el7_6.1.x86_64 already installed and latest version
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package zlib-devel-1.2.7-21.el7_9.x86_64 already installed and latest version
……………………忽略输出，出现以下输出即为正常安装……………………

Installed:
  perl-core.x86_64 0:5.16.3-299.el7_9                                                                                                                                                                                                            

Dependency Installed:
  gdbm-devel.x86_64 0:1.10-8.el7                               perl-Archive-Extract.noarch 1:0.68-3.el7                    perl-Archive-Tar.noarch 0:1.92-3.el7                         perl-B-Lint.noarch 0:1.17-3.el7                          
  perl-CGI.noarch 0:3.63-4.el7                                 perl-CPAN.noarch 0:1.9800-299.el7_9                         perl-CPAN-Meta.noarch 0:2.120921-5.el7                       perl-CPAN-Meta-Requirements.noarch 0:2.122-7.el7         
  perl-CPAN-Meta-YAML.noarch 0:0.008-14.el7                    perl-CPANPLUS.noarch 0:0.91.38-4.el7                        perl-CPANPLUS-Dist-Build.noarch 0:0.70-3.el7                 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7             
  perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7                  perl-DBD-SQLite.x86_64 0:1.39-3.el7                         perl-DBI.x86_64 0:1.627-4.el7                                perl-DBIx-Simple.noarch 0:1.35-7.el7                     
  perl-DB_File.x86_64 0:1.830-6.el7                            perl-Digest.noarch 0:1.17-245.el7                           perl-Digest-MD5.x86_64 0:2.52-3.el7                          perl-Digest-SHA.x86_64 1:5.85-4.el7                      
  perl-Env.noarch 0:1.04-2.el7                                 perl-ExtUtils-CBuilder.noarch 1:0.28.2.6-299.el7_9          perl-ExtUtils-Embed.noarch 0:1.30-299.el7_9                  perl-ExtUtils-Install.noarch 0:1.58-299.el7_9            
  perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7                  perl-ExtUtils-Manifest.noarch 0:1.61-244.el7                perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7                    perl-FCGI.x86_64 1:0.74-8.el7                            
  perl-File-CheckTree.noarch 0:4.42-3.el7                      perl-File-Fetch.noarch 0:0.42-2.el7                         perl-IO-Compress.noarch 0:2.061-2.el7                        perl-IO-Zlib.noarch 1:1.10-299.el7_9                     
  perl-IPC-Cmd.noarch 1:0.80-4.el7                             perl-JSON-PP.noarch 0:2.27202-2.el7                         perl-Locale-Codes.noarch 0:3.26-2.el7                        perl-Locale-Maketext.noarch 0:1.23-3.el7                 
  perl-Locale-Maketext-Simple.noarch 1:0.21-299.el7_9          perl-Log-Message.noarch 1:0.08-3.el7                        perl-Log-Message-Simple.noarch 0:0.10-2.el7                  perl-Module-Build.noarch 2:0.40.05-2.el7                 
  perl-Module-CoreList.noarch 1:2.76.02-299.el7_9              perl-Module-Load.noarch 1:0.24-3.el7                        perl-Module-Load-Conditional.noarch 0:0.54-3.el7             perl-Module-Loaded.noarch 1:0.08-299.el7_9               
  perl-Module-Metadata.noarch 0:1.000018-2.el7                 perl-Module-Pluggable.noarch 1:4.8-3.el7                    perl-Net-Daemon.noarch 0:0.48-5.el7                          perl-Object-Accessor.noarch 1:0.42-299.el7_9             
  perl-Package-Constants.noarch 1:0.02-299.el7_9               perl-Params-Check.noarch 1:0.38-2.el7                       perl-Parse-CPAN-Meta.noarch 1:1.4404-5.el7                   perl-Perl-OSType.noarch 0:1.003-3.el7                    
  perl-PlRPC.noarch 0:0.2020-14.el7                            perl-Pod-Checker.noarch 0:1.60-2.el7                        perl-Pod-LaTeX.noarch 0:0.61-2.el7                           perl-Pod-Parser.noarch 0:1.61-2.el7                      
  perl-Sys-Syslog.x86_64 0:0.33-3.el7                          perl-Term-UI.noarch 0:0.36-2.el7                            perl-Test-Simple.noarch 0:0.98-243.el7                       perl-Text-Soundex.x86_64 0:3.04-4.el7                    
  perl-Text-Unidecode.noarch 0:0.04-20.el7                     perl-Time-Piece.x86_64 0:1.20.1-299.el7_9                   perl-Version-Requirements.noarch 0:0.101022-244.el7          perl-autodie.noarch 0:2.16-2.el7                         
  perl-devel.x86_64 4:5.16.3-299.el7_9                         perl-local-lib.noarch 0:1.008010-4.el7                      perl-version.x86_64 3:0.99.07-6.el7                          pyparsing.noarch 0:1.5.6-9.el7                           
  systemtap-sdt-devel.x86_64 0:4.0-13.el7                     

Complete!</code></pre>
<ul>
<li>安装openssl</li>
</ul>
<pre><code>[root@VM-16-11-centos ~]# wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz --no-check-certificate
--2023-08-20 20:40:03--  https://www.openssl.org/source/openssl-1.1.1l.tar.gz
Resolving www.openssl.org (www.openssl.org)... 2.17.62.8, 2600:1417:76:687::c1e, 2600:1417:76:685::c1e, ...
Connecting to www.openssl.org (www.openssl.org)|2.17.62.8|:443... connected.
WARNING: cannot verify www.openssl.org's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:
  Issued certificate has expired.
HTTP request sent, awaiting response... 200 OK
Length: 9834044 (9.4M) [application/x-gzip]
Saving to: ‘openssl-1.1.1l.tar.gz’

100%[=======================================================================================================================================================================================================&gt;] 9,834,044   2.42MB/s   in 4.2s   

2023-08-20 20:40:08 (2.23 MB/s) - ‘openssl-1.1.1l.tar.gz’ saved [9834044/9834044]

[root@VM-16-11-centos ~]# tar xf openssl-1.1.1l.tar.gz 
[root@VM-16-11-centos ~]# cd openssl-1.1.1l/
[root@VM-16-11-centos openssl-1.1.1l]# ./config --prefix=/usr/local/ssl
Operating system: x86_64-whatever-linux2
Configuring OpenSSL version 1.1.1l (0x101010cfL) for linux-x86_64
Using os-specific seed configuration
Creating configdata.pm
Creating Makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub &lt;https://github.com/openssl/openssl/issues&gt;  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************
[root@VM-16-11-centos openssl-1.1.1l]# make
……………………忽略输出，出现以下输出即为正常安装……………………
rm -f test/x509aux
${LDCMD:-gcc} -pthread -m64 -Wa,--noexecstack -Wall -O3 -L.   \
    -o test/x509aux test/x509aux.o \
     test/libtestutil.a -lcrypto -ldl -pthread 
/usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" apps/CA.pl.in &gt; "apps/CA.pl"
chmod a+x apps/CA.pl
/usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" apps/tsget.in &gt; "apps/tsget.pl"
chmod a+x apps/tsget.pl
/usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" tools/c_rehash.in &gt; "tools/c_rehash"
chmod a+x tools/c_rehash
/usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
    "-oMakefile" util/shlib_wrap.sh.in &gt; "util/shlib_wrap.sh"
chmod a+x util/shlib_wrap.sh
make[1]: Leaving directory `/root/openssl-1.1.1l'
[root@VM-16-11-centos openssl-1.1.1l]# make install
……………………忽略输出，出现以下输出即为正常安装……………………
/usr/local/ssl/share/doc/openssl/html/man7/X448.html -&gt; /usr/local/ssl/share/doc/openssl/html/man7/X25519.html
/usr/local/ssl/share/doc/openssl/html/man7/bio.html
/usr/local/ssl/share/doc/openssl/html/man7/crypto.html
/usr/local/ssl/share/doc/openssl/html/man7/ct.html
/usr/local/ssl/share/doc/openssl/html/man7/des_modes.html
/usr/local/ssl/share/doc/openssl/html/man7/evp.html
/usr/local/ssl/share/doc/openssl/html/man7/ossl_store-file.html
/usr/local/ssl/share/doc/openssl/html/man7/ossl_store.html
/usr/local/ssl/share/doc/openssl/html/man7/passphrase-encoding.html
/usr/local/ssl/share/doc/openssl/html/man7/proxy-certificates.html
/usr/local/ssl/share/doc/openssl/html/man7/scrypt.html
/usr/local/ssl/share/doc/openssl/html/man7/ssl.html
/usr/local/ssl/share/doc/openssl/html/man7/x509.html</code></pre>
<ul>
<li>更新ld库</li>
</ul>
<pre><code>[root@VM-16-11-centos openssl-1.1.1l]# echo "/usr/local/ssl/lib" &gt;&gt; /etc/ld.so.conf.d/openssl-1.1.1l.conf
[root@VM-16-11-centos openssl-1.1.1l]# ldconfig
[root@VM-16-11-centos bin]# which openssl
/usr/bin/openssl
[root@VM-16-11-centos bin]# mv /usr/bin/openssl  /usr/bin/openssl1.0.2k
[root@VM-16-11-centos bin]# ln -s /usr/local/ssl/bin/openssl /usr/bin/
[root@VM-16-11-centos bin]# openssl version
OpenSSL 1.1.1l  24 Aug 2021
[root@VM-16-11-centos bin]# </code></pre>
<h1>生成国密证书</h1>
<ul>
<li>生成私钥</li>
</ul>
<pre><code>[root@VM-16-11-centos ~]# mkdir ssl
[root@VM-16-11-centos ~]# cd ssl/
[root@VM-16-11-centos ssl]# ls
[root@VM-16-11-centos ssl]# openssl ecparam -genkey -name SM2 -out test.key

#ecparam: openssl ecparam子命令用于生成或操作椭圆曲线参数。
#-genkey: 这个选项告诉openssl ecparam命令生成一个新的密钥对。
#-name SM2: 这个选项指定要使用的椭圆曲线类型为SM2。SM2是一种国家密码算法标准，基于椭圆曲线密码体制，被广泛应用于中国的密码算法和应用场景中。
#-out: 输出文件。</code></pre>
<ul>
<li>生成自签证书请求</li>
</ul>
<pre><code>[root@VM-16-11-centos ssl]# openssl req -new -key test.key -out test.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN  #国家
State or Province Name (full name) [Some-State]:CN  #省
Locality Name (eg, city) []:CN  #市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:test  #公司
Organizational Unit Name (eg, section) []:test  #部门
Common Name (e.g. server FQDN or YOUR name) []:test  #绑定服务器
Email Address []:  #联系方式

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:  #密码，可以跳过
An optional company name []:  #密码，可以跳过

#-key：私钥文件
#-out：输出文件</code></pre>
<ul>
<li>生成生成自签名证书</li>
</ul>
<pre><code>[root@VM-16-11-centos ssl]# openssl x509 -req -in test.csr  -signkey test.key -out test.pem  
Signature ok
subject=C = CN, ST = CN, L = CN, O = test, OU = test, CN = test
Getting Private key
[root@VM-16-11-centos ssl]# 

#-signkey：私钥文件
#-out：输出文件</code></pre>
<ul>
<li>在/root/ssl/下应该有一个私钥文件.key、一个自签名请求.csr、一个自签名证书.pem</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202308/cb081692536070.png"><img src="https://www.jishuliu.cn/content/uploadfile/202308/cb081692536070.png" alt="" /></a></p>
<h1>下载国密ssl支持</h1>
<ul>
<li>下载地址</li>
</ul>
<p><a href="https://install.jishuliu.cn/GM/gmssl_openssl_1.1_b8.tar.gz" title="gmssl下载地址">gmssl下载地址</a></p>
<ul>
<li>解压国密ssl</li>
</ul>
<pre><code>[root@VM-16-11-centos ~]# tar xf gmssl_openssl_1.1_b8.tar.gz  -C /usr/local/
[root@VM-16-11-centos ~]# </code></pre>
<h1>安装nginx</h1>
<ul>
<li>下载nginx安装包并解压</li>
</ul>
<p><a href="https://install.jishuliu.cn/nginx/nginx-1.25.2.tar.gz" title="nginx下载地址">nginx下载地址</a></p>
<pre><code>[root@VM-16-11-centos ~]# wget https://install.jishuliu.cn/nginx/nginx-1.25.2.tar.gz
--2023-08-20 20:59:59--  https://install.jishuliu.cn/nginx/nginx-1.25.2.tar.gz
Resolving install.jishuliu.cn (install.jishuliu.cn)... 159.75.57.36, 159.75.57.69
Connecting to install.jishuliu.cn (install.jishuliu.cn)|159.75.57.36|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1214903 (1.2M) [application/gzip]
Saving to: ‘nginx-1.25.2.tar.gz’

100%[=======================================================================================================================================================================================================&gt;] 1,214,903   2.54MB/s   in 0.5s   

2023-08-20 21:00:00 (2.54 MB/s) - ‘nginx-1.25.2.tar.gz’ saved [1214903/1214903]

[root@VM-16-11-centos ~]# tar xf nginx-1.25.2.tar.gz 
[root@VM-16-11-centos ~]# cd nginx-1.25.2/
[root@VM-16-11-centos nginx-1.25.2]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src</code></pre>
<ul>
<li>修改nginx下的文件，把nginx解压路径下的auto/lib/openssl/conf</li>
</ul>
<pre><code>CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
以上修改为：
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"</code></pre>
<ul>
<li>配置nginx</li>
</ul>
<pre><code>[root@VM-16-11-centos nginx-1.25.2]# ./configure --prefix=/usr/local/nginx --with-stream_ssl_module --without-http_gzip_module --with-http_ssl_module --with-http_stub_status_module --with-http_v2_module --with-file-aio --with-openssl="/usr/local/gmssl" --with-cc-opt="-I/usr/local/gmssl/include" --with-ld-opt="-lm" --with-openssl-opt=enable-ec_nistp_64_gcc_128

……………………忽略输出，出现以下输出即为正常安装……………………
Configuration summary
  + using system PCRE library
  + using OpenSSL library: /usr/local/gmssl
  + zlib library is not used

  nginx path prefix: "/usr/local/nginx"
  nginx binary file: "/usr/local/nginx/sbin/nginx"
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf"
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid"
  nginx error log file: "/usr/local/nginx/logs/error.log"
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp

#--prefix：安装路径
#--with-stream_ssl_module: 启用流模块的SSL功能，允许Nginx作为一个流（TCP和UDP）代理服务器，支持对SSL流量进行代理和转发。
#--without-http_gzip_module: 禁用HTTP Gzip模块，该模块用于压缩HTTP响应的内容以减小传输大小。
#--with-http_ssl_module: 启用HTTP SSL模块，允许Nginx提供基于SSL/TLS的安全HTTP连接。
#--with-http_stub_status_module: 启用HTTP Stub Status模块，该模块提供了一个简单的URI来获取关于Nginx当前状态的信息，如活动连接数、请求处理数等。
#--with-http_v2_module: 启用HTTP/2模块，允许Nginx通过HTTP/2协议与客户端进行通信，提供更高效的传输性能。
#--with-file-aio: 启用文件异步IO支持，这可以提高对文件的读写性能。
#--with-openssl="/usr/local/gmssl": 指定使用的OpenSSL库的路径。在这个例子中，Nginx将使用位于`/usr/local/gmssl`目录下的OpenSSL库。
#--with-cc-opt="-I/usr/local/gmssl/include": 指定C编译器的选项。`-I`标志用于添加头文件搜索路径，这里是`/usr/local/gmssl/include`，以确保编译过程中可以找到所需的头文件。
#--with-ld-opt="-lm": 指定链接器的选项。`-lm`表示将链接数学库（libm）到Nginx可执行文件中。
#--with-openssl-opt=enable-ec_nistp_64_gcc_128`: 指定OpenSSL库的选项。这个选项将启用EC（椭圆曲线）加密算法的优化，使其支持使用64位运算和128位存储器模型进行更高效的处理。</code></pre>
<ul>
<li>编译nginx</li>
</ul>
<pre><code>[root@VM-16-11-centos nginx-1.25.2]# make

……………………忽略输出，出现以下输出即为正常安装……………………
-lm -ldl -lpthread -lcrypt -lpcre /usr/local/gmssl/lib/libssl.a /usr/local/gmssl/lib/libcrypto.a -ldl -lpthread \
-Wl,-E
sed -e "s|%%PREFIX%%|/usr/local/nginx|" \
    -e "s|%%PID_PATH%%|/usr/local/nginx/logs/nginx.pid|" \
    -e "s|%%CONF_PATH%%|/usr/local/nginx/conf/nginx.conf|" \
    -e "s|%%ERROR_LOG_PATH%%|/usr/local/nginx/logs/error.log|" \
    &lt; man/nginx.8 &gt; objs/nginx.8
make[1]: Leaving directory `/root/nginx-1.25.2'</code></pre>
<ul>
<li>安装nginx</li>
</ul>
<pre><code>[root@VM-16-11-centos nginx-1.25.2]# make install
make -f objs/Makefile install
make[1]: Entering directory `/root/nginx-1.25.2'
test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'
test -d '/usr/local/nginx/sbin' \
    || mkdir -p '/usr/local/nginx/sbin'
test ! -f '/usr/local/nginx/sbin/nginx' \
    || mv '/usr/local/nginx/sbin/nginx' \
        '/usr/local/nginx/sbin/nginx.old'
cp objs/nginx '/usr/local/nginx/sbin/nginx'
test -d '/usr/local/nginx/conf' \
    || mkdir -p '/usr/local/nginx/conf'
cp conf/koi-win '/usr/local/nginx/conf'
cp conf/koi-utf '/usr/local/nginx/conf'
cp conf/win-utf '/usr/local/nginx/conf'
test -f '/usr/local/nginx/conf/mime.types' \
    || cp conf/mime.types '/usr/local/nginx/conf'
cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'
test -f '/usr/local/nginx/conf/fastcgi_params' \
    || cp conf/fastcgi_params '/usr/local/nginx/conf'
cp conf/fastcgi_params \
    '/usr/local/nginx/conf/fastcgi_params.default'
test -f '/usr/local/nginx/conf/fastcgi.conf' \
    || cp conf/fastcgi.conf '/usr/local/nginx/conf'
cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'
test -f '/usr/local/nginx/conf/uwsgi_params' \
    || cp conf/uwsgi_params '/usr/local/nginx/conf'
cp conf/uwsgi_params \
    '/usr/local/nginx/conf/uwsgi_params.default'
test -f '/usr/local/nginx/conf/scgi_params' \
    || cp conf/scgi_params '/usr/local/nginx/conf'
cp conf/scgi_params \
    '/usr/local/nginx/conf/scgi_params.default'
test -f '/usr/local/nginx/conf/nginx.conf' \
    || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'
cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
test -d '/usr/local/nginx/html' \
    || cp -R html '/usr/local/nginx'
test -d '/usr/local/nginx/logs' \
    || mkdir -p '/usr/local/nginx/logs'
make[1]: Leaving directory `/root/nginx-1.25.2'
[root@VM-16-11-centos nginx-1.25.2]# </code></pre>
<ul>
<li>修改nginx配置文件并启动nginx</li>
</ul>
<pre><code>[root@VM-16-11-centos nginx-1.25.2]# vim /usr/local/nginx/conf/nginx.conf
user  root;
worker_processes  auto;
error_log  logs/error.log;
pid        logs/nginx.pid;
events {
    use epoll;
    worker_connections  10240;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    sendfile    on;
server {
    listen 443 ssl;
    server_name 101.201.223.213;
    ssl_certificate /root/ssl/test.pem;
    ssl_certificate_key /root/ssl/test.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SM4:EDH+SM4:AESGCM+AES128:AESGCM+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA:!SEED;   
    ssl_prefer_server_ciphers on;
    location / {
            root   html;
            index  index.html index.htm;
        }
     }
}
[root@VM-16-11-centos nginx-1.25.2]# /usr/local/nginx/sbin/nginx  -t
License for TEST. SN=E89E76293C73B0AF
OpenSSL(GM version Build230318) by www.gmssl.cn. Test Only!!!
OpenSSL(GM version Build230318) by www.gmssl.cn. Test Only!!!
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@VM-16-11-centos nginx-1.25.2]# /usr/local/nginx/sbin/nginx  
License for TEST. SN=E89E76293C73B0AF
OpenSSL(GM version Build230318) by www.gmssl.cn. Test Only!!!
OpenSSL(GM version Build230318) by www.gmssl.cn. Test Only!!!
[root@VM-16-11-centos nginx-1.25.2]# </code></pre>
<blockquote>
<p>国密证书一般都有密码，可以使用命令&quot;openssl ec -in 有密码的key -out 无密码的key&quot;取消掉密码或在nginx的&quot;ssl_certificate_key&quot;下添加一行&quot;ssl_password_file&quot;指定密码的存放文件并把密码放入该文件中</p>
</blockquote>
<h1>查看是否配置成功</h1>
<ul>
<li>
<p>访问<a href="https://www.tlcp.com.cn/" title="国密支持检测">国密支持检测</a>网站进行检测，如果配置国密成功则会输出如下(注意打开服务区防火墙)：</p>
</li>
<li>
<p>完整应如下(由于本次是自签证书，所以会有很多报错)</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202308/c7641692537057.png"><img src="https://www.jishuliu.cn/content/uploadfile/202308/c7641692537057.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202308/b3911692537301.png"><img src="https://www.jishuliu.cn/content/uploadfile/202308/b3911692537301.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202308/34531692537309.png"><img src="https://www.jishuliu.cn/content/uploadfile/202308/34531692537309.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202308/695f1692537368.png"><img src="https://www.jishuliu.cn/content/uploadfile/202308/695f1692537368.png" alt="" /></a></p>]]></description>
    <pubDate>Sun, 20 Aug 2023 20:35:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=35</guid>
</item>
<item>
    <title>prometheus监控中间件</title>
    <link>https://www.jishuliu.cn/?post=33</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>redis</h1>
<h2>部署redis</h2>
<ul>
<li>安装redis</li>
</ul>
<p><a href="https://install.jishuliu.cn/redis/redis-4.0.10.tar.gz" title="redis下载地址">redis下载地址</a></p>
<pre><code>#下载redis安装包
[root@VM-0-10-centos ~]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz
--2023-07-15 08:24:46--  http://download.redis.io/releases/redis-4.0.10.tar.gz
Resolving download.redis.io (download.redis.io)... 45.60.125.1
Connecting to download.redis.io (download.redis.io)|45.60.125.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1738465 (1.7M) [application/octet-stream]
Saving to: ‘redis-4.0.10.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 1,738,465   1.08MB/s   in 1.5s   

2023-07-15 08:24:48 (1.08 MB/s) - ‘redis-4.0.10.tar.gz’ saved [1738465/1738465]

[root@VM-0-10-centos ~]# ls
redis-4.0.10.tar.gz
#解压redis安装包
[root@VM-0-10-centos ~]# tar xf redis-4.0.10.tar.gz 
#把解压的redis安装包移动到安装路径下
[root@VM-0-10-centos ~]# mv redis-4.0.10 /usr/local/redis
#进入redis解压目录
[root@VM-0-10-centos ~]# cd /usr/local/redis/
[root@VM-0-10-centos redis]# ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
#安装gcc及c++编译器
[root@VM-0-10-centos redis]# yum -y install gcc gcc-c++ kernel-devel
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel                                                                                                                                                                                                                                                   | 4.7 kB  00:00:00     
extras                                                                                                                                                                                                                                                 | 2.9 kB  00:00:00     
os                                                                                                                                                                                                                                                     | 3.6 kB  00:00:00     
updates                                                                                                                                                                                                                                                | 2.9 kB  00:00:00     
Package gcc-4.8.5-44.el7.x86_64 already installed and latest version
Package gcc-c++-4.8.5-44.el7.x86_64 already installed and latest version
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package kernel-devel.x86_64 0:3.10.0-1160.92.1.el7 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================================================================================
 Package                                                           Arch                                                        Version                                                                     RepositorySize
==============================================================================================================================================================================================================================================================================
Installing:
 kernel-devel                                                      x86_64                                                      3.10.0-1160.92.1.el7                                                        updates                                                       18 M

Transaction Summary
==============================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 18 M
Installed size: 38 M
Downloading packages:
No Presto metadata available for updates
kernel-devel-3.10.0-1160.92.1.el7.x86_64.rpm                                                                                                                                                                                                           |  18 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-devel-3.10.0-1160.92.1.el7.x86_64                                                                                                                                                                                                                   1/1 
  Verifying  : kernel-devel-3.10.0-1160.92.1.el7.x86_64                                                                                                                                                                                                                   1/1 

Installed:
  kernel-devel.x86_64 0:3.10.0-1160.92.1.el7                                                                                                                                                                                                                                  

Complete!
#安装redis
[root@VM-0-10-centos redis]# make &amp;&amp; cd src/ &amp;&amp; make install
cd src &amp;&amp; make all
make[1]: Entering directory `/usr/local/redis/src'
    CC Makefile.dep
make[1]: Leaving directory `/usr/local/redis/src'
make[1]: Entering directory `/usr/local/redis/src'
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps &amp;&amp; make distclean)
make[2]: Entering directory `/usr/local/redis/deps'
(cd hiredis &amp;&amp; make clean) &gt; /dev/null || true
(cd linenoise &amp;&amp; make clean) &gt; /dev/null || true
(cd lua &amp;&amp; make clean) &gt; /dev/null || true
(cd jemalloc &amp;&amp; [ -f Makefile ] &amp;&amp; make distclean) &gt; /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory `/usr/local/redis/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' &gt;&gt; .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers &gt;&gt; .make-settings
echo OPT=-O2 &gt;&gt; .make-settings
echo MALLOC=jemalloc &gt;&gt; .make-settings
echo CFLAGS= &gt;&gt; .make-settings
echo LDFLAGS= &gt;&gt; .make-settings
echo REDIS_CFLAGS= &gt;&gt; .make-settings
echo REDIS_LDFLAGS= &gt;&gt; .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include &gt;&gt; .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic &gt;&gt; .make-settings
(cd ../deps &amp;&amp; make hiredis linenoise lua jemalloc)
make[2]: Entering directory `/usr/local/redis/deps'
(cd hiredis &amp;&amp; make clean) &gt; /dev/null || true
(cd linenoise &amp;&amp; make clean) &gt; /dev/null || true
(cd lua &amp;&amp; make clean) &gt; /dev/null || true
(cd jemalloc &amp;&amp; [ -f Makefile ] &amp;&amp; make distclean) &gt; /dev/null || true
(rm -f .make-*)
(echo "" &gt; .make-cflags)
(echo "" &gt; .make-ldflags)
MAKE hiredis
cd hiredis &amp;&amp; make static
make[3]: Entering directory `/usr/local/redis/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  hiredis.c
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  sds.c
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  async.c
cc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  read.c
ar rcs libhiredis.a net.o hiredis.o sds.o async.o read.o
make[3]: Leaving directory `/usr/local/redis/deps/hiredis'
MAKE linenoise
cd linenoise &amp;&amp; make
make[3]: Entering directory `/usr/local/redis/deps/linenoise'
cc  -Wall -Os -g  -c linenoise.c
make[3]: Leaving directory `/usr/local/redis/deps/linenoise'
MAKE lua
cd lua/src &amp;&amp; make all CFLAGS="-O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' " MYLDFLAGS="" AR="ar rcu"
make[3]: Entering directory `/usr/local/redis/deps/lua/src'
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lapi.o lapi.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lcode.o lcode.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldebug.o ldebug.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldo.o ldo.c
ldo.c: In function ‘f_parser’:
ldo.c:496:7: warning: unused variable ‘c’ [-Wunused-variable]
   int c = luaZ_lookahead(p-&gt;z);
       ^
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldump.o ldump.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lfunc.o lfunc.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lgc.o lgc.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o llex.o llex.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lmem.o lmem.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lobject.o lobject.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lopcodes.o lopcodes.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lparser.o lparser.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstate.o lstate.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstring.o lstring.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltable.o ltable.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltm.o ltm.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lundump.o lundump.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lvm.o lvm.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lzio.o lzio.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o strbuf.o strbuf.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o fpconv.o fpconv.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lauxlib.o lauxlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lbaselib.o lbaselib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ldblib.o ldblib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o liolib.o liolib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lmathlib.o lmathlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o loslib.o loslib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o ltablib.o ltablib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lstrlib.o lstrlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o loadlib.o loadlib.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o linit.o linit.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_cjson.o lua_cjson.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_struct.o lua_struct.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_cmsgpack.o lua_cmsgpack.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua_bit.o lua_bit.c
ar rcu liblua.a lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o strbuf.o fpconv.o lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o lstrlib.o loadlib.o linit.o lua_cjson.o lua_struct.o lua_cmsgpack.o lua_bit.o  # DLL needs all object files
ranlib liblua.a
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o lua.o lua.c
cc -o lua  lua.o liblua.a -lm 
liblua.a(loslib.o): In function `os_tmpname':
loslib.c:(.text+0x28c): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o luac.o luac.c
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC=''    -c -o print.o print.c
cc -o luac  luac.o print.o liblua.a -lm 
make[3]: Leaving directory `/usr/local/redis/deps/lua/src'
MAKE jemalloc
cd jemalloc &amp;&amp; ./configure --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS=""
checking for xsltproc... false
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking size of void *... 8
checking size of int... 4
checking size of long... 8
checking size of intmax_t... 8
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking whether pause instruction is compilable... yes
checking for ar... ar
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking whether malloc_usable_size definition can use const argument... no
checking whether __attribute__ syntax is compilable... yes
checking whether compiler supports -fvisibility=hidden... yes
checking whether compiler supports -Werror... yes
checking whether tls_model attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether alloc_size attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether format(gnu_printf, ...) attribute is compilable... yes
checking whether compiler supports -Werror... yes
checking whether format(printf, ...) attribute is compilable... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for ranlib... ranlib
checking for ld... /usr/bin/ld
checking for autoconf... /usr/bin/autoconf
checking for memalign... yes
checking for valloc... yes
checking configured backtracing method... N/A
checking for sbrk... yes
checking whether utrace(2) is compilable... no
checking whether valgrind is compilable... yes
checking whether a program using __builtin_ffsl is compilable... yes
checking LG_PAGE... 12
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for pthread_create in -lpthread... yes
checking for library containing clock_gettime... none required
checking for secure_getenv... yes
checking for issetugid... no
checking for _malloc_thread_cleanup... no
checking for _pthread_mutex_init_calloc_cb... no
checking for TLS... yes
checking whether C11 atomics is compilable... no
checking whether atomic(9) is compilable... no
checking whether Darwin OSAtomic*() is compilable... no
checking whether madvise(2) is compilable... yes
checking whether to force 32-bit __sync_{add,sub}_and_fetch()... no
checking whether to force 64-bit __sync_{add,sub}_and_fetch()... no
checking for __builtin_clz... yes
checking whether Darwin OSSpin*() is compilable... no
checking whether glibc malloc hook is compilable... yes
checking whether glibc memalign hook is compilable... yes
checking whether pthreads adaptive mutexes is compilable... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating jemalloc.pc
config.status: creating doc/html.xsl
config.status: creating doc/manpages.xsl
config.status: creating doc/jemalloc.xml
config.status: creating include/jemalloc/jemalloc_macros.h
config.status: creating include/jemalloc/jemalloc_protos.h
config.status: creating include/jemalloc/jemalloc_typedefs.h
config.status: creating include/jemalloc/internal/jemalloc_internal.h
config.status: creating test/test.sh
config.status: creating test/include/test/jemalloc_test.h
config.status: creating config.stamp
config.status: creating bin/jemalloc-config
config.status: creating bin/jemalloc.sh
config.status: creating bin/jeprof
config.status: creating include/jemalloc/jemalloc_defs.h
config.status: creating include/jemalloc/internal/jemalloc_internal_defs.h
config.status: creating test/include/test/jemalloc_test_defs.h
config.status: executing include/jemalloc/internal/private_namespace.h commands
config.status: executing include/jemalloc/internal/private_unnamespace.h commands
config.status: executing include/jemalloc/internal/public_symbols.txt commands
config.status: executing include/jemalloc/internal/public_namespace.h commands
config.status: executing include/jemalloc/internal/public_unnamespace.h commands
config.status: executing include/jemalloc/internal/size_classes.h commands
config.status: executing include/jemalloc/jemalloc_protos_jet.h commands
config.status: executing include/jemalloc/jemalloc_rename.h commands
config.status: executing include/jemalloc/jemalloc_mangle.h commands
config.status: executing include/jemalloc/jemalloc_mangle_jet.h commands
config.status: executing include/jemalloc/jemalloc.h commands
===============================================================================
jemalloc version   : 4.0.3-0-ge9192eacf8935e29fc62fddc2701f7942b1cc02c
library revision   : 2

CONFIG             : --with-lg-quantum=3 --with-jemalloc-prefix=je_ --enable-cc-silence 'CFLAGS=-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops ' LDFLAGS=
CC                 : gcc
CFLAGS             : -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -fvisibility=hidden
CPPFLAGS           :  -D_GNU_SOURCE -D_REENTRANT
LDFLAGS            : 
EXTRA_LDFLAGS      : 
LIBS               :  -lpthread
TESTLIBS           : 
RPATH_EXTRA        : 

XSLTPROC           : false
XSLROOT            : 

PREFIX: /usr/local
BINDIR             : /usr/local/bin
DATADIR            : /usr/local/share
INCLUDEDIR         : /usr/local/include
LIBDIR             : /usr/local/lib
MANDIR             : /usr/local/share/man

srcroot            : 
abs_srcroot        : /usr/local/redis/deps/jemalloc/
objroot            : 
abs_objroot        : /usr/local/redis/deps/jemalloc/

JEMALLOC_PREFIX    : je_
JEMALLOC_PRIVATE_NAMESPACE
                   : je_
install_suffix     : 
autogen            : 0
cc-silence         : 1
debug              : 0
code-coverage      : 0
stats              : 1
prof               : 0
prof-libunwind     : 0
prof-libgcc        : 0
prof-gcc           : 0
tcache             : 1
fill               : 1
utrace             : 0
valgrind           : 1
xmalloc            : 0
munmap             : 0
lazy_lock          : 0
tls                : 1
cache-oblivious    : 1
===============================================================================
cd jemalloc &amp;&amp; make CFLAGS="-std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops " LDFLAGS="" lib/libjemalloc.a
make[3]: Entering directory `/usr/local/redis/deps/jemalloc'
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/jemalloc.o src/jemalloc.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/arena.o src/arena.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/atomic.o src/atomic.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/base.o src/base.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/bitmap.o src/bitmap.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk.o src/chunk.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_dss.o src/chunk_dss.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/chunk_mmap.o src/chunk_mmap.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ckh.o src/ckh.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/ctl.o src/ctl.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/extent.o src/extent.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/hash.o src/hash.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/huge.o src/huge.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mb.o src/mb.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/mutex.o src/mutex.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/pages.o src/pages.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/prof.o src/prof.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/quarantine.o src/quarantine.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/rtree.o src/rtree.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/stats.o src/stats.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tcache.o src/tcache.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/util.o src/util.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/tsd.o src/tsd.c
gcc -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops  -c -D_GNU_SOURCE -D_REENTRANT -Iinclude -Iinclude -o src/valgrind.o src/valgrind.c
ar crus lib/libjemalloc.a src/jemalloc.o src/arena.o src/atomic.o src/base.o src/bitmap.o src/chunk.o src/chunk_dss.o src/chunk_mmap.o src/ckh.o src/ctl.o src/extent.o src/hash.o src/huge.o src/mb.o src/mutex.o src/pages.o src/prof.o src/quarantine.o src/rtree.o src/stats.o src/tcache.o src/util.o src/tsd.o src/valgrind.o
make[3]: Leaving directory `/usr/local/redis/deps/jemalloc'
make[2]: Leaving directory `/usr/local/redis/deps'
    CC adlist.o
    CC quicklist.o
    CC ae.o
    CC anet.o
    CC dict.o
    CC server.o
    CC sds.o
    CC zmalloc.o
    CC lzf_c.o
    CC lzf_d.o
    CC pqsort.o
    CC zipmap.o
    CC sha1.o
    CC ziplist.o
    CC release.o
    CC networking.o
    CC util.o
    CC object.o
    CC db.o
    CC replication.o
    CC rdb.o
    CC t_string.o
    CC t_list.o
    CC t_set.o
    CC t_zset.o
    CC t_hash.o
    CC config.o
    CC aof.o
    CC pubsub.o
    CC multi.o
    CC debug.o
    CC sort.o
    CC intset.o
    CC syncio.o
    CC cluster.o
    CC crc16.o
    CC endianconv.o
    CC slowlog.o
    CC scripting.o
    CC bio.o
    CC rio.o
    CC rand.o
    CC memtest.o
    CC crc64.o
    CC bitops.o
    CC sentinel.o
    CC notify.o
    CC setproctitle.o
    CC blocked.o
    CC hyperloglog.o
    CC latency.o
    CC sparkline.o
    CC redis-check-rdb.o
    CC redis-check-aof.o
    CC geo.o
    CC lazyfree.o
    CC module.o
    CC evict.o
    CC expire.o
    CC geohash.o
    CC geohash_helper.o
    CC childinfo.o
    CC defrag.o
    CC siphash.o
    CC rax.o
    LINK redis-server
    INSTALL redis-sentinel
    CC redis-cli.o
    LINK redis-cli
    CC redis-benchmark.o
    LINK redis-benchmark
    INSTALL redis-check-rdb
    INSTALL redis-check-aof

Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/usr/local/redis/src'
    CC Makefile.dep

Hint: It's a good idea to run 'make test' ;)

    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
    INSTALL install
[root@VM-0-10-centos src]# </code></pre>
<ul>
<li>修改redis配置文件</li>
</ul>
<pre><code>#进入redis安装路径
[root@VM-0-10-centos ~]# cd /usr/local/redis
[root@VM-0-10-centos redis]# ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils
#修改redis密码
[root@VM-0-10-centos redis]# sed -i "s/# requirepass foobared/requirepass 123456/g" redis.conf 
#取消登陆限制
[root@VM-0-10-centos redis]# sed -i "s/bind 127.0.0.1/#bind 127.0.0.1/g" redis.conf 
#修改默认端口6379
[root@VM-0-10-centos redis]# sed -i "s/port 6379/port 16379/g" redis.conf</code></pre>
<ul>
<li>配置系统启动redis并设置开机自启</li>
</ul>
<pre><code>#新增文件
[root@VM-0-10-centos redis]# vim /etc/systemd/system/redis.service 
#添加以下内容
[Unit]
Description=redis
Documentation=https://redis.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@VM-0-10-centos redis]# systemctl enable redis.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /etc/systemd/system/redis.service.</code></pre>
<ul>
<li>启动并登录redis验证密码</li>
</ul>
<pre><code>[root@VM-0-10-centos src]# service redis start
[root@VM-0-10-centos src]# ./redis-cli -h 127.0.0.1 -p 16379
#验证密码
127.0.0.1:16379&gt; auth 123456
OK
127.0.0.1:16379&gt;</code></pre>
<h2>部署redis-exporter</h2>
<ul>
<li>安装redis-exporter</li>
</ul>
<p><a href="https://install.jishuliu.cn/prometheus/redis_exporter-v1.51.0.linux-amd64.tar.gz" title="下载地址">redis_exporter下载地址</a></p>
<pre><code>#下载redis_exporter
[root@VM-0-10-centos ~]# wget https://install.jishuliu.cn/prometheus/redis_exporter-v1.51.0.linux-amd64.tar.gz
--2023-07-15 08:41:12--  https://install.jishuliu.cn/prometheus/redis_exporter-v1.51.0.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 218.12.86.80, 116.153.64.158, 116.172.148.7, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|218.12.86.80|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3580335 (3.4M) [application/gzip]
Saving to: ‘redis_exporter-v1.51.0.linux-amd64.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 3,580,335   7.40MB/s   in 0.5s   

2023-07-15 08:41:13 (7.40 MB/s) - ‘redis_exporter-v1.51.0.linux-amd64.tar.gz’ saved [3580335/3580335]
#解压redis_exporter
[root@VM-0-10-centos ~]# tar xf redis_exporter-v1.51.0.linux-amd64.tar.gz 
[root@VM-0-10-centos ~]# ls
redis_exporter-v1.51.0.linux-amd64  redis_exporter-v1.51.0.linux-amd64.tar.gz
#把redis_exporter移动到安装路径
[root@VM-0-10-centos ~]# mv redis_exporter-v1.51.0.linux-amd64 /usr/local/redis_exporter
[root@VM-0-10-centos ~]# ls
redis_exporter-v1.51.0.linux-amd64.tar.gz
#删除redis_exporter安装包
[root@VM-0-10-centos ~]# rm -rf redis_exporter-v1.51.0.linux-amd64.tar.gz
#进入redis_exporter安装路径
[root@VM-0-10-centos local]# cd /usr/local/redis_exporter/
[root@VM-0-10-centos redis_exporter]# ls
LICENSE  README.md  redis_exporter</code></pre>
<ul>
<li>配置系统启动redis_exporter并设置开机启动</li>
</ul>
<pre><code>#新增文件
[root@VM-0-10-centos ~]# cat /etc/systemd/system/redis_exporter.service 
#写入以下内容
[Unit]
Descriptinotallow=redis_exporter
Documentatinotallow=https://github.com/oliver006/redis_exporter
After=network.target
[Service]
Type=simple
User=root
#-redis.addr：redis地址(IP:port)。-redis.password：redis密码(无密码则不用配置此参数)。-web.listen-address：redis_exporter的监听端口，默认9121
ExecStart=/usr/local/redis_exporter/redis_exporter -redis.addr 127.0.0.1:16379  -redis.password 123456 -web.listen-address ":9122"
Restart=on-failure
[Install]
WantedBy=multi-user.target
#启动redis_exporter
[root@VM-0-10-centos ~]# service redis_exporter start
Redirecting to /bin/systemctl start redis_exporter.service
[root@VM-0-10-centos ~]# service redis_exporter status
Redirecting to /bin/systemctl status redis_exporter.service
● redis_exporter.service
   Loaded: loaded (/etc/systemd/system/redis_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2023-07-15 08:58:41 CST; 1s ago
 Main PID: 4839 (redis_exporter)
   CGroup: /system.slice/redis_exporter.service
           └─4839 /usr/local/redis_exporter/redis_exporter -redis.addr 127.0.0.1:16379 -redis.password 123456 -web.listen-address :9122

Jul 15 08:58:41 VM-0-10-centos systemd[1]: Started redis_exporter.service.
Jul 15 08:58:41 VM-0-10-centos redis_exporter[4839]: time="2023-07-15T08:58:41+08:00" level=info msg="Redis Metrics Exporter v1.51.0    build date: 2023-06-15-03:20:32    sha1: c3efa55016c226a43a66b0a8b44cdb0c149048c4    Go: go1.20.2    GOOS: linux    GOARCH: amd64"
Jul 15 08:58:41 VM-0-10-centos redis_exporter[4839]: time="2023-07-15T08:58:41+08:00" level=info msg="Providing metrics at :9122/metrics"
#设置redis_exporter开机自启
[root@VM-0-10-centos ~]# systemctl enable redis_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis_exporter.service to /etc/systemd/system/redis_exporter.service.</code></pre>
<h2>Prometheus添加node_exporter</h2>
<ul>
<li>prometheus添加node_exporter</li>
</ul>
<pre><code>#进入Prometheus的安装路径下
[root@VM-0-10-centos ~]# cd /usr/local/prometheus/
#在Prometheus的内添加最下面三行
[root@VM-0-10-centos prometheus]# vim prometheus.yml 
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
#项目名
  - job_name: "redis"
    static_configs:
      #
      - targets: ["127.0.0.1:9122"]
[root@VM-0-10-centos prometheus]# service prometheus restart
Redirecting to /bin/systemctl restart prometheus.service</code></pre>
<ul>
<li>页面导入redis_exporter的dashboard</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/a97d1689386602.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/a97d1689386602.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/cb341689386651.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/cb341689386651.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/a0621689386881.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/a0621689386881.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/f7931689386910.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/f7931689386910.png" alt="" /></a></p>
<ul>
<li>dashboard的模版ID使用17507，如果是纯内网部署可以选择下dashboard的json文件</li>
</ul>
<p><a href="https://package.jishu.cn/grafana/17507_rev1.json" title="redis_exporter的dashboard模版下载地址">redis_exporter的dashboard模版下载地址</a></p>
<h1>MySQL</h1>
<h2>部署MySQL</h2>
<ul>
<li>安装MySQL</li>
</ul>
<pre><code>#下载MySQL安装包
[root@VM-0-10-centos ~]# wget https://install.jishuliu.cn/MySQL/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
--2023-07-15 09:13:11--  https://install.jishuliu.cn/MySQL/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
Resolving package.jishuliu.cn (package.jishuliu.cn)... 119.188.86.194, 116.172.148.7, 116.163.24.195, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|119.188.86.194|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 554516480 (529M) [application/x-tar]
Saving to: ‘mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar’

100%[=======================================================================================================================================================&gt;] 554,516,480 4.37MB/s   in 1m 59s 

2023-07-15 09:15:10 (4.45 MB/s) - ‘mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar’ saved [554516480/554516480]

[root@VM-0-10-centos ~]# ls
mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
#创建MySQL解压路径
[root@VM-0-10-centos ~]# mkdir mysql
#解压安装包到指定路径
[root@VM-0-10-centos ~]# tar xf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar -C mysql/
#进入解压路径
[root@VM-0-10-centos ~]# cd mysql/
[root@VM-0-10-centos mysql]# ls
mysql-community-client-5.7.38-1.el7.x86_64.rpm    mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm  mysql-community-server-5.7.38-1.el7.x86_64.rpm
mysql-community-common-5.7.38-1.el7.x86_64.rpm    mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm   mysql-community-test-5.7.38-1.el7.x86_64.rpm
mysql-community-devel-5.7.38-1.el7.x86_64.rpm     mysql-community-libs-5.7.38-1.el7.x86_64.rpm
mysql-community-embedded-5.7.38-1.el7.x86_64.rpm  mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
#安装MySQL
[root@VM-0-10-centos mysql]# yum -y localinstall *.rpm
Loaded plugins: fastestmirror, langpacks
Examining mysql-community-client-5.7.38-1.el7.x86_64.rpm: mysql-community-client-5.7.38-1.el7.x86_64
Marking mysql-community-client-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-common-5.7.38-1.el7.x86_64.rpm: mysql-community-common-5.7.38-1.el7.x86_64
Marking mysql-community-common-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-devel-5.7.38-1.el7.x86_64.rpm: mysql-community-devel-5.7.38-1.el7.x86_64
Marking mysql-community-devel-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-embedded-5.7.38-1.el7.x86_64.rpm: mysql-community-embedded-5.7.38-1.el7.x86_64
Marking mysql-community-embedded-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm: mysql-community-embedded-compat-5.7.38-1.el7.x86_64
Marking mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm: mysql-community-embedded-devel-5.7.38-1.el7.x86_64
Marking mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-libs-5.7.38-1.el7.x86_64.rpm: mysql-community-libs-5.7.38-1.el7.x86_64
Marking mysql-community-libs-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm: mysql-community-libs-compat-5.7.38-1.el7.x86_64
Marking mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-server-5.7.38-1.el7.x86_64.rpm: mysql-community-server-5.7.38-1.el7.x86_64
Marking mysql-community-server-5.7.38-1.el7.x86_64.rpm to be installed
Examining mysql-community-test-5.7.38-1.el7.x86_64.rpm: mysql-community-test-5.7.38-1.el7.x86_64
Marking mysql-community-test-5.7.38-1.el7.x86_64.rpm to be installed
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be obsoleted
---&gt; Package mysql-community-client.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-common.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-devel.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-embedded.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-embedded-compat.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-embedded-devel.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-libs.x86_64 0:5.7.38-1.el7 will be obsoleting
---&gt; Package mysql-community-libs-compat.x86_64 0:5.7.38-1.el7 will be obsoleting
---&gt; Package mysql-community-server.x86_64 0:5.7.38-1.el7 will be installed
---&gt; Package mysql-community-test.x86_64 0:5.7.38-1.el7 will be installed
--&gt; Processing Dependency: perl(JSON) for package: mysql-community-test-5.7.38-1.el7.x86_64
Loading mirror speeds from cached hostfile
--&gt; Processing Dependency: perl(JSON) for package: mysql-community-test-5.7.38-1.el7.x86_64
--&gt; Running transaction check
---&gt; Package perl-JSON.noarch 0:2.59-2.el7 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================================
 Package                                             Arch                       Version                           Repository                                                                Size
=================================================================================================================================================================================================
Installing:
 mysql-community-client                              x86_64                     5.7.38-1.el7                      /mysql-community-client-5.7.38-1.el7.x86_64                              106 M
 mysql-community-common                              x86_64                     5.7.38-1.el7                      /mysql-community-common-5.7.38-1.el7.x86_64                              2.8 M
 mysql-community-devel                               x86_64                     5.7.38-1.el7                      /mysql-community-devel-5.7.38-1.el7.x86_64                                24 M
 mysql-community-embedded                            x86_64                     5.7.38-1.el7                      /mysql-community-embedded-5.7.38-1.el7.x86_64                            201 M
 mysql-community-embedded-compat                     x86_64                     5.7.38-1.el7                      /mysql-community-embedded-compat-5.7.38-1.el7.x86_64                      88 M
 mysql-community-embedded-devel                      x86_64                     5.7.38-1.el7                      /mysql-community-embedded-devel-5.7.38-1.el7.x86_64                      902 M
 mysql-community-libs                                x86_64                     5.7.38-1.el7                      /mysql-community-libs-5.7.38-1.el7.x86_64                                9.9 M
     replacing  mariadb-libs.x86_64 1:5.5.68-1.el7
 mysql-community-libs-compat                         x86_64                     5.7.38-1.el7                      /mysql-community-libs-compat-5.7.38-1.el7.x86_64                         6.0 M
     replacing  mariadb-libs.x86_64 1:5.5.68-1.el7
 mysql-community-server                              x86_64                     5.7.38-1.el7                      /mysql-community-server-5.7.38-1.el7.x86_64                              771 M
 mysql-community-test                                x86_64                     5.7.38-1.el7                      /mysql-community-test-5.7.38-1.el7.x86_64                                669 M
Installing for dependencies:
 perl-JSON                                           noarch                     2.59-2.el7                        os                                                                        96 k

Transaction Summary
=================================================================================================================================================================================================
Install  10 Packages (+1 Dependent package)

Total size: 2.7 G
Total download size: 96 k
Downloading packages:
perl-JSON-2.59-2.el7.noarch.rpm                                                                                                                                           |  96 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : mysql-community-common-5.7.38-1.el7.x86_64                                                                                                                                   1/12 
  Installing : mysql-community-libs-5.7.38-1.el7.x86_64                                                                                                                                     2/12 
  Installing : mysql-community-client-5.7.38-1.el7.x86_64                                                                                                                                   3/12 
  Installing : mysql-community-server-5.7.38-1.el7.x86_64                                                                                                                                   4/12 
  Installing : mysql-community-devel-5.7.38-1.el7.x86_64                                                                                                                                    5/12 
  Installing : mysql-community-embedded-5.7.38-1.el7.x86_646/12 
  Installing : perl-JSON-2.59-2.el7.noarch                                                                                                                                                  7/12 
  Installing : mysql-community-test-5.7.38-1.el7.x86_64                                                                                                                                     8/12 
  Installing : mysql-community-embedded-devel-5.7.38-1.el7.x86_64                                                                                                                           9/12 
  Installing : mysql-community-libs-compat-5.7.38-1.el7.x86_64                                                                                                                             10/12 
  Installing : mysql-community-embedded-compat-5.7.38-1.el7.x86_64                                                                                                                         11/12 
  Erasing    : 1:mariadb-libs-5.5.68-1.el7.x86_64                                                                                                                                          12/12 
  Verifying  : mysql-community-embedded-5.7.38-1.el7.x86_64                                                                                                                                 1/12 
  Verifying  : mysql-community-test-5.7.38-1.el7.x86_64                                                                                                                                     2/12 
  Verifying  : perl-JSON-2.59-2.el7.noarch                                                                                                                                                  3/12 
  Verifying  : mysql-community-embedded-devel-5.7.38-1.el7.x86_64                                                                                                                           4/12 
  Verifying  : mysql-community-client-5.7.38-1.el7.x86_64                                                                                                                                   5/12 
  Verifying  : mysql-community-devel-5.7.38-1.el7.x86_64                                                                                                                                    6/12 
  Verifying  : mysql-community-server-5.7.38-1.el7.x86_64                                                                                                                                   7/12 
  Verifying  : mysql-community-libs-compat-5.7.38-1.el7.x86_64                                                                                                                              8/12 
  Verifying  : mysql-community-embedded-compat-5.7.38-1.el7.x86_64                                                                                                                          9/12 
  Verifying  : mysql-community-common-5.7.38-1.el7.x86_64                                                                                                                                  10/12 
  Verifying  : mysql-community-libs-5.7.38-1.el7.x86_64                                                                                                                                    11/12 
  Verifying  : 1:mariadb-libs-5.5.68-1.el7.x86_64                                                                                                                                          12/12 

Installed:
  mysql-community-client.x86_64 0:5.7.38-1.el7               mysql-community-common.x86_64 0:5.7.38-1.el7                      mysql-community-devel.x86_64 0:5.7.38-1.el7                     
  mysql-community-embedded.x86_64 0:5.7.38-1.el7             mysql-community-embedded-compat.x86_64 0:5.7.38-1.el7             mysql-community-embedded-devel.x86_64 0:5.7.38-1.el7            
  mysql-community-libs.x86_64 0:5.7.38-1.el7mysql-community-libs-compat.x86_64 0:5.7.38-1.el7                 mysql-community-server.x86_64 0:5.7.38-1.el7                    
  mysql-community-test.x86_64 0:5.7.38-1.el7                

Dependency Installed:
  perl-JSON.noarch 0:2.59-2.el7                                                                                                                                                                  

Replaced:
  mariadb-libs.x86_64 1:5.5.68-1.el7                                                                                                                                                             

Complete!</code></pre>
<ul>
<li>配置MySQL</li>
</ul>
<pre><code>#启动MySQL
[root@VM-0-10-centos mysql]# service mysqld restart
Redirecting to /bin/systemctl restart mysqld.service
#查看日志文件内的初始密码
[root@VM-0-10-centos mysql]# grep pass error.log 
2023-07-15T01:21:14.652964Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:14.652967Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:16.979187Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:16.979190Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:19.229950Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:19.229953Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:21.501437Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:21.501440Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:23.729500Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:23.729503Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:25.927261Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:25.927264Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:28.232722Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:28.232725Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:30.491697Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:30.491701Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:32.688208Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:32.688211Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:34.939424Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:34.939427Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:37.241312Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:37.241315Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:39.487183Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:39.487186Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:41.687434Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:41.687438Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:43.987688Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:43.987698Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:46.239128Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:46.239131Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:48.490688Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:48.490691Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:50.742233Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:50.742236Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:52.980292Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:52.980296Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:55.239998Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:55.240001Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:57.485870Z 0 [Note] Shutting down plugin 'sha256_password'
2023-07-15T01:21:57.485873Z 0 [Note] Shutting down plugin 'mysql_native_password'
2023-07-15T01:21:58.437825Z 1 [Note] A temporary password is generated for root@localhost: J%#b#y5bz1jf
#进入MySQL数据库
[root@VM-0-10-centos mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.38

Copyright (c) 2000, 2022, 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&gt; set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)

#修改策略
mysql&gt; set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)

#修改密码
mysql&gt; set password=password("123456");
Query OK, 0 rows affected, 1 warning (0.00 sec)

#刷新权限
mysql&gt;  flush privileges;
Query OK, 0 rows affected (0.00 sec)

#新增授权
mysql&gt; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

#刷新权限
mysql&gt;  flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql&gt; exit
Bye
#设置开机启动
[root@VM-0-10-centos ~]# systemctl enable mysqld.service</code></pre>
<h2>部署mysql_exporter</h2>
<ul>
<li>部署mysql_exporter</li>
</ul>
<pre><code>#下载mysqld_epxorter安装包
[root@VM-0-10-centos ~]# wget https://install.jishuliu.cn/prometheus/mysqld_exporter-0.14.0.linux-amd64.tar.gz
--2023-07-15 10:28:57--  https://install.jishuliu.cn/prometheus/mysqld_exporter-0.14.0.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 42.236.89.185, 116.153.64.158, 36.248.54.138, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|42.236.89.185|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7450991 (7.1M) [application/gzip]
Saving to: ‘mysqld_exporter-0.14.0.linux-amd64.tar.gz’

100%[=======================================================================================================================================================&gt;] 7,450,991   3.38MB/s   in 2.1s   

2023-07-15 10:28:59 (3.38 MB/s) - ‘mysqld_exporter-0.14.0.linux-amd64.tar.gz’ saved [7450991/7450991]

[root@VM-0-10-centos ~]# ls
mysqld_exporter-0.14.0.linux-amd64.tar.gz
#解压安装包
[root@VM-0-10-centos ~]# tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz 
#把mysql_exporter的安装包移动到安装目录下
[root@VM-0-10-centos ~]# mv mysqld_exporter-0.14.0.linux-amd64 /usr/local/mysqld_exporter</code></pre>
<ul>
<li>创建mysql账号密码的配置文件</li>
</ul>
<pre><code>#进入mysql_exporter的安装路径下
[root@VM-0-10-centos ~]# cd 
#编辑my.cnf配置文件
[root@VM-0-10-centos mysqld_exporter]# vim .my.cnf
#写入以下内容
[client]
#数据库账号
user = root
#密码
password = root</code></pre>
<ul>
<li>配置系统服务并设置开机启动</li>
</ul>
<pre><code>#编辑文件
[root@VM-0-10-centos ~]# vim /etc/systemd/system/mysql_exporter.service

[Unit]
Descriptinotallow=mysql_exporter
Documentatinotallow=https://github.com/oliver006/redis_exporter
After=network.target
[Service]
Type=simple
User=root
#启动命令
ExecStart=/usr/local/mysql_exporter/mysqld_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
#重启mysql-exporter
[root@VM-0-10-centos ~]# service mysql_exporter restart
Redirecting to /bin/systemctl restart mysql_exporter.service
#设置开机启动
[root@VM-0-10-centos ~]# systemctl enable mysql_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysql_exporter.service to /etc/systemd/system/mysql_exporter.service.
[root@VM-0-10-centos ~]#</code></pre>
<h2>Prometheus添加mysql_exporter</h2>
<ul>
<li>修改Prometheus配置文件</li>
</ul>
<pre><code>#进入Prometheus安装路径
[root@VM-0-10-centos ~]# cd /usr/local/prometheus/
[root@VM-0-10-centos prometheus]# ls
console_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
#修改配置文件增加以下三行
[root@VM-0-10-centos prometheus]# vim prometheus.yml
- job_name: "mysql-测试环境"
    static_configs:
      - targets: ["127.0.0.1:9104"]</code></pre>
<ul>
<li>重启Prometheus</li>
</ul>
<pre><code>[root@VM-0-10-centos prometheus]# service prometheus restart
Redirecting to /bin/systemctl restart prometheus.service
[root@VM-0-10-centos prometheus]# </code></pre>
<ul>
<li>页面配置grafana</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/19c91689391641.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/19c91689391641.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/08c91689391696.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/08c91689391696.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/2c371689391727.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/2c371689391727.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202307/28f71689391738.png"><img src="https://www.jishuliu.cn/content/uploadfile/202307/28f71689391738.png" alt="" /></a></p>
<ul>
<li>本次使用的dashboard的ID为17320，也可以使用json文件直接导入</li>
</ul>
<p><a href="https://install.jishuliu.cn/grafana/mysql-overview_rev5.json" title="grafana的mysql_exporter模版">grafana的mysql_exporter模版</a></p>]]></description>
    <pubDate>Sat, 15 Jul 2023 08:23:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=33</guid>
</item>
<item>
    <title>centos硬盘分区及文件系统扩容</title>
    <link>https://www.jishuliu.cn/?post=32</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>硬盘分区</h1>
<h2>2T以下容量分区</h2>
<pre><code>[root@VM-16-2-centos ~]# fdisk -l  #查看分区详情

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104857566    52427759+  83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@VM-16-2-centos ~]# fdisk /dev/vdb  #进入fdisk进行分区
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4a2d1cd4.

Command (m for help): n  #创建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p  #选择主分区
Partition number (1-4, default 1): 1  #选择分区编号
First sector (2048-41943039, default 2048):  #直接回车表示从第2048分区块开始
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):  #直接回车表示到最大分区块结束
Using default value 41943039
Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): w  #保存并退出
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@VM-16-2-centos ~]# fdisk -l   #查看硬盘详情

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104857566    52427759+  83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x4a2d1cd4

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1            2048    41943039    20970496   83  Linux
[root@VM-16-2-centos ~]# mkfs.ext4 /dev/vdb1  #把分区格式化成ext4文件系统
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@VM-16-2-centos ~]# mount /dev/vdb1 /data/  #挂载硬盘
[root@VM-16-2-centos ~]# df -Th  #查看硬盘挂载详情
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  484M     0  484M   0% /dev
tmpfs          tmpfs     496M   24K  496M   1% /dev/shm
tmpfs          tmpfs     496M  472K  495M   1% /run
tmpfs          tmpfs     496M     0  496M   0% /sys/fs/cgroup
/dev/vda1      ext4       50G  2.9G   45G   7% /
tmpfs          tmpfs     100M     0  100M   0% /run/user/0
/dev/vdb1      ext4       20G   45M   19G   1% /data
[root@VM-16-2-centos ~]# </code></pre>
<h2>2T以上容量分区</h2>
<pre><code>[root@VM-16-2-centos ~]# parted /dev/vdb  #进入parted进行分区
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt     #把当前硬盘转换成gpt格式                                                 
Warning: The existing disk label on /dev/vdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes                                                               
(parted) mkpart primary 0% 100%            #创建一个分区容量从0%到100%                                
(parted) p       #查看分区                                                         
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  21.5GB  21.5GB  ext4         primary

(parted) q                                                                
Information: You may need to update /etc/fstab.

[root@VM-16-2-centos ~]# fdisk -l #查看硬盘详情

Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048   104857566    52427759+  83  Linux
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: CE874854-3D3C-402B-B46D-9383CD4E0280

#         Start          End    Size  Type            Name
 1         2048     41940991     20G  Microsoft basic primary
[root@VM-16-2-centos ~]# mkfs.ext4 /dev/vdb1 #把分区格式化成ext4文件系统
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242368 blocks
262118 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
    4096000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

[root@VM-16-2-centos ~]# mount /dev/vdb1 /data/  #把分区挂载到指定路径
[root@VM-16-2-centos ~]# df -Th #查看硬盘挂载
Filesystem     Type      Size  Used Avail Use% Mounted on
devtmpfs       devtmpfs  484M     0  484M   0% /dev
tmpfs          tmpfs     496M   24K  496M   1% /dev/shm
tmpfs          tmpfs     496M  472K  495M   1% /run
tmpfs          tmpfs     496M     0  496M   0% /sys/fs/cgroup
/dev/vda1      ext4       50G  3.0G   45G   7% /
tmpfs          tmpfs     100M     0  100M   0% /run/user/0
/dev/vdb1      ext4       20G   45M   19G   1% /data
[root@VM-16-2-centos ~]# </code></pre>
<h1>分区扩容</h1>
<ul>
<li>硬盘初始化分区后，MBR( fdisk 分区工具)分区最大支持容量2T以下扩容，GPT(使用parted 分区工具)分区支持2T以上扩容</li>
</ul>
<h2>MBR分区扩容</h2>
<pre><code>[root@VM-16-2-centos ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 203.6M  0 rom  
vda    253:0    0    50G  0 disk 
└─vda1 253:1    0    50G  0 part /
vdb    253:16   0    30G  0 disk 
└─vdb1 253:17   0    20G  0 part 
[root@VM-16-2-centos ~]# yum -y install gdisk  #安装硬盘扩容工具
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel                                                                                                                                                                                                                                                   | 4.7 kB  00:00:00     
extras                                                                                                                                                                                                                                                 | 2.9 kB  00:00:00     
os                                                                                                                                                                                                                                                     | 3.6 kB  00:00:00     
updates                                                                                                                                                                                                                                                | 2.9 kB  00:00:00     
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package gdisk.x86_64 0:0.8.10-3.el7 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================================================================================================
 Package                                                         Arch                                                             Version                                                                  Repository                                                    Size
==============================================================================================================================================================================================================================================================================
Installing:
 gdisk                                                           x86_64                                                           0.8.10-3.el7                                                             os                                                           190 k

Transaction Summary
==============================================================================================================================================================================================================================================================================
Install  1 Package

Total download size: 190 k
Installed size: 660 k
Downloading packages:
gdisk-0.8.10-3.el7.x86_64.rpm                                                                                                                                                                                                                          | 190 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : gdisk-0.8.10-3.el7.x86_641/1 
  Verifying  : gdisk-0.8.10-3.el7.x86_64                                                                                                                                                                                                                                  1/1 

Installed:
  gdisk.x86_64 0:0.8.10-3.el7                                                                                                                                                                                                                                                 

Complete!
[root@VM-16-2-centos ~]# growpart /dev/vdb 1  #分区扩容
CHANGED: partition=1 start=2048 old: size=41938944 end=41940992 new: size=62912478 end=62914526
[root@VM-16-2-centos ~]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 203.6M  0 rom  
vda    253:0    0    50G  0 disk 
└─vda1 253:1    0    50G  0 part /
vdb    253:16   0    30G  0 disk 
└─vdb1 253:17   0    30G  0 part /data
[root@VM-16-2-centos ~]# resize2fs /dev/vdb1  #文件系统扩容
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vdb1 is mounted on /data; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vdb1 is now 7864059 blocks long.</code></pre>
<h2>GPT分区扩容</h2>
<ul>
<li>建议扩容前先找一块临时硬盘进行备份</li>
</ul>
<pre><code>#查看当前硬盘及分区详情，可以看到vdb数据盘总大小2201.2GB，只有一个20G的分区
[root@VM-16-3-centos ~]# fdisk -l  

Disk /dev/vda: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009ac89

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    62914526    31456239+  83  Linux

Disk /dev/vdb: 2201.2 GB, 2201170739200 bytes, 4299161600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/vdb1               1    41943039    20971519+  ee  GPT

#检查硬盘容量及分区大小
[root@VM-16-3-centos ~]# parted /dev/vdb print
Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? FIX
Warning: Not all of the space available to /dev/vdb appears to be used, you can fix the GPT to use all of the space (an extra 4257218560 blocks) or continue with the current setting? 
Fix/Ignore? FIX
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2201GB  #硬盘分区总大小
Sector size (logical/physical): 512B/512B
Partition Table: gpt  #分区格式
Disk Flags:

#分区详情
Number  Start   End     Size    File system  Name     Flags
 1      1049kB  21.5GB  21.5GB  ext4         primary

#进入分区挂载目录
[root@VM-16-3-centos ~]# cd /data/
#查看当前目录下的所有内容(不包含隐藏文件)
[root@VM-16-3-centos data]# ls
aaa  aaaa  lost+found
#退出分区挂载路径到当前用户家目录下
[root@VM-16-3-centos data]# cd
#把需要扩容的分区取消挂载
[root@VM-16-3-centos ~]# umount /dev/vdb1
#进入parted分区工具
[root@VM-16-3-centos ~]# parted /dev/vdb
GNU Parted 3.1
Using /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print #查看当前硬盘的大小及分区
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 4299161600s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start  End        SizeFile system  Name     Flags
 1      2048s  41940991s  41938944s  ext4         primary

(parted) rm 1  #删除原有分区
(parted) print #查看分区是否删除成功
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 4299161600s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End  Size  File system  Name  Flags

(parted) mkpart primary 2048s 100% #新建一个分区并把硬盘所有大小写入新分区
(parted) print  #查看是否分区成功
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 4299161600s
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start  End          Size         File system  Name     Flags
 1      2048s  4299159551s  4299157504s  ext4         primary

(parted) quit  #退出分区工具
Information: You may need to update /etc/fstab.

#查看硬盘及分区详情
[root@VM-16-3-centos ~]# lsblk  
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 203.6M  0 rom  
vda    253:0    0    30G  0 disk 
└─vda1 253:1    0    30G  0 part /
vdb    253:16   0     2T  0 disk 
└─vdb1 253:17   0     2T  0 part 
#检查分区
[root@VM-16-3-centos ~]# e2fsck -f /dev/vdb1
e2fsck 1.42.9 (28-Dec-2013)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vdb1: 16/1310720 files (0.0% non-contiguous), 126327/5242368 blocks
#扩容分区
[root@VM-16-3-centos ~]# resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vdb1 to 537394688 (4k) blocks.
The filesystem on /dev/vdb1 is now 537394688 blocks long.

#挂载扩容后的分区到系统目录
[root@VM-16-3-centos ~]# mount /dev/vdb1 /data
#进入挂载点
[root@VM-16-3-centos ~]# cd /data/
#查看文件及文件夹是否有丢失
[root@VM-16-3-centos data]# ls
aaa  aaaa  lost+found
[root@VM-16-3-centos data]# cd aaa/
[root@VM-16-3-centos aaa]# ls
bbb
[root@VM-16-3-centos aaa]# cd bbb/
[root@VM-16-3-centos bbb]# ls
ccc
[root@VM-16-3-centos bbb]# cd /data/
[root@VM-16-3-centos data]# ls
aaa  aaaa  lost+found
[root@VM-16-3-centos data]# cat aaaa
aaaa</code></pre>]]></description>
    <pubDate>Thu, 29 Jun 2023 10:26:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=32</guid>
</item>
<item>
    <title>服务器实现钉钉机器人报警</title>
    <link>https://www.jishuliu.cn/?post=31</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>部署node_exporter</h1>
<ul>
<li>下载node_exporter安装包并解压</li>
</ul>
<pre><code>[root@VM-12-5-centos ~]# wget https://install.jishuliu.cn/prometheus/node_exporter-1.3.1.linux-amd64.tar.gz
--2023-06-26 14:43:38--  https://install.jishuliu.cn/prometheus/node_exporter-1.3.1.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 61.170.65.58, 61.170.65.57, 2408:874e:1:2:51::, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|61.170.65.58|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 9033415 (8.6M) [application/gzip]
Saving to: ‘node_exporter-1.3.1.linux-amd64.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 9,033,415   8.66MB/s   in 1.0s   

2023-06-26 14:43:39 (8.66 MB/s) - ‘node_exporter-1.3.1.linux-amd64.tar.gz’ saved [9033415/9033415]

[root@VM-12-5-centos ~]# tar xf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
[root@VM-12-5-centos ~]# cd /usr/local/
[root@VM-12-5-centos local]# mv node_exporter-1.3.1.linux-amd64/ node_exporter</code></pre>
<ul>
<li>添加node_exporter的系统监听文件</li>
</ul>
<pre><code>[root@VM-12-5-centos local]# vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
After=syslog.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/node_exporter/node_exporter
Restart=always
RestartSec=10
StartLimitInterval=100

[Install]
WantedBy=multi-user.target</code></pre>
<ul>
<li>启动node_exporter并添加开机自启动</li>
</ul>
<pre><code>[root@VM-12-5-centos local]# service node_exporter start
Redirecting to /bin/systemctl start node_exporter.service
[root@VM-12-5-centos local]# service node_exporter status
Redirecting to /bin/systemctl status node_exporter.service
● node_exporter.service - node_exporter
   Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-06-26 14:45:35 CST; 3s ago
 Main PID: 12944 (node_exporter)
   CGroup: /system.slice/node_exporter.service
           └─12944 /usr/local/node_exporter/node_exporter

Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=thermal_zone
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=time
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=timex
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=udp_queues
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=uname
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=vmstat
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=xfs
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:115 level=info collector=zfs
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.391Z caller=node_exporter.go:199 level=info msg="Listening on" address=:9100
Jun 26 14:45:35 VM-12-5-centos node_exporter[12944]: ts=2023-06-26T06:45:35.392Z caller=tls_config.go:195 level=info msg="TLS is disabled." http2=false
[root@VM-12-5-centos local]# systemctl enable node_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.</code></pre>
<h1>部署Prometheus</h1>
<ul>
<li>下载安装包并解压</li>
</ul>
<pre><code>[root@VM-12-5-centos ~]# wget "https://install.jishuliu.cn/prometheus/prometheus-2.32.1.linux-amd64.tar.gz"
--2023-06-26 14:29:31--  https://install.jishuliu.cn/prometheus/prometheus-2.32.1.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 61.170.65.58, 61.170.65.57, 2408:8738:b000:d:40::b, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|61.170.65.58|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 75073989 (72M) [application/gzip]
Saving to: ‘prometheus-2.32.1.linux-amd64.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 75,073,989  4.33MB/s   in 15s    

2023-06-26 14:29:47 (4.73 MB/s) - ‘prometheus-2.32.1.linux-amd64.tar.gz’ saved [75073989/75073989]

[root@VM-12-5-centos ~]# tar xf prometheus-2.32.1.linux-amd64.tar.gz -C /usr/local/
[root@VM-12-5-centos ~]# cd /usr/local/
[root@VM-12-5-centos local]# mv prometheus-2.32.1.linux-amd64/ prometheus</code></pre>
<ul>
<li>创建Prometheus的系统服务文件</li>
</ul>
<pre><code>vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target</code></pre>
<ul>
<li>修改配置文件</li>
</ul>
<pre><code>[root@VM-12-5-centos prometheus]# vim prometheus.yml

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["10.0.12.5:9093"] #alertmanager的IP:端口

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "rules.yml" #报警规则文件
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=&lt;job_name&gt;` to any timeseries scraped from this config.
   - job_name: "测试环境服务器监控信息"
     static_configs:
       - targets: ["10.0.12.5:9100"] #被监控服务器的node_exporter的IP:端口</code></pre>
<ul>
<li>在Prometheus.yml的同级目录下创建rules.yml文件并写入以下内容</li>
</ul>
<pre><code>#组名
groups:
- name: 服务器监控
  #规则
  rules:
  #规则名
  - alert: 内存使用率告警-warring
    #获取服务器信息的语句
    expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 &lt; 20) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    #时间
    for: 1m
    labels:
      #报警级别
      severity: warning
    annotations:
      #报警的详情
      summary: 内存使用率大于80% (监控节点 {{ $labels.instance }})
      description: "内存使用大于(&gt; 80% left)\n  当前值 = {{ $value }}\n"
  - alert: 磁盘读取速度监控
    expr: (sum by (instance) (rate(node_disk_read_bytes_total[2m])) / 1024 / 1024 &gt; 50) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: 硬盘读取速度大于50MB/s (监控节点 {{ $labels.instance }})
      description: "硬盘读取速度 (&gt; 50 MB/s)\n  当前值 = {{ $value }}\n"
  - alert: 磁盘写入速度监控
    expr: (sum by (instance) (rate(node_disk_written_bytes_total[2m])) / 1024 / 1024 &gt; 50) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: 当前磁盘写入速度大于50MB/s (节点信息 {{ $labels.instance }})
      description: "硬盘写入速度 (&gt; 50 MB/s)\n  当前值 = {{ $value }}\n"
  - alert: 硬盘空间监控
    expr: ((node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes &lt; 20 and ON (instance, device, mountpoint) node_filesystem_readonly == 0) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 2m
    labels:
      severity: warning
    annotations:
      summary: 当前硬盘使用率大于70% (节点信息 {{ $labels.instance }})
      description: "硬盘剩余容量 (&lt; 20% left)\n  当前值 = {{ $value }}\n"
  - alert: 服务器CPU负载
    expr: (sum by (instance) (avg by (mode, instance) (rate(node_cpu_seconds_total{mode!="idle"}[2m]))) &gt; 0.8) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 0m
    labels:
      severity: warning
    annotations:
      summary: 当前CPU负载大于80% (节点信息 {{ $labels.instance }})
      description: "CPU负载 &gt; 80%\n  当前值 = {{ $value }}\n "
  - alert: 服务器接收数据网速
    expr: (sum by (instance) (rate(node_network_receive_bytes_total[2m])) / 1024 / 1024 &gt; 100) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: 服务器接收数据网速大于100MB/s (节点信息 {{ $labels.instance }})
      description: "服务器接收数据网速 (&gt; 100 MB/s)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
  - alert: 服务器发送数据网速
    expr: (sum by (instance) (rate(node_network_transmit_bytes_total[2m])) / 1024 / 1024 &gt; 100) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: 服务器发送数据网速大于100MB/s (节点信息 {{ $labels.instance }})
      description: "服务器发送数据网速 (&gt; 100 MB/s)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"</code></pre>
<ul>
<li>创建Prometheus的data文件夹</li>
</ul>
<pre><code>[root@VM-12-5-centos ~]# cd /usr/local/prometheus/
[root@VM-12-5-centos prometheus]# mkdir data
[root@VM-12-5-centos prometheus]# ls
console_libraries  consoles  data  LICENSE  NOTICE  prometheus  prometheus.yml  promtool  rules.yml</code></pre>
<ul>
<li>启动Prometheus并添加开机自启</li>
</ul>
<pre><code>[root@VM-12-5-centos prometheus]# service prometheus start
Redirecting to /bin/systemctl start prometheus.service
[root@VM-12-5-centos prometheus]# service prometheus status
Redirecting to /bin/systemctl status prometheus.service
● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-06-26 14:51:58 CST; 4s ago
     Docs: https://prometheus.io/
 Main PID: 14677 (prometheus)
   CGroup: /system.slice/prometheus.service
           └─14677 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data

Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.032Z caller=head.go:522 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=5.601µs
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.032Z caller=head.go:528 level=info component=tsdb msg="Replaying WAL, this may take a while"
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.033Z caller=head.go:599 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=1
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.034Z caller=head.go:599 level=info component=tsdb msg="WAL segment loaded" segment=1 maxSegment=1
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.034Z caller=head.go:605 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=27.622µs wal_replay_duration=1.738589ms total_replay_duration=1.784945ms
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.035Z caller=main.go:945 level=info fs_type=EXT4_SUPER_MAGIC
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.035Z caller=main.go:948 level=info msg="TSDB started"
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.036Z caller=main.go:1129 level=info msg="Loading configuration file" filename=/usr/local/prometheus/prometheus.yml
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.040Z caller=main.go:1166 level=info msg="Completed loading of configuration file" filename=/usr/local/prometheus/prometheus.yml totalDuration=4.849125ms db_storage=861ns remote_storage=3.506µs w…ms
Jun 26 14:51:59 VM-12-5-centos prometheus[14677]: ts=2023-06-26T06:51:59.040Z caller=main.go:897 level=info msg="Server is ready to receive web requests."
Hint: Some lines were ellipsized, use -l to show in full.
[root@VM-12-5-centos prometheus]# systemctl enable prometheus.service
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /etc/systemd/system/prometheus.service.
[root@VM-12-5-centos prometheus]# </code></pre>
<ul>
<li>浏览器访问服务器的9090端口查看监控是否正常</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202306/f47c1687762977.png"><img src="https://www.jishuliu.cn/content/uploadfile/202306/f47c1687762977.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202306/490d1687762997.png"><img src="https://www.jishuliu.cn/content/uploadfile/202306/490d1687762997.png" alt="" /></a></p>
<h1>部署alertmanager</h1>
<ul>
<li>下载并解压</li>
</ul>
<pre><code>[root@VM-12-5-centos ~]# wget https://install.jishuliu.cn/prometheus/alertmanager-0.25.0.linux-amd64.tar.gz
--2023-06-26 15:08:13--  https://install.jishuliu.cn/prometheus/alertmanager-0.25.0.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 61.170.65.58, 61.170.66.189, 2408:874e:1:1:51::, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|61.170.65.58|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 29254678 (28M) [application/gzip]
Saving to: ‘alertmanager-0.25.0.linux-amd64.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 29,254,678  4.15MB/s   in 5.2s   

2023-06-26 15:08:19 (5.35 MB/s) - ‘alertmanager-0.25.0.linux-amd64.tar.gz’ saved [29254678/29254678]

[root@VM-12-5-centos ~]# tar xf alertmanager-0.25.0.linux-amd64.tar.gz -C /usr/local/
[root@VM-12-5-centos ~]# cd /usr/local/
[root@VM-12-5-centos local]# mv alertmanager-0.25.0.linux-amd64/ alertmanager</code></pre>
<ul>
<li>修改配置文件</li>
</ul>
<pre><code>global:
  resolve_timeout: 5m

route:
  # group_by：采用哪个标签作为分组的依据
  group_by: ['alertname', 'severity', 'namespace']
  group_wait: 10s #一组告警第一次发送之前等待的时间
  group_interval: 10s #一组已发送初始通知的告警接收到新告警后，再次发送通知前等待的时间
  repeat_interval: 1m #一条成功发送的告警，在再次发送通知之前等待的时间。
  receiver: 'dingding.webhook1' # 定义用那个通知报警渠道组
  #报警规则
  routes:
  - receiver: 'dingding.webhook1'
    match:
      team: test  #团队名
    group_wait: 10s #一组告警第一次发送之前等待的时间
    group_interval: 1m #一组已发送初始通知的告警接收到新告警后，再次发送通知前等待的时间
    repeat_interval: 3h #一条成功发送的告警，在再次发送通知之前等待的时间。

receivers:
- name: 'dingding.webhook1' # 报警渠道名
  webhook_configs:
  - url: 'http://10.0.12.5:8060/dingtalk/webhook1/send' #prometheus-webhook-dingtalk的地址
    send_resolved: true</code></pre>
<ul>
<li>创建alertmanager的系统服务文件并设置开机启动</li>
</ul>
<pre><code>[root@VM-12-5-centos alertmanager]# vim /etc/systemd/system/alertmanager.service

[Unit]
Description=alertmanager
Documentation=https://www.jishuliu.cn/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@VM-12-5-centos alertmanager]# service alertmanager start
Redirecting to /bin/systemctl start alertmanager.service
[root@VM-12-5-centos alertmanager]# service alertmanager status
Redirecting to /bin/systemctl status alertmanager.service
● alertmanager.service - alertmanager
   Loaded: loaded (/etc/systemd/system/alertmanager.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-06-26 15:21:54 CST; 2s ago
     Docs: https://www.jishuliu.cn/
 Main PID: 22888 (alertmanager)
   CGroup: /system.slice/alertmanager.service
           └─22888 /usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml

Jun 26 15:21:54 VM-12-5-centos systemd[1]: Started alertmanager.
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.604Z caller=main.go:240 level=info msg="Starting Alertmanager" version="(version=0.25.0, branch=HEAD, revision=258fab7cdd551f2cf251ed0348f0ad7289aee789)"
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.604Z caller=main.go:241 level=info build_context="(go=go1.19.4, user=root@abe866dd5717, date=20221222-14:51:36)"
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.605Z caller=cluster.go:185 level=info component=cluster msg="setting advertise address explicitly" addr=10.0.12.5 port=9094
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.606Z caller=cluster.go:681 level=info component=cluster msg="Waiting for gossip to settle..." interval=2s
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.636Z caller=coordinator.go:113 level=info component=configuration msg="Loading configuration file" file=/usr/local/alertmanager/alertmanager.yml
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.636Z caller=coordinator.go:126 level=info component=configuration msg="Completed loading of configuration file" file=/usr/local/alertmanager/alertmanager.yml
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.640Z caller=tls_config.go:232 level=info msg="Listening on" address=[::]:9093
Jun 26 15:21:54 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:54.640Z caller=tls_config.go:235 level=info msg="TLS is disabled." http2=false address=[::]:9093
Jun 26 15:21:56 VM-12-5-centos alertmanager[22888]: ts=2023-06-26T07:21:56.606Z caller=cluster.go:706 level=info component=cluster msg="gossip not settled" polls=0 before=0 now=1 elapsed=2.000163762s
[root@VM-12-5-centos alertmanager]# systemctl enable alertmanager.service
Created symlink from /etc/systemd/system/multi-user.target.wants/alertmanager.service to /etc/systemd/system/alertmanager.service.
[root@VM-12-5-centos alertmanager]# </code></pre>
<h1>部署Prometheus-webhook-dingtalk</h1>
<ul>
<li>下载并解压</li>
</ul>
<pre><code>[root@VM-12-5-centos ~]centos prometheus-webhook-dingtalk]# systemctl enable dingtalk.service
Created symlink from /etc/systemd/system/multi-user.target.wants/dingtalk.service to /etc/systemd/system/dingtalk.service.
[root@VM-12-5-centos prometheus-webhook-dingtalk]# service dingtalk start
Redirecting to /bin/systemctl start dingtalk.service
[root@VM-12-5-centos prometheus-webhook-dingtalk]# service dingtalk status
Redirecting to /bin/systemctl status dingtalk.service
● dingtalk.service - Prometheus
   Loaded: loaded (/etc/systemd/system/dingtalk.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2023-06-26 15:55:34 CST; 2s ago
     Docs: https://prometheus.io/
 Main PID: 31282 (prometheus-webh)
   CGroup: /system.slice/dingtalk.service
           └─31282 /usr/local/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --web.enable-ui --config.file=/usr/local/prometheus-webhook-dingtalk/config.yml

Jun 26 15:55:34 VM-12-5-centos systemd[1]: Started Prometheus.
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.025Z caller=main.go:59 level=info msg="Starting prometheus-webhook-dingtalk" version="(version=2.1.0, branch=HEAD, revision=8580d1395f59490682fb2798136266bdb3005ab4)"
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.025Z caller=main.go:60 level=info msg="Build context" (gogo1.18.1,userroot@177bd003ba4d,date20220421-08:19:05)=(MISSING)
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.025Z caller=coordinator.go:83 level=info component=configuration file=/usr/local/prometheus-webhook-dingtalk/config.yml msg="Loading configuration file"
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.025Z caller=coordinator.go:91 level=info component=configuration file=/usr/local/prometheus-webhook-dingtalk/config.yml msg="Completed loading of configuration file"
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.025Z caller=main.go:97 level=info component=configuration msg="Loading templates" templates=test.tmpl
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.026Z caller=main.go:113 component=configuration msg="Webhook urls for prometheus alertmanager" urls=http://localhost:8060/dingtalk/webhook1/send
Jun 26 15:55:34 VM-12-5-centos prometheus-webhook-dingtalk[31282]: ts=2023-06-26T07:55:34.026Z caller=web.go:208 level=info component=web msg="Start listening for connections" address=:8060</code></pre>
<h1>修改Prometheus的监控规则文件</h1>
<ul>
<li>把&quot;内存使用率告警-warring&quot;的语句改为以下内容</li>
</ul>
<pre><code>#原来的
expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 &lt; 20) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}
#新的
expr: (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 &lt; 99) * on(instance) group_left (nodename) node_uname_info{nodename=~".+"}</code></pre>
<ul>
<li>修改后重启Prometheus，再次查看Prometheus的报警页面</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202306/d46d1687766797.png"><img src="https://www.jishuliu.cn/content/uploadfile/202306/d46d1687766797.png" alt="" /></a></p>
<ul>
<li>报警消息实例</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202306/549a1687766829.png"><img src="https://www.jishuliu.cn/content/uploadfile/202306/549a1687766829.png" alt="" /></a></p>]]></description>
    <pubDate>Mon, 26 Jun 2023 14:24:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=31</guid>
</item>
<item>
    <title>拨测服务部署及配置</title>
    <link>https://www.jishuliu.cn/?post=30</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>部署docker</h1>
<ul>
<li>下载docker安装包</li>
</ul>
<pre><code>[root@localhost local]# wget https://install.jishuliu.cn/docker/docker-24.0.4.tgz
--2023-04-11 18:30:36--  https://install.jishuliu.cn/docker/docker-24.0.4.tgz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 58.216.106.230, 58.221.30.104, 58.221.30.105, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|58.216.106.230|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 60730088 (58M) [application/x-compressed]
Saving to: ‘docker-24.0.4.tgz’

100%[====================================================================================================================================================================================================================================&gt;] 60,730,088   505KB/s   in 1m 59s 

2023-04-11 18:32:36 (498 KB/s) - ‘docker-24.0.4.tgz’ saved [60730088/60730088]
[root@localhost local]# </code></pre>
<ul>
<li>解压并创建软连接</li>
</ul>
<pre><code>[root@localhost local]# tar xf docker-24.0.4.tgz 
[root@localhost local]# pwd
/usr/local
[root@localhost local]# ln -s /usr/local/docker/* /usr/local/bin/
[root@localhost local]# docker -v
Docker version 19.03.9, build 9d988398e7
[root@localhost local]# which docker
/usr/local/sbin/docker
[root@localhost local]# </code></pre>
<ul>
<li>创建docker系统服务</li>
</ul>
<pre><code>[root@localhost local]# vim /etc/systemd/system/docker.service 
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target</code></pre>
<ul>
<li>启动docker</li>
</ul>
<pre><code>[root@localhost local]# setenforce 0
[root@localhost local]# systemctl stop firewalld.service
[root@localhost local]# service docker status
Redirecting to /bin/systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-04-11 18:35:57 CST; 3s ago
     Docs: https://docs.docker.com
 Main PID: 16203 (dockerd)
    Tasks: 34
   Memory: 36.6M
   CGroup: /system.slice/docker.service
           ├─16203 /usr/local/sbin/dockerd -H unix://var/run/docker.sock
           └─16216 containerd --config /var/run/docker/containerd/containerd.toml --log-level info

Apr 11 18:35:56 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:56.827706634+08:00" level=info msg="scheme \"unix\" not registered, fallback to default scheme" module=grpc
Apr 11 18:35:56 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:56.827718906+08:00" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:///var/run/docker/containerd/containerd.sock 0  &lt;nil&gt;}] &lt;nil&gt;}" module=grpc
Apr 11 18:35:56 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:56.827724351+08:00" level=info msg="ClientConn switching balancer to \"pick_first\"" module=grpc
Apr 11 18:35:56 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:56.922053025+08:00" level=info msg="Loading containers: start."
Apr 11 18:35:57 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:57.025237913+08:00" level=info msg="Default bridge (docker0) is assigned with an IP address 172.17.0.0/16. Daemon option --bip can be used to set a preferred IP address"
Apr 11 18:35:57 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:57.059798153+08:00" level=info msg="Loading containers: done."
Apr 11 18:35:57 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:57.110612008+08:00" level=info msg="Docker daemon" commit=9d988398e7 graphdriver(s)=overlay2 version=19.03.9
Apr 11 18:35:57 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:57.110788074+08:00" level=info msg="Daemon has completed initialization"
Apr 11 18:35:57 localhost.localdomain dockerd[16203]: time="2023-04-11T18:35:57.135047257+08:00" level=info msg="API listen on var/run/docker.sock"
Apr 11 18:35:57 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
[root@localhost local]# </code></pre>
<h1>拨测</h1>
<h2>部署拨测</h2>
<ul>
<li>创建本地数据存储路径</li>
</ul>
<pre><code>[root@localhost local]# mkdir uptime-kuma
[root@localhost local]# pwd
/usr/local</code></pre>
<ul>
<li>启动拨测</li>
</ul>
<pre><code>[root@localhost local]# docker run -d --restart=always -p 3001:3001 -v /etc/localtime:/etc/localtime -v /usr/local/uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
Unable to find image 'louislam/uptime-kuma:1' locally
1: Pulling from louislam/uptime-kuma
3689b8de819b: Pull complete 
4178a276654a: Pull complete 
b46162c13de5: Pull complete 
4d3ac03f17d8: Pull complete 
b935255dae7e: Pull complete 
792f129a81f3: Pull complete 
4110002867ba: Pull complete 
390f8662c74f: Pull complete 
9dd174cf6e30: Pull complete 
4f4fb700ef54: Pull complete 
703bad70ccf2: Pull complete 
Digest: sha256:cf61d3262b29e1c48cc2ac284c9264227bbc46168f408e5f4c4d6301f0629e41
Status: Downloaded newer image for louislam/uptime-kuma:1
9bb3779459611f192b53d05bea65d4760dbc69130f4aa36ecd992f8a4ed5bdd9</code></pre>
<ul>
<li>修改通知的时间为服务器时间</li>
</ul>
<pre><code>[root@localhost local]# docker cp uptime-kuma:/app/server/notification.js ./
[root@localhost local]# vim notification.js 
# 在notification.js文件首行加入"const dayjs = require("dayjs");"
# 把notification.js文件143行修改为以下配置
    static async send(notification, msg, monitorJSON = null, heartbeatJSON = null) {
            if (this.providerList[notification.type]) {
                return this.providerList[notification.type].send(notification, msg, monitorJSON, heartbeatJSON);
                if (heartbeatJSON != null) {
                    heartbeatJSON['time'] = dayjs.utc(heartbeatJSON['time']).tz().format("YYYY-MM-DD HH:mm:ss.SSS");
                }
            } else {
                throw new Error("Notification type is not supported");
            }
        }
[root@localhost local]# docker cp notification.js uptime-kuma:/app/server/
[root@localhost local]# docker restart uptime-kuma</code></pre>
<ul>
<li>浏览器访问并创建管理员账号密码</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NYms720230411111454.png" alt="" /></p>
<h2>添加监控项</h2>
<ul>
<li>部署nginx</li>
</ul>
<pre><code>[root@localhost ~]# yum install -y gcc gcc-c++ libevent pcre pcre-devel zlib zlib-devel openssl  openssl-devel
[root@localhost ~]# wget https://install.jishuliu.cn/nginx/nginx-1.21.3.tar.gz
[root@localhost ~]# tar xf nginx-1.21.3.tar.gz
[root@localhost ~]# cd nginx-1.21.3
[root@localhost nginx-1.21.3]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.21.3]# make &amp;&amp; make install
[root@localhost nginx-1.21.3]# /usr/local/nginx/sbin/nginx</code></pre>
<ul>
<li>访问nginx测试</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NEU9T20230411113034.png" alt="" /></p>
<ul>
<li>拨测服务添加监控项</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7N2zRs20230411113153.png" alt="" /></p>
<ul>
<li>保存查看</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NKaCW20230411113235.png" alt="" /></p>
<h2>配置钉钉报警</h2>
<p><em>钉钉报警首先需要三个人拉群，并在群里设置报警机器人</em></p>
<ul>
<li>设置报警机器人</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7N9jE920230411140636.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7Nstai20230411140645.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7N7pPc20230411140655.png" alt="" /></p>
<ul>
<li>拨测设置通知</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NEHib20230411140240.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NxAG320230411140850.png" alt="" /></p>
<ul>
<li>测试报警，首先把nginx停掉</li>
</ul>
<pre><code>[root@localhost sbin]# hostname -I
192.168.9.108 172.17.0.1 
[root@localhost sbin]# /usr/local/nginx/sbin/nginx  -s stop
[root@localhost sbin]# ps -ef |grep nginx
root     25303 16002  0 14:09 pts/0    00:00:00 grep --color=auto nginx
[root@localhost sbin]# </code></pre>
<p><img src="https://www.jishuliu.cn/emlog/7N8xDX20230411141215.png" alt="" /></p>
<ul>
<li>恢复报警，把nginx重新启动</li>
</ul>
<pre><code>[root@localhost sbin]# /usr/local/nginx/sbin/nginx  
[root@localhost sbin]# hostname -I
192.168.9.108 172.17.0.1 
[root@localhost sbin]# ps -ef |grep nginx
root     25361     1  0 14:11 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   25362 25361  0 14:11 ?        00:00:00 nginx: worker process
root     25392 16002  0 14:12 pts/0    00:00:00 grep --color=auto nginx
[root@localhost sbin]# </code></pre>
<p><img src="https://www.jishuliu.cn/emlog/7Nn6zi20230411141403.png" alt="" /></p>
<h1>拨测集成grafana</h1>
<h2>部署Prometheus</h2>
<ul>
<li>下载Prometheus安装包</li>
</ul>
<pre><code>[root@localhost local]# wget https://install.jishuliu.cn/prometheus/prometheus-2.32.1.linux-amd64.tar.gz
--2023-04-11 14:18:51--  https://install.jishuliu.cn/prometheus/prometheus-2.32.1.linux-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 58.221.30.105, 58.221.30.104, 240e:97b:501:102:6c::31, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|58.221.30.105|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 75073989 (72M) [application/x-gzip]
Saving to: ‘prometheus-2.32.1.linux-amd64.tar.gz’

100%[====================================================================================================================================================================================================================================&gt;] 75,073,989   502KB/s   in 2m 27s 

2023-04-11 14:21:19 (497 KB/s) - ‘prometheus-2.32.1.linux-amd64.tar.gz’ saved [75073989/75073989]

[root@localhost local]# </code></pre>
<ul>
<li>拨测服务创建API密钥</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7N9jlY20230411142534.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NFtNk20230411142752.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NhYps20230411142801.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7N0Uiz20230411142856.png" alt="" /></p>
<ul>
<li>修改Prometheus配置文件</li>
</ul>
<pre><code>[root@localhost local]# tar xf prometheus-2.32.1.linux-amd64.tar.gz 
[root@localhost local]# mv prometheus-2.32.1.linux-amd64 prometheus
[root@localhost local]# cd prometheus
[root@localhost prometheus]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool
[root@localhost prometheus]# vim prometheus.yml 
[root@localhost prometheus]# vim prometheus.yml 

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: 'uptime-9.108'  #项目名称
    scrape_interval: 30s  #抓取时间
    scheme: http
    static_configs:  
      - targets: ['192.168.9.108:3001']  #拨测服务IP:port
    basic_auth:
      password: uk1_v0K5sPfQLiVUedIbX-aetwiQP7Thx4d1bDg0HmEa #创建的api密钥</code></pre>
<ul>
<li>启动prometheus</li>
</ul>
<pre><code>[root@localhost prometheus]# vim /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data
Restart=on-failure
[Install]
WantedBy=multi-user.target
[root@localhost prometheus]# systemctl daemon-reload
[root@localhost prometheus]# service prometheus start
Redirecting to /bin/systemctl start prometheus.service
[root@localhost prometheus]# service prometheus status
Redirecting to /bin/systemctl status prometheus.service
● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-04-11 14:37:09 CST; 2s ago
     Docs: https://prometheus.io/
 Main PID: 26340 (prometheus)
    Tasks: 12
   Memory: 29.1M
   CGroup: /system.slice/prometheus.service
           └─26340 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data

Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.056Z caller=head.go:522 level=info component=tsdb msg="On-disk memory mappable chunks replay completed" duration=5.474µs
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.056Z caller=head.go:528 level=info component=tsdb msg="Replaying WAL, this may take a while"
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.149Z caller=head.go:599 level=info component=tsdb msg="WAL segment loaded" segment=0 maxSegment=1
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.150Z caller=head.go:599 level=info component=tsdb msg="WAL segment loaded" segment=1 maxSegment=1
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.150Z caller=head.go:605 level=info component=tsdb msg="WAL replay completed" checkpoint_replay_duration=25.278µs wal_replay_duration=93.912477ms total_replay_duration=93.95701ms
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.151Z caller=main.go:945 level=info fs_type=XFS_SUPER_MAGIC
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.151Z caller=main.go:948 level=info msg="TSDB started"
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.151Z caller=main.go:1129 level=info msg="Loading configuration file" filename=/usr/local/prometheus/prometheus.yml
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.154Z caller=main.go:1166 level=info msg="Completed loading of configuration file" filename=/usr/local/prometheus/prometheus.yml totalDuration=3.146644ms db_storage=2.144µs remote_storage=…µs
Apr 11 14:37:10 localhost.localdomain prometheus[26340]: ts=2023-04-11T06:37:10.154Z caller=main.go:897 level=info msg="Server is ready to receive web requests."
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost prometheus]# </code></pre>
<ul>
<li>在浏览器使用prometheus查看拨测服务的数据</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7N7gO020230411144441.png" alt="" /></p>
<h2>部署grafana</h2>
<ul>
<li>本次grafana使用docker部署,默认账号密码为admin\admin</li>
</ul>
<pre><code>[root@localhost ~]# mkdir /usr/local/grafana
[root@localhost ~]# docker run -itd --restart=always --user 0 --name grafana -p 8080:3000 -v /etc/localtime:/etc/localtime -v /usr/local/grafana:/var/lib/grafana grafana/grafana:latest</code></pre>
<ul>
<li>grafana添加数据源。选择Data Source&gt;&gt;&gt;&gt;Add data source&gt;&gt;&gt;&gt;prometheus,输入Prometheus的地址、名称等信息。</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NPNaD20230411145115.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NQOK920230411145437.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NBDX720230411145446.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NAaCd20230411145453.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7N5kPT20230411145502.png" alt="" /></p>
<h3>创建dashboard</h3>
<ul>
<li>创建筛选项</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7N6UA320230411145605.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NzaP020230411150103.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NTDzO20230411150109.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7N3AYC20230411150205.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NbvTF20230411150116.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NmuVL20230411150223.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NMMvr20230411150338.png" alt="" /></p>
<ul>
<li>添加响应时间的仪表盘</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NxL6z20230411155216.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NKH3H20230411155224.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NDI5s20230411155233.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NPUYm20230411155240.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NVh0E20230411155248.png" alt="" /></p>
<ul>
<li>添加拨测项状态监控</li>
</ul>
<p><img src="https://www.jishuliu.cn/emlog/7NxL6z20230411155216.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7Nqy2W20230411160349.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7Nzr1G20230411160356.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7Nuw1520230411160406.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NLjQE20230411160412.png" alt="" /></p>
<ul>
<li>添加证书有效期监控</li>
</ul>
<p><em>首先需要添加一个https证书的网站，比如https://www.baidu.com</em></p>
<p><img src="https://www.jishuliu.cn/emlog/7NxL6z20230411155216.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NbmFU20230411161445.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NGEwW20230411161453.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NMUGb20230411161500.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7NgfGZ20230411161507.png" alt="" /></p>
<ul>
<li>用到的查询语句</li>
</ul>
<pre><code>#查询拨测时间语句：
    monitor_response_time{job=~"$job",monitor_name=~"$monitor_name"}
#查询拨测状态语句：
    monitor_status{job=~"$job",monitor_name=~"$monitor_name"}
#查询证书有效期语句：
    monitor_cert_days_remaining{job=~"$job",monitor_name=~"$monitor_name"}</code></pre>
<ul>
<li>测试监控，首先停掉nginx然后等待拨测报错查看grafana能否获取到拨测状态</li>
</ul>
<pre><code>[root@localhost ~]# /usr/local/nginx/sbin/nginx -s stop</code></pre>
<p><img src="https://www.jishuliu.cn/emlog/7ND2sy20230411161824.png" alt="" /></p>
<p><img src="https://www.jishuliu.cn/emlog/7N8xh620230411161929.png" alt="" /></p>]]></description>
    <pubDate>Tue, 11 Apr 2023 10:27:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=30</guid>
</item>
<item>
    <title>使用kuboard创建创建中间件</title>
    <link>https://www.jishuliu.cn/?post=29</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>在集群新建一个命名空间</h1>
<ul>
<li>点击集群，选择编辑命名空间</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NndLg20221103142001.png"><img src="https://www.jishuliu.cn/emlog/7NndLg20221103142001.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>添加一个middleware命名空间</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NaAU020221103142133.png"><img src="https://www.jishuliu.cn/emlog/7NaAU020221103142133.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>返回集群首页，在进入集群时选择middleware命名空间</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NRaFY20221103142308.png"><img src="https://www.jishuliu.cn/emlog/7NRaFY20221103142308.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<h2>部署MySQL单机版</h2>
<ul>
<li>创建ConfigMap，此步骤为定义mysql配置文件</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NPLYK20221103151205.png"><img src="https://www.jishuliu.cn/emlog/7NPLYK20221103151205.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/emlog/7N69qp20221103151315.png"><img src="https://www.jishuliu.cn/emlog/7N69qp20221103151315.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<pre><code># For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
character_set_server = utf8

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

#log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/</code></pre>
<ul>
<li>创建工作负载</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N2Jrm20221103142554.png"><img src="https://www.jishuliu.cn/emlog/7N2Jrm20221103142554.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>创建工作容器</li>
<li>此处的MYSQL_ROOT_PASSWORD变量为mysql镜像的设置密码变量，更多变量请参考https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N2cAV20221103142748.png"><img src="https://www.jishuliu.cn/emlog/7N2cAV20221103142748.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>把刚才创建的mysql-conf的Config Map替换镜像默认的配置文件。</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NAqBM20221103151500.png"><img src="https://www.jishuliu.cn/emlog/7NAqBM20221103151500.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>填入服务配置</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N9mQx20221103143234.png"><img src="https://www.jishuliu.cn/emlog/7N9mQx20221103143234.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>等待部署完成，状态为Ready及为启动完成</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7Npsgw20221103143504.png"><img src="https://www.jishuliu.cn/emlog/7Npsgw20221103143504.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>进入数据库查看字符集并设置远程链接权限</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NTKbw20221103152035.png"><img src="https://www.jishuliu.cn/emlog/7NTKbw20221103152035.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/emlog/7N9cbo20221103152234.png"><img src="https://www.jishuliu.cn/emlog/7N9cbo20221103152234.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<pre><code>show variables like '%character%'; #查看mysql字符集
GRANT ALL ON *.* TO 'root'@'%'; #授权root用户可以对所有库所有表拥有所有权限并且不限制链接的IP，可以把%改为限制的IP
flush privileges; #刷新权限</code></pre>
<ul>
<li>至此，mysql部署完成</li>
</ul>
<h2>部署nacos</h2>
<h3>配置MySQL数据库</h3>
<p><em>在第一步部署好的mysql中创建nacos库并导入数据</em></p>
<ul>
<li>
<p>下载nacos-mysql.sql到本地下载地址为：<a href="https://install.jishuliu.cn/nacos/nacos-mysql.sql">https://install.jishuliu.cn/nacos/nacos-mysql.sql</a></p>
</li>
<li>
<p>在kuboard运行的刚才创建的mysql容器下选择文件浏览</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7Nogve20221103154407.png"><img src="https://www.jishuliu.cn/emlog/7Nogve20221103154407.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>把下载的sql上传到/路径下</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N3RG820221103154528.png"><img src="https://www.jishuliu.cn/emlog/7N3RG820221103154528.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>在控制台进入mysql容器内部</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N8E6C20221103154613.png"><img src="https://www.jishuliu.cn/emlog/7N8E6C20221103154613.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>进入mysql，创建nacos数据库并执行nacos-mysql.sql文件</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NpT0W20221103154743.png"><img src="https://www.jishuliu.cn/emlog/7NpT0W20221103154743.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<h3>部署nacos服务</h3>
<ul>
<li>填写基本信息</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NrwIC20221103154850.png"><img src="https://www.jishuliu.cn/emlog/7NrwIC20221103154850.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>填写容器信息</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NGv4K20221103155156.png"><img src="https://www.jishuliu.cn/emlog/7NGv4K20221103155156.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<pre><code>MYSQL_SERVICE_HOST：MySQL容器的IP，可以在容器组内看到
MYSQL_SERVICE_PORT：MySQL端口
MYSQL_SERVICE_DB_NAME：使用的mysql数据库
MYSQL_SERVICE_USER：数据库用户名
MYSQL_SERVICE_PASSWORD：数据库密码
MODE：nacos模式</code></pre>
<ul>
<li>在服务中把nacos的8848端口映射出来</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NwiHc20221103155428.png"><img src="https://www.jishuliu.cn/emlog/7NwiHc20221103155428.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>等nacos状态为Ready后查看日志是否启动成功</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NkQGM20221103155618.png"><img src="https://www.jishuliu.cn/emlog/7NkQGM20221103155618.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>修改nacos的应用路由</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7N5o1q20221103155807.png"><img src="https://www.jishuliu.cn/emlog/7N5o1q20221103155807.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>配置host或把域名解析到集群主节点的外网IP，浏览器打开配置的域名访问http://域名/nacos/</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7NNb9520221103155944.png"><img src="https://www.jishuliu.cn/emlog/7NNb9520221103155944.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>
<ul>
<li>登录查看，用户名密码默认为nacos、nacos</li>
</ul>
<p><a href="https://www.jishuliu.cn/emlog/7Ny5dp20221103160035.png"><img src="https://www.jishuliu.cn/emlog/7Ny5dp20221103160035.png?imageView2/2/w/600/h/370/ignore-error/1/" alt="" /></a></p>]]></description>
    <pubDate>Thu, 03 Nov 2022 14:17:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=29</guid>
</item>
<item>
    <title>Jenkins、gitlab、kuboard、KubeOperator实现Kubernetes集群自动发布</title>
    <link>https://www.jishuliu.cn/?post=28</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>服务器配置</h1>
<ul>
<li>本文采用四台centos7.4服务器配置和部署的功能如下</li>
</ul>
<table>
<thead>
<tr>
<th style="text-align: center;">服务器IP</th>
<th style="text-align: center;">服务器名称</th>
<th style="text-align: center;">服务器配置</th>
<th style="text-align: center;">服务器部署</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;">172.21.16.15</td>
<td style="text-align: center;">Deployment</td>
<td style="text-align: center;">8C、32G、200G系统盘、3M带宽</td>
<td style="text-align: center;">KubeOperator集群管理工具</td>
</tr>
<tr>
<td style="text-align: center;">172.21.16.7</td>
<td style="text-align: center;">master</td>
<td style="text-align: center;">8C、32G、200G系统盘、3M带宽</td>
<td style="text-align: center;">Kubernetes集群master节点</td>
</tr>
<tr>
<td style="text-align: center;">172.21.16.13</td>
<td style="text-align: center;">work1</td>
<td style="text-align: center;">8C、32G、200G系统盘、3M带宽</td>
<td style="text-align: center;">Kubernetes集群work节点</td>
</tr>
<tr>
<td style="text-align: center;">172.21.16.16</td>
<td style="text-align: center;">integrate</td>
<td style="text-align: center;">8C、32G、200G系统盘、3M带宽</td>
<td style="text-align: center;">harbor镜像仓库、gitlab代码仓库、jenkins构建中心</td>
</tr>
</tbody>
</table>
<ul>
<li>本次部署所用四台服务器均为腾讯云按量付费CVM</li>
</ul>
<h1>integrate服务器部署</h1>
<h2>部署docker</h2>
<ul>
<li>安装docker-compose</li>
</ul>
<pre><code># 下载docker-compse包
[root@integrate ~]# wget https://install.jishuliu.cn/docker/docker-compose
--2022-10-29 12:37:24--  https://install.jishuliu.cn/docker/docker-compose
Resolving package.jishuliu.cn (package.jishuliu.cn)... 42.81.85.216, 42.81.120.76, 42.81.85.234, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|42.81.85.216|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11748168 (11M) [application/octet-stream]
Saving to: ‘docker-compose’

100%[==================================================================================================================================================================================================&gt;] 11,748,168  22.0MB/s   in 0.5s   

2022-10-29 12:37:26 (22.0 MB/s) - ‘docker-compose’ saved [11748168/11748168]
# 给docker-compose包执行权限
[root@integrate ~]# chmod +x docker-compose
# 把docker-compose复制到centos的命令路径下
[root@integrate ~]# cp docker-compose /usr/local/bin/
[root@integrate ~]# cp docker-compose /usr/local/sbin/
[root@integrate ~]# cp docker-compose /usr/sbin/
[root@integrate ~]# cp docker-compose /usr/bin/ 
# 测试是否部署成功
[root@integrate ~]# docker-compose -v
docker-compose version 1.23.2, build 1110ad01</code></pre>
<ul>
<li>安装docker</li>
</ul>
<pre><code># 下载docker安装包
[root@integrate ~]# wget https://install.jishuliu.cn/docker/docker-24.0.4.tgz
--2022-10-29 12:37:50--  https://install.jishuliu.cn/docker/docker-24.0.4.tgz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 42.81.85.202, 42.81.85.224, 42.81.85.216, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|42.81.85.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 60730088 (58M) [application/x-compressed]
Saving to: ‘docker-24.0.4.tgz’

100%[==================================================================================================================================================================================================&gt;] 60,730,088  9.70MB/s   in 4.8s   s

2022-10-29 12:37:55 (12.0 MB/s) - ‘docker-24.0.4.tgz’ saved [60730088/60730088]

# 解压并把docker命令部署到centos的命令存储路径下
[root@integrate ~]# tar xf docker-24.0.4.tgz 
[root@integrate ~]# cp docker/* /usr/local/bin/
# 测试docker是否部署成功
[root@integrate ~]# docker -v
Docker version 19.03.9, build 9d988398e7</code></pre>
<ul>
<li>systemctl管理docker</li>
</ul>
<pre><code># 找到dockerd文件的根路径
[root@integrate ~]# which docker
/usr/local/bin/docker
[root@nginx1 docker]# vim /etc/systemd/system/docker.service
# 编辑/etc/systemd/system/docker.service文件并在文件内写入以下内容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
# 重新加载systemctl配置
[root@integrate ~]# systemctl daemon-reload
# 启动docker
[root@integrate ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service #提示内容不用处理
# 查看docker是否启动成功
[root@integrate ~]# ps -ef |grep docker
root     14058     1  0 12:47 ?        00:00:00 /usr/local/bin/dockerd -H unix://var/run/docker.sock
root     14072 14058  0 12:47 ?        00:00:00 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
root     14427 11794  0 12:49 pts/0    00:00:00 grep --color=auto docker
[root@integrate ~]# </code></pre>
<ul>
<li>配置docker镜像加速</li>
</ul>
<pre><code># 登录阿里云控制台搜索容器镜像服务，在左侧下拉栏中选择镜像工具下的镜像加速器，按照实例配置配置即可</code></pre>
<h2>jenkins</h2>
<h3>部署Jenkins</h3>
<ul>
<li>下载Jenkins镜像</li>
</ul>
<pre><code>[root@integrate ~]# docker pull jenkins/jenkins:latest
Using default tag: latest
latest: Pulling from library/jenkins
55cbf04beb70: Pull complete 
1607093a898c: Pull complete 
9a8ea045c926: Pull complete 
d4eee24d4dac: Pull complete 
c58988e753d7: Pull complete 
794a04897db9: Pull complete 
70fcfa476f73: Pull complete 
0539c80a02be: Pull complete 
54fefc6dcf80: Pull complete 
911bc90e47a8: Pull complete 
38430d93efed: Pull complete 
7e46ccda148a: Pull complete 
c0cbcb5ac747: Pull complete 
35ade7a86a8e: Pull complete 
aa433a6a56b1: Pull complete 
841c1dd38d62: Pull complete 
b865dcb08714: Pull complete 
5a3779030005: Pull complete 
12b47c68955c: Pull complete 
1322ea3e7bfd: Pull complete 
Digest: sha256:c3fa8e7f70d1e873ea6aa87040c557aa53e6707eb1d5ecace7f6884a87588ac8
Status: Downloaded newer image for jenkins/jenkins:latest</code></pre>
<ul>
<li>启动jenkins</li>
</ul>
<pre><code># 创建并给Jenkins目录授权777
[root@integrate ~]# mkdir /var/jenkins_home &amp;&amp; chmod -R 777 /var/jenkins_home/
# 查看Jenkins镜像信息
[root@integrate ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     latest              55860ee0cd73        9 months ago        442MB
[root@integrate ~]# docker run -d -p 8888:8080 -v /var/jenkins_home:/var/jenkins_home -v /etc/hosts:/etc/hosts --name jenkins jenkins/jenkins:latest
e394da95233bb26e75daa932d4481f356beaeb8d0a623460fb80e772292e0bbb

-d：后台运行
-p：端口映射，此处不用8080端口是因为gitlab需要使用8080端口
-v：目录映射
--name：容器名
jenkins/jenkins:latest：刚才查看的镜像名和版本号</code></pre>
<ul>
<li>Jenkins安装cloudbees-folder 插件</li>
</ul>
<pre><code># 此步骤是因为Jenkins在安装插件时无论选择什么插件都会报错
[root@integrate ~]# wget  https://updates.jenkins-ci.org/download/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi --no-check-certificate 
--2022-10-29 05:15:19--  https://updates.jenkins-ci.org/download/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi
Resolving updates.jenkins-ci.org (updates.jenkins-ci.org)... 52.202.51.185
Connecting to updates.jenkins-ci.org (updates.jenkins-ci.org)|52.202.51.185|:443... connected.
WARNING: The certificate of ‘updates.jenkins-ci.org’ is not trusted.
WARNING: The certificate of ‘updates.jenkins-ci.org’ has expired.
HTTP request sent, awaiting response... 302 Found
Location: https://get.jenkins.io/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi [following]
--2022-10-29 05:15:21--  https://get.jenkins.io/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi
Resolving get.jenkins.io (get.jenkins.io)... 52.167.253.43
Connecting to get.jenkins.io (get.jenkins.io)|52.167.253.43|:443... connected.
WARNING: The certificate of ‘get.jenkins.io’ is not trusted.
WARNING: The certificate of ‘get.jenkins.io’ has expired.
HTTP request sent, awaiting response... 302 Found
Location: https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi [following]
--2022-10-29 05:15:22--  https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/cloudbees-folder/6.773.vd2dcc704ee7e/cloudbees-folder.hpi
Resolving mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.15.130, 2402:f000:1:400::2
Connecting to mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.15.130|:443... connected.
WARNING: The certificate of ‘mirrors.tuna.tsinghua.edu.cn’ is not trusted.
WARNING: The certificate of ‘mirrors.tuna.tsinghua.edu.cn’ has expired.
HTTP request sent, awaiting response... 200 OK
Length: 241948 (236K) [application/octet-stream]
Saving to: ‘cloudbees-folder.hpi’

cloudbees-folder.hpi                                       100%[========================================================================================================================================&gt;] 236.28K   957KB/s    in 0.2s    

2022-10-29 05:15:22 (957 KB/s) - ‘cloudbees-folder.hpi’ saved [241948/241948]

# 把插件放到Jenkins的插件路径下
[root@integrate ~]# mv cloudbees-folder.hpi /var/jenkins_home/war/WEB-INF/detached-plugins/
# 重启Jenkins
[root@integrate ~]# docker restart jenkins 
jenkins
# 查看admin的密码
[root@integrate ~]# cat /var/jenkins_home/secrets/initialAdminPassword 
09020cb548cb4a3f85e6ddd8026dfbb1
[root@integrate ~]# </code></pre>
<h3>浏览器配置Jenkins</h3>
<ul>
<li>访问地址：IP:8888，此处的密码是刚才查看的密码</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e4d41667020015.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e4d41667020015.png" alt="" /></a></p>
<ul>
<li>选择安装的插件，推荐使用推荐插件</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-af101667020122.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-af101667020122.png" alt="" /></a></p>
<ul>
<li>等待Jenkins插件安装完毕</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-febf1667021279.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-febf1667021279.png" alt="" /></a></p>
<ul>
<li>创建Jenkins管理员用户</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-32851667021433.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-32851667021433.png" alt="" /></a></p>
<ul>
<li>设置站点</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-59fd1667021460.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-59fd1667021460.png" alt="" /></a></p>
<ul>
<li>进入Jenkins安装gitlab插件</li>
</ul>
<blockquote>
<p>jenkins首页——Manage Jenkins——Manage Plugins——Available<br />
搜索gitlab，选择搜索结果的前四个</p>
</blockquote>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e0851667021707.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e0851667021707.png" alt="" /></a></p>
<ul>
<li>等待安装完成</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6531667021764.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6531667021764.png" alt="" /></a></p>
<ul>
<li>安装ssh插件</li>
</ul>
<blockquote>
<p>jenkins首页——Manage Jenkins——Manage Plugins——Available。搜索ssh，选择前三个</p>
</blockquote>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-40aa1667022172.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-40aa1667022172.png" alt="" /></a></p>
<ul>
<li>等待安装完成</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-c8341667022215.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-c8341667022215.png" alt="" /></a></p>
<ul>
<li>新建一个凭据作为部署机器</li>
</ul>
<blockquote>
<p>系统管理——Manage Credentials——全局——添加凭据</p>
</blockquote>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-89821667022029.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-89821667022029.png" alt="" /></a></p>
<blockquote>
<p>系统管理——系统配置——SSH remote hosts——SSH sites。此处的hostname输入服务器的内网IP，端口为ssh的端口</p>
</blockquote>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-77751667022347.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-77751667022347.png" alt="" /></a></p>
<h2>部署gitlab</h2>
<ul>
<li>安装依赖</li>
</ul>
<pre><code># 安装curl及ssh依赖
[root@integrate ~]# yum install -y curl policycoreutils-python openssh-server perl
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
Package curl-7.29.0-59.el7_9.1.x86_64 already installed and latest version
Package openssh-server-7.4p1-22.el7_9.x86_64 already installed and latest version
Package 4:perl-5.16.3-299.el7_9.x86_64 already installed and latest version
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package policycoreutils-python.x86_64 0:2.5-34.el7 will be installed
--&gt; Processing Dependency: setools-libs &gt;= 3.3.8-4 for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libsemanage-python &gt;= 2.5-14 for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: audit-libs-python &gt;= 2.1.3-4 for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: python-IPy for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libqpol.so.1(VERS_1.4)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libqpol.so.1(VERS_1.2)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libcgroup for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libapol.so.4(VERS_4.0)(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: checkpolicy for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libqpol.so.1()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Processing Dependency: libapol.so.4()(64bit) for package: policycoreutils-python-2.5-34.el7.x86_64
--&gt; Running transaction check
---&gt; Package audit-libs-python.x86_64 0:2.8.5-4.el7 will be installed
---&gt; Package checkpolicy.x86_64 0:2.5-8.el7 will be installed
---&gt; Package libcgroup.x86_64 0:0.41-21.el7 will be installed
---&gt; Package libsemanage-python.x86_64 0:2.5-14.el7 will be installed
---&gt; Package python-IPy.noarch 0:0.75-6.el7 will be installed
---&gt; Package setools-libs.x86_64 0:3.3.8-4.el7 will be installed
--&gt; Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================================================================================
 Package                                                              Arch                                                 Version                                                   Repository                                        Size
============================================================================================================================================================================================================================================
Installing:
 policycoreutils-python                                               x86_64                                               2.5-34.el7                                                os                                               457 k
Installing for dependencies:
 audit-libs-python                                                    x86_64                                               2.8.5-4.el7                                               os                                                76 k
 checkpolicy                                                          x86_64                                               2.5-8.el7                                                 os                                               295 k
 libcgroup                                                            x86_64                                               0.41-21.el7                                               os                                                66 k
 libsemanage-python                                                   x86_64                                               2.5-14.el7                                                os                                               113 k
 python-IPy                                                           noarch                                               0.75-6.el7                                                os                                                32 k
 setools-libs                                                         x86_64                                               3.3.8-4.el7                                               os                                               620 k

Transaction Summary
============================================================================================================================================================================================================================================
Install  1 Package (+6 Dependent packages)

Total download size: 1.6 M
Installed size: 5.3 M
Downloading packages:
(1/7): audit-libs-python-2.8.5-4.el7.x86_64.rpm                                                                                                                                                                      |  76 kB  00:00:00     
(2/7): checkpolicy-2.5-8.el7.x86_64.rpm                                                                                                                                                                              | 295 kB  00:00:00     
(3/7): libcgroup-0.41-21.el7.x86_64.rpm                                                                                                                                                                              |  66 kB  00:00:00     
(4/7): libsemanage-python-2.5-14.el7.x86_64.rpm                                                                                                                                                                      | 113 kB  00:00:00     
(5/7): python-IPy-0.75-6.el7.noarch.rpm                                                                                                                                                                              |  32 kB  00:00:00     
(6/7): policycoreutils-python-2.5-34.el7.x86_64.rpm                                                                                                                                                                  | 457 kB  00:00:00     
(7/7): setools-libs-3.3.8-4.el7.x86_64.rpm                                                                                                                                                                           | 620 kB  00:00:00     
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                                                                       1.2 MB/s | 1.6 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : libcgroup-0.41-21.el7.x86_641/7 
  Installing : setools-libs-3.3.8-4.el7.x86_64                                                                                                                                                                                          2/7 
  Installing : audit-libs-python-2.8.5-4.el7.x86_64                                                                                                                                                                                     3/7 
  Installing : python-IPy-0.75-6.el7.noarch                                                                                                                                                                                             4/7 
  Installing : libsemanage-python-2.5-14.el7.x86_64                                                                                                                                                                                     5/7 
  Installing : checkpolicy-2.5-8.el7.x86_64                                                                                                                                                                                             6/7 
  Installing : policycoreutils-python-2.5-34.el7.x86_64                                                                                                                                                                                 7/7 
  Verifying  : checkpolicy-2.5-8.el7.x86_64                                                                                                                                                                                             1/7 
  Verifying  : libsemanage-python-2.5-14.el7.x86_64                                                                                                                                                                                     2/7 
  Verifying  : python-IPy-0.75-6.el7.noarch                                                                                                                                                                                             3/7 
  Verifying  : policycoreutils-python-2.5-34.el7.x86_64                                                                                                                                                                                 4/7 
  Verifying  : audit-libs-python-2.8.5-4.el7.x86_64                                                                                                                                                                                     5/7 
  Verifying  : setools-libs-3.3.8-4.el7.x86_64                                                                                                                                                                                          6/7 
  Verifying  : libcgroup-0.41-21.el7.x86_64                                                                                                                                                                                             7/7 

Installed:
  policycoreutils-python.x86_64 0:2.5-34.el7                                                                                                                                                                                                

Dependency Installed:
  audit-libs-python.x86_64 0:2.8.5-4.el7      checkpolicy.x86_64 0:2.5-8.el7      libcgroup.x86_64 0:0.41-21.el7      libsemanage-python.x86_64 0:2.5-14.el7      python-IPy.noarch 0:0.75-6.el7      setools-libs.x86_64 0:3.3.8-4.el7     

Complete!

# 安装postfix发送电子邮件
[root@integrate ~]# yum install postfix -y
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Package 2:postfix-2.10.1-9.el7.x86_64 already installed and latest version
Nothing to do
# 关闭防火墙
[root@integrate~]# systemctl stop firewalld.service</code></pre>
<ul>
<li>安装gitlab</li>
</ul>
<pre><code># 编辑gitlab源
[root@integrate ~]# vim /etc/yum.repos.d/gitlab_gitlab-ce.repo
[gitlab_gitlab-ce]
name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[gitlab_gitlab-ce-source]
name=gitlab_gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey
       https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey/gitlab-gitlab-ce-3D645A26AB9FBD22.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[root@integrate ~]# yum -y install gitlab-ce
Notes:
Default admin account has been configured with following details:
Username: root
Password: You didn't opt-in to print initial root password to STDOUT.
Password stored to /etc/gitlab/initial_root_password. This file will be cleaned up in first reconfigure run after 24 hours.

NOTE: Because these credentials might be present in your log files in plain text, it is highly recommended to reset the password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

[2022-10-29T14:02:42+08:00] FATAL: Stacktrace dumped to /opt/gitlab/embedded/cookbooks/cache/cinc-stacktrace.out
[2022-10-29T14:02:42+08:00] FATAL: ---------------------------------------------------------------------------------------
[2022-10-29T14:02:42+08:00] FATAL: PLEASE PROVIDE THE CONTENTS OF THE stacktrace.out FILE (above) IF YOU FILE A BUG REPORT
[2022-10-29T14:02:42+08:00] FATAL: ---------------------------------------------------------------------------------------
[2022-10-29T14:02:42+08:00] FATAL: Acme::Client::Error::RejectedIdentifier: letsencrypt_certificate[gitlab.example.com] (letsencrypt::http_authorization line 6) had an error: Acme::Client::Error::RejectedIdentifier: acme_certificate[sta
ging] (letsencrypt::http_authorization line 43) had an error: Acme::Client::Error::RejectedIdentifier: Error creating new order :: Cannot issue for "gitlab.example.com": The ACME server refuses to issue a certificate for this domain name, because it is forbidden by policywarning: %posttrans(gitlab-jh-15.5.1-jh.0.el7.x86_64) scriptlet failed, exit status 1
Non-fatal POSTTRANS scriptlet failure in rpm package gitlab-jh-15.5.1-jh.0.el7.x86_64
  Verifying  : gitlab-jh-15.5.1-jh.0.el7.x86_64                                                                                                                                                                                         1/1 

Installed:
  gitlab-jh.x86_64 0:15.5.1-jh.0.el7                                                                                                                                                                                                        

Complete!

# 查看默认生成的gitlab的root用户密码
[root@integrate ~]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
#          1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, th
e first reconfigure run).#          2. Password hasn't been changed manually, either via UI or via command line.
#
#          If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.

Password: MgYFjdHj6VZCAG7wbfFZr/kJkyAxBuUWH0dOQIC2Du4=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

# 编辑gitlab配置文件，把external_url修改为服务器的IP
[root@integrate ~]# vim /etc/gitlab/gitlab.rb 
# 重新配置gitlab
[root@integrate ~]# gitlab-ctl reconfigure
# 重启gitlab
[root@integrate ~]# gitlab-ctl restart
ok: run: crond: (pid 32033) 0s
ok: run: gitaly: (pid 32041) 1s
ok: run: gitlab-kas: (pid 32062) 0s
ok: run: gitlab-workhorse: (pid 32075) 1s
ok: run: logrotate: (pid 32092) 0s
ok: run: nginx: (pid 32103) 1s
ok: run: postgresql: (pid 32117) 0s
ok: run: puma: (pid 32131) 0s
ok: run: redis: (pid 32136) 1s
ok: run: registry: (pid 32142) 0s
ok: run: sidekiq: (pid 32238) 1s</code></pre>
<ul>
<li>浏览器配置gitlab，访问地址为刚才修改的external_url配置项</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6d01667023911.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6d01667023911.png" alt="" /></a></p>
<ul>
<li>登录用户名密码忘了的话重置密码</li>
</ul>
<pre><code>[root@integrate ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
 GitLab:       15.5.1-jh (c0fdf8a170e) EE
 GitLab Shell: 14.12.0
 PostgreSQL:   13.6
------------------------------------------------------------[ booted in 19.74s ]
Loading production environment (Rails 6.1.6.1)
irb(main):001:0&gt; user = User.where(username:"root").first
=&gt; #&lt;User id:1 @root&gt;
irb(main):002:0&gt; user.password = "123456789"
=&gt; "123456789"
irb(main):003:0&gt; user.save!
=&gt; true
irb(main):004:0&gt; exit</code></pre>
<h2>Jenkins集成gitlab</h2>
<ul>
<li>gitlab创建api令牌</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-65d21667024284.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-65d21667024284.png" alt="" /></a></p>
<ul>
<li>打开gitlab的出站点请求限制</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-d0651667024370.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-d0651667024370.png" alt="" /></a></p>
<ul>
<li>Jenkins添加gitlab令牌</li>
</ul>
<blockquote>
<p>jenkins首页——系统管理——系统配置——Gitlab(勾选Enable authentication for '/project' end-point)，输入gitlab信息。新建一个凭据，token为刚才在gitlab创建的token</p>
</blockquote>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-81901667025928.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-81901667025928.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-28021667026003.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-28021667026003.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-a60a1667026093.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-a60a1667026093.png" alt="" /></a></p>
<ul>
<li>gitlab新建一个仓库并下载到本地</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-67091667026231.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-67091667026231.png" alt="" /></a></p>
<ul>
<li>把刚才创建的仓库保存到Jenkins部署机</li>
</ul>
<pre><code>[root@integrate ~]# git clone http://82.157.43.29/gitlab-instance-2bc89e69/test-nginx.git
Cloning into 'test-nginx'...
Username for 'http://82.157.43.29': root
Password for 'http://root@82.157.43.29': 
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
[root@integrate ~]# ls
test-nginx
[root@integrate ~]# cd test-nginx/
[root@integrate test-nginx]# ls
README.md
[root@integrate test-nginx]# vim .git/config 
[root@integrate test-nginx]# cat .git/config
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = http://root:123456789@82.157.43.29/gitlab-instance-2bc89e69/test-nginx.git  #root:123456789为gitlab的用户名密码
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
    remote = origin
    merge = refs/heads/main
[root@integrate test-nginx]# </code></pre>
<ul>
<li>Jenkins创建一个任务</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-20c31667026668.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-20c31667026668.png" alt="" /></a></p>
<ul>
<li>在构建触发器中选择&quot;Build when a change is pushed to GitLab. GitLab webhook URL:&quot;打开高级自动生成一个Secret</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-bafd1667026759.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-bafd1667026759.png" alt="" /></a></p>
<ul>
<li>在构建环境中选择&quot;Execute shell script on remote host using ssh&quot;，选择刚才创建的Jenkins部署机的凭据，并输入以下命令</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-40aa1667039149.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-40aa1667039149.png" alt="" /></a></p>
<pre><code>cd /root/test-nginx/
chmod +x build.sh
sh build.sh</code></pre>
<ul>
<li>在gitlab中的仓库中选择设置下的WebHooks把刚才新建的Jenkins的&quot;Build when a change is pushed to GitLab. GitLab webhook URL&quot;及创建的token输入里面并保存。这里面的url建议替换为内网IP</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-21f91667027496.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-21f91667027496.png" alt="" /></a></p>
<ul>
<li>保存后点击测试可以看到状态为200</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-a5671667027556.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-a5671667027556.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-de4a1667027593.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-de4a1667027593.png" alt="" /></a></p>
<ul>
<li>进入Jenkins的构建计划中，可以看到刚才测试的已经自动触发成功</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-8c0e1667027652.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-8c0e1667027652.png" alt="" /></a></p>
<ul>
<li>在本地的代码库中新建build.sh，并写入以下内容</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-febb1667027049.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-febb1667027049.png" alt="" /></a></p>
<ul>
<li>把代码推送到仓库中，构建推送后会触发自动构建，此时会报错，但是不用理会</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-1f8f1667027732.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-1f8f1667027732.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-ac461667027757.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-ac461667027757.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-23621667027829.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-23621667027829.png" alt="" /></a></p>
<ul>
<li>进入部署机的/root/test-nginx下手动pull一下代码，此时可以看到脚本已经到达部署机内</li>
</ul>
<pre><code>[root@integrate test-nginx]# pwd
/root/test-nginx
[root@integrate test-nginx]# 
[root@integrate test-nginx]# git pull
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From http://82.157.43.29/gitlab-instance-2bc89e69/test-nginx
   fd2cd68..f122171  main       -&gt; origin/main
Updating fd2cd68..f122171
Fast-forward
 build.sh | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 build.sh
[root@integrate test-nginx]# ls
build.sh  README.md
[root@integrate test-nginx]# cat build.sh 
git pull
date=`date +%Y%m%d_%H%M%S`
echo $date &gt; /root/date</code></pre>
<ul>
<li>在本地修改build.sh脚本并再次推送到gitlab，可以看到jenkins会自动触发并执行成功，登录jenkins部署机可以看到在路径下已经生成文件并且文件内已输入内容</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-fe1a1667028055.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-fe1a1667028055.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6481667028091.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e6481667028091.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-4eb21667028220.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-4eb21667028220.png" alt="" /></a></p>
<pre><code>[root@integrate test-nginx]# ls
build.sh  date  README.md
[root@integrate test-nginx]# cat date 
hello 20221029_152300
[root@integrate test-nginx]# pwd
/root/test-nginx
[root@integrate test-nginx]# </code></pre>
<h2>部署harbor镜像仓库</h2>
<ul>
<li>下载harbor安装包</li>
</ul>
<pre><code>[root@integrate ~]# wget https://install.jishuliu.cn/docker/harbor-offline-installer-v2.6.1.tgz 
--2022-10-29 15:25:09--  https://install.jishuliu.cn/docker/harbor-offline-installer-v2.6.1.tgz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 42.81.85.234, 42.81.85.216, 42.81.85.224, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|42.81.85.234|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 757278514 (722M) [application/octet-stream]
Saving to: ‘harbor-offline-installer-v2.6.1.tgz’

100%[==================================================================================================================================================================================================&gt;] 757,278,514 12.1MB/s   in 59s    

2022-10-29 15:26:08 (12.3 MB/s) - ‘harbor-offline-installer-v2.6.1.tgz’ saved [757278514/757278514]
</code></pre>
<ul>
<li>部署修改harbor配置文件</li>
</ul>
<pre><code>[root@integrate ~]# ls
harbor-offline-installer-v2.6.1.tgz  test-nginx
[root@integrate ~]# tar xf harbor-offline-installer-v2.6.1.tgz 
cd ha[root@integrate ~]# cd harbor/
[root@integrate harbor]# ls
common.sh  harbor.v2.6.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@integrate harbor]# cp harbor.yml.tmpl harbor.yml
[root@integrate harbor]# vim harbor.yml
# http配置
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 81

# https配置
https:
  # https 端口，默认443
  port: 443
  # 证书路径
  certificate: /root/harbor/ssl/server.crt
  private_key: /root/harbor/ssl/server.key
# harbor的admin用户的密码，默认为Harbor12345
  harbor_admin_password: Harbor12345
</code></pre>
<ul>
<li>生成harbor证书。此处需要注意，如果hostname使用的是域名并且域名未备案，在云环境中则无法访问，但是服务器内部可以通过配置host使用，并且如果域名已备案未解析到harbor服务器的外网IP，则需要配置本地host才可以使用web页</li>
</ul>
<pre><code>[root@integrate harbor]# mkdir ssl
[root@integrate harbor]# cd ssl/
[root@integrate ssl]# openssl genrsa -out ca.key 4096
Generating RSA private key, 4096 bit long modulus
...........................++
.........++
e is 65537 (0x10001)
[root@integrate ssl]# openssl req -x509 -new -nodes -sha512 -days 3650  -subj "/CN=harbor.jishuliu.cn"  -key ca.key  -out ca.crt
[root@integrate ssl]# openssl genrsa -out server.key 4096
Generating RSA private key, 4096 bit long modulus
..........................++
...............++
e is 65537 (0x10001)
[root@integrate ssl]# openssl req  -new -sha512  -subj "/CN=harbor.jishuliu.cn"  -key server.key  -out server.csr
[root@integrate ssl]# cat &gt; v3.ext &lt;&lt;-EOF
&gt;  authorityKeyIdentifier=keyid,issuer
&gt;  basicConstraints=CA:FALSE
&gt;  keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
&gt;  extendedKeyUsage = serverAuth 
&gt;  subjectAltName = @alt_names
&gt;  [alt_names]
&gt;  DNS.1=harbor.jishuliu.cn
&gt; EOF
[root@integrate ssl]# ll
total 20
-rw-r--r-- 1 root root 1814 Oct 29 15:30 ca.crt
-rw-r--r-- 1 root root 3247 Oct 29 15:30 ca.key
-rw-r--r-- 1 root root 1598 Oct 29 15:32 server.csr
-rw-r--r-- 1 root root 3243 Oct 29 15:31 server.key
-rw-r--r-- 1 root root  244 Oct 29 15:32 v3.ext
[root@integrate ssl]# openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
Signature ok
subject=/CN=harbor.jishuliu.cn
Getting CA Private Key
[root@integrate ssl]# ll
total 28
-rw-r--r-- 1 root root 1814 Oct 29 15:30 ca.crt
-rw-r--r-- 1 root root 3247 Oct 29 15:30 ca.key
-rw-r--r-- 1 root root   17 Oct 29 15:32 ca.srl
-rw-r--r-- 1 root root 1854 Oct 29 15:32 server.crt
-rw-r--r-- 1 root root 1598 Oct 29 15:32 server.csr
-rw-r--r-- 1 root root 3243 Oct 29 15:31 server.key
-rw-r--r-- 1 root root  244 Oct 29 15:32 v3.ext</code></pre>
<ul>
<li>部署harbor</li>
</ul>
<pre><code>[root@integrate ssl]# cd ..
[root@integrate harbor]# ls
common.sh  harbor.v2.6.1.tar.gz  harbor.yml  harbor.yml.tmpl  install.sh  LICENSE  prepare  ssl
[root@integrate harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 19.03.9

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 1.23.2

[Step 2]: loading Harbor images ...
19b3e561bd53: Loading layer [==================================================&gt;]  37.69MB/37.69MB
b1c55ad746b8: Loading layer [==================================================&gt;]  5.754MB/5.754MB
3fad059e5b96: Loading layer [==================================================&gt;]  8.718MB/8.718MB
ac3d56834181: Loading layer [==================================================&gt;]  15.88MB/15.88MB
ac64291e7095: Loading layer [==================================================&gt;]  29.29MB/29.29MB
347c69d047c1: Loading layer [==================================================&gt;]  22.02kB/22.02kB
2bc68bdd74b4: Loading layer [==================================================&gt;]  15.88MB/15.88MB
Loaded image: goharbor/notary-server-photon:v2.6.1
a3f881ff8a8a: Loading layer [==================================================&gt;]  5.759MB/5.759MB
bf4fe2665116: Loading layer [==================================================&gt;]  90.88MB/90.88MB
1bbf13d3b736: Loading layer [==================================================&gt;]  3.072kB/3.072kB
6864945044da: Loading layer [==================================================&gt;]  4.096kB/4.096kB
e74206fce300: Loading layer [==================================================&gt;]  91.67MB/91.67MB
Loaded image: goharbor/chartmuseum-photon:v2.6.1
d1cca5e33760: Loading layer [==================================================&gt;]  126.9MB/126.9MB
f21ade3affb4: Loading layer [==================================================&gt;]  3.584kB/3.584kB
2b10bb22d396: Loading layer [==================================================&gt;]  3.072kB/3.072kB
cddb26029f4f: Loading layer [==================================================&gt;]   2.56kB/2.56kB
120e581fca06: Loading layer [==================================================&gt;]  3.072kB/3.072kB
b55ab4161be8: Loading layer [==================================================&gt;]  3.584kB/3.584kB
708b88dc9728: Loading layer [==================================================&gt;]  20.99kB/20.99kB
Loaded image: goharbor/harbor-log:v2.6.1
aa3c0eeab3fd: Loading layer [==================================================&gt;]  5.759MB/5.759MB
08acd59679e5: Loading layer [==================================================&gt;]  4.096kB/4.096kB
dbfa72b62e7c: Loading layer [==================================================&gt;]   17.1MB/17.1MB
3db46c922bff: Loading layer [==================================================&gt;]  3.072kB/3.072kB
db46f9ab20a1: Loading layer [==================================================&gt;]  29.15MB/29.15MB
c28b264c5c77: Loading layer [==================================================&gt;]  47.04MB/47.04MB
Loaded image: goharbor/harbor-registryctl:v2.6.1
46e1d8c22785: Loading layer [==================================================&gt;]  119.1MB/119.1MB
Loaded image: goharbor/nginx-photon:v2.6.1
ebe1f7ed9475: Loading layer [==================================================&gt;]  7.162MB/7.162MB
780db4ad3bef: Loading layer [==================================================&gt;]  4.096kB/4.096kB
dc07146a4e90: Loading layer [==================================================&gt;]  3.072kB/3.072kB
2cdc8f8be3a6: Loading layer [==================================================&gt;]  91.21MB/91.21MB
d4efae655490: Loading layer [==================================================&gt;]  12.86MB/12.86MB
c11badbab4ee: Loading layer [==================================================&gt;]  104.9MB/104.9MB
Loaded image: goharbor/trivy-adapter-photon:v2.6.1
6ada5ff70437: Loading layer [==================================================&gt;]  43.85MB/43.85MB
070561aa0752: Loading layer [==================================================&gt;]   65.9MB/65.9MB
af13505c0fbc: Loading layer [==================================================&gt;]  19.14MB/19.14MB
8eaa0fe4e73c: Loading layer [==================================================&gt;]  65.54kB/65.54kB
9ffc621c4d1d: Loading layer [==================================================&gt;]   2.56kB/2.56kB
4f311e4137a0: Loading layer [==================================================&gt;]  1.536kB/1.536kB
d1ecbcc8c146: Loading layer [==================================================&gt;]  12.29kB/12.29kB
313e339c685b: Loading layer [==================================================&gt;]  2.613MB/2.613MB
6f748b2ed0dc: Loading layer [==================================================&gt;]  379.9kB/379.9kB
Loaded image: goharbor/prepare:v2.6.1
59c6fef03969: Loading layer [==================================================&gt;]  1.097MB/1.097MB
0b0d97fd8a80: Loading layer [==================================================&gt;]  5.888MB/5.888MB
6f21e17052fb: Loading layer [==================================================&gt;]    169MB/169MB
480717132aea: Loading layer [==================================================&gt;]  16.96MB/16.96MB
817dc53a51cf: Loading layer [==================================================&gt;]  4.096kB/4.096kB
beeda54c09df: Loading layer [==================================================&gt;]  6.144kB/6.144kB
0de0c418dfa2: Loading layer [==================================================&gt;]  3.072kB/3.072kB
394a42c14a01: Loading layer [==================================================&gt;]  2.048kB/2.048kB
c53687716453: Loading layer [==================================================&gt;]   2.56kB/2.56kB
46e9e5d728c4: Loading layer [==================================================&gt;]   2.56kB/2.56kB
e05b0e58bb47: Loading layer [==================================================&gt;]   2.56kB/2.56kB
85d4f51c325c: Loading layer [==================================================&gt;]  8.704kB/8.704kB
Loaded image: goharbor/harbor-db:v2.6.1
0bfa75b1d074: Loading layer [==================================================&gt;]  8.902MB/8.902MB
0dda41e1e1a6: Loading layer [==================================================&gt;]  3.584kB/3.584kB
13be21b41d86: Loading layer [==================================================&gt;]   2.56kB/2.56kB
f92838d6a967: Loading layer [==================================================&gt;]  97.91MB/97.91MB
e97573477193: Loading layer [==================================================&gt;]   98.7MB/98.7MB
Loaded image: goharbor/harbor-jobservice:v2.6.1
15fecb8d6c42: Loading layer [==================================================&gt;]  119.1MB/119.1MB
098f54fce48f: Loading layer [==================================================&gt;]  7.535MB/7.535MB
3dc6ef297f52: Loading layer [==================================================&gt;]  1.185MB/1.185MB
Loaded image: goharbor/harbor-portal:v2.6.1
775b1ccf1721: Loading layer [==================================================&gt;]  5.754MB/5.754MB
f4ef31b9659f: Loading layer [==================================================&gt;]  8.718MB/8.718MB
7c9e733a4621: Loading layer [==================================================&gt;]  14.47MB/14.47MB
148050e3b89d: Loading layer [==================================================&gt;]  29.29MB/29.29MB
500fdc71742e: Loading layer [==================================================&gt;]  22.02kB/22.02kB
d38ecdf0c794: Loading layer [==================================================&gt;]  14.47MB/14.47MB
Loaded image: goharbor/notary-signer-photon:v2.6.1
0b6707dd33bc: Loading layer [==================================================&gt;]  5.759MB/5.759MB
8107a2426b6d: Loading layer [==================================================&gt;]  4.096kB/4.096kB
130b71e83c08: Loading layer [==================================================&gt;]  3.072kB/3.072kB
3daa3b45e084: Loading layer [==================================================&gt;]   17.1MB/17.1MB
e1f022373798: Loading layer [==================================================&gt;]   17.9MB/17.9MB
Loaded image: goharbor/registry-photon:v2.6.1
b8ab82a27cb4: Loading layer [==================================================&gt;]  8.902MB/8.902MB
031794af342e: Loading layer [==================================================&gt;]  3.584kB/3.584kB
a6c93180465a: Loading layer [==================================================&gt;]   2.56kB/2.56kB
1181f6dc3b6f: Loading layer [==================================================&gt;]  80.74MB/80.74MB
6aea11036399: Loading layer [==================================================&gt;]  5.632kB/5.632kB
84ea4b6c2a1f: Loading layer [==================================================&gt;]  105.5kB/105.5kB
9da21a8aaea8: Loading layer [==================================================&gt;]  44.03kB/44.03kB
3a6281e6c8dc: Loading layer [==================================================&gt;]  81.68MB/81.68MB
57ba35dc2c40: Loading layer [==================================================&gt;]   2.56kB/2.56kB
Loaded image: goharbor/harbor-core:v2.6.1
24243fc0136d: Loading layer [==================================================&gt;]  8.902MB/8.902MB
9778bfbfaf4b: Loading layer [==================================================&gt;]  24.64MB/24.64MB
c904704d3e3f: Loading layer [==================================================&gt;]  4.608kB/4.608kB
0ee8cf6901bd: Loading layer [==================================================&gt;]  25.43MB/25.43MB
Loaded image: goharbor/harbor-exporter:v2.6.1
5e3e5b804996: Loading layer [==================================================&gt;]  119.9MB/119.9MB
c7323c3b23ff: Loading layer [==================================================&gt;]  3.072kB/3.072kB
6ab347b42178: Loading layer [==================================================&gt;]   59.9kB/59.9kB
4587d0666b27: Loading layer [==================================================&gt;]  61.95kB/61.95kB
Loaded image: goharbor/redis-photon:v2.6.1

[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

Note: stopping existing Harbor instance ...
Removing network harbor_harbor
WARNING: Network harbor_harbor not found.

[Step 5]:starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating redis         ... done
Creating registryctl   ... done
Creating harbor-portal ... done
Creating harbor-db     ... done
Creating registry      ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----</code></pre>
<ul>
<li>浏览器访问harbor，访问地址为&quot;<a href="https://配置的域名或IP">https://配置的域名或IP</a>&quot; 用户名为admin，密码为刚才配置的密码</li>
</ul>
<pre><code>由于是测试，域名并未解析，所以需要配置host</code></pre>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-70411667029130.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-70411667029130.png" alt="" /></a></p>
<ul>
<li>新建一个web-dist的仓库负责保存测试用的web页面镜像</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-1f0c1667029204.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-1f0c1667029204.png" alt="" /></a></p>
<ul>
<li>配置docker使服务器可以登录harbor</li>
</ul>
<pre><code># 创建docker的证书存储路径
[root@integrate harbor]# mkdir -p /etc/docker/certs.d/harbor.jishuliu.cn
# 进入路径内并把证书复制过来
[root@integrate harbor]# cd /etc/docker/certs.d/harbor.jishuliu.cn
[root@integrate harbor.jishuliu.cn]# cp /root/harbor/ssl/server.crt ./
# 配置host，内网传输比外网传输快且安全
[root@integrate harbor.jishuliu.cn]# echo "172.21.16.16 harbo.jishuliu.cn" &gt;&gt; /etc/hosts
# 登录到harbor
[root@integrate harbor.jishuliu.cn]# docker login harbor.jishuliu.cn -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@integrate harbor.jishuliu.cn]# </code></pre>
<h1>Kubernetes集群部署</h1>
<h2>KubeOperator集群管理工具部署</h2>
<ul>
<li>下载KubeOperator安装包</li>
</ul>
<pre><code>[root@Deploymenth ~]# wget https://install.jishuliu.cn/kubeoperator/kubeoperator-release-v3.16.2-amd64.tar.gz
--2022-10-29 15:41:39--  https://install.jishuliu.cn/kubeoperator/kubeoperator-release-v3.16.2-amd64.tar.gz
Resolving package.jishuliu.cn (package.jishuliu.cn)... 42.81.85.202, 42.81.120.76, 42.81.85.234, ...
Connecting to package.jishuliu.cn (package.jishuliu.cn)|42.81.85.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 6243835184 (5.8G) [application/octet-stream]
Saving to: ‘kubeoperator-release-v3.16.2-amd64.tar.gz’

100%[================================================================================================================================================================================================&gt;] 6,243,835,184 12.9MB/s   in 7m 34s 

2022-10-29 15:49:14 (13.1 MB/s) - ‘kubeoperator-release-v3.16.2-amd64.tar.gz’ saved [6243835184/6243835184]

[root@Deploymenth ~]# </code></pre>
<ul>
<li>部署KubeOperator</li>
</ul>
<pre><code>[root@Deploymenth ~]# tar xf kubeoperator-release-v3.16.2-amd64.tar.gz 
ls
[root@Deploymenth ~]# ls
kubeoperator-release-v3.16.2  kubeoperator-release-v3.16.2-amd64.tar.gz
[root@Deploymenth ~]# cd kubeoperator-release-v3.16.2/
[root@Deploymenth kubeoperator-release-v3.16.2]# ls
docker  images  install.sh  koctl  kubeoperator  mysql.tar.gz  nexus-data.tar.gz  README.md
[root@Deploymenth kubeoperator-release-v3.16.2]# bash install.sh 

██╗  ██╗██╗   ██╗██████╗ ███████╗ ██████╗ ██████╗ ███████╗██████╗  █████╗ ████████╗ ██████╗ ██████╗
██║ ██╔╝██║   ██║██╔══██╗██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗
█████╔╝ ██║   ██║██████╔╝█████╗  ██║   ██║██████╔╝█████╗  ██████╔╝███████║   ██║   ██║   ██║██████╔╝
██╔═██╗ ██║   ██║██╔══██╗██╔══╝  ██║   ██║██╔═══╝ ██╔══╝  ██╔══██╗██╔══██║   ██║   ██║   ██║██╔══██╗
██║  ██╗╚██████╔╝██████╔╝███████╗╚██████╔╝██║     ███████╗██║  ██║██║  ██║   ██║   ╚██████╔╝██║  ██║
╚═╝  ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝

开始安装 KubeOperator，版本 - v3.16.2 
设置KubeOperator安装目录,默认/opt: 
你选择的安装路径为 /opt
[KubeOperator Log]: ... 解压离线包
which: no docker in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[KubeOperator Log]: ... 离线安装 docker 
[KubeOperator Log]: ... 配置 docker 
[KubeOperator Log]: ... 关闭 Firewalld 
[KubeOperator Log]: ... 添加 kubeoperator docker 仓库 
[KubeOperator Log]: ... 启动 docker 
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /etc/systemd/system/docker.service.
[KubeOperator Log]: 检测到 Docker Compose 已安装，跳过安装步骤 
[KubeOperator Log]: ... 加载镜像 
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/kobe:v3.16.2-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/kotf:v3.16.2-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/kubepi-server:v1.6.1-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/mysql-server:8.0.29-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/neeko:v3.16.2-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/nexus3:3.38.1-02-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/nginx:1.23.1-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/server:v3.16.2-amd64
Loaded image: registry.cn-qingdao.aliyuncs.com/kubeoperator/webkubectl:v2.10.6-amd64
[KubeOperator Log]: ... 开始启动 KubeOperator 
Creating network "kubeoperator_default" with the default driver
Creating kubeoperator_nexus ... 
Creating kubeoperator_webkubectl ... 
Creating kubeoperator_mysql      ... 
Creating kubeoperator_kotf       ... 
Creating kubeoperator_ui         ... 
Creating kubeoperator_kubepi     ... 
Creating kubeoperator_kobe       ... 
Creating kubeoperator_kotf       ... done
Creating kubeoperator_mysql      ... done
Creating kubeoperator_webkubectl ... done
Creating kubeoperator_nexus      ... done
Creating kubeoperator_kobe       ... done
Creating kubeoperator_kubepi     ... done
Creating kubeoperator_ui         ... done
Creating kubeoperator_server     ... 
Creating kubeoperator_server     ... done
Creating kubeoperator_nginx      ... 
Creating kubeoperator_nginx      ... done
======================= KubeOperator 安装完成 =======================

请开放防火墙或安全组的80,8081-8083端口,通过以下方式访问:
 URL:  http://$LOCAL_IP:80 
 用户名:  admin  
 初始密码:  kubeoperator@admin123</code></pre>
<h2>页面配置kubeoperator</h2>
<ul>
<li>首页</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-dedd1667030833.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-dedd1667030833.png" alt="" /></a></p>
<ul>
<li>添加一个仓库，仓库为X86_64系统架构</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-ec1a1667031099.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-ec1a1667031099.png" alt="" /></a></p>
<ul>
<li>新建一个项目</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-35111667031179.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-35111667031179.png" alt="" /></a></p>
<ul>
<li>把master节点添加到主机内。(自动创建需要的信息比较多，所以本次使用手动添加)</li>
<li>由于本次使用的服务器密码一样所以在创建凭据的时候只需要创建一个即可</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-97e61667031306.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-97e61667031306.png" alt="" /></a></p>
<ul>
<li>把work节点添加到主机内。所有的IP使用内网IP即可</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-9b391667031410.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-9b391667031410.png" alt="" /></a></p>
<ul>
<li>添加完成后即可看到两个主机状态均为运行中</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e0001667031469.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e0001667031469.png" alt="" /></a></p>
<h3>配置集群信息</h3>
<h4>部署集群</h4>
<ul>
<li>第一步：除了项目名称和项目信息其他的默认即可</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-93f01667031891.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-93f01667031891.png" alt="" /></a></p>
<ul>
<li>第二部：全部默认即可，也可以根据需求调节</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-5e781667031617.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-5e781667031617.png" alt="" /></a></p>
<ul>
<li>第三步：全部默认即可。需要注意的是docker的路径，建议存储到数据盘内</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-914e1667031683.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-914e1667031683.png" alt="" /></a></p>
<ul>
<li>第四步：默认即可</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-ea9b1667031720.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-ea9b1667031720.png" alt="" /></a></p>
<ul>
<li>第五步可以全部默认</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-5aaa1667031759.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-5aaa1667031759.png" alt="" /></a></p>
<ul>
<li>第六步：主节点选择test-master主机，work节点选择test-work主机</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-21bb1667031965.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-21bb1667031965.png" alt="" /></a></p>
<ul>
<li>
<p>第七步：直接完成即可</p>
</li>
<li>
<p>等待集群部署完成，集群状态为运行中及为部署完成</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-98e11667032597.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-98e11667032597.png" alt="" /></a></p>
<h4>配置集群</h4>
<ul>
<li>点击集群名称进入集群</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e1d01667032658.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e1d01667032658.png" alt="" /></a></p>
<ul>
<li>在集群工具中启用prometheus、grafana、loki</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-352a1667032938.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-352a1667032938.png" alt="" /></a></p>
<h4>部署kuboard</h4>
<pre><code># 部署kuboard
[root@master ~]# kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml
namespace/kuboard created
configmap/kuboard-v3-config created
serviceaccount/kuboard-boostrap created
clusterrolebinding.rbac.authorization.k8s.io/kuboard-boostrap-crb created
daemonset.apps/kuboard-etcd created
deployment.apps/kuboard-v3 created
service/kuboard-v3 created
# 以下为部署成功
[root@master ~]# kubectl get pods -n kuboard
NAME                               READY   STATUS    RESTARTS      AGE
kuboard-agent-2-7b87d4b845-2x5qr   1/1     Running   2 (49s ago)   60s
kuboard-agent-5dd94c8459-wszzx     1/1     Running   2 (48s ago)   60s
kuboard-etcd-jsnmn                 1/1     Running   0             106s
kuboard-v3-765f7bcbfd-7ct6p        1/1     Running   0             106s</code></pre>
<ul>
<li>在kubeoperator的集群管理点击集群后面的dashboard进入kubepi页面</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-40b01667033302.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-40b01667033302.png" alt="" /></a></p>
<ul>
<li>在服务发现的service中查看kuboard的信息，此步骤为了使用ingress把kuboaard的管理页面映射出来</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-25221667033387.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-25221667033387.png" alt="" /></a></p>
<h4>创建kuboard使用的ingress</h4>
<ul>
<li>在服务发现的ingress中点击新建</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-999e1667033440.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-999e1667033440.png" alt="" /></a></p>
<ul>
<li>
<p>填入ingress规则的对应信息，域名未解析到集群的master节点的外网IP则需要映射到集群的master节点外网IP或配置host才可以访问</p>
</li>
<li>
<p>如果是在云服务器部署，域名需要备案才可以访问</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-9ac91667033516.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-9ac91667033516.png" alt="" /></a></p>
<ul>
<li>填入默认后端信息，填完后确定即可</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-0f901667033704.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-0f901667033704.png" alt="" /></a></p>
<ul>
<li>页面访问配置的ingress，默认的账号密码为admin、Kuboard123</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-5ee91667033889.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-5ee91667033889.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-11731667033913.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-11731667033913.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-8b9a1667033972.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-8b9a1667033972.png" alt="" /></a></p>
<h3>使用kuboard在集群中创建一个pod</h3>
<ul>
<li>创建一个test-nginx命名空间</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-74a71667034165.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-74a71667034165.png" alt="" /></a></p>
<ul>
<li>点击集群并使用admin用户进入test-nginx命名空间</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-12431667034045.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-12431667034045.png" alt="" /></a></p>
<ul>
<li>点击创建工作负载并填写基本信息</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-35ca1667034300.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-35ca1667034300.png" alt="" /></a></p>
<ul>
<li>填写容器信息</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-ef2d1667034389.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-ef2d1667034389.png" alt="" /></a></p>
<ul>
<li>填写服务信息，给容器创建一个service</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-ef511667034535.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-ef511667034535.png" alt="" /></a></p>
<ul>
<li>等待状态为Ready说明部署成功，容器已经启动</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-c5821667034619.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-c5821667034619.png" alt="" /></a></p>
<ul>
<li>在集群安装IngressNginxController</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-6e961667034888.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-6e961667034888.png" alt="" /></a></p>
<ul>
<li>
<p>给nginx-test创建一个ingress，创建完成后直接访问即可</p>
</li>
<li>
<p>创建完成后访问域名即可，域名未解析到集群的master节点外网IP则需要映射到集群的master节点外网IP或配置host才可以访问如果是在云服务器部署，域名需要备案才可以访问</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-fdef1667035088.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-fdef1667035088.png" alt="" /></a></p>
<ul>
<li>把nginx的节点调整为双节点，点击伸缩的左右箭头即可调整</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-e47d1667035325.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-e47d1667035325.png" alt="" /></a></p>
<ul>
<li>调整为双节点如下所示</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-cd8a1667035401.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-cd8a1667035401.png" alt="" /></a></p>
<ul>
<li>
<p>测试负载均衡</p>
</li>
<li>
<p>进入容器内修改nginx的index.html文件查看效果。nginx的默认index.html路径为/usr/share/nginx/html</p>
</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-5d4f1667035461.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-5d4f1667035461.png" alt="" /></a></p>
<ul>
<li>nginx-test-8659c758d6-qhd4d的默认index.html改为nginx1</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-4a881667035575.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-4a881667035575.png" alt="" /></a></p>
<ul>
<li>nginx-test-8659c758d6-4rcgz的默认index.html改为nginx2</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-07e61667035717.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-07e61667035717.png" alt="" /></a></p>
<ul>
<li>浏览器访问ingress配置的域名，多刷新几次可以看到页面变化</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/0b131667035767.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/0b131667035767.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/6bb71667035906.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/6bb71667035906.png" alt="" /></a></p>
<h1>GitLab、Jenkins、Kubernetes持续集成持续部署</h1>
<ul>
<li>在kuboard中的工作负载的cicd中创建一个AccessKey</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-85971667037923.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-85971667037923.png" alt="" /></a></p>
<ul>
<li>选择刚才创建的工作负载查看镜像更新命令</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-20621667037996.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-20621667037996.png" alt="" /></a></p>
<h2>Jenkins部署机环境安装</h2>
<h3>部署node、npm</h3>
<p><em>本次的示例代码需要node12.18.3版本及npm6.14.6版本</em></p>
<ul>
<li>安装node及npm</li>
</ul>
<pre><code>wget https://nodejs.org/download/release/v12.18.3/node-v12.18.3-linux-x64.tar.gz
tar xf node-v12.18.3-linux-x64.tar.gz
mv -v12.18.3-linux-x64 node
mv node /usr/local
ln -s /usr/local/node/bin/* /usr/local/bin/</code></pre>
<h3>部署一个前端静态页面</h3>
<ul>
<li>
<p>把前端的代码拷贝到之前创建的gitlab代码库内并新建以下三个文件</p>
</li>
<li>
<p>Dockerfile：制作docker镜像文件</p>
</li>
</ul>
<pre><code># 使用的源镜像版本
FROM nginx:latest
# 删除镜像自带的默认html
RUN rm -rf /usr/share/nginx/html/*
# 删除镜像自带的配置文件
RUN rm -rf /etc/nginx/conf.d/default.conf
# 把打包好的文件复制到镜像内
COPY dist /usr/share/nginx/html/
# 把修改的nginx配置文件复制到镜像内
COPY default.conf /etc/nginx/conf.d/
# 把上海时区替换为镜像默认时区
COPY Shanghai /etc/localtime</code></pre>
<ul>
<li>build.sh：执行的脚本</li>
</ul>
<pre><code># 更新代码
git pull
# 安装依赖
npm install --unsafe-perm=true --allow-root
# 打包
npm run build-test
# 把部署机的上海时区文件复制到当前路径下
cp /usr/share/zoneinfo/Asia/Shanghai ./
# 把镜像版本定义为时间方便管理及回滚
image_tag=`date +%Y%m%d_%H%M%S`
# 制作镜像
docker build -t dist:$image_tag .
# 把刚制作的镜像替换重命名为镜像仓库的版本，harbor,jishuliu.cn/web-dist可以在harbor查看
docker tag dist:$image_tag harbor.jishuliu.cn/web-dist/dist:$image_tag
docker push harbor.jishuliu.cn/web-dist/dist:$image_tag
docker rmi dist:$image_tag  harbor.jishuliu.cn/web-dist/dist:$image_tag
# 删除上海时区文件
rm -rf Shanghai
# 删除本次打包下载的node_modules
rm -rf node_modules
# 删除打包好的文件
rm -rf dist
# kuboard更新镜像命令
curl -X PUT --insecure \
    -H "content-type: application/json" \
    -H "Cookie: KuboardUsername=admin; KuboardAccessKey=64yca3d4z7xh.57a3z8rmhr38nt23s52jjbhzf4mhn53z" \
    -d '{"kind":"deployments","namespace":"nginx-test","name":"nginx-test","images":{"nginx":"harbor.jishuliu.cn/nginx/nginx:'$image_tag'"}}' \
    "https://kuborad.jishuliu.cn/kuboard-api/cluster/default/kind/CICDApi/admin/resource/updateImageTag"</code></pre>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-93341667038968.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-93341667038968.png" alt="" /></a></p>
<ul>
<li>default.conf</li>
</ul>
<pre><code>server {
# 监听80端口
    listen       80 default;
# 不管访问的地址是什么
    server_name  _;
# 日志输出路径
    access_log  /var/log/nginx/host.access.log  main;
# 配置静态页面路径
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}</code></pre>
<ul>
<li>先把刚才创建的gitlab的WebHooks删除，防止推送代码之后自动触发</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-98c71667038554.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-98c71667038554.png" alt="" /></a></p>
<ul>
<li>把代码推送到仓库内，在部署机拉代码然后执行一次脚本进行测试，首次测试需要把脚本内的curl命令及参数全部注释。执行完成后可以在harbor查看镜像</li>
</ul>
<pre><code>[root@integrate test-nginx]# sh build.sh 
Already up-to-date.

&gt; yorkie@2.0.0 install /root/test-nginx/node_modules/yorkie
&gt; node bin/install.js

setting up Git hooks
done

&gt; node-sass@4.14.1 install /root/test-nginx/node_modules/node-sass
&gt; node scripts/install.js

Cached binary found at /root/.npm/node-sass/4.14.1/linux-x64-72_binding.node

&gt; core-js@2.6.11 postinstall /root/test-nginx/node_modules/babel-runtime/node_modules/core-js
&gt; node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
&gt; https://opencollective.com/core-js 
&gt; https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

&gt; core-js@3.6.5 postinstall /root/test-nginx/node_modules/core-js
&gt; node -e "try{require('./postinstall')}catch(e){}"

&gt; ejs@2.7.4 postinstall /root/test-nginx/node_modules/ejs
&gt; node ./postinstall.js

Thank you for installing EJS: built with the Jake JavaScript build tool (https://jakejs.com/)

&gt; node-sass@4.14.1 postinstall /root/test-nginx/node_modules/node-sass
&gt; node scripts/build.js

Binary found at /root/test-nginx/node_modules/node-sass/vendor/linux-x64-72/binding.node
Testing binary
Binary is fine
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 1396 packages from 904 contributors and audited 1399 packages in 19.337s

52 packages are looking for funding
  run `npm fund` for details

found 172 vulnerabilities (3 low, 61 moderate, 91 high, 17 critical)
  run `npm audit fix` to fix them, or `npm audit` for details

&gt; default-vue@1.1.8 build-test /root/test-nginx
&gt; vue-cli-service build --mode test

当前运行环境为：测试环境

⠧  Building for test...Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
⠸  Building for test...Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
⠴  Building for test...Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
Browserslist: caniuse-lite is outdated. Please run:
npx browserslist@latest --update-db
⠏  Building for test...

 WARNING  Compiled with 2 warnings                                                                                                                                                                                                6:35:31 PM

 warning  

asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  989c9455a4408fa42168.worker.js (819 KiB)
  assets/img/login-bg.1667039661774.png (764 KiB)
  assets/fonts/FZ-015.e8a0f15e.TTF (2.07 MiB)
  assets/img/orange.1667039661774.png (254 KiB)
  assets/js/chunk-7a4943dc.1667039661774.js (1.99 MiB)
  assets/js/chunk-vendors.1667039661774.js (2.8 MiB)
  layui/font/iconfont.svg (299 KiB)
  layui/layui.all.js (272 KiB)

 warning  

entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  app (3.07 MiB)
      assets/css/chunk-vendors.1667039661774.css
      assets/js/chunk-vendors.1667039661774.js
      assets/css/app.1667039661774.css
      assets/js/app.1667039661774.js

  File                                      Size             Gzipped

  dist/assets/js/chunk-vendors.166703966    2868.87 KiB      870.54 KiB
  1774.js
  dist/assets/js/chunk-7a4943dc.16670396    2041.24 KiB      1171.80 KiB
  61774.js
  dist/989c9455a4408fa42168.worker.js       818.55 KiB       237.45 KiB
  dist/layui/layui.all.js                   271.94 KiB       88.28 KiB
  dist/layui/lay/modules/jquery.js          95.36 KiB        33.26 KiB
  dist/assets/js/chunk-46f5a450.16670396    84.50 KiB        22.75 KiB
  61774.js
  dist/assets/js/chunk-b44cff22.16670396    67.92 KiB        14.68 KiB
  61774.js
  dist/assets/js/chunk-db4ddb12.16670396    63.13 KiB        16.16 KiB
  61774.js
  dist/assets/js/chunk-da6f7710.16670396    61.24 KiB        13.49 KiB
  61774.js
  dist/assets/js/chunk-a263a7d4.16670396    57.96 KiB        15.94 KiB
  61774.js
  dist/assets/js/chunk-32f9bbd0.16670396    55.20 KiB        14.75 KiB
  61774.js
  dist/assets/js/chunk-29786c84.16670396    55.10 KiB        14.99 KiB
  61774.js
  dist/assets/js/app.1667039661774.js       55.04 KiB        16.91 KiB
  dist/assets/js/chunk-7e146ebb.16670396    53.61 KiB        12.08 KiB
  61774.js
  dist/assets/js/chunk-66a6e304.16670396    53.54 KiB        11.11 KiB
  61774.js
  dist/assets/js/chunk-01302d9e.16670396    52.63 KiB        10.31 KiB
  61774.js
  dist/assets/js/chunk-0d076a92.16670396    45.45 KiB        9.88 KiB
  61774.js
  dist/assets/js/chunk-7bcaf59e.16670396    43.20 KiB        10.92 KiB
  61774.js
  dist/assets/js/chunk-1827b828.16670396    40.84 KiB        9.20 KiB
  61774.js
  dist/assets/js/chunk-cba3965c.16670396    39.80 KiB        8.52 KiB
  61774.js
  dist/assets/js/chunk-6f6c15ae.16670396    35.68 KiB        9.82 KiB
  61774.js
  dist/assets/js/chunk-77a9135c.16670396    34.68 KiB        10.44 KiB
  61774.js
  dist/assets/js/chunk-21f1e488.16670396    32.28 KiB        8.39 KiB
  61774.js
  dist/assets/js/chunk-19145b3b.16670396    31.18 KiB        6.75 KiB
  61774.js
  dist/assets/js/chunk-5d915495.16670396    30.30 KiB        7.26 KiB
  61774.js
  dist/assets/js/chunk-6038c49e.16670396    30.29 KiB        8.02 KiB
  61774.js
  dist/assets/js/chunk-9074035e.16670396    27.95 KiB        7.16 KiB
  61774.js
  dist/assets/js/chunk-61e6a522.16670396    26.68 KiB        5.51 KiB
  61774.js
  dist/assets/js/chunk-037a357c.16670396    25.59 KiB        7.93 KiB
  61774.js
  dist/assets/js/chunk-1f61f97d.16670396    25.37 KiB        6.08 KiB
  61774.js
  dist/assets/js/chunk-a8dcb138.16670396    24.95 KiB        6.38 KiB
  61774.js
  dist/assets/js/chunk-7cdab508.16670396    23.85 KiB        6.04 KiB
  61774.js
  dist/assets/js/chunk-6f5fd924.16670396    23.06 KiB        6.89 KiB
  61774.js
  dist/assets/js/chunk-147afd66.16670396    22.90 KiB        5.30 KiB
  61774.js
  dist/assets/js/chunk-ba8e805e.16670396    22.80 KiB        6.15 KiB
  61774.js
  dist/assets/js/chunk-50b60ff6.16670396    22.50 KiB        5.59 KiB
  61774.js
  dist/assets/js/chunk-48ca1cf0.16670396    21.75 KiB        5.61 KiB
  61774.js
  dist/layui/lay/modules/layer.js           21.52 KiB        7.38 KiB
  dist/assets/js/chunk-388ebe6d.16670396    21.19 KiB        4.86 KiB
  61774.js
  dist/assets/js/chunk-483176fd.16670396    20.92 KiB        7.69 KiB
  61774.js
  dist/assets/js/chunk-236e4a7b.16670396    20.02 KiB        5.77 KiB
  61774.js
  dist/assets/js/chunk-c67ad074.16670396    19.43 KiB        5.63 KiB
  61774.js
  dist/assets/js/chunk-6e059735.16670396    18.37 KiB        4.61 KiB
  61774.js
  dist/assets/js/chunk-acec4748.16670396    17.99 KiB        2.75 KiB
  61774.js
  dist/assets/js/chunk-f7f6880a.16670396    17.59 KiB        4.61 KiB
  61774.js
  dist/assets/js/chunk-42baca86.16670396    17.07 KiB        6.50 KiB
  61774.js
  dist/assets/js/chunk-69499d77.16670396    16.83 KiB        3.70 KiB
  61774.js
  dist/assets/js/chunk-2e3c629e.16670396    16.58 KiB        6.11 KiB
  61774.js
  dist/assets/js/chunk-00dac542.16670396    16.48 KiB        5.42 KiB
  61774.js
  dist/assets/js/chunk-6cad5ef1.16670396    16.37 KiB        4.11 KiB
  61774.js
  dist/assets/js/chunk-3a3e7713.16670396    16.00 KiB        5.09 KiB
  61774.js
  dist/assets/js/chunk-7d5c7c3b.16670396    15.97 KiB        4.10 KiB
  61774.js
  dist/layui/lay/modules/layedit.js         15.78 KiB        5.30 KiB
  dist/assets/js/chunk-c2d9a77a.16670396    15.45 KiB        4.28 KiB
  61774.js
  dist/assets/js/chunk-2298e771.16670396    15.17 KiB        3.94 KiB
  61774.js
  dist/assets/js/chunk-0a77fb4d.16670396    15.08 KiB        3.84 KiB
  61774.js
  dist/assets/js/chunk-b9feb1cc.16670396    14.57 KiB        3.98 KiB
  61774.js
  dist/assets/js/chunk-2451454c.16670396    14.49 KiB        4.24 KiB
  61774.js
  dist/assets/js/chunk-484b7485.16670396    14.48 KiB        4.55 KiB
  61774.js
  dist/assets/js/chunk-b52d0252.16670396    14.39 KiB        3.82 KiB
  61774.js
  dist/assets/js/chunk-8b1f5394.16670396    14.17 KiB        6.98 KiB
  61774.js
  dist/assets/js/chunk-59c33509.16670396    13.70 KiB        3.93 KiB
  61774.js
  dist/assets/js/chunk-7d2d2994.16670396    12.99 KiB        4.91 KiB
  61774.js
  dist/assets/js/chunk-2c0ad184.16670396    12.73 KiB        3.78 KiB
  61774.js
  dist/assets/js/chunk-d25f6a24.16670396    11.82 KiB        3.27 KiB
  61774.js
  dist/assets/js/chunk-63c4afdc.16670396    11.24 KiB        6.86 KiB
  61774.js
  dist/assets/js/chunk-bca762e6.16670396    10.65 KiB        3.53 KiB
  61774.js
  dist/assets/js/chunk-1f523be5.16670396    10.64 KiB        2.57 KiB
  61774.js
  dist/assets/js/chunk-5153df5c.16670396    10.24 KiB        2.70 KiB
  61774.js
  dist/assets/js/chunk-8984055e.16670396    9.72 KiB         2.81 KiB
  61774.js
  dist/assets/js/chunk-5711160b.16670396    9.52 KiB         3.74 KiB
  61774.js
  dist/layui/lay/modules/form.js            9.24 KiB         3.74 KiB
  dist/assets/js/chunk-5331fe0e.16670396    8.79 KiB         2.43 KiB
  61774.js
  dist/assets/js/chunk-10ff9fd2.16670396    8.76 KiB         2.39 KiB
  61774.js
  dist/assets/js/chunk-d8f05756.16670396    8.39 KiB         2.39 KiB
  61774.js
  dist/assets/js/chunk-50494377.16670396    7.43 KiB         2.32 KiB
  61774.js
  dist/layui/lay/modules/upload.js          7.29 KiB         2.92 KiB
  dist/layui/layui.js                       7.22 KiB         3.05 KiB
  dist/assets/js/chunk-7a78eb9c.16670396    6.90 KiB         2.20 KiB
  61774.js
  dist/assets/js/chunk-29e055b3.16670396    6.60 KiB         2.05 KiB
  61774.js
  dist/assets/js/chunk-f3ce9454.16670396    6.50 KiB         4.39 KiB
  61774.js
  dist/assets/js/chunk-6d617f4b.16670396    5.83 KiB         2.67 KiB
  61774.js
  dist/assets/js/chunk-3313afad.16670396    5.46 KiB         1.88 KiB
  61774.js
  dist/assets/js/chunk-664a8b70.16670396    5.04 KiB         2.47 KiB
  61774.js
  dist/assets/js/chunk-4ad45ced.16670396    4.79 KiB         1.64 KiB
  61774.js
  dist/layui/lay/modules/util.js            3.75 KiB         1.71 KiB
  dist/assets/js/chunk-3462eb5a.16670396    2.80 KiB         1.14 KiB
  61774.js
  dist/assets/js/chunk-3cb06457.16670396    1.00 KiB         0.53 KiB
  61774.js
  dist/assets/css/chunk-vendors.16670396    205.39 KiB       32.86 KiB
  61774.css
  dist/layui/css/layui.css                  72.56 KiB        13.14 KiB
  dist/assets/css/chunk-61e6a522.1667039    45.96 KiB        3.85 KiB
  661774.css
  dist/assets/css/chunk-7e146ebb.1667039    44.77 KiB        10.01 KiB
  661774.css
  dist/assets/css/chunk-6038c49e.1667039    26.46 KiB        3.09 KiB
  661774.css
  dist/assets/css/chunk-1827b828.1667039    25.51 KiB        9.24 KiB
  661774.css
  dist/assets/css/chunk-b44cff22.1667039    23.71 KiB        6.41 KiB
  661774.css
  dist/assets/css/chunk-7a4943dc.1667039    20.81 KiB        3.81 KiB
  661774.css
  dist/assets/css/chunk-5d915495.1667039    20.33 KiB        3.93 KiB
  661774.css
  dist/assets/css/chunk-32f9bbd0.1667039    18.83 KiB        3.91 KiB
  661774.css
  dist/assets/css/app.1667039661774.css     17.20 KiB        4.85 KiB
  dist/assets/css/chunk-da6f7710.1667039    17.03 KiB        3.21 KiB
  661774.css
  dist/assets/css/chunk-46f5a450.1667039    16.42 KiB        3.54 KiB
  661774.css
  dist/assets/css/chunk-01302d9e.1667039    16.30 KiB        6.54 KiB
  661774.css
  dist/assets/css/chunk-29786c84.1667039    15.88 KiB        3.23 KiB
  661774.css
  dist/assets/css/chunk-66a6e304.1667039    15.70 KiB        3.21 KiB
  661774.css
  dist/assets/css/chunk-b52d0252.1667039    14.73 KiB        2.66 KiB
  661774.css
  dist/assets/css/chunk-cba3965c.1667039    14.14 KiB        2.87 KiB
  661774.css
  dist/layui/css/modules/layer/default/l    14.09 KiB        2.79 KiB
  ayer.css
  dist/assets/css/chunk-9074035e.1667039    13.99 KiB        4.67 KiB
  661774.css
  dist/assets/css/chunk-db4ddb12.1667039    12.71 KiB        2.83 KiB
  661774.css
  dist/assets/css/chunk-484b7485.1667039    12.24 KiB        2.78 KiB
  661774.css
  dist/assets/css/chunk-a8dcb138.1667039    12.17 KiB        2.78 KiB
  661774.css
  dist/assets/css/chunk-8984055e.1667039    11.36 KiB        2.56 KiB
  661774.css
  dist/assets/css/chunk-d25f6a24.1667039    11.30 KiB        2.53 KiB
  661774.css
  dist/assets/css/chunk-a263a7d4.1667039    11.23 KiB        2.22 KiB
  661774.css
  dist/assets/css/chunk-2e3c629e.1667039    10.77 KiB        3.83 KiB
  661774.css
  dist/assets/css/chunk-ba8e805e.1667039    10.74 KiB        1.99 KiB
  661774.css
  dist/assets/css/chunk-5331fe0e.1667039    10.57 KiB        2.49 KiB
  661774.css
  dist/assets/css/chunk-c2d9a77a.1667039    10.37 KiB        2.53 KiB
661774.css
  dist/assets/css/chunk-0d076a92.1667039    10.31 KiB        2.04 KiB
  661774.css
  dist/assets/css/chunk-388ebe6d.1667039    10.26 KiB        2.25 KiB
  661774.css
  dist/assets/css/chunk-5711160b.1667039    9.83 KiB         2.41 KiB
  661774.css
  dist/assets/css/chunk-236e4a7b.1667039    9.70 KiB         2.28 KiB
  661774.css
  dist/layui/css/layui.mobile.css           9.65 KiB         2.33 KiB
  dist/assets/css/chunk-7d5c7c3b.1667039    9.51 KiB         2.18 KiB
  661774.css
  dist/assets/css/chunk-50b60ff6.1667039    9.44 KiB         2.22 KiB
  661774.css
  dist/assets/css/chunk-6e059735.1667039    9.36 KiB         2.35 KiB
  661774.css
  dist/assets/css/chunk-037a357c.1667039    9.11 KiB         2.19 KiB
  661774.css
  dist/assets/css/chunk-6f6c15ae.1667039    8.95 KiB         1.55 KiB
  661774.css
  dist/assets/css/chunk-8b1f5394.1667039    8.93 KiB         2.16 KiB
  661774.css
  dist/assets/css/chunk-1f523be5.1667039    8.66 KiB         2.10 KiB
  661774.css
  dist/assets/css/chunk-bca762e6.1667039    8.60 KiB         2.15 KiB
  661774.css
  dist/assets/css/chunk-59c33509.1667039    8.57 KiB         2.20 KiB
  661774.css
  dist/assets/css/chunk-2451454c.1667039    8.50 KiB         2.21 KiB
  661774.css
  dist/assets/css/chunk-2298e771.1667039    8.36 KiB         2.04 KiB
  661774.css
  dist/assets/css/chunk-50494377.1667039    8.29 KiB         2.02 KiB
  661774.css
  dist/assets/css/chunk-0a77fb4d.1667039    8.28 KiB         2.08 KiB
  661774.css
  dist/assets/css/chunk-10ff9fd2.1667039    8.21 KiB         2.03 KiB
  661774.css
  dist/assets/css/chunk-147afd66.1667039    7.98 KiB         2.01 KiB
  661774.css
  dist/assets/css/chunk-6cad5ef1.1667039    7.54 KiB         1.91 KiB
  661774.css
  dist/assets/css/chunk-7a78eb9c.1667039    7.48 KiB         1.89 KiB
  661774.css
  dist/assets/css/chunk-d8f05756.1667039    7.48 KiB         1.89 KiB
  661774.css
  dist/assets/css/chunk-4ad45ced.1667039    7.34 KiB         1.90 KiB
  661774.css
  dist/assets/css/chunk-2c0ad184.1667039    7.15 KiB         1.85 KiB
  661774.css
  dist/assets/css/chunk-5153df5c.1667039    7.10 KiB         1.87 KiB
  661774.css
  dist/assets/css/chunk-21f1e488.1667039    6.86 KiB         1.64 KiB
  661774.css
  dist/assets/css/chunk-7bcaf59e.1667039    6.80 KiB         1.57 KiB
  661774.css
  dist/assets/css/chunk-19145b3b.1667039    6.73 KiB         1.64 KiB
  661774.css
  dist/assets/css/chunk-29e055b3.1667039    6.71 KiB         1.77 KiB
  661774.css
  dist/assets/css/chunk-3a3e7713.1667039    6.32 KiB         1.25 KiB
  661774.css
  dist/assets/css/chunk-acec4748.1667039    6.06 KiB         0.84 KiB
  661774.css
  dist/assets/css/chunk-69499d77.1667039    5.82 KiB         1.12 KiB
  661774.css
  dist/assets/css/chunk-6f5fd924.1667039    5.41 KiB         1.30 KiB
  661774.css
  dist/assets/css/chunk-6d617f4b.1667039    5.30 KiB         1.03 KiB
  661774.css
  dist/assets/css/chunk-7cdab508.1667039    4.48 KiB         1.21 KiB
  661774.css
  dist/assets/css/chunk-48ca1cf0.1667039    4.17 KiB         1.07 KiB
  661774.css
  dist/assets/css/chunk-c67ad074.1667039    3.22 KiB         0.91 KiB
  661774.css
  dist/assets/css/chunk-664a8b70.1667039    3.00 KiB         0.86 KiB
  661774.css
  dist/assets/css/chunk-63c4afdc.1667039    2.79 KiB         0.76 KiB
  661774.css
  dist/assets/css/chunk-b9feb1cc.1667039    2.42 KiB         0.78 KiB
  661774.css
  dist/assets/css/chunk-42baca86.1667039    2.41 KiB         0.62 KiB
  661774.css
  dist/assets/css/chunk-7d2d2994.1667039    1.96 KiB         0.66 KiB
  661774.css
  dist/assets/css/chunk-f3ce9454.1667039    1.75 KiB         0.55 KiB
  661774.css
  dist/assets/css/chunk-1f61f97d.1667039    1.66 KiB         0.58 KiB
  661774.css
  dist/assets/css/chunk-f7f6880a.1667039    1.64 KiB         0.58 KiB
  661774.css
dist/layui/css/modules/code.css           1.04 KiB         0.45 KiB
  dist/assets/css/chunk-3313afad.1667039    0.99 KiB         0.34 KiB
  661774.css
  dist/assets/css/chunk-3cb06457.1667039    0.37 KiB         0.20 KiB
  661774.css
  dist/assets/css/chunk-3462eb5a.1667039    0.22 KiB         0.17 KiB
  661774.css

  Images and other types of assets omitted.

 DONE  Build complete. The dist directory is ready to be deployed.
 INFO  Check out deployment instructions at https://cli.vuejs.org/guide/deployment.html

Sending build context to Docker daemon  273.5MB
Step 1/6 : FROM nginx:latest
 ---&gt; 605c77e624dd
Step 2/6 : RUN rm -rf /usr/share/nginx/html/*
 ---&gt; Running in 517d2b2becab
Removing intermediate container 517d2b2becab
 ---&gt; f329b3069eed
Step 3/6 : RUN rm -rf /etc/nginx/conf.d/default.conf
 ---&gt; Running in 55a4a88610c8
Removing intermediate container 55a4a88610c8
 ---&gt; 49486ba95c33
Step 4/6 : COPY dist /usr/share/nginx/html/
 ---&gt; 2f240d756f23
Step 5/6 : COPY default.conf /etc/nginx/conf.d/
 ---&gt; 24760097cfca
Step 6/6 : COPY Shanghai /etc/localtime
 ---&gt; 6a032e8c33ac
Successfully built 6a032e8c33ac
Successfully tagged dist:20221029_183532
The push refers to repository [harbor.jishuliu.cn/web-dist/dist]
5c5821c0b42e: Pushed 
71e2e6cab224: Pushed 
8e11235323e9: Pushed 
90b8bf05ae16: Pushed 
3b024cfd96a4: Pushed 
d874fd2bc83b: Layer already exists 
32ce5f6a5106: Layer already exists 
f1db227348d0: Layer already exists 
b8d6e692a25e: Layer already exists 
e379e8aedd4d: Layer already exists 
2edcec3590a4: Layer already exists 
20221029_183532: digest: sha256:70b53c01caeaca661b2c55b8e6c99ad15f1e5e8a3ebf97b44b6e659541e5b2e6 size: 2609
Untagged: dist:20221029_183532
Untagged: harbor.jishuliu.cn/web-dist/dist:20221029_183532
Untagged: harbor.jishuliu.cn/web-dist/dist@sha256:70b53c01caeaca661b2c55b8e6c99ad15f1e5e8a3ebf97b44b6e659541e5b2e6
Deleted: sha256:6a032e8c33ac827081852941cebfd095ef03151f1fafd76cfe8706de3c0ad664
Deleted: sha256:cfd67eb785c5045cb244b550fe2dba9e9cf0b96abc566b875feea4ce72f69d0d
Deleted: sha256:24760097cfca2e61253d688b4788275a3f9026c6a0e6a339d965a31f8cc94b60
Deleted: sha256:aef9cded6982a81279167ef47cd1b2a1d299a71c7d3adf6f8e1336e44180b3ee
Deleted: sha256:2f240d756f239e818a4745b828de19f96acedcc594de591f84728cbc40aec1b5
Deleted: sha256:863abbe37a448b3b1635ca99d033910554b41e1fabf66c9270b14b120ff99814
Deleted: sha256:49486ba95c33b15bb6028f7797ca64a8794e97e935e6d7e2e6c33e9afd223cee
Deleted: sha256:c5b2d5709955aa995d340a60d6e00b8de1a600f63ac61601c40bfb086b999ef8
Deleted: sha256:f329b3069eedc3849f81a151bbe3f0d69bd0b651744ebbc0169892cb72e215d4
Deleted: sha256:1157ea480488f45e57d53aa9c32b9a4ee00b059d66b13e1258e9163417dbbe00</code></pre>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-5dd01667040018.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-5dd01667040018.png" alt="" /></a></p>
<ul>
<li>Jenkins部署机和集群内所有服务器配置hosts</li>
</ul>
<pre><code>172.21.16.16 harbor.jishuliu.cn
172.21.16.7 kuboard.jishuliu.cn</code></pre>
<ul>
<li>在kuboard创建密文</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-75e11667039346.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-75e11667039346.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-99ad1667039377.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-99ad1667039377.png" alt="" /></a></p>
<ul>
<li>把harbor的server.crt复制到集群两个节点服务器的docker证书存放路径下</li>
</ul>
<pre><code>[root@integrate ~]# scp -r  /etc/docker/certs.d/ root@172.21.16.13:/etc/docker/ 
root@172.21.16.13's password: 
server.crt                                                                                                                                                                                                100% 1854     8.1MB/s   00:00    
[root@integrate ~]# scp -r  /etc/docker/certs.d/ root@172.21.16.7:/etc/docker/ 
Theauthenticity of host '172.21.16.7 (172.21.16.7)' can't be established.
ECDSA key fingerprint is SHA256:BrLxQDagV+/0zbkX+HnqHs56+pVBVwxrVenzX6AyncE.
ECDSA key fingerprint is MD5:c0:8f:d7:35:12:af:1b:ef:ed:7e:5e:d8:7a:44:c4:ef.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.21.16.7' (ECDSA) to the list of known hosts.
root@172.21.16.7's password: 
server.crt                                                                                                                                                                                                100% 1854     8.3MB/s   00:00    
[root@integrate ~]# </code></pre>
<ul>
<li>集群节点测试登录harbor</li>
</ul>
<pre><code># master节点
[root@test-master-1 ~]# docker login harbor.jishuliu.cn -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
# work节点
[root@test-worker-1 certs.d]# docker login harbor.jishuliu.cn -u admin -p Harbor12345
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded</code></pre>
<ul>
<li>修改工作空间的镜像地址及版本</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-d5081667040175.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-d5081667040175.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-1c0f1667040259.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-1c0f1667040259.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-b1311667040611.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-b1311667040611.png" alt="" /></a></p>
<ul>
<li>打开浏览器的无痕模式，访问静态页面，注意红框内字体。关闭访问</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-83e01667042130.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-83e01667042130.png" alt="" /></a></p>
<ul>
<li>把gitlab的WebHooks重新配置上</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-1ef21667040833.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-1ef21667040833.png" alt="" /></a></p>
<ul>
<li>在本地修改仓库内的src\view\login\index.vue文件把&quot;忘记了密码&quot;改为&quot;怎么连密码都能忘记？&quot;并把脚本内的curl注释全部删除</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-35741667040927.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-35741667040927.png" alt="" /></a></p>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-58731667041466.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-58731667041466.png" alt="" /></a></p>
<ul>
<li>可以看到Jenkins已经自动触发</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-49a01667041582.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-49a01667041582.png" alt="" /></a></p>
<ul>
<li>在kuboard中可以看到镜像版本已经自动更新为刚才制作镜像的版本</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-61521667041893.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-61521667041893.png" alt="" /></a></p>
<ul>
<li>浏览器打开无痕模式访问可以看到&quot;忘记了密码？&quot;已经变为&quot;怎么连密码都能忘记？&quot;</li>
</ul>
<p><a href="https://www.jishuliu.cn/content/uploadfile/202210/thum-020d1667041970.png"><img src="https://www.jishuliu.cn/content/uploadfile/202210/thum-020d1667041970.png" alt="" /></a></p>]]></description>
    <pubDate>Sat, 29 Oct 2022 12:14:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=28</guid>
</item>
<item>
    <title>ClickHouse</title>
    <link>https://www.jishuliu.cn/?post=25</link>
    <description><![CDATA[<p>[TOC]</p>
<h1>安装</h1>
<h2>ClickHouse</h2>
<ul>
<li>环境</li>
</ul>
<table>
<thead>
<tr>
<th>操作系统</th>
<th>硬盘</th>
<th>内存</th>
<th>CPU核心</th>
</tr>
</thead>
<tbody>
<tr>
<td>centos7.6</td>
<td>500G数据盘</td>
<td>8G</td>
<td>2C</td>
</tr>
</tbody>
</table>
<ul>
<li>基础环境组件安装</li>
</ul>
<pre><code>yum -y install wget it vim net-tools</code></pre>
<ul>
<li>数据盘挂载及分区</li>
</ul>
<pre><code>mkdir /data/
fdisk /dev/vdb   #/dev/vdb是数据盘，可以使用fdisk查看
依次输入n、p、1、Enter、Enter
mkfs.ext4 /dev/vdb1
mount /dev/vdb1 /data/</code></pre>
<ul>
<li>安装</li>
</ul>
<pre><code>#安装clickhouse
yum install -y yum-utils
yum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repo
yum install -y clickhouse-server clickhouse-client

#修改clickhouse配置文件把数据的存储路径改到/data/clickhouse
vim /etc/clickhouse-server/config.xml
找到&lt;path&gt;/var/lib/clickhouse/&lt;/path&gt;把中间的/var/log/clickhouse/改为/data/clickhouse/

#启动
service  clickhouse-server start

#配置开机自启
systemctl  enable  clickhouse-server.service</code></pre>
<ul>
<li>配置文件路径</li>
</ul>
<pre><code>/etc/clickhouse-server/config.xml</code></pre>
<ul>
<li>命令</li>
</ul>
<pre><code>service  clickhouse-server start #启动
service  clickhouse-server stop  #停止</code></pre>
<ul>
<li>测试是否能进入</li>
</ul>
<pre><code>clickhouse-client</code></pre>
<h2>clickhouse 亿级数据性能测试</h2>
<h3>生成测试数据</h3>
<ul>
<li>编译dbgen</li>
</ul>
<pre><code>git clone git@github.com:vadimtk/ssb-dbgen.git
cd ssb-dbgen
make
#如果下载不了可以去https://github.com/vadimtk/ssb-dbgen下载zip的压缩包上传到服务器</code></pre>
<ul>
<li>生成数据</li>
</ul>
<pre><code>cd  ssb-dbgen
./dbgen -s 1000 -T c
./dbgen -s 1000 -T l
./dbgen -s 1000 -T p
./dbgen -s 1000 -T s

#大概生成 6 亿行（67 GB）</code></pre>
<ul>
<li>创建数据表</li>
</ul>
<pre><code>#最好每次单张表的创建

CREATE TABLE customer
(
        C_CUSTKEY       UInt32,
        C_NAME          String,
        C_ADDRESS       String,
        C_CITY          LowCardinality(String),
        C_NATION        LowCardinality(String),
        C_REGION        LowCardinality(String),
        C_PHONE         String,
        C_MKTSEGMENT    LowCardinality(String)
)
ENGINE = MergeTree ORDER BY (C_CUSTKEY);

CREATE TABLE lineorder
(
    LO_ORDERKEY             UInt32,
    LO_LINENUMBER           UInt8,
    LO_CUSTKEY              UInt32,
    LO_PARTKEY              UInt32,
    LO_SUPPKEY              UInt32,
    LO_ORDERDATE            Date,
    LO_ORDERPRIORITY        LowCardinality(String),
    LO_SHIPPRIORITY         UInt8,
    LO_QUANTITY             UInt8,
    LO_EXTENDEDPRICE        UInt32,
    LO_ORDTOTALPRICE        UInt32,
    LO_DISCOUNT             UInt8,
    LO_REVENUE              UInt32,
    LO_SUPPLYCOST           UInt32,
    LO_TAX                  UInt8,
    LO_COMMITDATE           Date,
    LO_SHIPMODE             LowCardinality(String)
)
ENGINE = MergeTree PARTITION BY toYear(LO_ORDERDATE) ORDER BY (LO_ORDERDATE, LO_ORDERKEY);

CREATE TABLE part
(
        P_PARTKEY       UInt32,
        P_NAME          String,
        P_MFGR          LowCardinality(String),
        P_CATEGORY      LowCardinality(String),
        P_BRAND         LowCardinality(String),
        P_COLOR         LowCardinality(String),
        P_TYPE          LowCardinality(String),
        P_SIZE          UInt8,
        P_CONTAINER     LowCardinality(String)
)
ENGINE = MergeTree ORDER BY P_PARTKEY;

CREATE TABLE supplier
(
        S_SUPPKEY       UInt32,
        S_NAME          String,
        S_ADDRESS       String,
        S_CITY          LowCardinality(String),
        S_NATION        LowCardinality(String),
        S_REGION        LowCardinality(String),
        S_PHONE         String
)
ENGINE = MergeTree ORDER BY S_SUPPKEY;</code></pre>
<ul>
<li>导入数据</li>
</ul>
<pre><code>clickhouse-client --query "INSERT INTO customer FORMAT CSV" &lt; customer.tbl
clickhouse-client --query "INSERT INTO part FORMAT CSV" &lt; part.tbl
clickhouse-client --query "INSERT INTO supplier FORMAT CSV" &lt; supplier.tbl
clickhouse-client --query "INSERT INTO lineorder FORMAT CSV" &lt; lineorder.tbl</code></pre>
<ul>
<li>将“星型模式”转换为非规范化的“平面模式”：</li>
</ul>
<pre><code>SET max_memory_usage = 20000000000;

CREATE TABLE lineorder_flat
ENGINE = MergeTree ORDER BY (LO_ORDERDATE, LO_ORDERKEY)
AS SELECT
    l.LO_ORDERKEY AS LO_ORDERKEY,
    l.LO_LINENUMBER AS LO_LINENUMBER,
    l.LO_CUSTKEY AS LO_CUSTKEY,
    l.LO_PARTKEY AS LO_PARTKEY,
    l.LO_SUPPKEY AS LO_SUPPKEY,
    l.LO_ORDERDATE AS LO_ORDERDATE,
    l.LO_ORDERPRIORITY AS LO_ORDERPRIORITY,
    l.LO_SHIPPRIORITY AS LO_SHIPPRIORITY,
    l.LO_QUANTITY AS LO_QUANTITY,
    l.LO_EXTENDEDPRICE AS LO_EXTENDEDPRICE,
    l.LO_ORDTOTALPRICE AS LO_ORDTOTALPRICE,
    l.LO_DISCOUNT AS LO_DISCOUNT,
    l.LO_REVENUE AS LO_REVENUE,
    l.LO_SUPPLYCOST AS LO_SUPPLYCOST,
    l.LO_TAX AS LO_TAX,
    l.LO_COMMITDATE AS LO_COMMITDATE,
    l.LO_SHIPMODE AS LO_SHIPMODE,
    c.C_NAME AS C_NAME,
    c.C_ADDRESS AS C_ADDRESS,
    c.C_CITY AS C_CITY,
    c.C_NATION AS C_NATION,
    c.C_REGION AS C_REGION,
    c.C_PHONE AS C_PHONE,
    c.C_MKTSEGMENT AS C_MKTSEGMENT,
    s.S_NAME AS S_NAME,
    s.S_ADDRESS AS S_ADDRESS,
    s.S_CITY AS S_CITY,
    s.S_NATION AS S_NATION,
    s.S_REGION AS S_REGION,
    s.S_PHONE AS S_PHONE,
    p.P_NAME AS P_NAME,
    p.P_MFGR AS P_MFGR,
    p.P_CATEGORY AS P_CATEGORY,
    p.P_BRAND AS P_BRAND,
    p.P_COLOR AS P_COLOR,
    p.P_TYPE AS P_TYPE,
    p.P_SIZE AS P_SIZE,
    p.P_CONTAINER AS P_CONTAINER
FROM lineorder AS l
INNER JOIN customer AS c ON c.C_CUSTKEY = l.LO_CUSTKEY
INNER JOIN supplier AS s ON s.S_SUPPKEY = l.LO_SUPPKEY
INNER JOIN part AS p ON p.P_PARTKEY = l.LO_PARTKEY;</code></pre>
<h3>运行查询</h3>
<ul>
<li>1.1</li>
</ul>
<pre><code>test :)         SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
                FROM lineorder_flat
                WHERE toYear(LO_ORDERDATE) = 1993 AND LO_DISCOUNT BETWEEN 1 AND 3 AND LO_QUANTITY &lt; 25;

SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
FROM lineorder_flat
WHERE (toYear(LO_ORDERDATE) = 1993) AND ((LO_DISCOUNT &gt;= 1) AND (LO_DISCOUNT &lt;= 3)) AND (LO_QUANTITY &lt; 25)

Query id: 63ed7fcc-56f1-43bc-b48a-a8090cfb84ea

┌────────revenue─┐
│ 44652567249651 │
└────────────────┘

1 row in set. Elapsed: 0.656 sec. Processed 91.02 million rows, 728.10 MB (138.79 million rows/s., 1.11 GB/s.)

test :) 
#扫描了9100万行，用时0.656秒，查询列数：2，结果行数：1</code></pre>
<ul>
<li>1.2</li>
</ul>
<pre><code>test :)         SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
                FROM lineorder_flat
                WHERE toYYYYMM(LO_ORDERDATE) = 199401 AND LO_DISCOUNT BETWEEN 4 AND 6 AND LO_QUANTITY BETWEEN 26 AND 35;

SELECT sum(LO_EXTENDEDPRICE * LO_DISCOUNT) AS revenue
FROM lineorder_flat
WHERE (toYYYYMM(LO_ORDERDATE) = 199401) AND ((LO_DISCOUNT &gt;= 4) AND (LO_DISCOUNT &lt;= 6)) AND ((LO_QUANTITY &gt;= 26) AND (LO_QUANTITY &lt;= 35))

Query id: 83344e75-2880-4f19-905e-4d619371486e

┌───────revenue─┐
│ 9624332170119 │
└───────────────┘

1 row in set. Elapsed: 0.079 sec. Processed 7.76 million rows, 61.97 MB (97.78 million rows/s., 781.15 MB/s.)

#扫描了776万行，用时0.079秒，查询列数2，返回行数1</code></pre>
<ul>
<li>2.2</li>
</ul>
<pre><code>test :)         SELECT
                    sum(LO_REVENUE),
                    toYear(LO_ORDERDATE) AS year,
                    P_BRAND
                FROM lineorder_flat
                WHERE P_BRAND &gt;= 'MFGR#2221' AND P_BRAND &lt;= 'MFGR#2228' AND S_REGION = 'ASIA'
                GROUP BY
                    year,
                    P_BRAND
                ORDER BY
                    year,
                    P_BRAND;

SELECT
    sum(LO_REVENUE),
    toYear(LO_ORDERDATE) AS year,
    P_BRAND
FROM lineorder_flat
WHERE (P_BRAND &gt;= 'MFGR#2221') AND (P_BRAND &lt;= 'MFGR#2228') AND (S_REGION = 'ASIA')
GROUP BY
    year,
    P_BRAND
ORDER BY
    year ASC,
    P_BRAND ASC

Query id: b3864522-e8ef-484c-984c-f5a9aafd0f3d

┌─sum(LO_REVENUE)─┬─year─┬─P_BRAND───┐
│     66450349438 │ 1992 │ MFGR#2221 │
│     65423264312 │ 1992 │ MFGR#2222 │
│     66936772687 │ 1992 │ MFGR#2223 │
│     64047191934 │ 1992 │ MFGR#2224 │
│     65744559138 │ 1992 │ MFGR#2225 │
│     66993045668 │ 1992 │ MFGR#2226 │
│     67411226147 │ 1992 │ MFGR#2227 │
│     69390885970 │ 1992 │ MFGR#2228 │
│     66819757447 │ 1993 │ MFGR#2221 │
│     67805601887 │ 1993 │ MFGR#2222 │
│     67208412655 │ 1993 │ MFGR#2223 │
│     64222070981 │ 1993 │ MFGR#2224 │
│     66159498618 │ 1993 │ MFGR#2225 │
│     68387963965 │ 1993 │ MFGR#2226 │
│     68470823598 │ 1993 │ MFGR#2227 │
│     70176992353 │ 1993 │ MFGR#2228 │
│     66201929022 │ 1994 │ MFGR#2221 │
│     66601352347 │ 1994 │ MFGR#2222 │
│     67149651412 │ 1994 │ MFGR#2223 │
│     64508853727 │ 1994 │ MFGR#2224 │
│     66008726728 │ 1994 │ MFGR#2225 │
│     66358870053 │ 1994 │ MFGR#2226 │
│     67912269895 │ 1994 │ MFGR#2227 │
│     69071503806 │ 1994 │ MFGR#2228 │
│     65269818712 │ 1995 │ MFGR#2221 │
│     65566595895 │ 1995 │ MFGR#2222 │
│     65980940491 │ 1995 │ MFGR#2223 │
│     63741007905 │ 1995 │ MFGR#2224 │
│     64701224302 │ 1995 │ MFGR#2225 │
│     67771832811 │ 1995 │ MFGR#2226 │
│     67898964035 │ 1995 │ MFGR#2227 │
│     70977692364 │ 1995 │ MFGR#2228 │
│     67169465617 │ 1996 │ MFGR#2221 │
│     67121666299 │ 1996 │ MFGR#2222 │
│     66485923436 │ 1996 │ MFGR#2223 │
│     64410797788 │ 1996 │ MFGR#2224 │
│     65788692665 │ 1996 │ MFGR#2225 │
│     68193662121 │ 1996 │ MFGR#2226 │
│     67904649725 │ 1996 │ MFGR#2227 │
│     69705348599 │ 1996 │ MFGR#2228 │
│     66839293911 │ 1997 │ MFGR#2221 │
│     65623735495 │ 1997 │ MFGR#2222 │
│     66608624781 │ 1997 │ MFGR#2223 │
│     64127451073 │ 1997 │ MFGR#2224 │
│     66071861556 │ 1997 │ MFGR#2225 │
│     68517706654 │ 1997 │ MFGR#2226 │
│     67632192229 │ 1997 │ MFGR#2227 │
│     70029520291 │ 1997 │ MFGR#2228 │
│     39646973602 │ 1998 │ MFGR#2221 │
│     38969579899 │ 1998 │ MFGR#2222 │
│     38767988496 │ 1998 │ MFGR#2223 │
│     38020572188 │ 1998 │ MFGR#2224 │
│     38328423898 │ 1998 │ MFGR#2225 │
│     38705033272 │ 1998 │ MFGR#2226 │
│     39907545239 │ 1998 │ MFGR#2227 │
│     40654201840 │ 1998 │ MFGR#2228 │
└─────────────────┴──────┴───────────┘

56 rows in set. Elapsed: 3.657 sec. Processed 600.04 million rows, 5.61 GB (164.10 million rows/s., 1.53 GB/s.)

#扫描了6亿行，用时3.657秒，查询列数3，返回行数56</code></pre>
<ul>
<li>3.2</li>
</ul>
<pre><code>test :)         SELECT
                    C_CITY,
                    S_CITY,
                    toYear(LO_ORDERDATE) AS year,
                    sum(LO_REVENUE) AS revenue
                FROM lineorder_flat
                WHERE C_NATION = 'UNITED STATES' AND S_NATION = 'UNITED STATES' AND year &gt;= 1992 AND year &lt;= 1997
                GROUP BY
                    C_CITY,
                    S_CITY,
                    year
                ORDER BY
                    year ASC,
                    revenue DESC;

SELECT
    C_CITY,
    S_CITY,
    toYear(LO_ORDERDATE) AS year,
    sum(LO_REVENUE) AS revenue
FROM lineorder_flat
WHERE (C_NATION = 'UNITED STATES') AND (S_NATION = 'UNITED STATES') AND (year &gt;= 1992) AND (year &lt;= 1997)
GROUP BY
    C_CITY,
    S_CITY,
    year
ORDER BY
    year ASC,
    revenue DESC

Query id: c134110d-9a1c-4aab-b0cc-90a84a44be57

┌─C_CITY─────┬─S_CITY─────┬─year─┬────revenue─┐
│ UNITED ST6 │ UNITED ST6 │ 1992 │ 5694246807 │
│ UNITED ST0 │ UNITED ST0 │ 1992 │ 5676049026 │
│ UNITED ST7 │ UNITED ST4 │ 1993 │ 5259994796 │
│ UNITED ST7 │ UNITED ST9 │ 1993 │ 5069079378 │
│ UNITED ST2 │ UNITED ST5 │ 1994 │ 5293437025 │
│ UNITED ST3 │ UNITED ST2 │ 1994 │ 5290106433 │
│ .......... │ .......... │ .... │ .......... │
│ UNITED ST7 │ UNITED ST8 │ 1995 │ 5566692127 │
│ UNITED ST9 │ UNITED ST9 │ 1997 │ 4836163349 │
│ UNITED ST9 │ UNITED ST5 │ 1997 │ 4769919410 │
└────────────┴────────────┴──────┴────────────┘

600 rows in set. Elapsed: 5.086 sec. Processed 546.69 million rows, 5.57 GB (107.48 million rows/s., 1.09 GB/s.)

test :) 
#扫描了5.46亿行，用时5.086秒，查询列数4，返回行数600</code></pre>
<ul>
<li>4.1 </li>
</ul>
<pre><code>test :)         SELECT 
                    toYear(LO_ORDERDATE) AS year,
                    C_NATION,
                    sum(LO_REVENUE - LO_SUPPLYCOST) AS profit
                FROM lineorder_flat
                WHERE (C_REGION = 'AMERICA') AND (S_REGION = 'AMERICA') AND ((P_MFGR = 'MFGR#1') OR (P_MFGR = 'MFGR#2'))
                GROUP BY 
                    year,
                    C_NATION
                ORDER BY 
                    year ASC,
                    C_NATION ASC

SELECT
    toYear(LO_ORDERDATE) AS year,
    C_NATION,
    sum(LO_REVENUE - LO_SUPPLYCOST) AS profit
FROM lineorder_flat
WHERE (C_REGION = 'AMERICA') AND (S_REGION = 'AMERICA') AND ((P_MFGR = 'MFGR#1') OR (P_MFGR = 'MFGR#2'))
GROUP BY
    year,
    C_NATION
ORDER BY
    year ASC,
    C_NATION ASC

Query id: ff327646-221e-4ab5-8b82-783308cbe142

┌─year─┬─C_NATION──────┬────────profit─┐
│ 1992 │ ARGENTINA     │ 1041983042066 │
│ 1992 │ BRAZIL        │ 1031193572794 │
│ 1992 │ CANADA        │ 1032094614252 │
│ 1992 │ PERU          │ 1037331491440 │
│ 1992 │ UNITED STATES │ 1031593944407 │
│ 1993 │ ARGENTINA     │ 1034515265588 │
│ 1993 │ BRAZIL        │ 1028249774691 │
│ 1993 │ CANADA        │ 1030633924190 │
│ 1993 │ PERU          │ 1032888811548 │
│ 1993 │ UNITED STATES │ 1030241613033 │
│ 1994 │ ARGENTINA     │ 1035059347804 │
│ 1994 │ BRAZIL        │ 1029788284729 │
│ 1994 │ CANADA        │ 1028314868119 │
│ 1994 │ PERU          │ 1025406236588 │
│ 1994 │ UNITED STATES │ 1035441439980 │
│ 1995 │ ARGENTINA     │ 1036878482604 │
│ 1995 │ BRAZIL        │ 1032846705883 │
│ 1995 │ CANADA        │ 1031488804141 │
│ 1995 │ PERU          │ 1034460048487 │
│ 1995 │ UNITED STATES │ 1034988860577 │
│ 1996 │ ARGENTINA     │ 1041240509801 │
│ 1996 │ BRAZIL        │ 1030467525021 │
│ 1996 │ CANADA        │ 1035089775664 │
│ 1996 │ PERU          │ 1029765730730 │
│ 1996 │ UNITED STATES │ 1032384751840 │
│ 1997 │ ARGENTINA     │ 1036752881505 │
│ 1997 │ BRAZIL        │ 1036482571346 │
│ 1997 │ CANADA        │ 1025775840777 │
│ 1997 │ PERU          │ 1031380143878 │
│ 1997 │ UNITED STATES │ 1030570488847 │
│ 1998 │ ARGENTINA     │  607618915600 │
│ 1998 │ BRAZIL        │  603999739074 │
│ 1998 │ CANADA        │  601462066533 │
│ 1998 │ PERU          │  603980044827 │
│ 1998 │ UNITED STATES │  605069471323 │
└──────┴───────────────┴───────────────┘

35 rows in set. Elapsed: 8.311 sec. Processed 600.04 million rows, 8.41 GB (72.20 million rows/s., 1.01 GB/s.)

test :) 
#扫描了6亿行，用时8.311秒，查询列数4，返回结果35行</code></pre>]]></description>
    <pubDate>Tue, 05 Jul 2022 17:15:00 +0800</pubDate>
    <dc:creator>LiHaiYang</dc:creator>
    <guid>https://www.jishuliu.cn/?post=25</guid>
</item>
</channel>
</rss>