史上最全的CentOS常用软件安装和启动步骤【包含Docker安装】

系统版本

环境版本:CentOS Linux release 7.9.2009 (Core),含GNOME桌面。

安装包:CentOS-7-x86_64-DVD-1810.iso

系统内核版本(默认使用第一个):

  • CentOS Linux (5.4.254-1.e17.elrepo.x86_64) 7 (Core)
  • CentOS Linux (3.10.0-1160.99.1.e17.x86_64) 7 (Core)
  • CentOS Linux (0-rescue-8bb4fc8e956549ef89b281acc8ac2dda) 7 (Core)

硬件参数配置:2核/4G内存/40G存储/1网卡

账户密码:

  • 超级管理员:root / root
  • 普通用户: test/ test

默认IP:192.168.231.130

已安装软件

(1)常规方式安装的软件

所有的软件都在/usr/local/develop目录下, 内部都保留了安装包
对于已经配置了环境变量path的,在任意位置都可以执行命令,不需要去特定的目录下

序号软件安装路径版本信息备注
1JDK8/usr/local/develop/jdk8jdk-8u231-linux-x64.tar.gz替换OpenJDK,并已配置JAVA_HOME和path
2Maven/usr/local/develop/mavenapache-maven-3.6.3-bin.tar.gz已配置MAVEN_HOME和path
3Tomcat/usr/local/develop/tomcatapache-tomcat-9.0.29.tar.gz已配置path,默认端口8080
4MySQL/usr/local/develop/tomcatmysql-5.7.27-1.el7.x86_64.rpm-bundle.tar已修改编码UTF-8,账密root/root,默认端口3306
5Redis/usr/local/develop/redisredis-6.2.4.tar.gz已配置path,默认端口6379
6Zookeeper/usr/local/develop/zookeeperapache-zookeeper-3.5.6-bin.tar.gz已配置path,默认端口2181
7Kafka/usr/local/develop/kafkakafka_2.12-2.2.1.tgz已配置path,默认端口9092
8nginx/usr/local/develop/nginxnginx-1.18.0.tar.gz已配置path,默认端口80
9Nacos/usr/local/develop/nacosnacos-server-2.2.3.tar.gz默认端口8848
10Docker-24.0.5-
11ElasticSearch/usr/local/develop/elasticSearchelasticsearch-7.4.0-linux-x86_64.tar.gz不能以root账号启动
访问端口:9200
12Elasticsearch-head/usr/local/develop/elasticsearch-headelasticsearch-head-5.0.0.tar.gz默认端口9100
13Kibana/usr/local/develop/kibanakibana-7.4.0-linux-x86_64.tar.gz不建议使用root账户启动,添加参数 –allow-root强制root账户启动
访问端口:5601。
已汉化
14Node/usr/local/develop/nodejsnode-v12.13.1-linux-x64.tar.xz已配置path
15RocketMQ/usr/local/develop/rocketmqrocketmq-all-5.1.3-bin-release.zip已配置path,NameServer端口9876
16Grunt-1.4.3-
17lrzszyum安装-从Windows端上传文件至Linux端命令rz
从Linux端下载文件至Windows端命令sz
18OpenResty/usr/local/openresty-yum安装
19Python/usr/local/develop/pythonPython-3.12.0.tgzPython-3.12.0是解压包,python3.12.0是编译后的安装包
20MQTT/usr/local/develop/mqttmosquitto-1.4.10.tar.gz端口:1883 账密:test/test

(2)docker安装的软件

所有容器的主机映射都挂载在/usr/local/develop/docker-app目录下

序号软件挂载路径的目录映射版本信息备注
1MySQL/usr/local/develop/docker-app/mysql5.7或8.0.27端口:3306
2Tomcat/usr/local/develop/docker-app/tomcat10.0.14端口:8080
3Redis/usr/local/develop/docker-app/redis6.2.6端口:6379
4nginx/usr/local/develop/docker-app/nginx1.21.5端口:80
5RocketMQ/usr/local/develop/docker-app/rocketmq4.4.0端口:9876
6Kafka/usr/local/develop/docker-app/kafka2.13-2.8.1端口:2181
7Zookeeper/usr/local/develop/docker-app/zookeeper2.13-2.8.1端口:9092
8ElasticSearch/usr/local/develop/docker-app/elasticsearch8.2.0端口:9200
超级管理员账密:
elastic elastic
test test
9Kibana/usr/local/develop/docker-app/kibana8.2.0端口:5601
10Nacos/usr/local/develop/docker-app/nacos2.0.3端口:8848
11Canal/usr/local/develop/docker-app/canallatest端口:11111
12MQTT/usr/local/develop/docker-app/mqtt2.0.14端口:1883 账密:test/test

注意

  1. 所有软件都是root账户安装的,操作的时候请使用root用户
  2. 本虚拟机默认IP地址是:192.168.231.130。需要将IP修改为192.168.你的VMNet8网段.130才能正常通讯,修改步骤如下:

修改IP步骤

  1. 确认VMNet8网卡网段

    打开VMWare,点编辑菜单下的虚拟网络编辑器,在弹出的窗口中选择VMNet8,查询窗口左下角的子网IP中第三段,即为我们需要的网卡网段

    获取root权限

    su root
    # 输入root密码,输入的时候没有任何提示,输入完回车就可以了。
    
  2. 修改网卡配置文件

    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
  3. 修改文件内容

    快捷键dd可以删一行,多次按键删除所有内容;

    按i<小写>进入插入模式,把下面的内容粘贴

    **注意:**网段改成你自己VMNet8的,改两个地方

    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=static
    IPADDR=192.168.你的VMNet8网卡网段.130	 #ip地址
    NETMASK=255.255.255.0		        #子网掩码
    GATEWAY=192.168.你的VMNet8网卡网段.2   #网关
    DNS1=119.29.29.29 			        #dns服务器1
    DNS2=114.114.114.114 		        #dns服务器2
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=ens33
    UUID=2c2371f5-ef29-4513-a468-c4904bd11c82
    DEVICE=ens33
    ONBOOT=yes
    

    改完后,按Esc ,再shift+分号,再输入wq保存退出<分号要是英文状态下的,中文无效>

  4. 重启网络服务

    systemctl restart network
    
  5. 查看IP是否修改成功

    ifconfig
    
  6. ping宿主机网络网关/网卡地址(百度),验证网络是否联通

    ping 192.168.你的宿主机网段.1
    ping 你的宿主机IP
    

Tips

1.防火墙

#开放防火墙 9876 和 10911 端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent
#删除开放的端口号命令
firewall-cmd --zone=public --remove-port=10911/tcp --permanent
#更新防火墙规则(无需断开连接,动态添加规则)
firewall-cmd --reload
#查看防火墙所有开放的端口
firewall-cmd --list-port
#临时关闭防火墙
systemctl stop firewalld
#禁止开机启动
systemctl disable firewalld
#查看firewall的状态
systemctl status firewalld

2.设置jar包开机自启动

方式一(强烈推荐):service形式

#在Linux系统中,每个service都需要一个对应的service文件,保存在“/etc/systemd/system”目录中。可以在该目录下创建一个新的service文件,比如“runtest.service”。

#1.创建service文件
cd /etc/systemd/system
vim xxx.service
#2.添加下面的配置
[Unit]
##表示对该服务的描述
Description=test
##指定该服务应在哪些其他服务启动之后启动
After=syslog.target network.target

[Service]
##工作目录
WorkingDirectory=/usr/local/develop/project
##jdk路径以及启动jar文件命令
ExecStart=/usr/local/develop/jdk8/jdk1.8.0_231/bin/java -jar /usr/local/develop/project/xxx.jar
##指定服务运行的用户和组,可以不指定
#User=root
#Group=root
SuccessExitStatus=143
TimeoutStopSec=10
##服务在故障后是否自动重启,on-failure,表示任何意外的失败,就将重启
Restart=on-failure
##表示 Systemd 重启服务之前,需要等待的秒数
RestartSec=5
[Install]
##指定服务应在哪个target中启动
WantedBy=multi-user.target
#3.启动程序
systemctl start xxx.service
#4.查看状态
systemctl status xxx.service
#5.添加到自启动
systemctl enable xxx.service

此方法用于创建服务,可以使脚本在Linux系统开机后自动运行,但不依托于/etc/rc.d/rc.local 文件

方式二:sh形式

#1.新建启动JAR包的sh文件,此sh文件,命名为startup.sh
touch startup.sh
vim startup.sh
#添加配置,用你的项目名称代替XXX
nohup java -jar xxx.jar > xxx.log  &
#2.编辑文件
vim /etc/rc.d/rc.local
#添加配置
cd /usr/local/develop
sh /usr/local/develop/startup.sh
##说明
第一句为进入你项目所在的目录,我这里把项目放在/usr/local/develop下
第二句执行该目录下的sh文件
如果不提前进入所在目录,直接执行第二句,也会开机自启动,但是日志文件会在根目录下的log文件中。只有先进入,再执行,项目的日志文件才会在develop文件夹下
#develop下文件中有jar包、startup.sh、以及jar包的日志文件logs
#3.设置执行权限
chmod +x /etc/rc.d/rc.local
chmod +x /usr/local/develop/startup.sh
#4.执行命令:reboot,重启服务器
#5.重启后执行命令查看jar包是否自启动成功。
ps -ef |grep jar

3.编辑文件

#删除文件:
sudo rm 文件名
sudo rmdir 文件夹名
sudo rm -rf * 删除当前目录下所有文件
#编辑文件:
vim 文件名
#创建文件:
vi 文件名      //创建并进入该文件
touch 文件名   //只是单纯创建,不进入该文件

#linux编辑文件后如何保存退出?
第一步:按ESC(电脑左上角的键)进入Command模式
第二步:输入 :wq (一定要是英文的)
第三步:按下回车键即可保存并退出。
补充:vi编辑时,保存文件过程中,第二步中,冒号后不同的输入对应不同的命令
wq(保存文件并退出)
w(保存文件但不退出)
q(直接退出而不保存文件)
w 文件名(将该文件另存,输入w,空格后输入即为新的文件名)

#修改配置文件只读而无法修改:
sudo chmod 777 文件名    //在文件的所在目录下 执行该命令
sudo chmod 644 文件名    //完成之后要将权限修改回来,否则配置文件不生效

4.图形化界面开机免密登录root

#1.修改/etc/gdm/custom.conf文件
vim /etc/gdm/custom.conf 
#2.在[daemon]下增加
AutomaticLoginEnable=true 
AutomaticLogin=root
#3.重启虚拟机
reboot

5.设置禁止自动锁屏

几分钟不用Centos,系统就自动锁屏了,这是一种安全措施。但对于大部分人而言,这是没有必要的,每次锁屏后重新解锁非常浪费时间。

解决办法:
(1)打开系统设置,找到“Power” 和"privacy"
(2)根据提示可以设置屏幕关闭和锁屏时间,设置选项“关闭”和“从不”即可搞定。

在这里插入图片描述
这样设置后屏幕就不会自动关闭和自动锁屏了。

6.安装搜狗输入法

#创建安装目录,并上传安装包
cd /usr/local/develop
mkdir sogoupinyin
cd sogoupinyin
#1、切换root权限。
su root
#2、更新yum,更新比较耗时,不更新没试行不,自行斟酌是否跳过这一步。
yum update
#3、卸载ibus。
rpm -e --nodeps ibus
#4、安装epel源。
#yum -y install epel-release
#5、安装fcitx。
yum -y install fcitx fcitx-configtool
#6、安装拼音输入法。
yum -y install fcitx-pinyin
#7、安装依赖包。
yum -y install dpkg
yum -y install qtwebkit
#8、下载搜狗输入法。
wget http://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.2.0.0108_amd64.deb
#9、安装alien。
yum -y install alien
#10、deb包 转 rpm包 (在deb包目录下或指定deb包目录)。
alien -r --scripts sogoupinyin_2.2.0.0108_amd64.deb
#11、安装转换的rpm包。
rpm -ivh --force sogoupinyin-2.2.0.0108-2.x86_64.rpm
#12、复制搜狗拼音库。
cp /usr/lib/x86_64-linux-gnu/fcitx/fcitx-sogoupinyin.so /usr/lib64/fcitx/
13、修改权限。
chown -R 776 /usr/share/fcitx-sogoupinyin/
#14、添加QT依赖。
yum install fcitx-qt5 fcitx-configtool -y
#15、配置修改/etc/profile。
vim /etc/profile 
//添加下列内容到文件末尾
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
#16、弹出输入法配置框。
fcitx -r; fcitx-configtool
#17、添加开机自启动,依次点击左上角:应用程序->附件->优化->开机自启动,然后点击加号添加fcitx。
#18、reboot重启虚拟机。
#19、使用ctrl+space 快捷键 或 点击右上角键盘图标切换到搜狗输入法,安装完成。

在这里插入图片描述

7.环境变量配置汇总

##########################################环境变量配置################################################

#JDK8配置
export JAVA_HOME=/usr/local/develop/jdk8/jdk1.8.0_231
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

#MAVEN配置
export MAVEN_HOME=/usr/local/develop/maven/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

#Tomcat配置
export TOMCAT_HOME=/usr/local/develop/tomcat/apache-tomcat-9.0.29
export PATH=$PATH:$TOMCAT_HOME/bin

#Redis配置
export REDIS_HOME=/usr/local/develop/redis/redis-6.2.4
export PATH=$PATH:$REDIS_HOME/bin

#zookeeper配置
export ZOOKEEPER_HOME=/usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
export ZK_LOG_DIR=/usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/logs

#kafka配置
export KAFKA_HOME=/usr/local/develop/kafka/kafka_2.12-2.2.1
export PATH=$PATH:$KAFKA_HOME/bin

#nginx配置
#export NGINX_HOME=/usr/local/nginx
#export PATH=$PATH:$NGINX_HOME/sbin

#nodejs配置
export NODE_HOME=/usr/local/develop/nodejs/node-v12.13.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin

#RocketMQ配置
export ROCKETMQ_HOME=/usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
export NAMESRV_ADDR=127.0.0.1:9876

#openresty配置
export OPENRESTY_HOME=/usr/local/openresty/nginx
export PATH=${OPENRESTY_HOME}/sbin:$PATH

#idea配置
export IDEA_HOME=/usr/local/develop/idea/idea-IC-232.9559.62
export PATH=:$PATH:${IDEA_HOME}/bin

#elasticsearch配置
export ELASTICSEARCH_HOME=/usr/local/develop/elasticsearch/elasticsearch-7.4.0/
export PATH=:$PATH:${ELASTICSEARCH_HOME}/bin

#kibana配置
export KIBANA_HOME=/usr/local/develop/kibana/kibana-7.4.0-linux-x86_64
export PATH=:$PATH:${KIBANA_HOME}/bin

#搜狗输入法配置
export XIM_PROGRAM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

####################################################################################################

8.Docker常用命令

#通过命令启动docker:
systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务
systemctl status docker  # 查看docker服务状态
#查看docker版本:
docker -v
#删除容器的命令,删除前如果容器在运行中,要先停止
docker rm 容器名
#如果你不知道容器的名称,可以使用docker ps -a命令查看所有容器,其中包括其名称和ID。
docker ps -a
#查看正在运行的容器
docker ps
#进入容器的命令
docker exec -it 容器名称 /bin/bash
#运行容器
docker start 容器名称
#停止容器
docker stop 容器名称
--------------------------------------------------------------------------------------------------------------
#制作新的镜像(将docker中已经配置好的容器导出为新镜像)
docker commit 容器id 新镜像名称
#查看镜像的id
docker images
#导出镜像为tar格式的包
docker save 镜像id > /路径/xxx.tar
#加载镜像到docker中
docker load < xxx.tar
#给镜像重命名
docker tag 镜像id 新镜像名称:版本
--------------------------------------------------------------------------------------------------------------
#查看镜像:
docker images 或 docker image ls
#删除镜像:
docker rmi 镜像名或者镜像id
#查看卷:
docker volume ls
#查看容器详细信息,容器的ip
docker inspect 容器id/容器名称
#查看容器启动日志
docker logs 容器id/容器名称
--------------------------------------------------------------------------------------------------------------
#开启容器自启动
#在docker启动容器时可以增加参数
docker run –-restart=always
#容器已经启动,通过update命令进行修改
docker update –-restart=always <CONTAINER ID>
#关闭自启
#容器关闭自启动:
docker update --restart=no <CONTAINER ID>
#取消所有容器自启动
docker update --restart=no $(docker ps -q)
--------------------------------------------------------------------------------------------------------------
#查看所有当前可用的Docker网络
docker network ls
#删除网络
docker network rm 网络名称
#查看所有未使用的网络并删除
docker network prune
#创建自定义网络(默认是桥接模式)
## 方式一
docker network create 网络名称
## 方式二:指定IP和网关
docker network create --subnet=172.10.0.0/16 --gateway=172.10.0.1 网络名称
## 方式三:创建网络并绑定物理网卡,网络模式 macvlan bridge
docker network create -d macvlan  --subnet=172.16.86.0/24  --gateway=172.16.86.1  -o parent=eth0 网络名称
#解除容器绑定的网络
docker network disconnect 网络名称 容器名称
#为容器重新指定网络
docker network connect 网络名称 容器名称
#为容器重新指定网络和ip
docker network connect  网络名称 容器名称 --ip 192.168.252.10
--------------------------------------------------------------------------------------------------------------
#容器文件复制到本地目录
docker cp 容器名称:容器中的目录 本地目录的路径
例:docker cp tomcat:/usr/local/tomcat/conf /usr/local/develop/docker-app/tomcat
#容器文件映射到本地目录(挂载)
docker run -v 本地目录的路径:容器中的目录 容器名称或者容器id
例:docker run -v /usr/local/develop/docker-app/tomcat/conf:/usr/local/tomcat/conf tomcat

9.升级系统内核

#1.查看系统版本
cat /etc/redhat-release
#2.查看当前默认使用的内核版本
uname -r
#3.查看现有内核启动顺序
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
#4.更源仓库,时间会比较长一点。
yum -y update
#5.导入密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#6.安装yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
#7.查看可以安装的内核版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
#8.安装最新版内核
yum -y --enablerepo=elrepo-kernel install kernel-lt
#9.编辑grub文件,把GRUB_DEFAULT=saved改成GRUB_DEFAULT=0
vim /etc/default/grub
#或者,设置好新的内核启动项
grub2-set-default 0
#10.根据/etc/default/grub自动生成开机配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
#11.重启机器生效
reboot
#12.再次看看更新好了没
uname -r

在这里插入图片描述

常规方式安装软件和启动步骤

1.JDK8

#1.先卸载open-jdk
rpm -qa | grep java #查询openjdk对应的版本信息
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64 #逐个卸载,后面复制粘贴版本信息即可
#2.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir jdk8
cd jdk8
#3.解压安装包
tar -xzvf jdk-8u231-linux-x64.tar.gz -C /usr/local/develop/jdk8
#4.修改环境变量
vim /etc/profile 
复制到文件的最末尾:
export JAVA_HOME=/usr/local/develop/jdk8/jdk1.8.0_231
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
#5.刷新配置文件
source /etc/profile
#6.查看java版本信息
java -version

在这里插入图片描述

2.Maven

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir maven
cd maven
#2.解压安装包
tar -xzvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/develop/maven
#3.解压完毕以后,新建一个repository仓库,用于存放Maven下载下来的jar包
mkdir maven_local_repository
#4.编辑settings.xml文件
vi apache-maven-3.6.3/conf/settings.xml
#5.设置Maven仓库,就是我刚才新建的文件夹
<localRepository>/usr/local/develop/maven/maven_local_repository</localRepository>
#6.配置为阿里云镜像地址 
<mirror>
   <id>nexus-aliyun</id>
   <mirrorOf>central</mirrorOf>
   <name>Nexus aliyun</name>
   <url>https://maven.aliyun.com/repository/public</url>
</mirror>
#7.配置环境变量
vim /etc/profile
#添加下面的配置
export MAVEN_HOME=/usr/local/develop/maven/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
#8.运行以下命令使profile文件生效 
source /etc/profile
#9.检查环境配置是否成功
mvn -v

在这里插入图片描述

3.Tomcat

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir tomcat
cd tomcat
#2.解压安装包
tar -xzvf apache-tomcat-9.0.29.tar.gz -C /usr/local/develop/tomcat
#3.配置环境path
vim /etc/profile
#添加下面的配置
#Tomcat配置
export TOMCAT_HOME=/usr/local/develop/tomcat/apache-tomcat-9.0.29
export PATH=$PATH:$TOMCAT_HOME/bin
#4.运行以下命令使profile文件生效 
source /etc/profile
#5.启动/关闭 Tomcat
tomcat 解压缩后就可以使用了,用 cd 命令切换到 tomcat 主目录下的 bin 目录
./startup.sh
./shutdown.sh
由于已经配置了环境变量了,在任意位置都可以执行命令
在浏览器中访问 tomcat,要关闭linux的防火墙

在这里插入图片描述

4.MySQL

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir mysql
cd mysql
#2.解压安装包
tar -xvf mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar -C /usr/local/develop/mysql
#3.安装客户端
rpm -ivh mysql-community-client-5.7.27-1.el7.x86_64.rpm --force --nodeps
#4.安装服务端
rpm -ivh mysql-community-server-5.7.27-1.el7.x86_64.rpm --force --nodeps
#5.修改mysql默认字符集
vi /etc/my.cnf
添加如下内容:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
-- 在文件最下方添加
[client]
default-character-set=utf8
#6.启动mysql服务,在Linux中MySQL安装好了之后系统会自动的注册一个服务,服务名称叫做mysqld,所以可以通过以下命令操作MySQL:
启动 MySQL 服务:systemctl start mysqld
重启 MySQL 服务:systemctl restart mysqld
关闭 MySQL 服务:systemctl stop mysqld
#7.登录mysql,rpm安装MySQL会自动生成一个随机密码,可在/var/log/mysqld.log这个文件中查找该密码
查看初始密码:cat /var/log/mysqld.log
mysql -u root -p (密码  敲回车)
密码类似ohHmyrmQE1!D
在A temporay password is generated for root@localhost: ****密码**** ;root@localhost:后面的就是初始密码
#8.修改mysql登录密码
set global validate_password_policy=0;
set global validate_password_length=1;
set password=password('密码');
#9.授予远程连接权限
//授权
grant all privileges on *.* to 'root' @'%' identified by '密码';
//刷新
flush privileges;
#10.关闭Linux系统防火墙
systemctl stop firewalld
systemctl disable firewalld
#11.重启mysql服务
systemctl restart mysqld
#12.使用navicat工具连接mysql

在这里插入图片描述

5.Redis

(1)安装

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir redis
cd redis
#2.解压安装包
tar -xzvf redis-6.2.4.tar.gz -C /usr/local/develop/redis
#3.redis是c语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc,需要输入以下命令
yum install gcc
#4.进入redis-6.2.4,使用make命令进行编译将.c文件编译成.o文件
cd redis-6.2.4
make
编译成功之后会出现“It's a good idea to run 'make test'”的提示
#5.使用命令 进行安装 
make PREFIX=/usr/local/develop/redis/redis-6.2.4 install
安装完成会出现一个bin目录,里面的结构如下:
redis-benchmark   ----性能测试工具
redis-check-aof   ----AOF文件修复工具
redis-check-rdb   ----RDB文件检查工具(快照持久化文件)
redis-cli         ----命令行客户端
redis-sentinel    ----哨兵
redis-server      ----redis服务器启动命令
#6.修改配置文件
cd /usr/local/develop/redis/redis-6.2.4
vim redis.conf
进入后使用编辑模式进行修改以下部分
将bind 127.0.0.1 -::1 替换为bind  0.0.0.0
将 daemonize on  替换成  daemonize yes

(2)启动

cd /usr/local/develop/redis/redis-6.2.4
如果输入以下第一个命令无法启动  提示./redis.conf没有权限  在输入命令这个命令即可
chmod 777 redis.conf
#启动redis服务 
bin/redis-server ./redis.conf
#查看已经启动的redis服务关闭redis服务
ps -ef|grep redis
#redis的客户端
bin/redis-cli

#关闭redis命令,需要先退出redis客户端
#退出redis客户端
exit
#关闭redis
bin/redis-cli shutdown
#查看关于redis 的进程
ps -ef|grep redis

在这里插入图片描述

6.Zookeeper

(1)安装

#1.环境准备
ZooKeeper服务器是用Java创建的,必须安装jdk
#2.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir zookeeper
cd zookeeper
#3.解压安装包
tar -xzvf apache-zookeeper-3.5.6-bin.tar.gz -C /usr/local/develop/zookeeper
#4.配置zoo.cfg
#进入到conf目录
cd /usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/conf
#拷贝
cp zoo_sample.cfg zoo.cfg
#创建zooKeeper存储目录
cd /usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/logs
mkdir zkData
#修改zoo.cfg
vim /usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/conf/zoo.cfg
#进入修改页面后修改dataDir=/usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/logs/zkData
#5.设置环境变量
vim /etc/profile 
#zookeeper配置
export ZOOKEEPER_HOME=/usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin
export ZK_LOG_DIR=/usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/logs
#6.使配置生效:
source /etc/profile

(2)启动

cd /usr/local/develop/zookeeper/apache-zookeeper-3.5.6-bin/bin
#启动
./zkServer.sh start
#关闭
./zkServer.sh stop
#查看ZooKeeper状态
./zkServer.sh status

在这里插入图片描述

7.Kafka

(1)安装

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir kafka
cd kafka
#2.解压安装包
tar -xzvf kafka_2.12-2.2.1.tgz -C /usr/local/develop/kafka
#3.配置环境变量
vim /etc/profile 
#kafka配置
export KAFKA_HOME=/usr/local/develop/kafka/kafka_2.12-2.2.1
export PATH=$PATH:$KAFKA_HOME/bin
#4.使配置生效:
source /etc/profile
5.配置config中的server.properties文件
cd /usr/local/develop/kafka/kafka_2.12-2.2.1/config
vim server.properties
#broker.id属性在kafka集群中必须要是唯⼀
broker.id=0
#kafka部署的机器ip和提供服务的端⼝号
listeners=PLAINTEXT://192.168.231.130:9092 
#kafka的消息存储⽂件
log.dir=/usr/local/develop/kafka/kafka_2.12-2.2.1/logs/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=192.168.231.130:2181

#另外:
kafka安装包内集成的有zookeeper,其实不用单独安装zookeeper。kafka在2.8之后就可以不用zookeeper来管理节点了
#配置zookeeper:
cd /usr/local/develop/kafka/kafka_2.12-2.2.1/config
vim zookeeper.properties
dataDir=/usr/local/develop/kafka/kafka_2.12-2.2.1/logs/zookeeper-logs

(2)启动

#启动
#先启动zookeeper,再启动kafka
cd /usr/local/develop/kafka/kafka_2.12-2.2.1/bin
zookeeper-server-start.sh ../config/zookeeper.properties
kafka-server-start.sh ../config/server.properties
#查看kafka进程
ps -ef | grep kafka
#停止后台运行
kafka-server-stop.sh
#验证kafka是否可以正常使用 ,运行kafka生产者发送消息
kafka-console-producer.sh --topic topic_1 --broker-list localhost:9092
#另打开窗口消费者消费消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 - -topic topic_1 --from-beginning

在这里插入图片描述

注意:
Java或者kafka_tool连接不上虚拟机的kafka解决方法:
首先,关闭防火墙
其次在config/server.properties的配置文件中,要把这两行注释打开
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://192.168.231.129:9092

在这里插入图片描述

在这里插入图片描述

8.nginx

(1)安装

#1.安装nginx依赖
#安装gcc
yum install gcc-c++
#安装PCRE pcre-devel
yum install -y pcre pcre-devel
#安装zlib
yum install -y zlib zlib-devel
#安装Open SSL
yum install -y openssl openssl-devel
#2.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir nginx
cd nginx
#3.解压安装包
tar -xzvf nginx-1.18.0.tar.gz -C /usr/local/develop/nginx
#编译 执行命令 考虑到后续安装ssl证书 添加两个模块  如不需要直接执行./configure即可
cd nginx-1.18.0
./configure --with-http_stub_status_module --with-http_ssl_module
#执行make命令(要是执行不成功请检查最开始安装的四个依赖有没有安装成功)
make
#执行make install命令
make install

(2)启动

执行完上面的所有命令后,会在/usr/local目录下生成一个nginx文件夹
cd /usr/local/nginx/sbin
#配置环境
vim /etc/profile 
#nginx配置
export NGINX_HOME=/usr/local/nginx
export PATH=$PATH:$NGINX_HOME/sbin
#使配置生效:
source /etc/profile

# 默认配置文件启动
./nginx
# 指定配置文件启动
./nginx -c  /usr/local/nginx/conf/nginx.conf
cd /usr/local/nginx/sbin
# 停止指令
./nginx -s stop
# 或
./nginx -s quit
# 重启命令
./nginx -s reload
# 查看nginx进程
ps -ef|grep nginx

#设置开机自启动nginx
#编辑
vim /etc/rc.local
#最底部增加这一行
/usr/local/nginx/sbin/nginx
#若要修改监听端口,可打开nginx的配置文件进行修改。
# 打开配置文件
vi /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

9.Nacos

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir nacos
cd nacos
#2.解压安装包
tar -xzvf nacos-server-2.2.3.tar.gz -C /usr/local/develop/nacos
#3.启动
cd /usr/local/develop/nacos/nacos/bin
sh startup.sh -m standalone
#4.验证是否启动成功
#访问地址 默认账号密码是nacos/nacos
http://ip:8848/nacos
#关闭
sh shutdown.sh

#Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。
#如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改配置文件中的端口:
#进入nacos配置文件目录
cd /usr/local/develop/nacos/nacos/conf
#编辑nacos配置文件
vim application.properties

在这里插入图片描述

10.Docker

(1)安装

#1.如果之前安装过旧版本的Docker,可以使用下面命令卸载:
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
#2.安装docker,需要虚拟机联网,安装yum工具
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
#3.然后更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast
#4.然后输入命令:docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
yum install -y docker-ce

(2)启动

#启动docker前,一定要关闭防火墙!!
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

#通过命令启动docker:
systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务
systemctl status docker  # 查看docker服务状态
#然后输入命令,可以查看docker版本:
docker -v

在这里插入图片描述

注意:

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

11.ElasticSearch

(1)安装

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir elasticsearch
cd elasticsearch
#2.解压安装包
tar -xzvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /usr/local/develop/elasticsearch
#3.创建普通用户(本linux中已经创建过了普通用户test,所以可以跳过此步骤)
#因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令
useradd test  # 新增test用户
passwd  test  # 为test用户设置密码
#4.为新用户授权,如下图
chown -R test:test /usr/local/develop/elasticsearch/elasticsearch-7.4.0 #文件夹所有者
将/usr/local/develop/elasticsearch/elasticsearch-7.4.0文件夹授权给test用户,由下图可见,我们的文件夹权限赋给了test
#5.修改elasticsearch.yml文件
vim /usr/local/develop/elasticsearch/elasticsearch-7.4.0/config/elasticsearch.yml 
# ======================== Elasticsearch Configuration =========================
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
#cluster.name:配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称
#node.name:节点名,elasticsearch会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
#network.host:设置为0.0.0.0允许外网访问
#http.port:Elasticsearch的http访问端口
#cluster.initial_master_nodes:初始化新的集群时需要此配置来选举master

#ES默认不开启跨域访问,需要添加以下配置:
#配置
#开启cors跨域访问支持,默认为false 
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: "*"

#6.修改配置文件
# 切换到root用户
su root
#6.1. ===最大可创建文件数太小=======
vim /etc/security/limits.conf
# 在文件末尾中增加下面内容
test soft nofile 65536
test hard nofile 65536
# =====
vim /etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容
test soft nofile 65536
test hard nofile 65536
*  hard    nproc     4096
# 注:* 代表Linux所有用户名称	
#6.2. ===最大虚拟内存太小=======
vim /etc/sysctl.conf
# 在文件中增加下面内容
vm.max_map_count=655360
# 重新加载,输入下面命令:
sysctl -p

在这里插入图片描述

(2)启动

su test  # 切换到test用户启动
cd /usr/local/develop/elasticsearch/elasticsearch-7.4.0/bin
./elasticsearch #启动
#在访问elasticsearch前,请确保防火墙是关闭的


#安装ik分词器!!!!!
cd /usr/local/develop/elasticsearch/elasticsearch-7.4.0/plugins/
#创建ik目录并进入
mkdir ik-7.10.0
cd ik-7.10.0
#上传安装包并解压,然后删除安装包
unzip elasticsearch-analysis-ik-7.10.0.zip
rm elasticsearch-analysis-ik-7.10.0.zip
#修改配置文件
vim plugin-descriptor.properties
# 修改下面的内容
elasticsearch.version=你的es的版本(本文中是7.10.0)

在这里插入图片描述

在这里插入图片描述

重点几个关注下即可:
number" : “7.4.0” 表示elasticsearch版本
lucene_version" : “8.2.0” 表示lucene版本
name : 默认启动的时候指定了 ES 实例名称
cluster_name : 默认名为 elasticsearch

12.Elasticsearch-head

下载地址:https://github.com/mobz/elasticsearch-head/releases

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir elasticsearch-head
cd elasticsearch-head
#2.解压安装包
tar -xzvf elasticsearch-head-5.0.0.tar.gz -C /usr/local/develop/elasticsearch-head
#3.进入目录
cd elasticsearch-head-5.0.0
#在运行之前我们需要修改下elasticsearch.yml,因为ES默认不开启跨域访问,需要添加以下配置:
vim /usr/local/develop/elasticsearch/elasticsearch-7.4.0/config/elasticsearch.yml
#加入下面两个配置
#开启cors跨域访问支持,默认为false 
http.cors.enabled: true
#跨域访问允许的域名地址,(允许所有域名)以上使用正则
http.cors.allow-origin: "*"
#4.安装
npm install
#5.运行服务
npm run start
#或者后台启动
nohup npm run-script start &
#6.访问head
浏览器输入ip:port:9100,如下图

在这里插入图片描述

13.Kibana

#配合ElasticSearch使用
#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir kibana
cd kibana
#2.解压安装包
tar -xzvf kibana-7.4.0-linux-x86_64.tar.gz -C /usr/local/develop/kibana
#3.修改配置文件
vim /usr/local/develop/kibana/kibana-7.4.0-linux-x86_64/config/kibana.yml
# 在文件中修改下面内容
server.port: 5601
server.host: "0.0.0.0"
server.name: "kibana-itcast"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
elasticsearch.requestTimeout: 99999
i18n.locale: "zh_CN"
#server.port:http访问端口
#server.host:ip地址,0.0.0.0表示可远程访问
#server.name:kibana服务名
#elasticsearch.hosts:elasticsearch地址
#elasticsearch.requestTimeout:请求elasticsearch超时时间,默认为30000,此处可根据情况设置
#i18n.locale: 汉化
#4、启动kibana
由于kibana不建议使用root用户启动,如果用root启动,需要加--allow-root参数
# 切换到kibana的bin目录
cd /usr/local/develop/kibana/kibana-7.4.0-linux-x86_64/bin
# 启动
./kibana --allow-root

在这里插入图片描述

14.Node

cd /usr/local
mkdir develop
cd develop
mkdir nodejs
cd nodejs
#1.执行wget命令下载Node
wget https://nodejs.org/dist/v12.13.1/node-v12.13.1-linux-x64.tar.xz
#2.解压
tar -xvf node-v12.13.1-linux-x64.tar.xz -C /usr/local/develop/nodejs
#3.设置软连接
#解压文件的 bin 目录底下包含了 node、npm 等命令,我们可以使用 ln 命令来设置软连接:
ln -s bin/npm /usr/local/develop/nodejs/node-v12.13.1-linux-x64/bin/
ln -s bin/node /usr/local/develop/nodejs/node-v12.13.1-linux-x64/bin/
#4.配置环境变量
vim /etc/profile
export NODE_HOME=/usr/local/develop/nodejs/node-v12.13.1-linux-x64
export PATH=$PATH:$NODE_HOME/bin
#5.运行以下命令使profile文件生效 
source /etc/profile
#6.查看版本信息
node -v

在这里插入图片描述

15.RocketMQ

(1)安装

#1.创建安装目录,并上传安装包
cd /usr/local
mkdir develop
cd develop
mkdir rocketmq
cd rocketmq
#2.解压安装包
unzip -d /usr/local/develop/rocketmq rocketmq-all-5.1.3-bin-release.zip
#如果没有安装 unzip,可以执行下面命令安装 
yum install -y unzip zip
#3.进入rocketmq安装目录
cd rocketmq-all-5.1.3-bin-release
#4.创建存放数据的目录
mkdir -p store store/commitlog store/consumequeue
#5.进入conf目录
cd conf
#6.编辑broker.conf文件
vi broker.conf
# 在broker.conf文件中追加下面内容
listenPort=10911
namesrvAddr=localhost:9876
storePathRootDir=/usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release/store
storePathCommitLog=/usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release/store/commitlog
storePathConsumerQueue=/usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release/store/consumequeue
#7.修改内存大小(这步不是必须的,如果你的机器内存足够,可以跳过这步,笔者机器内存只有1g,因此需要修改内存大小)
#进入bin目录
cd /usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release/bin
#编辑runbroker.sh文件和runserver.sh文件,修改内存大小
#编辑runbroker.sh文件,将 8g 修改为 512m
vi runbroker.sh
#编辑runserver.sh文件,都修改为 512m
vi runserver.sh
#8.配置环境变量
vim /etc/profile
export ROCKETMQ_HOME=/usr/local/develop/rocketmq/rocketmq-all-5.1.3-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
export NAMESRV_ADDR=127.0.0.1:9876
#运行以下命令使profile文件生效 
source /etc/profile
#9.开放防火墙 9876 和 10911 端口
firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
#更新防火墙规则(无需断开连接,动态添加规则)
firewall-cmd --reload
#查看防火墙所有开放的端口
firewall-cmd --list-port

在这里插入图片描述

在这里插入图片描述

(2)启动

#在 bin 目录下,执行下面命令
nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。&>后面指定隐藏的启动信息输出到指定文件,如果不指定默认输出到当前目录的nohup.out
#1.启动nameserver,下面命令任选其一
nohup sh mqnamesrv &> namesrv-out.txt
sh mqnamesrv
#2.启动 broker,下面命令任选其一
nohup sh mqbroker -n localhost:9876 -c ../conf/broker.conf &> broker-out.txt
./mqbroker -n localhost:9876 -c ../conf/broker.conf
#启动过程中会在/root/logs/rocketmqlogs/产生日志文件
tail -f ~/logs/rocketmqlogs/broker.log

#测试发送消息
#使⽤bin/tools.sh⼯具验证消息的发送,默认会发1000条消息
./tools.sh org.apache.rocketmq.example.quickstart.Producer 
#使⽤bin/tools.sh⼯具验证消息的接收
./tools.sh org.apache.rocketmq.example.quickstart.Consumer 

#关闭
sh mqshutdown broker
sh mqshutdown namesrv

在这里插入图片描述

在这里插入图片描述

16.Grunt

#安装grunt(运行在Node.js上面的任务管理器(task runner)),为了获得Grunt的更多产品特性,需要全局安装Grunt's 命令行接口(CLI),使用npm进行安装,如下:
npm install -g grunt-cli
#查看grunt版本
grunt --version
输出grunt版本信息,表示安装成功。

在这里插入图片描述

17.OpenResty

# 1.安装
首先你的Linux虚拟机必须联网
# **1)安装开发库**
首先要安装OpenResty的依赖开发库,执行命令:
yum install -y pcre-devel openssl-devel gcc --skip-broken
# **2)安装OpenResty仓库**
#你可以在你的 CentOS 系统中添加 `openresty` 仓库,这样就可以便于未来安装或更新我们的软件包(通过 `yum check-update` 命令)。运行下面的命令就可以添加我们的仓库:
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
#如果提示说命令不存在,则运行:
yum install -y yum-utils 
#然后再重复上面的命令
# **3)安装OpenResty**
#然后就可以像下面这样安装软件包,比如 `openresty`:
yum install -y openresty
# **4)安装opm工具**
#opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。
#如果你想安装命令行工具 `opm`,那么可以像下面这样安装 `openresty-opm` 包:
yum install -y openresty-opm
# **5)目录结构**
#默认情况下,OpenResty安装的目录是:/usr/local/openresty

看到里面的nginx目录了吗,OpenResty就是在Nginx基础上集成了一些Lua模块。
# **6)配置nginx的环境变量**
#打开配置文件:
vi /etc/profile
#在最下面加入两行:
export NGINX_HOME=/usr/local/openresty/nginx
export PATH=${NGINX_HOME}/sbin:$PATH

#NGINX_HOME:后面是OpenResty安装目录下的nginx的目录
#然后让配置生效:
source /etc/profile
# 2.启动和运行
#OpenResty底层是基于Nginx的,查看OpenResty目录的nginx目录,结构与windows中安装的nginx基本一致:
#所以运行方式与nginx基本一致:
# 启动nginx
nginx
# 重新加载配置
nginx -s reload
# 停止
nginx -s stop
#nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。
修改`/usr/local/openresty/nginx/conf/nginx.conf`文件,内容如下:
#user  nobody;
worker_processes  1;
error_log  logs/error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
#在Linux的控制台输入命令以启动nginx:
nginx
#然后访问页面:http://192.168.231.130:8081,注意ip地址替换为你自己的虚拟机IP

在这里插入图片描述

# 3.备注
加载OpenResty的lua模块:
```nginx
#lua 模块
lua_package_path "/usr/local/openresty/lualib/?.lua;;";
#c模块     
lua_package_cpath "/usr/local/openresty/lualib/?.so;;";  
```

#common.lua
```lua
-- 封装函数,发送http请求,并解析响应
local function read_http(path, params)
    local resp = ngx.location.capture(path,{
        method = ngx.HTTP_GET,
        args = params,
    })
    if not resp then
        -- 记录错误信息,返回404
        ngx.log(ngx.ERR, "http not found, path: ", path , ", args: ", args)
        ngx.exit(404)
    end
    return resp.body
end
-- 将方法导出
local _M = {  
    read_http = read_http
}  
return _M
```

#释放Redis连接API:
```lua
-- 关闭redis连接的工具方法,其实是放入连接池
local function close_redis(red)
    local pool_max_idle_time = 10000 -- 连接的空闲时间,单位是毫秒
    local pool_size = 100 --连接池大小
    local ok, err = red:set_keepalive(pool_max_idle_time, pool_size)
    if not ok then
        ngx.log(ngx.ERR, "放入redis连接池失败: ", err)
    end
end
```

#读取Redis数据的API:
```lua
-- 查询redis的方法 ip和port是redis地址,key是查询的key
local function read_redis(ip, port, key)
    -- 获取一个连接
    local ok, err = red:connect(ip, port)
    if not ok then
        ngx.log(ngx.ERR, "连接redis失败 : ", err)
        return nil
    end
    -- 查询redis
    local resp, err = red:get(key)
    -- 查询失败处理
    if not resp then
        ngx.log(ngx.ERR, "查询Redis失败: ", err, ", key = " , key)
    end
    --得到的数据为空处理
    if resp == ngx.null then
        resp = nil
        ngx.log(ngx.ERR, "查询Redis数据为空, key = ", key)
    end
    close_redis(red)
    return resp
end
```

#开启共享词典:
```nginx
# 共享字典,也就是本地缓存,名称叫做:item_cache,大小150m
lua_shared_dict item_cache 150m; 
```

18.Python

#1.在Linux上安装Python需要先安装前置依赖程序。
yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel -y
#2.创建安装目录
mkdir /usr/local/develop/python
cd /usr/local/develop/python
#3.进入官方网址https://www.python.org/,点击最上面的Downloads按钮,再点击Linux/UNIX按钮,选择Python Source Releases下面的最新版,滑到最下面,在Files文件列表中选择Gzipped source tarball在上面右键复制链接地址
#执行下面的命令下载安装包,后面为刚刚复制的地址
wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz
#4.解压
tar -xvf Python-3.12.0.tgz
#5.配置
cd Python-3.12.0
./configure --prefix=/usr/local/develop/python/python3.12.0
#6.编译
make && make install
#7.执行下面的命令,会看到centos默认自带的python版本为2.7.5,我们要替换成最新版的
/usr/bin/python
#8.删除系统自带的老版本(python2)的软链接
rm -f /usr/bin/python
#9.创建软链接替换老版本
ln -s /usr/local/develop/python/python3.12.0/bin/python3.12 /usr/bin/python
#10.验证安装
python

#注意:
#创建软链接后,会破坏yum程序的正常使用(只能使用系统自带的python2)
#将这2个文件的第一行,从#!/usr/bin/python修改为#!/usr/bin/python2
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down

在这里插入图片描述

19.MQTT

(1)安装软件

#1.输入以下指令
yum install gcc-c++
yum install cmake
yum install openssl-devel
#2.新建文件
新建个mqtt文件夹,下载mosquitto,下个不高不低的版本,并解压:
mkdir /usr/local/develop/mqtt
cd mqtt
wget http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
tar -xzvf mosquitto-1.4.10.tar.gz
但这里还不能编译安装mosquitto
下面的三款扩展性软件,不安装也不影响mosquitto的使用:
#4、安装c-areas(支持异步DNS查找的库)
wget http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
tar xvf c-ares-1.10.0.tar.gz
cd c-ares-1.10.0
./configure
make
sudo make install
#5、安装lib-uuid(支持为每个连接客户端生成唯一uuid)
yum install libuuid-devel
#6、安装libwebsockets(支持需使用websocket的应用)
wget https://github.com/warmcat/libwebsockets/archive/v1.3-chrome37-firefox30.tar.gz
tar zxvf v1.3-chrome37-firefox30.tar.gz
cd libwebsockets-1.3-chrome37-firefox30
mkdir build
cd build
cmake .. -DLIB_SUFFIX=64
make install
#7、修改mosquitto的配置
我们修改一下mosquitto的配置:
cd mosquitto-1.4.10
vim config.mk
将里面的WITH_SRV:=yes和WITH_UUID:=yes都用#号注释掉
#8、安装mosquitto
接下来编译安装mosquitto:
make
sudo make install
注意: 如果在后续使用过程中找不到libmosquitto.so.1的话,在mqtt目录下输入以下指令修改一下libmosquitto.so的位置:
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
sudo ldconfig

(2)安全配置

#1、创建用户
sudo groupadd yuetong
sudo useradd -g yuetong yuetong
#2、程序配置
创建配置文件
mv  /etc/mosquitto/mosquitto.conf.example  /etc/mosquitto/mosquitto.conf
#3、修改默认配置
#3.1.关闭匿名用户登录
打开mosquitto.conf文件( /etc/mosquitto/mosquitto.conf ),找到allow_anonymous节点,这个节点作用是,是否开启匿名用户登录。去掉前面的#,改为false。
#3.2.设置用户密码文件路径
找到password_file节点,这个节点是告诉服务器你要配置的用户将存放在哪里。打开此配置并指定pwfile.example文件路径(注意是绝对路径),在669行左右。
password_file /etc/mosquitto/pwfile 或者 /pwfile.example
#3.3.配置topic和用户
acl_file /etc/mosquitto/aclfile.example
#3.4.添加用户信息
终端输入,最后面的是用户名,之后自动弹出密码和确认密码,输入即可。(注意第二次创建用户时不用加 -c 如果加 -c 会把第一次创建的用户覆盖。)
mosquitto_passwd -c /etc/mosquitto/pwfile yuetong
然后进入到/etc/mosquitto/mosquitto.conf 将下面两个用户名和密码加上。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)连接测试

#启动
需要切换到yuetong用户才能启动
su yuetong
cd /usr/local/sbin
./mosquitto -v -d  #-d后台启动 -v代码调试模式(verbose)可以输出更多的信息

1.下载客户端软件安装包,点击安装包直接安装 [MQTTX](https://mqttx.app/?spm=a2c6h.13046898.publish-article.21.25b16ffawphRSS)
2.界面一开始是英文,可以显示中文
3.主要填写名称,Client ID,服务器地址这三项,连接

在这里插入图片描述
在这里插入图片描述

Docker安装软件和启动步骤

1.MySQL

#1.在宿主机创建挂载容器的目录映射,创建目录用于存储数据信息
cd /usr/local/develop
mkdir docker-app
cd docker-app
mkdir mysql
cd mysql
#2.搜索mysql镜像
docker search mysql
#3.拉取mysql镜像
docker pull mysql:5.7
#4.创建容器,设置端口映射、目录映射
docker run -id \
-p 3306:3306 \
--name=mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
#参数说明:
- **-p 3306:3306**:将容器的 3306 端口映射到宿主机的 3306 端口。
- **-v $PWD/conf:/etc/mysql/conf.d**:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- **-v $PWD/logs:/logs**:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- **-v $PWD/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- **-e MYSQL_ROOT_PASSWORD=root:**初始化 root 用户的密码。
#5.进入容器,操作mysql
docker exec -it mysql /bin/bash
mysql -u root -p
输入密码
#6.使用外部机器连接容器中的mysql
#7.启动容器命令
docker start mysql
#8.停止容器
docker stop mysql

在这里插入图片描述

2.Tomcat

#1.在宿主机创建挂载容器的目录映射,创建目录用于存储数据信息
cd /usr/local/develop
mkdir docker-app
cd docker-app
mkdir tomcat
cd tomcat
#2.搜索镜像
docker search tomcat
#3.拉取镜像
docker pull tomcat
#4.先创建一个简单的容器
docker run -d -p 8080:8080 --name tomcat tomcat
#说明
#-d后台运行 -p指定端口号
#docker run -d -p 宿主机端口:容器端口 --name 容器名 镜像名
-------------------------------------------------------------------------------------------------
#5.解决访问tomcat404报错
#进入容器
docker exec -it tomcat /bin/bash
#以列表形式查看文件
ls -l
#查看webapps发现里面没东西,查看webapps.dist发现里面有东西(examples),因此删除webapps,将webapps.dist重命名为webapps
rmdir webapps
mv webapps.dist webapps
exit #退出容器
-------------------------------------------------------------------------------------------------
#6.复制容器内的默认配置文件到本地
docker cp tomcat:/usr/local/tomcat/conf /usr/local/develop/docker-app/tomcat
docker cp tomcat:/usr/local/tomcat/logs /usr/local/develop/docker-app/tomcat
docker cp tomcat:/usr/local/tomcat/webapps /usr/local/develop/docker-app/tomcat
#7.删除之前创建的容器
docker stop tomcat
docker rm tomcat
#8.创建最终的容器,并指定映射的配置文件
docker run -d -p 8080:8080 --name tomcat \
-v /usr/local/develop/docker-app/tomcat/conf:/usr/local/tomcat/conf \
-v /usr/local/develop/docker-app/tomcat/logs:/usr/local/tomcat/logs \
-v /usr/local/develop/docker-app/tomcat/webapps:/usr/local/tomcat/webapps \
tomcat
#9.启动容器命令
docker start tomcat
#10.停止容器
docker stop tomcat

在这里插入图片描述

3.Redis

cd /usr/local/develop/docker-app
mkdir redis
cd redis
#1. 搜索redis镜像
docker search redis
#2. 拉取redis镜像
docker pull redis
#因为 docker 安装运行 redis容器,是没有配置文件的,需要自己手动创建一个 redis.conf 文件
mkdir conf data log
vim conf/redis.conf
[粘贴或者上传redis.conf配置文件]
进入后使用编辑模式进行修改以下部分
将bind 127.0.0.1 -::1 替换为bind  0.0.0.0
将 daemonize on  替换成  daemonize yes
#3. 创建容器,设置端口映射
docker run -id --name redis2 -p 6379:6379 \
-v /usr/local/develop/docker-app/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/develop/docker-app/redis/data/:/data \
-v /var/log/redis.log:/usr/local/develop/docker-app/redis/log/redis.log \
redis 
#4. 使用工具连接redis

在这里插入图片描述

4.nginx

#1.在宿主机创建挂载容器的目录映射,创建目录用于存储数据信息
cd /usr/local/develop
mkdir docker-app
cd docker-app
mkdir nginx
cd nginx
#2.搜索nginx镜像
docker search nginx
#3..拉取nginx镜像
docker pull nginx
#4. 先创建一个简单的容器,设置端口映射
docker run -id --name nginx -p 80:80 nginx
#4.复制容器内的默认配置文件到本地
mkdir -p conf logs html
docker cp nginx:/etc/nginx/nginx.conf /usr/local/develop/docker-app/nginx/conf/nginx.conf
docker cp nginx:/var/log/nginx /usr/local/develop/docker-app/nginx/logs
docker cp nginx:/usr/share/nginx/html /usr/local/develop/docker-app/nginx/html
#5.删除之前创建的容器
docker stop nginx
docker rm nginx
#6.修改配置文件
vim conf/nginx.conf
#7.创建最终的容器,并指定映射的配置文件
docker run -id --name nginx -p 80:80 \
-v /usr/local/develop/docker-app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/develop/docker-app/nginx/logs:/var/log/nginx \
-v /usr/local/develop/docker-app/nginx/html:/usr/share/nginx/html \
nginx

#另外:挂载容器内的文件映射到本地
docker run -v /usr/local/develop/docker-app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx
docker run -v /usr/local/develop/docker-app/nginx/logs:/var/log/nginx nginx
docker run -v /usr/local/develop/docker-app/nginx/html:/usr/share/nginx/html nginx 

在这里插入图片描述

5.RocketMQ

#1.在宿主机创建挂载容器的目录映射,创建目录用于存储数据信息
cd /usr/local/develop
mkdir docker-app
cd docker-app
mkdir rocketmq
cd rocketmq
#2.搜索rocketmq镜像
docker search rocketmq
#3..拉取rocketmq镜像
docker pull rocketmqinc/rocketmq
docker pull pangliang/rocketmq-console-ng
#4.创建namesrv需要挂载的目录
mkdir -p /usr/local/develop/docker-app/rocketmq/namesrv/logs /usr/local/develop/docker-app/rocketmq/namesrv/store
#5.启动namesrv容器
docker run -d -p 9876:9876 --name rmqnamesrv \
  -v /usr/local/develop/docker-app/rocketmq/namesrv/logs:/root/logs \
  -v /usr/local/develop/docker-app/rocketmq/namesrv/store:/root/store \
  rocketmqinc/rocketmq:latest \
  sh mqnamesrv
#6.创建broker容器需要挂载的目录
mkdir -p  /usr/local/develop/docker-app/rocketmq/broker/logs \
/usr/local/develop/docker-app/rocketmq/broker/store \
/usr/local/develop/docker-app/rocketmq/conf
#7. 创建broker.conf文件
touch /usr/local/develop/docker-app/rocketmq/conf/broker.conf
cd conf
vim broker.conf
#添加下面的内容
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 192.168.231.130 #这里需要根据自己服务器IP替换
#8.启动broker容器
docker run -d -p 10911:10911 -p 10909:10909 --name rmqbroker --link rmqnamesrv:namesrv \
  -e "NAMESRV_ADDR=namesrv:9876" \
  -v /usr/local/develop/docker-app/rocketmq/broker/logs:/root/logs \
  -v /usr/local/develop/docker-app/rocketmq/broker/store:/root/store \
  -v /usr/local/develop/docker-app/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
  rocketmqinc/rocketmq:latest \
  sh mqbroker -n namesrv:9876
#9.创建RocketMQ-console可视化工具
docker run -d \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.231.130:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 8080:8080 \
pangliang/rocketmq-console-ng
#10. 查看启动状态
docker ps -a
#11.浏览器预览

在这里插入图片描述

6.Kafka和Zookeeper

#1.首先安装zookeeper
docker pull wurstmeister/zookeeper
#2.安装kafka
docker pull wurstmeister/kafka 
#3.启动zookeeper
docker run -d --name zookeeper -p 2181:2181 -e TZ="Asia/Shanghai" wurstmeister/zookeeper
#4.启动kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.231.130:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.231.130:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e TZ="Asia/Shanghai" wurstmeister/kafka
#5.进入kafka容器
docker exec -it kafka /bin/bash
#6.进入kafka的bin目录下
cd  /opt/kafka_2.13-2.8.1/bin
#7.创建一个新主题(test-kafka)来存储事件
./kafka-topics.sh --create --topic test-kafka --bootstrap-server localhost:9092
#8.测试消费消息:
./kafka-console-consumer.sh --topic test-kafka --from-beginning --bootstrap-server localhost:9092
#9.测试生产消息:
./kafka-console-producer.sh --topic test-kafka --bootstrap-server localhost:9092

7.ElasticSearch

#1.安装
docker pull elasticsearch:8.2.0
#2.启动
docker run -it elasticsearch:8.2.0 /bin/bash
#先简单启动 看一下我们要挂载一些什么样的目录,这个不是我们最终的启动命令。通过ls和pwd命令我们大概知道了es的关键目录大概是以下三个。
#存放配置相关的:/usr/share/elasticsearch/config
#存放数据相关的:/usr/share/elasticsearch/data
#存放插件相关的:/usr/share/elasticsearch/plugins
#3.退出容器
exit 或者 ctrl+c
#4.最终构建容器命令
docker run \
--name elasticsearch \
--privileged=true \
-p 9200:9200 \
-p 9300:9300 \
-v /usr/local/develop/docker-app/elasticsearch/config:/usr/share/elasticsearch/config \
-v /usr/local/develop/docker-app/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/develop/docker-app/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-d elasticsearch:8.2.0
--------------------------------------------------------------------------------------------------------------
#启动之后如果发现没成功启动容器,通过docker logs es看到以下错误,那么就是咋们自己创建的挂载目录可能权限不够高。
Exception in thread "main" java.nio.file.NoSuchFileException: /usr/share/elasticsearch/config/jvm.options
#给三个挂载目录进行chmod 777
chmod 777 /usr/local/develop/docker-app/elasticsearch/config
chmod 777 /usr/local/develop/docker-app/elasticsearch/data
chmod 777 /usr/local/develop/docker-app/elasticsearch/plugins
#直接先启动一个简单的es容器
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.2.0
#将容器里的config文件夹的东西拷贝到宿主机上
docker cp es:/usr/share/elasticsearch/config /usr/local/develop/docker-app/elasticsearch
#删除临时容器
docker stop es
docker rm -f es
#修改elasticsearch.yml文件,将true都改为false
vim /usr/local/develop/docker-app/elasticsearch/config/elasticsearch.yml
#重新启动elasticsearch
docker start elasticsearch

--------------------------------------------------------------------------------------------------------------
#添加新用户
#1.先进入容器
docker exec -it elasticsearch /bin/bash
#2.添加test用户
./bin/elasticsearch-users useradd test 
#3.赋角色权限: 这一步要执行,不然无法访问
./bin/elasticsearch-users roles -a superuser test (超级管理员角色)
./bin/elasticsearch-users roles -a kibana_system test (kibana的用户角色)

#给自己创建的用户修改密码
./bin/elasticsearch-users passwd test

#生成超级管理员elastic的密码,随机的密码
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
#如果忘记密码,重置elastic的密码
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
--------------------------------------------------------------------------------------------------------------
#给elasticsearch设置用户名和密码,elastic默认为超级管理员
#1.编辑挂载的配置文件
cd /usr/local/develop/docker-app/elasticsearch/config
vim elasticsearch.yml
#添加如下内容
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
#2.先启动es
docker start elasticsearch
#3.进入es
docker exec -it elasticsearch /bin/bash
#4.执行下面命令,会提示你如果确定开启密码的话,需要设置以下六种账户的密码,按y回车,然后密码都设置成elastic,账号也为elastic
./bin/elasticsearch-setup-passwords interactive
#5.完成以上的设置后,需要再次重启ES容器,重启后,输入ES的访问地址:http://192.168.231.130:9200发现已经提示让你输入账号密码了

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#elasticsearch.yml最终的样子如下:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
#开启跨域
http.cors.enabled: true
#所有人访问
http.cors.allow-origin: "*"
xpack.security.enabled: true
xpack.security.enrollment.enabled: true 
xpack.security.http.ssl:
  enabled: false 
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12

在这里插入图片描述

8.Kibana

#1.拉取镜像
docker pull kibana:8.2.0
#2.创建容器挂载的目录,并进入目录
mkdir /usr/local/develop/docker-app/kibana/config
cd config
#3.创建配置文件
vi kibana.yml
添加如下配置:
#设置Kibana映射端口
server.port: 5601
#设置网关地址
server.host: "0.0.0.0"
#设置Kibana实例对外展示的名称
server.name: "kibana"
#设置ES集群地址
elasticsearch.hosts: ["http://192.168.231.130:9200"]
#设置请求超时时长
elasticsearch.requestTimeout: 120000
#设置页面语言
i18n.locale: "zh-CN"
#设置es的普通用户的用户名密码,普通用户的创建步骤在第7条ElasticSearch中有介绍
elasticsearch.username: "test"
elasticsearch.password: "test"
----------------------------------------------------------------------------------------------------
#4.创建容器
docker run -d --network es_kibana --privileged=true \
--name kibana -p 5601:5601 \
-v /usr/local/develop/docker-app/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \
-e "I18N_LOCALE=zh-CN" \
kibana:8.2.0
#5.访问测试http://ip:5601

#生成超级管理员elastic的密码
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
#如果忘记密码,重置elastic的密码
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
#生成enrollment-token(目前只发现kibana登录需要使用)
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana

在这里插入图片描述

9.Nacos

#1.搜索可以使用的镜像
docker search nacos
#2.拉取镜像
docker pull nacos/nacos-server
#3.创建挂载目录
mkdir -p /usr/local/develop/docker-app/nacos/logs/   #新建logs目录
mkdir -p /usr/local/develop/docker-app/nacos/init.d/          
#4.配置配置文件
vim /usr/local/develop/docker-app/nacos/init.d/custom.properties 
#配置文件中添加
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.231.130:3306/nacos_config? characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true #这里需要修改端口
db.user=root #用户名
db.password=root #密码

nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true
--------------------------------------------------------------------------------------------------------------
#5.建库建表
创建数据库nacos_config,执行conf目录下的mysql-schema.sql文件
#6.运行nacos,创建nacos容器
docker run \
--name nacos -d \
-p 8848:8848 \
--privileged=true \
--restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-e PREFER_HOST_MODE=hostname \
-v /usr/local/develop/docker-app/nacos/logs:/home/nacos/logs \
-v /usr/local/develop/docker-app/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties \
nacos/nacos-server

#--restart=always 开机启动

#7.检查是否启动
docker ps
#8.访问地址 默认账号密码是nacos/nacos
http://ip:8848/nacos

在这里插入图片描述

10.Canal

# 安装和配置Canal
下面我们就开启mysql的主从同步机制,让Canal来模拟salve
# 1.开启MySQL主从
Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。
这里以之前用Docker运行的mysql为例:
## 1.1.开启binlog
打开mysql容器挂载的日志文件,我的在`/usr/local/develop/docker-app/mysql/conf`目录:
修改文件:
vi /usr/local/develop/docker-app/mysql/conf/my.cnf
添加内容:
log-bin=/var/lib/mysql/mysql-bin
binlog-do-db=redis_mult_cache
配置解读:
- `log-bin=/var/lib/mysql/mysql-bin`:设置binary log文件的存放地址和文件名,叫做mysql-bin,名字随便取
- `binlog-do-db=redis_mult_cache`:指定对哪个database记录binary log events,这里记录redis_mult_cache这个库

最终效果:
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000
log-bin=/var/lib/mysql/mysql-bin
binlog-do-db=redis_mult_cache
## 1.2.设置用户权限
接下来添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对redis_mult_cache这个库的操作权限。
在mysql控制台,或者Navicat中新建查询:
create user canal@'%' IDENTIFIED by 'canal';
GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT,SUPER ON *.* TO 'canal'@'%' identified by 'canal';
FLUSH PRIVILEGES;
重启mysql容器即可
docker restart mysql
测试设置是否成功:在mysql控制台,或者Navicat中,输入命令:
show master status;

# 2.安装Canal
## 2.1.创建网络
我们需要创建一个网络,将MySQL、Canal、MQ放到同一个Docker网络中:
docker network create mysql_canal
让mysql加入这个网络:
docker network connect mysql_canal mysql
## 2.3.安装Canal
将canal的镜像压缩包上传到虚拟机,然后通过命令导入:
docker load -i canal.tar
然后运行命令创建Canal容器:
docker run -p 11111:11111 --name canal \
-e canal.destinations=test \
-e canal.instance.master.address=mysql:3306  \
-e canal.instance.dbUsername=canal  \
-e canal.instance.dbPassword=canal  \
-e canal.instance.connectionCharset=UTF-8 \
-e canal.instance.tsdb.enable=true \
-e canal.instance.gtidon=false  \
-e canal.instance.filter.regex=redis_mult_cache\\..* \
--network mysql_canal \
-d canal/canal-server:latest
说明:
- `-p 11111:11111`:这是canal的默认监听端口
- `-e canal.destinations=test`:这是给canal集群起个名字
- `-e canal.instance.master.address=mysql:3306`:数据库地址和端口,如果不知道mysql容器地址,可以通过`docker inspect 容器id`来查看
- `-e canal.instance.dbUsername=canal`:数据库用户名
- `-e canal.instance.dbPassword=canal` :数据库密码
- `-e canal.instance.filter.regex=redis_mult_cache\\..*`:要监听redis_mult_cache库下所有的表

表名称监听支持的语法:
mysql 数据解析关注的表,Perl正则表达式.
多个正则之间以逗号(,)分隔,转义符需要双斜杠(\\) 
常见例子:
1.  所有表:.*   or  .*\\..*
2.  canal schema下所有表: canal\\..*
3.  canal下的以canal打头的表:canal\\.canal.*
4.  canal schema下的一张表:canal.test1
5.  多个规则组合使用然后以逗号隔开:canal\\..*,mysql.test1,mysql.test2 

在这里插入图片描述

11.MQTT

#1.新建目录
mkdir -p /usr/local/develop/docker-app/mqtt/config
mkdir -p /usr/local/develop/docker-app/mqtt/data
mkdir -p /usr/local/develop/docker-app/mqtt/log
#2.创建配置文件
#存放基本配置
touch /usr/local/develop/docker-app/mqtt/config/mosquitto.conf
#存放用户密码配置文件
touch /usr/local/develop/docker-app/mqtt/config/pwfile.conf
#日志目录
touch /usr/local/develop/docker-app/mqtt/log/mosquitto.log
#3.修改配置文件
vi /usr/local/develop/docker-app/mqtt/config/mosquitto.conf
#添加下面的内容,下面的所有路径,指向的都是docker的路径,不需要修改!!!:
```conf
persistence true
persistence_location /mosquitto/data
log_dest file /mosquitto/log/mosquitto.log
listener 1883
#协议模式,可以不指定
#protocol websockets
# 关闭匿名模式
allow_anonymous false
#指定密码文件
password_file /mosquitto/config/pwfile.conf
```
#4.修改文件权限
chmod -R 755 /usr/local/develop/docker-app/mqtt
chmod -R 777 /usr/local/develop/docker-app/mqtt/log #日志目录要最大权限
#5.启动命令
docker run -it --name=mqtt --privileged  -p 1883:1883 -p 9001:9001 \
-v /usr/local/develop/docker-app/mqtt/config/mosquitto.conf:/mosquitto/config/mosquitto.conf  \
-v /usr/local/develop/docker-app/mqtt/data:/mosquitto/data \
-v /usr/local/develop/docker-app/mqtt/log:/mosquitto/log \
-v /usr/local/develop/docker-app/mqtt/config/pwfile.conf:/mosquitto/config/pwfile.conf -d  \
eclipse-mosquitto 
#命令详解:
1883是应用的端口,9001是管理程序的端口。要将宿主机和容器之间的文件关系进行映射,
冒号前面的是宿主机配置,冒号后面是容器配置
比如:-p 1883:1883  前面是宿主机端口 ,后面是容器端口,因此需要在宿主机的防火墙中放开1883这个端口。其他配置都是类似,需要了解。

#好多网上的启动命令没有这一句话:-v /docker/mosquitto/config/pwfile.conf:/mosquitto/config/pwfile.conf
#就会报找不到文件的错误:Error: Unable to open log file /mosquitto/log/mosquitto.log for writing.
#一定记得把宿主机的文件目录和容器的目录映射起来,这样在启动的时候,就不会报错。

#6.账号密码修改,进入容器
docker exec -it mqtt sh
mosquitto_passwd -b /mosquitto/config/pwfile.conf yuetong yuetong  #设置账号密码
exit退出容器
#7.重启容器
docker restart mqtt
#8.客户端访问

在这里插入图片描述

未完待续~~~~

如果这份博客对大家有帮助,希望各位给南山寺夜雨一个免费的点赞👍作为鼓励,并评论收藏一下⭐,谢谢大家!!!
制作不易,如果大家有什么疑问或给南山寺夜雨的意见,欢迎评论区留言。
⭐⭐⭐如果有小伙伴需要本文中安装好了各种软件的虚拟机CentOS,私聊我获取哦~⭐⭐⭐

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值