layout: post

title: “中间件服务部署(单节点)-二进制或源码编译”
description: “分享”
tag: 其他

1、Nginx

1. 前置条件

安装Nginx之前,需要检查系统的基础环境,以确定该环境是否可用于安装Nginx。

建议生产环境下日志文件路径大小不低于10g

1) ANSI-C编译器及编译环境

系统必须有ANSI-C编译器,推荐使用GCC,如果没有GCC,那么确保使用的编译器符合ANSI标准,同时PATH中必须包含指向基本编译工具(比如make)的路径。

可使用gcc -v命令来确认当前系统已具有GCC编译器。

2)系统时间

由于HTTP协议的元素都会用到时间,所以有必要了解和确认下当前系统所使用的时间同步机制。在基于网络时间协议(NTP)的系统中,一般是用ntpdate或xntpd来同步时间的。

3)版本区别以及下载路径

常用版本分为四大阵营

nginx官方介质下载:http://nginx.org/en/download.html

nginx第三方模块下载:https://www.nginx.com/resources/wiki/modules/

4)环境确认

1> 操作系统版本以及操作系统位数

  1. lsb_release -a
  2. uname -a
  3. cat /etc/redhat-release
  4. cat /proc/version
  5. getconf LONG_BIT

2> 检查CPU、物理内存、文件打开句柄数

  1. cat /proc/cpuinfo| grep "processor"| wc -l
  2. free -m
  3. ulimit -n

3> 下载安装介质

获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本

获取openssl编译安装包,在http://www.openssl.org/source/上可以获取当前最新的版本

获取zlib编译安装包,在http://www.zlib.net/上可以获取当前最新的版本

4> sudo配置

在需求端口于1~1024之间时,要通过sudo来启动停止nginx。生产环境中需要请系统或主机组老师帮忙配置sudo:

  1. nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx -s stop
  2. nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx
  3. nginx ALL=(root) NOPASSWD: /opt/nginx/bin/nginx -s reload

2. 安装Nginx

系统环境检查确认无误后,准备好nginx相应版本的安装介质,便可以进入nginx安装环节。

1)环境介绍

nginx版本 安装目录
1.21 /opt/nginx

2)安装gcc

gcc是linux下的编译器,可以编译 C,C++,Ada,Object C和Java等语言

查看gcc版本(如果安装了gcc):gcc -v

  1. yum -y install gcc

3)安装pcre、pcre-devel

pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。

  1. yum install -y pcre pcre-devel

编译安装prce时错误:预编译时存现错误(error: C++ preprocessor “/lib/cpp” fails sanity check),缺少依赖包:yum install glibc-headers

4)安装zlib

zlib库提供了很多种压缩和解压缩方式nginx使用zlib对http包的内容进行gzip,所以需要安装

  1. yum install -y zlib zlib-devel

5)安装openssl

openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔

  1. yum install -y openssl openssl-devel

6)创建nginx用户

  1. # 会自动创建nginx目录
  2. useradd nginx -d /opt/nginx -s /sbin/nologin

7)安装nginx

1> 创建src目录,并将需要的源码文件放入

下载地址:

  1. cd /opt/src
  2. tar xf /opt/src/nginx-1.21.6.tar.gz -C /opt
  3. cd /opt/nginx-1.21.6/

2> 预编译

  1. ./configure --prefix=/opt/nginx/ \
  2. --sbin-path=/opt/nginx/bin/nginx \
  3. --conf-path=/opt/nginx/conf/nginx.conf \
  4. --pid-path=/opt/nginx/nginx.pid \
  5. --with-http_ssl_module \
  6. --with-http_stub_status_module \
  7. --with-stream
  8. echo $?

—with-http_ssl_module: 提供SSL模块

—with-http_stub_status_module:提供监控模块,

—with-stream:提供TCP代理模块

3> 编译、安装

  1. make
  2. make install
  3. # 配置用户和用户组
  4. chown -R nginx:nginx /opt/nginx

4> 检查安装情况

  1. /opt/nginx/bin/nginx -V

5> 配置环境变量

  1. vim /etc/profile.d/my_env.sh
  2. # 添加如下内容
  3. export NGINX_HOME=/opt/nginx
  4. export PATH=$PATH:${NGINX_HOME}/bin
  5. source /etc/profile

3. nginx基本命令介绍

  1. nginx -h
  2. ...
  3. 选项:
  4. -?,-h:这有帮助吗
  5. -v:显示版本并退出
  6. -V:显示版本和配置选项,然后退出
  7. -t:测试配置并退出
  8. -T:测试配置,转储并退出
  9. -q:在配置测试期间抑制非错误消息
  10. -s信号:向主进程发送信号:停止、退出、重新打开、重新加载
  11. -p prefix:设置前缀路径(默认值:/opt/nginx/)
  12. -e文件名:设置错误日志文件(默认值:logs/error.log
  13. -c文件名:设置配置文件(默认值:/opt/nginx/conf/nginx.conf
  14. -g指令:从配置文件中设置全局指令

4. nginx启停

  1. # 启动
  2. nginx
  3. # 快速停止
  4. nginx -s stop
  5. # 优雅关闭,停止前完成已经接收的连接请求
  6. nginx -s quit
  7. # 重新加载配置
  8. nginx -s reload

5. 添加防火墙规则

  1. firewall-cmd --zone=public --add-port=80/tcp --permanent
  2. firewall-cmd --reload
  3. # 查看开放的所有端口
  4. firewall-cmd --zone=public --list-ports
  • RunTime: 当前正在生效的。(默认)
  • Permanent: 永久生效的。

6. 浏览器访问:403 Forbidden

错误日志显示:

  1. 2022/05/05 15:56:56 [error] 65678#0: *1 open() "/opt/nginx//html/favicon.ico" failed (13: Permission denied), client: 192.168.6.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.6.21", referrer: "http://192.168.6.21/"

可以看到没有权限访问,这是由于配置了nginx的用户,但是,nginx的配置文件中并没有设置用户,需要修改配置文件/opt/nginx/conf/nginx.conf指定用户

  1. vim /opt/nginx/conf/nginx.conf
  2. # 开头添加如下
  3. user nginx;

重新加载配置即可

  1. nginx -s reload

2、Redis

1. 安装C 语言的编译环境

  1. yum install centos-release-scl scl-utils-build -y
  2. yum install -y devtoolset-8-toolchain
  3. # 确保普通用也可以正常使用gcc命令(不要加sudo)
  4. scl enable devtoolset-8 bash

测试

  1. gcc --version

小技巧:也可以没有环境,从其他环境编译好的redis二进制执行文件拷贝一份到目标服务

2. 下载redis-6.2.6.tar.gz放/opt目录,并解压

  1. tar -xf /opt/src/redis-6.2.6.tar.gz -C /opt/
  2. cd redis-6.2.6

3. 编译

编译安装的每个步骤可以使用_echo $?_命令进行查看上条命令是否执行成功!

  1. make

如果没有准备好C语言编译环境,make 会报错—Jemalloc/jemalloc.h:没有那个文件

解决方案(清除编译文件):运行**make distclean**

再次执行make命令即可

4. 跳过make test 继续执行: make install

  1. make install

5. 默认的安装目录/usr/local/bin

  1. 查看默认安装目录:
  2. redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
  3. redis-check-aof:修复有问题的AOF文件,rdbaof后面讲
  4. redis-check-dump:修复有问题的dump.rdb文件
  5. redis-sentinelRedis集群使用
  6. redis-serverRedis服务器启动命令
  7. redis-cli:客户端,操作入口

6. 前台启动(不推荐)

  1. redis-server

7. 后台启动(推荐)

0)创建用户

  1. useradd redis
  2. passwd redis
  3. # 密码使用(Gsww_2022)

1)备份redis.conf

  1. mkdir -p /home/redis/reids-conf
  2. cp /opt/redis-6.2.6/redis.conf /home/redis/reids-conf/redis.conf
  3. chown -R redis:redis /home/redis
  4. su - redis

2) 修改配置文件和系统参数

系统参数

  1. # 配置最大映射数量,以便有足够的虚拟内存可用于mmapped文件
  2. echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
  3. #echo "net.core.somaxconn = 65535" /etc/sysctl.conf
  4. # 设置/proc/sys/net/core/somaxconn的值(redis默认需要511)
  5. echo 65535 > /proc/sys/net/core/somaxconn
  6. # 修改打开文件数
  7. vim /etc/security/limits.conf
  8. redis soft nofile 65535
  9. redis hard nofile 65535
  10. redis soft noproc 65535
  11. redis hard noproc 65535
  12. # 使生效
  13. sysctl -p

配置文件

  1. # bind 127.0.0.1 -::1
  2. bind 192.168.6.61 # 授权监听地址
  3. logfile "/home/redis/logs/redis.log" # 重定向日志记录
  4. protected-mode no # 关闭本机访问模式
  5. daemonize yes # 开启后台进程运行
  6. # 当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件,可以通过 pidfile 指定
  7. pidfile /home/redis/redis_6379.pid
  8. # 指定本地数据库存放目录
  9. dir /home/redis/data

创建相关目录

  1. mkdir /home/redis/{data,run,logs}
  2. chown -R redis:redis /home/redis

3)启动:redis-server后加上配置文件位置

  1. redis-server /home/redis/redis-conf/redis.conf ; tail -f /home/redis/logs/redis.log
  2. # 脚本时管理=============|
  3. vim /home/redis/start.sh
  4. #!/bin/bash -aux
  5. IP=`ip addr show ens33 | grep "inet " | cut -d '/' -f 1 | awk '{print $2}'`
  6. if [ $# -lt 1 ]
  7. then
  8. echo "没有输入参数..."
  9. exit 1;
  10. fi
  11. case $1 in
  12. "start")
  13. echo " --------------- 启动 redis ---------------"
  14. redis-server /home/redis/redis-conf/redis.conf
  15. ;;
  16. "stop")
  17. # ps -ef | grep redis | grep -v grep | awk {'print $2'} | xargs kill -9
  18. echo " --------------- 关闭 redis ---------------"
  19. redis-cli -h $IP -p 6379 shutdown
  20. ;;
  21. *)
  22. echo "参数错误【start | stop】..."
  23. exit 1;
  24. ;;
  25. esac
  26. # 脚本时管理=============|
  27. chmod +x /home/redis/start.sh

4) 客户端访问:redis-cli

  1. redis-cli
  2. # 多个端口则需要指定端口
  3. redis-cli -p 6379
  4. redis-cli -h 192.168.6.61 -p 6379 -a Gsww_2022 shutdown

5)验证测试:

  1. ping

返回结果为pong

6)关闭redis

  1. redis-cli shutdown

也可以进入终端后再关闭

192.168.6.61:6379> shutdown

7)多实例关闭:指定端口关闭:

  1. redis-cli -p 6379 shutdown

8)添加防火墙规则

  1. firewall-cmd --zone=public --add-port=6379/tcp --permanent
  2. firewall-cmd --reload
  3. # 查看开放的所有端口
  4. firewall-cmd --zone=public --list-ports
  • RunTime: 当前正在生效的。(默认)
  • Permanent: 永久生效的。

8. 使用systemd服务管理(生产环境不建议)

  1. cat /usr/lib/systemd/system/redis.service
  2. [Unit]
  3. Description=Redis persistent key-value database
  4. After=network.target
  5. After=network-online.target
  6. Wants=network-online.target
  7. [Service]
  8. ExecStart=/usr/local/bin/redis-server /home/redis/redis-conf/redis.conf --supervised systemd
  9. ExecStop=//usr/local/bin/redis-shutdown
  10. #Type=notify
  11. User=redis
  12. Group=redis
  13. #RuntimeDirectory=redis
  14. #RuntimeDirectoryMode=0755
  15. [Install]
  16. WantedBy=multi-user.target

普通账号使用systemd服务命令需要root用户密码,这是由于权限由polkit进行管理,对应的是org.freedesktop.systemd1.policy这个配置文件下的manae-units动作;

进入/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy,将对应org.freedesktop.systemd1.manage-unitsdefaults中的授权全部改为yes,然后执行systemctl restart polkit重启polkit

好需要添加

  1. <defaults>
  2. <allow_any>yes</allow_any>
  3. <allow_inactive>yes</allow_inactive>
  4. <allow_active>yes</allow_active>
  5. </defaults>
  1. vim /etc/security/limits.conf
  2. * soft nofile 65535
  3. * hard nofile 65535
  4. * soft noproc 65535
  5. * hard noproc 65535

3、MySQL

1. 卸载自带数据库

  1. # 查看是否安装过mysql和Mariadb
  2. rpm -qa | grep mysql
  3. rpm -qa | grep mariadb
  4. # 如果存在安装卸载
  5. yum -y remove mariadb-*
  6. # 或者使用rpm卸载,需要指定完整的名称
  7. rpm -e --nodeps <上面查询到的完整名称>

2. 创建用户和用户组

  1. groupadd mysql
  2. useradd -g mysql mysql -s /sbin/nologin
  3. # 或者创建可登陆用户
  4. useradd -r -g mysql mysql

3. 目录创建以及解压文件

下载地址:https://dev.mysql.com/downloads/mysql/

  1. tar xvf mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz -C /usr/local
  2. mv mysql-8.0.19-linux-glibc2.12-x86_64/ mysql

4. 配置文件/etc/my.cnf

  1. [client]
  2. # MySQL 客户端连接服务器端时使用的端口号,默认为 3306
  3. port = 3406
  4. socket = /tmp/mysql.sock
  5. [mysql]
  6. prompt="\u@db \R:\m:\s [\d]> "
  7. no-auto-rehash
  8. [mysqld]
  9. # MySQL 服务的唯一编号,每个 MySQL 服务的 id 需唯一。
  10. server-id = 3406100
  11. # mysqld 程序在启动后将在给定 UNIX/Linux 账户下执行。mysqld 必须从 root 账户启动才能在启动后切换到另一个账户下执行。mysqld_safe 脚本将默认使用 user=mysql 选项来启动 mysqld 程序。
  12. user = mysql
  13. # 服务端口号,默认为 3306
  14. port = 3406
  15. basedir = /usr/local/mysql
  16. # 指定 MySQL 数据存放的绝对路径;(生产环境下建议数据目录另放)
  17. datadir = /usr/local/mysql/data/
  18. socket = /tmp/mysql.sock
  19. pid-file = db.pid
  20. character-set-server = utf8mb4
  21. skip_name_resolve = 1
  22. open_files_limit = 65535
  23. back_log = 1024
  24. max_connections = 512
  25. max_connect_errors = 1000000
  26. table_open_cache = 1024
  27. table_definition_cache = 1024
  28. table_open_cache_instances = 64
  29. thread_stack = 512K
  30. external-locking = FALSE
  31. max_allowed_packet = 32M
  32. sort_buffer_size = 4M
  33. join_buffer_size = 4M
  34. thread_cache_size = 768
  35. interactive_timeout = 600
  36. wait_timeout = 600
  37. tmp_table_size = 32M
  38. max_heap_table_size = 32M
  39. slow_query_log = 1
  40. slow_query_log_file = /usr/local/mysql/data/slow.log
  41. log-error = /usr/local/mysql/data/error.log
  42. long_query_time = 0.1
  43. log-bin = /usr/local/mysql/data/mysql-binlog
  44. sync_binlog = 1
  45. binlog_cache_size = 4M
  46. max_binlog_cache_size = 1G
  47. max_binlog_size = 1G
  48. gtid_mode = on
  49. enforce_gtid_consistency = 1
  50. log_slave_updates
  51. binlog_format = row
  52. relay_log_recovery = 1
  53. relay-log-purge = 1
  54. key_buffer_size = 32M
  55. read_buffer_size = 8M
  56. read_rnd_buffer_size = 4M
  57. bulk_insert_buffer_size = 64M
  58. #myisam_sort_buffer_size = 128M
  59. #myisam_max_sort_file_size = 10G
  60. #myisam_repair_threads = 1
  61. lock_wait_timeout = 3600
  62. explicit_defaults_for_timestamp = 1
  63. innodb_thread_concurrency = 0
  64. innodb_sync_spin_loops = 100
  65. innodb_spin_wait_delay = 30
  66. master_info_repository = TABLE
  67. relay_log_info_repository = TABLE
  68. slave_parallel_type=LOGICAL_CLOCK
  69. transaction_isolation = REPEATABLE-READ
  70. #innodb_additional_mem_pool_size = 16M
  71. innodb_buffer_pool_size = 1024M
  72. innodb_buffer_pool_instances = 8
  73. innodb_buffer_pool_load_at_startup = 1
  74. innodb_buffer_pool_dump_at_shutdown = 1
  75. innodb_data_file_path = ibdata1:1G:autoextend
  76. innodb_flush_log_at_trx_commit = 1
  77. innodb_log_buffer_size = 32M
  78. innodb_log_file_size = 2G
  79. innodb_log_files_in_group = 2
  80. #innodb_max_undo_log_size = 1G
  81. # 根据您的服务器IOPS能力适当调整
  82. # 一般配普通SSD盘的话,可以调整到 10000 - 20000
  83. # 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
  84. innodb_io_capacity = 4000
  85. innodb_io_capacity_max = 8000
  86. innodb_flush_neighbors = 0
  87. innodb_write_io_threads = 8
  88. innodb_read_io_threads = 8
  89. innodb_purge_threads = 4
  90. innodb_page_cleaners = 4
  91. innodb_open_files = 65535
  92. innodb_max_dirty_pages_pct = 50
  93. innodb_flush_method = O_DIRECT
  94. innodb_lru_scan_depth = 4000
  95. innodb_checksum_algorithm = crc32
  96. #innodb_file_format = Barracuda
  97. #innodb_file_format_max = Barracuda
  98. innodb_lock_wait_timeout = 10
  99. innodb_rollback_on_timeout = 1
  100. innodb_print_all_deadlocks = 1
  101. innodb_file_per_table = 1
  102. innodb_online_alter_log_max_size = 4G
  103. innodb_stats_on_metadata = 0
  104. innodb_status_file = 1
  105. # 注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
  106. innodb_status_output = 0
  107. innodb_status_output_locks = 0
  108. #performance_schema
  109. performance_schema = 1
  110. performance_schema_instrument = '%=on'
  111. #innodb monitor
  112. innodb_monitor_enable="module_innodb"
  113. innodb_monitor_enable="module_server"
  114. innodb_monitor_enable="module_dml"
  115. innodb_monitor_enable="module_ddl"
  116. innodb_monitor_enable="module_trx"
  117. innodb_monitor_enable="module_os"
  118. innodb_monitor_enable="module_purge"
  119. innodb_monitor_enable="module_log"
  120. innodb_monitor_enable="module_lock"
  121. innodb_monitor_enable="module_buffer"
  122. innodb_monitor_enable="module_index"
  123. innodb_monitor_enable="module_ibuf_system"
  124. innodb_monitor_enable="module_buffer_page"
  125. innodb_monitor_enable="module_adaptive_hash"
  126. # Group Replication
  127. #server_id = 1003306
  128. #gtid_mode = ON
  129. #enforce_gtid_consistency = ON
  130. #master_info_repository = TABLE
  131. #relay_log_info_repository = TABLE
  132. binlog_checksum = NONE
  133. #log_slave_updates = ON
  134. #log_bin = binlog
  135. #binlog_format= ROW
  136. transaction_write_set_extraction = XXHASH64
  137. # 未来可能被弃用的变量,会出现告警信息,binlog_expire_logs_seconds用来代替
  138. # expire_logs_days = 7
  139. binlog_expire_logs_seconds = 7
  140. # 8版本弃用的变量
  141. # loose-group_replication_group_name = 'e842862c-9b12-11e8-8131-080027f1fd08'
  142. # internal_tmp_disk_storage_engine = InnoDB # 8版本不再支持,默认引擎
  143. # query_cache_size = 0 # 8版本不再支持这两个参数
  144. # query_cache_type = 0
  145. # loose-group_replication_start_on_boot = off
  146. # loose-group_replication_local_address = 'enmoedu:33066'
  147. # loose-group_replication_group_seeds ='enmoedu1:33067,enmoedu2:33068,enmoedu:33066'
  148. # loose-group_replication_bootstrap_group = off
  149. # loose-group_replication_single_primary_mode=off
  150. # loose-group_replication_enforce_update_everywhere_checks=true
  151. # 数据库全量备份
  152. [mysqldump]
  153. # 支持较大的数据库转储,导出非常巨大的表时需要此项 。
  154. quick
  155. # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要),每个连接独立的大小,大小动态增加
  156. max_allowed_packet = 32M

5. 创建目录并改变目录文件的拥有者

  1. # 创建数据目录和配置文件目录
  2. mkdir -p /usr/local/mysql/data
  3. chown mysql:mysql -R /usr/local/mysql/

6. 初始化服务

  1. cd /usr/local/mysql/bin
  2. ./mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

记住日志中的临时密码或者使用命令进行查看:

  1. grep -i "temporary password" /usr/local/mysql/data/error.log

7. 添加到服务管理并设置自启动

  1. # 使用systemd来管理mysql
  2. cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
  3. # 添加mysql到服务
  4. chkconfig --add mysqld
  5. # 设置开机自启动
  6. chkconfig mysqld on

8. 使用systemd服务启停mysql

  1. # 设置mysql环境变量或者将mysqld启动脚本软连接到/usr/local/bin
  2. # 设置环境变量
  3. sudo vim /etc/profile.d/my_env.sh
  4. export MYSQL_HOME=/usr/local/mysql
  5. export PATH=$PATH:${MYSQL_HOME}/bin
  6. source /etc/profile
  7. # 启动mysql服务
  8. systemctl start mysqld
  9. # 查看mysql服务状态
  10. systemctl status mysqld
  11. # 停止服务
  12. systemctl stop mysqld

9. 安全启动数据库并修改密码

  1. # 安全启动
  2. ./mysqld_safe --defaults-file=/etc/my.cnf &
  3. mysql -uroot -p
  4. # 修改root用户密码(Gsww_2022)
  5. alter user 'root'@'localhost' identified by '密码';
  6. flush privileges;
  7. # 修改root用户权限(用于其他服务器访问 - 8版本之前好像是这样)
  8. grant all privileges on *.* to root@'%' identified by '密码';
  9. flush privileges;
  10. # 关闭数据库
  11. ./mysqladmin shutdown -uroot -p'password'

8.0之后授权

  1. mysql -uroot -p
  2. use mysql;
  3. # 查看user表中的数据(8版本密码字段已修改为authentication_string)
  4. select Host, User,authentication_string from user;
  5. # 修改user表中的Host:(可能会报错误:ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY',查看如果修改可忽略)
  6. update user set Host='%' where User='root';
  7. # 刷新
  8. flush privileges;
  9. # 再次查看
  10. select Host, User,authentication_string from user;

10. 添加防火前策略

  1. firewall-cmd --zone=public --add-port=3406/tcp --permanent
  2. firewall-cmd --reload
  3. # 查看开放的所有端口
  4. firewall-cmd --zone=public --list-ports

4、RabbitMQ

官网地址 https://www.rabbitmq.com/download.html

1. 安装rabbitmq依赖erlang环境

erl和rabbitmq版本对应关系:https://www.rabbitmq.com/which-erlang.html

版本不对应导致无法启动:

  1. [root@hadoop61 rabbitmq]# /opt/rabbitmq/sbin/rabbitmq-server
  2. {"init terminating in do_boot",{undef,[{rabbit,boot,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]}}
  3. init terminating in do_boot ({undef,[{rabbit,boot,[],[]},{init,start_em,1,[]},{init,do_boot,3,[]}]})
  4. Crash dump is being written to: erl_crash.dump...done

1)yum方式

配置阿里云镜像加速

  1. # net工具箱
  2. yum install net-tools -y
  3. # 启动EPEL源
  4. sudo yum install epel-release -y
  5. # 下载 erlang 安装包
  6. wget https://packages.erlang-solutions.com/erlang-solutions-2.0-1.noarch.rpm
  7. # 解压
  8. rpm -Uvh erlang-solutions-2.0-1.noarch.rpm
  9. # 安装
  10. sudo yum install erlang -y
  11. yum clean all
  12. erl -version

yum安装erlang很慢,修改/etc/yum.conf,打开本地缓存

keepcache=1(默认为0)

2)二进制方式

下载地址:http://erlang.org/download/otp_src_25.0.tar.gz

下载的时候注意版本对应关系:https://www.rabbitmq.com/which-erlang.html

1> 安装perl,和安装GCC等模块

  1. yum -y install perl-devel.x86_64
  2. yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel

2> 安装erlang

  1. tar xf /opt/src/otp_src_25.0.tar.gz -C /opt/
  2. # 创建erlang目录
  3. mkdir /usr/local/erlang
  4. cd /opt/otp_src_25.0
  5. # 预编译
  6. ./configure --prefix=/usr/local/erlang
  7. # 编译和编译安装
  8. make && make install
  9. # 添加环境变量
  10. vim /etc/profile.d/my_env.sh
  11. # erlang
  12. export ERLPATH=/usr/local/erlang
  13. export PATH=$ERLPATH/bin:$PATH
  14. source /etc/profile
  15. # 测试
  16. erl

2. 安装依赖 socat(可选)

RabiitMQ安装过程中需要依赖socat插件,首先安装该插件

Socat 是 Linux 下的一个多功能的网络工具,名字来由是 「Socket CAT」。其功能与有瑞士军刀之称的 Netcat 类似,可以看做是 Netcat 的加强版。

1)yum方式

  1. yum install -y socat

2)二进制方式

下载地址:http://www.dest-unreach.org/socat/download/

  1. ./configure
  2. make
  3. make install

3. 解压rabbitmq并修改配置文件

下载地址:https://www.rabbitmq.com/install-generic-unix.html

  1. tar xf /opt/src/rabbitmq-server-generic-unix-3.10.0.tar.xz -C /opt/
  2. mv rabbitmq_server-3.10.0/ rabbitmq

1)添加配置文件:rabbitmq-env.conf

  1. cat > /opt/rabbitmq/etc/rabbitmq/rabbitmq-env.conf << EOF
  2. # 定义节点名称
  3. RABBITMQ_NODENAME=rabbitmq01
  4. # 定义节点IP
  5. RABBITMQ_NODE_IP_ADDRESS=192.168.6.61
  6. # 定义 RabbitMQ 的对外通信端口号
  7. RABBITMQ_NODE_PORT=5672
  8. RABBITMQ_MNESIA_BASE=/opt/rabbitmq/data
  9. RABBITMQ_LOG_BASE=/opt/rabbitmq/logs
  10. EOF

创建目录:

  1. mkdir -p /opt/rabbitmq/{data,logs}

参数说明:

属性 描述 默认值
RABBITMQ_NODENAME rabbitmq节点名称,集群中要注意节点名称唯一 linux 默认节点名为 rabbit@$hostname
RABBITMQ_NODE_IP_ADDRESS 绑定的网络接口 默认为空字符串表示绑定本机所有的网络接口
RABBITMQ_NODE_PORT 端口 默认为5672
RABBITMQ_MNESIA_BASE mnesia所在路径 $RABBITMQ_HOME/var/lib/rabbitmq/mnesia
RABBITMQ_LOG_BASE 日志所在路径 $RABBITMQ_HOME/var/log/rabbitmq

2)添加配置文件:rabbitmq.config

配置文件的语法继承于erlang语言,有点类似json

  1. cat > /opt/rabbitmq/etc/rabbitmq/rabbitmq.config <<EOF
  2. [
  3. {rabbit,
  4. [
  5. {tcp_listeners, [5672]},
  6. {dump_log_write_threshold, [1000]},
  7. {vm_memory_high_watermark, 0.5},
  8. {disk_free_limit, "200MB"},
  9. {hipe_compile,true}
  10. ]
  11. }
  12. ].
  13. EOF

注意:[]. 后面有一个点

参数说明

Key Documentation
tcp_listeners 用于监听 AMQP连接的端口列表(无SSL). 可以包含整数 (即”监听所有接口”)或者元组如 {“127.0.0.1”, 5672} 用于监听一个或多个接口.Default: [5672]
dump_log_write_threshold 更改mnesia的转储日志写入阈值 Default: [100];控制持久化的频率;mnesia在dump数据的时候,如果上一个worker进程dump没完成,就抛出过载警告。对此,dump_log_write_threshold的值表示mnesia经历过多少数据操作做一次持久化,dump_log_time_threshold的值表示mnesia多长时间做一次持久化。
vm_memory_high_watermark 流程控制触发的内存阀值.相看memory-based flow control 文档.Default: 0.4 意思为物理内存的40%。 40%的内存并不是内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会做GC。
disk_free_limit RabbitMQ存储数据分区的可用磁盘空间限制.当可用空间值低于阀值时,流程控制将被触发.此值可根据RAM的总大小来相对设置 (如.{mem_relative, 1.0}).此值也可以设为整数(单位为bytes)或者使用数字单位(如.”50MB”).默认情况下,可用磁盘空间必须超过50MB.参考 Disk Alarms 文档.Default: 50000000
hipe_compile 将此选项设置为true,将会使用HiPE预编译部分RabbitMQ,Erlang的即时编译器.这可以增加服务器吞吐量,但会增加服务器的启动时间.

3)启动测试

  1. # 启动测试
  2. /opt/rabbitmq/sbin/rabbitmq-server start
  3. # 后台启动
  4. rabbitmq-server -detached
  5. # 停止使用
  6. rabbitmqctl stop

注意:出现completed with,表示启动成功

查看cookie文件是否存在

注意:此文件必须存在

cookie文件中只保存了一行随机数,可以使用cat命令进行查看

默认的存储路径为 /var/lib/rabbitmq/.erlang.cookie$HOME/.erlang.cookie,该文件是一个隐藏文件,需要使用 ls -al命令查看。

  • 如果我们使用解压缩方式安装部署的rabbitmq,那么这个文件会在$ {home}目录下,也就是$home/.erlang.cookie
  • 如果我们使用rpm等安装包方式进行安装的,那么这个文件会在/var/lib/rabbitmq目录下。
  1. ls -a /home/rabbitmq/.erlang.cookie

4. 配置环境变量

  1. echo 'export PATH=/opt/rabbitmq/sbin:$PATH' >> /etc/profile.d/my_env.sh
  2. source /etc/profile

5. 启动web管理界面

  1. # 启动rabbitmq_management插件
  2. rabbitmq-plugins enable rabbitmq_management
  3. # 关闭rabbitmq_management插件
  4. rabbitmq-plugins disable rabbitmq_management

1)创建账号并授权访问

guest的默认账号受限,默认只能localhost 浏览器访问管理界面,否则最初是登不上去的。

  1. # 创建账号和密码
  2. rabbitmqctl add_user admin Geray_2022
  3. # 设置用户角色
  4. rabbitmqctl set_user_tags admin administrator
  5. # 设置用户权限
  6. # 用户 user_admin 具有/vhost1 这个 virtual host 中所有资源的配置、写、读权限
  7. # 格式:set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
  8. # 给/这个vhost设置了admin权限
  9. rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
  10. # 当前用户和角色
  11. rabbitmqctl list_users

浏览器访问并使用新创建的用户进行登陆访问

http://192.168.6.21:15672/

6. 重置命令

  1. # 关闭应用的命令
  2. rabbitmqctl stop_app
  3. # 清除的命令
  4. rabbitmqctl reset
  5. # 重新启动命令为
  6. rabbitmqctl start_app

7. 创建普通用户和启动脚本

1)自定义普通用户

  1. # useradd -b /opt/rabbitmq rabbitmq
  2. useradd rabbitmq
  3. passwd rabbitmq
  4. # (Gsww_2022)
  5. # 授权
  6. chown -R rabbitmq:rabbitmq /opt/rabbitmq

2)设置启动脚本

  1. vim /home/rabbitmq/start.sh
  2. #!/bin/bash -aux
  3. IP=`ip addr show ens33 | grep "inet " | cut -d '/' -f 1 | awk '{print $2}'`
  4. if [ $# -lt 1 ]
  5. then
  6. echo "没有输入参数..."
  7. exit 1;
  8. fi
  9. case $1 in
  10. "start")
  11. echo " --------------- 启动 rabbitmq ---------------"
  12. rabbitmq-server -detached
  13. ;;
  14. "stop")
  15. # ps -ef | grep redis | grep -v grep | awk {'print $2'} | xargs kill -9
  16. echo " --------------- 关闭 rabbitmq ---------------"
  17. rabbitmqctl stop
  18. ;;
  19. *)
  20. echo "参数错误【start | stop】..."
  21. exit 1;
  22. ;;
  23. esac
  24. # 授可执行权限
  25. chmod +x /home/rabbitmq/start.sh

8. 添加防火墙策略

  1. firewall-cmd --zone=public --add-port=5672/tcp --permanent
  2. firewall-cmd --zone=public --add-port=15672/tcp --permanent
  3. firewall-cmd --zone=public --add-port=25672/tcp --permanent
  4. firewall-cmd --reload
  5. # 查看开放的所有端口
  6. firewall-cmd --zone=public --list-ports

端口说明:

15671:管理监听端口

15672:管理界面UI使用端口

5672,5671: AMQP 0-9-1 without and with TLSclient端通信口

25672: ( Erlang distribution) server间内部通信口

AMQP 是 Advanced Message Queuing Protocol 的缩写,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,专为面向消息的中间件设计。基于此协议的客户端与消息中间件之间可以传递消息,并不受客户端/中间件不同产品、不同的开发语言等条件的限制。Erlang 中的实现有 RabbitMQ 等。

用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下限制为单个端口,计算为AMQP端口+ 20000)。除非确实需要这些端口上的外部连接(例如,群集使用联合身份验证或在子网外部的计算机上使用CLI工具),否则这些端口不应公开。有关详细信息,请参见网络指南。

5、Elasticsearch

Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:

分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。
实时分析的分布式搜索引擎。
可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。

lucene:就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法

1. 解压

官网:https://www.elastic.co/

下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearch

https://www.elastic.co/cn/downloads/past-releases/elasticsearch-8-2-0

  1. tar xf /opt/src/elasticsearch-8.2.0-linux-x86_64.tar.gz -C /opt/
  2. mv elasticsearch-8.2.0/ elasticsearch

2. 添加es用户并修改es服务权限

  1. useradd es
  2. passwd es
  3. # Gsww_2022
  4. chown -R es:es /opt/elasticsearch

1)修改系统vm.max_map_count

es至少需要的内存权限为:262144,默认用户的内存权限为:65530

  1. # 查看用户内存权限
  2. sysctl -a|grep vm.max_map_count
  3. # 设置用户内存权限
  4. vim /etc/sysctl.conf
  5. # 禁止内存与硬盘交换
  6. vm.swappiness=1
  7. # 设置虚拟内存大小,Elasticsearch使用了 NioFs(非阻塞文件系统)和 MMapFs(内存映射文件系统)。
  8. # 配置最大映射数量,以便有足够的虚拟内存可用于mmapped文件
  9. vm.max_map_count=262144
  10. # 是配置生效
  11. sysctl -p

2)修改打开文件数

默认打开文件描述符为4096,es至少需要65535

  1. vim /etc/security/limits.conf
  2. # 追加一下内容(es是用户,也可以使用*代替所有用户)
  3. es soft nofile 65536
  4. es hard nofile 65536
  5. # 内存锁定交换
  6. * soft memlock unlimited
  7. * hard memlock unlimited
  8. # 重新登陆用户并查看
  9. [root@k8s-node1 ~]# su es
  10. [es@k8s-node1 elasticsearch]$ ulimit -a
  11. core file size (blocks, -c) 0
  12. data seg size (kbytes, -d) unlimited
  13. scheduling priority (-e) 0
  14. file size (blocks, -f) unlimited
  15. pending signals (-i) 31118
  16. max locked memory (kbytes, -l) 64
  17. max memory size (kbytes, -m) unlimited
  18. open files (-n) 65536
  19. pipe size (512 bytes, -p) 8
  20. POSIX message queues (bytes, -q) 819200
  21. real-time priority (-r) 0
  22. stack size (kbytes, -s) 8192
  23. cpu time (seconds, -t) unlimited
  24. max user processes (-u) 4096
  25. virtual memory (kbytes, -v) unlimited
  26. file locks (-x) unlimited
  27. [es@k8s-node1 root]$ ulimit -Sn
  28. 65536
  29. [es@k8s-node1 root]$ ulimit -Hn
  30. 65536
  31. [es@k8s-node1 root]$

ulimit -Hn: 是查看max number of open file descriptors的hard限制
ulimit -Sn: 是查看max number of open file descriptors的soft限制

3. 修改配置文件

1)关闭geoip数据库的更新

/opt/elasticsearch/config/elasticsearch.yml中添加如下配置:

  1. ingest.geoip.downloader.enabled: false

没有关闭,在启动时会存在以下错误信息:

[2022-05-07T14:52:09,893][ERROR][o.e.i.g.GeoIpDownloader ] [k8s-node1] exception during geoip databases update
java.net.SocketTimeoutException: Connect timed out

这是一个bug,没有关闭geoip数据库的更新导致启动过程出现的错误

2)禁用SSL安全协议

没有关闭ssl访问时会存在一下错误

[2022-05-07T15:01:20,068][WARN ][o.e.x.s.t.n.SecurityNetty4HttpServerTransport] [k8s-node1] http client did not trust this server’s certificate, closing connection Netty4HttpChannel{localAddress=/192.168.6.21:9200, remoteAddress=/192.168.6.1:11447}

这是由于es开启了ssl安全认证,修改配置文件关闭认证即可

xpack.security.http.ssl.enabled 设置成 false,ssl是针对9300集群通信的

  1. xpack.security.http.ssl.enabled: false

证书配置

  1. elasticsearch-certutil ca
  2. elasticsearch-certutil cert --ca elastic-stack-ca.p12

生成的证书文件必须放到config目录下,否则启动报错,无法读取

3)关闭账号登陆认证(或者配置账号密码)

修改xpack.security.enabled:false,否则访问时会验证登陆

或者配置账号密码进行访问(推荐)

  1. xpack.security.enabled: false

4)配置账号密码(8版本一下)

为了保证服务安全性,建议配置账号密码的方式进行访问

  1. # 配置账号密码前需要修改一下配置
  2. xpack.security.enabled: true
  3. # 默认basic不支持security,可以修改为trial
  4. xpack.license.self_generated.type: trial
  5. xpack.security.transport.ssl.enabled: false

8版本一下:我这里使用的8.2版本必须两个同时开启或同时关闭

basic类型时xpack.security.enabledxpack.security.transport.ssl.enabled,要么同时为true,要么同时为false

trial类型时,可以只开启安全功能,而不启用传输层加密

启动服务

配置密码需要先启动服务

  1. # 配置密码之前需要先启动服务
  2. /opt/elasticsearch/bin/elasticsearch -d
  3. # 查看是否启动成功
  4. netstat -tnlp | grep 9200
  5. tail -f /opt/elasticsearch/logs/elasticsearch.log

配置账号密码

执行设置用户名和密码的命令,这里需要为4个用户分别设置密码,elastic, kibana, logstash_system,beats_system

  1. # 交互式配置密码(Gsww_2022)
  2. /opt/elasticsearch/bin/elasticsearch-setup-passwords interactive
  3. # 后期想要更改密码
  4. curl -XPOST -u elastic "localhost:9200/_security/user/elastic/_password" -H 'Content-Type: application/json' -d'{"password" : "abcd1234"}'
  5. # 添加账号(-u:需要添加的账号密码)
  6. curl -XGET -H 'Content-type: application/json' -u test:Test123654% 'http://192.168.6.22:9200/_cat/indices?pretty'
  7. # 添加到admin权限(-d:需要配置的用户密码)
  8. curl -XPOST -H 'Content-type: application/json' -u elastic:Gsww_2022 'http://192.168.6.22:9200/_xpack/security/user/test?pretty' -d '{"password": "test密码"}'
  1. Enter password for [elastic]:
  2. Reenter password for [elastic]:
  3. Enter password for [apm_system]:
  4. Reenter password for [apm_system]:
  5. Enter password for [kibana_system]:
  6. Reenter password for [kibana_system]:
  7. Enter password for [logstash_system]:
  8. Reenter password for [logstash_system]:
  9. Enter password for [beats_system]:
  10. Reenter password for [beats_system]:
  11. Enter password for [remote_monitoring_user]:
  12. Reenter password for [remote_monitoring_user]:
  13. Changed password for user [apm_system]
  14. Changed password for user [kibana_system]
  15. Changed password for user [kibana]
  16. Changed password for user [logstash_system]
  17. Changed password for user [beats_system]
  18. Changed password for user [remote_monitoring_user]
  19. Changed password for user [elastic]

5)指定监听地址、端口和集群信息

单节点指定本身即可

  1. network.host: 192.168.6.61
  2. http.port: 9200
  3. # 添加集群配置信息
  4. discovery.seed_hosts: ["192.168.6.61:9300"]
  5. # 如果集群时这里指定主机名需要匹配值域名解析
  6. cluster.initial_master_nodes: ["192.168.6.61:9300"]

6)最终的配置文件如下

  1. path.data: /data/es
  2. path.logs: /data/logs
  3. http.port: 9200
  4. # 关闭geoip更新
  5. ingest.geoip.downloader.enabled: false
  6. # 集群名
  7. cluster.name: cluster-es
  8. # 节点名
  9. node.name: ${HOSTNAME}-node
  10. # 监听ip
  11. network.host: 192.168.6.22
  12. # 开启x-pack插件,用于添加账号密码
  13. xpack.security.enabled: true
  14. #xpack.license.self_generated.type: trial
  15. xpack.security.transport.ssl.enabled: true
  16. xpack.security.transport.ssl.verification_mode: certificate
  17. xpack.security.transport.ssl.keystore.path: /opt/elasticsearch/config/elastic-certificates.p12
  18. xpack.security.transport.ssl.truststore.path: /opt/elasticsearch/config/elastic-certificates.p12
  19. transport.port: 9300
  20. discovery.seed_hosts: ["192.168.6.22:9300"]
  21. # 首次启动指定的master节点
  22. cluster.initial_master_nodes: ["192.168.6.22:9300"]

IP和端口根据自己实际的配置

4. 启动

1)配置环境变量

  1. vim /etc/profile.d/my_env.sh
  2. export ES_HOME=/opt/elasticsearch
  3. export PATH=$PATH:$ES_HOME/bin
  4. source /etc/profile

2)启动、启动脚本

  1. su - es
  2. # 启动
  3. /opt/elasticsearch/bin/elasticsearch
  4. # 后台启动
  5. /opt/elasticsearch/bin/elasticsearch -d

访问:http://192.168.6.61:9200

9300:和tcp客户端交互,集群节点间通信

启动脚本

  1. vim /home/es/start.sh
  2. #!/bin/bash -aux
  3. # IP=`ip addr show ens33 | grep "inet " | cut -d '/' -f 1 | awk '{print $2}'`
  4. if [ $# -lt 1 ]
  5. then
  6. echo "没有输入参数..."
  7. exit 1;
  8. fi
  9. case $1 in
  10. "start")
  11. echo " --------------- 启动 elasticsearch ---------------"
  12. elasticsearch -d
  13. ;;
  14. "stop")
  15. echo " --------------- 关闭 elasticsearch ---------------"
  16. ps -ef | grep elasticsearch | grep java | grep -v grep | awk {'print $2'} | xargs kill -9
  17. ;;
  18. *)
  19. echo "参数错误【start | stop】..."
  20. exit 1;
  21. ;;
  22. esac
  23. # 授可执行权限
  24. chmod +x /home/es/start.sh

3)添加防火墙策略

  1. firewall-cmd --zone=public --add-port=9200/tcp --permanent
  2. firewall-cmd --zone=public --add-port=9300/tcp --permanent
  3. firewall-cmd --reload
  4. # 查看开放的所有端口
  5. firewall-cmd --zone=public --list-ports

4)root用户启动错误

ES不支持root用户启动,会报错:

ERROR: Aborting auto configuration because of config dir ownership mismatch. Config dir is owned by es but auto-configuration directory would be owned by root

5. 测试

默认端口:9200

使用一下命令本地测试,或者浏览器访问

  1. curl -i http://localhost:9200
  2. {
  3. "name" : "k8s-node1",
  4. "cluster_name" : "elasticsearch",
  5. "cluster_uuid" : "wSgiFfiCRiW1NsciEI3zUQ",
  6. "version" : {
  7. "number" : "8.2.0",
  8. "build_flavor" : "default",
  9. "build_type" : "tar",
  10. "build_hash" : "b174af62e8dd9f4ac4d25875e9381ffe2b9282c5",
  11. "build_date" : "2022-04-20T10:35:10.180408517Z",
  12. "build_snapshot" : false,
  13. "lucene_version" : "9.1.0",
  14. "minimum_wire_compatibility_version" : "7.17.0",
  15. "minimum_index_compatibility_version" : "7.0.0"
  16. },
  17. "tagline" : "You Know, for Search"
  18. }

6. es实例配置及说明

  1. vim elasticsearch.yml
  2. # 信息如下
  3. cluster.name: es_cluster_single_node_demo
  4. node.name: ${HOSTNAME}-node
  5. path.data: /opt/elasticsearch/data
  6. path.logs: /opt/elasticsearch/logs
  7. network.host: 192.168.6.21
  8. http.port: 9200
  9. transport.port: 9300
  10. discovery.seed_hosts: ["192.168.6.21:9300"]
  11. cluster.initial_master_nodes: ["192.168.6.21:9300"]

参数说明:

参数 说明
cluster.name 集群名称,同一ES集群名称必须相同;
node.name 集群中当前节点名称。建议命名较高区分度,如:当前节点hostname,hostip等
path.data ES实例存放数据目录;注:建议生产环境数据目录与应用程序隔离
path.logs ES实例存放日志目录;注:建议生产环境数据目录与应用程序隔离
network.host 当前实例绑定的ip地址,注:如未绑定则无法通过ip地址访问
http.port: ES实例对外提供REST服务的端口,默认9200
transport.port ES实例内部通信端口,默认9300
discovery.seed_hosts 数组形式存储ES集群节点信息,多个以逗号分隔
cluster.initial_master_nodes ES集群启动时,引导默认的master节点,注:仅在集群第一次启动时候此配置有效。

7. 配置es堆内存大小 jvm.options

  1. vim /opt/elasticsearch/config/jvm.options
  2. -Xms2g
  3. -Xmx2g

如何配置:

堆内存大小 = Min(机器内存/2, 32GB) ;

即:取当前环境内存的一半和32GB内存中最小值。但最大配置尽量不等于32G,略小于32G;

8. kibana

kibana和es的版本不能高于es,最好保持统一个版本号

配置文件

  1. logging.dest: /opt/kibana/logs/kibana.log
  2. server.host: "192.168.6.22"
  3. server.port: 5601
  4. i18n.locale: "zh-CN"
  5. # es中设置的kibana账号信息
  6. elasticsearch.hosts: ["http://192.168.6.22:9200"]
  7. elasticsearch.username: "kibana"
  8. elasticsearch.password: "Gsww_2022"
  9. elasticsearch.requestTimeout: 90000

如果你不想将用户ID和密码放在kibana.yml文件中明文配置,可以将它们存储在密钥库中。运行以下命令以创建Kibana密钥库并添加配置:

  1. ./bin/kibana-keystore create
  2. ./bin/kibana-keystore add elasticsearch.username
  3. ./bin/kibana-keystore add elasticsearch.password
  1. # 前台启动
  2. ./kibana
  3. # 后台启动
  4. ./kibana &

http://192.168.6.22:5601

  1. # 增
  2. PUT /ecommerce/product/1
  3. {
  4. "name" : "云南白药牙膏",
  5. "desc" : "云南白药牙膏",
  6. "price" : 30,
  7. "producer" : "云南白药牙膏",
  8. "tags": [ "meibai", "fangzhu" ]
  9. }
  10. # 查
  11. GET /ecommerce/product/1
  12. # 删
  13. DELETE /ecommerce/product/1