史上最全的Linux常用软件安装教程【包含Docker安装】

史上最全的Linux常用软件安装教程【包含Docker安装】

@

目录1.系统版本2.已安装软件(1)常规方式安装的软件(2)docker安装的软件注意3.修改IP步骤4.Tips1.防火墙2.设置jar包开机自启动方式一(强烈推荐):service形式方式二:sh形式多服务同时启动/关闭3.编辑文件4.开机免密登录root5.设置禁止自动锁屏6.安装搜狗输入法7.环境变量配置汇总8.Docker常用命令9.升级系统内核10.Linux查看系统信息命令11.其他命令5.常规方式安装软件和启动步骤1.JDK82.Maven3.Tomcat4.MySQL5.Redis6.Zookeeper7.Kafka8.nginx9.Nacos10.Docker11.ElasticSearch12.Elasticsearch-head13.Kibana14.Node15.RocketMQ16.Grunt17.OpenResty18.Python19.MQTT6.Docker安装软件和启动步骤1.MySQL2.Tomcat3.Redis4.nginx5.RocketMQ(1)普通方式(2)docker-compose方式6.Kafka和Zookeeper7.ElasticSearch8.Kibana9.Nacos10.Canal11.MQTT未完待续~~~~

1.系统版本

环境版本: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

2.已安装软件

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

所有的软件都在/usr/local/develop目录下, 内部都保留了安装包

对于已经配置了环境变量path的,在任意位置都可以执行命令,不需要去特定的目录下

序号

软件

安装路径

版本信息

备注

1

JDK8

/usr/local/develop/jdk8

jdk-8u231-linux-x64.tar.gz

替换OpenJDK,并已配置JAVA_HOME和path

2

Maven

/usr/local/develop/maven

apache-maven-3.6.3-bin.tar.gz

已配置MAVEN_HOME和path

3

Tomcat

/usr/local/develop/tomcat

apache-tomcat-9.0.29.tar.gz

已配置path,默认端口8080

4

MySQL

/usr/local/develop/tomcat

mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

已修改编码UTF-8,账密root/root,默认端口3306

5

Redis

/usr/local/develop/redis

redis-6.2.4.tar.gz

已配置path,默认端口6379

6

Zookeeper

/usr/local/develop/zookeeper

apache-zookeeper-3.5.6-bin.tar.gz

已配置path,默认端口2181

7

Kafka

/usr/local/develop/kafka

kafka_2.12-2.2.1.tgz

已配置path,默认端口9092

8

nginx

/usr/local/develop/nginx

nginx-1.18.0.tar.gz

已配置path,默认端口80

9

Nacos

/usr/local/develop/nacos

nacos-server-2.2.3.tar.gz

默认端口8848

10

Docker

-

24.0.5

-

11

ElasticSearch

/usr/local/develop/elasticSearch

elasticsearch-7.4.0-linux-x86_64.tar.gz

不能以root账号启动访问端口:9200

12

Elasticsearch-head

/usr/local/develop/elasticsearch-head

elasticsearch-head-5.0.0.tar.gz

默认端口9100

13

Kibana

/usr/local/develop/kibana

kibana-7.4.0-linux-x86_64.tar.gz

不建议使用root账户启动,添加参数 –allow-root强制root账户启动访问端口:5601。已汉化

14

Node

/usr/local/develop/nodejs

node-v12.13.1-linux-x64.tar.xz

已配置path

15

RocketMQ

/usr/local/develop/rocketmq

rocketmq-all-5.1.3-bin-release.zip

已配置path,NameServer端口9876

16

Grunt

-

1.4.3

-

17

lrzsz

yum安装

-

从Windows端上传文件至Linux端命令rz从Linux端下载文件至Windows端命令sz

18

OpenResty

/usr/local/openresty

-

yum安装

19

Python

/usr/local/develop/python

Python-3.12.0.tgz

Python-3.12.0是解压包,python3.12.0是编译后的安装包

20

MQTT

/usr/local/develop/mqtt

mosquitto-1.4.10.tar.gz

端口:1883 账密:test/test

(2)docker安装的软件

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

序号

软件

挂载路径的目录映射

版本信息

备注

1

MySQL

/usr/local/develop/docker-app/mysql

5.7或8.0.27

端口:3306

2

Tomcat

/usr/local/develop/docker-app/tomcat

10.0.14

端口:8080

3

Redis

/usr/local/develop/docker-app/redis

6.2.6

端口:6379

4

nginx

/usr/local/develop/docker-app/nginx

1.21.5

端口:80

5

RocketMQ

/usr/local/develop/docker-app/rocketmq

4.4.0

端口:9876

6

Kafka

/usr/local/develop/docker-app/kafka

2.13-2.8.1

端口:2181

7

Zookeeper

/usr/local/develop/docker-app/zookeeper

2.13-2.8.1

端口:9092

8

ElasticSearch

/usr/local/develop/docker-app/elasticsearch

8.2.0

端口:9200超级管理员账密:elastic elastictest test

9

Kibana

/usr/local/develop/docker-app/kibana

8.2.0

端口:5601

10

Nacos

/usr/local/develop/docker-app/nacos

2.0.3

端口:8848

11

Canal

/usr/local/develop/docker-app/canal

latest

端口:11111

12

MQTT

/usr/local/develop/docker-app/mqtt

2.0.14

端口:1883 账密:test/test

注意

所有软件都是root账户安装的,操作的时候请使用root用户

本虚拟机默认IP地址是:192.168.231.130。需要将IP修改为192.168.你的VMNet8网段.130才能正常通讯,修改步骤如下:

3.修改IP步骤

确认VMNet8网卡网段

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

获取root权限

su root

# 输入root密码,输入的时候没有任何提示,输入完回车就可以了。

修改网卡配置文件

vi /etc/sysconfig/network-scripts/ifcfg-ens33

修改文件内容

快捷键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保存退出<分号要是英文状态下的,中文无效>

重启网络服务

systemctl restart network

查看IP是否修改成功

ifconfig

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

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

ping 你的宿主机IP

4.Tips

1.防火墙

1.CentOS:

#开放防火墙 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.Ubuntu:

#删除指定端口的规则:

sudo ufw delete allow

例如,要删除允许的端口 80 的规则:

sudo ufw delete allow 80

#删除指定规则:

sudo ufw delete

例如,要删除允许所有 ICMP 流量的规则:

sudo ufw delete allow icmp

#删除指定规则及端口:

#如果你想删除一条特定的规则,可以先列出当前的规则并找到规则的编号,然后使用 delete 命令删除它。比如,列出规则:

sudo ufw status numbered

#找到要删除的规则的编号,然后使用 delete 命令删除它:

sudo ufw delete

例如:sudo ufw delete 3

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

#6.重新加载系统管理守护进程 (systemd) 的配置文件

systemctl daemon-reload

此方法用于创建服务,可以使脚本在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

多服务同时启动/关闭

#1.编写启动脚本

sudo vim start_xxx_service.sh

#2.将下面的配置粘贴进去

```bash

#!/bin/bash

# 列出所有符合条件(XXX-*.service)的服务 $1代表第一列

services=$(systemctl list-unit-files | grep '^XXX-.*\.service' | awk '{print $1}')

# 启动/关闭每个服务 start/stop

for service in $services; do

# 检查服务状态

# --quiet选项确保systemctl只返回状态而不输出任何内容。如果服务未运行,systemctl is-active --quiet将返回非零状态码,因此!运算符表示条件为真。

if !systemctl is-active --quiet $service; then

# 如果服务未运行,则启动它

sudo systemctl start $service

fi

done

```

#3.设置执行权限

sudo chmod +x start_xxx_service.sh

#4.启动

./start_xxx_service.sh

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

#该设置针对的是Centos

#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

#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服务状态

systemctl enable docker # docker自启动

#最终确认docker是否是自启动:

#输出为 enabled 则为自启动,输出为 disabled 则不是自启动

systemctl is-enabled 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 rename 旧容器名 新容器名

--------------------------------------------------------------------------------------------------------------

#制作新的镜像(将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

#关闭自启

#容器关闭自启动:

docker update --restart=no

#取消所有容器自启动

docker update --restart=no $(docker ps -q)

#容器是否是自启动:

#输出 always 或者 unless-stopped,说明该容器被配置为自启动。如果返回no,则说明容器没有被配置为自启动。

docker inspect --format '{{ .HostConfig.RestartPolicy.Name }}'

--------------------------------------------------------------------------------------------------------------

#查看所有当前可用的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

10.Linux查看系统信息命令

#查看CPU的相关信息。

lscpu

#查看内存的使用情况,-h 参数是为了让信息更易读。

free -h

#查看磁盘的使用情况,-h 参数同样有用。

df -h

#查看块设备(例如磁盘和分区)。

lsblk

#查看磁盘分区表。

fdisk -l

#查看内核版本和系统架构。

uname -a

#查看系统的主机名和相关配置。

hostnamectl

#查看CentOS系统的版本信息。

cat /etc/*release

#查看详细的内存信息。

cat /proc/meminfo

#查看详细的CPU信息

cat /proc/cpuinfo

11.其他命令

#windows端口占用

#查看占用端口(9200)的pid

netstat -ano|findstr 8080

#杀死pid为18468的进程

taskkill /f /pid "18468"

#linux端口占用

#要查看特定端口的占用情况,例如查看端口 8080,可以使用:

sudo lsof -i :8080

#杀死PID为23612的进程,可以使用 kill 或 kill -9 命令,其中 -9 是一个更强制的终止信号

sudo kill 23612

sudo kill -9 23612

--------------------------------------------------------------------------------------------------------------

#java占用程序

ps -ef|grep java

#查看磁盘具体占用

df -h

#查看内存占用

free -h

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

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仓库,就是我刚才新建的文件夹

/usr/local/develop/maven/maven_local_repository

#6.配置为阿里云镜像地址

nexus-aliyun

central

Nexus aliyun

https://maven.aliyun.com/repository/public

#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

修改全局时区设置可能需要数据库服务器重启才能生效:

-- 查看当前时区设置

SELECT @@global.time_zone, @@session.time_zone;

-- 修改时区设置为 '+08:00',表示东八区

SET GLOBAL time_zone = '+08:00';

SET time_zone = '+08:00';

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.yum安装

#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

#1.2安装docker,需要虚拟机联网,安装yum工具

yum install -y yum-utils \

device-mapper-persistent-data \

lvm2 --skip-broken

#1.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

#1.4然后输入命令:docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

yum install -y docker-ce

#启动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

2.rpm安装

https://download.docker.com/1inux/centos/7/x86_64/stable/Packages/

找到最新的rpm包,然后:

yum -y install docker-ce-20.10.19-3.el7.x86_64.rpm

运行docker:

systemctl start docker

3.二进制安装

https://download.docker.com/linux/static/stable/x86_64/

#3.1找到最新的包下载,然后解压:

tar -zxvf docker-20.10.3.tgz

#3.2进入解压目录,将docker相关命令拷贝到 /usr/bin:

cp docker/* /usr/bin/

#3.3将docker加入系统服务使用systemctl控制:

vim /etc/systemd/system/docker.service

#3.4添加下面的内容

[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/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity

LimitNPROC=infinity

TimeoutStartSec=0

Delegate=yes

KillMode=process

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

#3.5添加执行权限

chmod +x /etc/systemd/system/docker.service

#3.6重载配置文件

systemctl daemon-reload

#3.7运行docker:

systemctl start docker

#3.8添加自启动

systemctl enable docker.service

注意:

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.4.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 test

sudo useradd -g test test

#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 test

然后进入到/etc/mosquitto/mosquitto.conf 将下面两个用户名和密码加上。

(3)连接测试

#启动

需要切换到test用户才能启动

su test

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,服务器地址这三项,连接

6.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=mysql5 \

-v $PWD/conf:/etc/mysql/conf.d \

-v $PWD/logs:/var/log \

-v $PWD/data:/var/lib/mysql \

-v $PWD/file:/var/lib/mysql-files \

-e MYSQL_ROOT_PASSWORD=root \

-e TZ=Asia/Shanghai \

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:/var/log**:将主机当前目录下的 logs 目录挂载到容器的 /var/log。日志目录

- **-v $PWD/data:/var/lib/mysql** :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录

- **-v $PWD/file:/var/lib/mysql-files** :将主机当前目录下的file目录挂载到容器的 /var/lib/mysql-files 。导出sql文件的默认位置

- **-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

----------------------------------------------------------------------------------------

#注意:

docker中安装了两个版本的MySQL,分别是5.7和8.0.27,都在/usr/local/develop/docker-app/mysql目录下

###mysql报错group by###

修改数据库配置文件my.cnf(永久生效)

mysql5的版本:在[mysqld]模块下新增一行配置:

sql-mode='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

mysql8的版本:在[mysqld]模块下新增一行配置:

sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"

#从数据库导出sql数据命令

SELECT *

INTO OUTFILE '/var/lib/mysql-files/file.csv'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

LINES TERMINATED BY '\n'

FROM 表名

WHERE DATE(timestamp) = '2024-03-15' AND TIME(`timestamp`) BETWEEN '08:00:00' and '09:00:00';

修改全局时区设置可能需要数据库服务器重启才能生效:

-- 查看当前时区设置

SELECT @@global.time_zone, @@session.time_zone;

-- 修改时区设置为 '+08:00',表示东八区

SET GLOBAL time_zone = '+08:00';

SET time_zone = '+08:00';

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:10.0.14

#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 redis -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 /usr/local/develop/docker-app/redis/log/redis.log:/var/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)普通方式

#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/logs /usr/local/develop/docker-app/rocketmq/store

#5.启动namesrv容器

docker run -d -p 9876:9876 --name rmqnamesrv \

-v /usr/local/develop/docker-app/rocketmq/logs:/home/rocketmq/logs \

-v /usr/local/develop/docker-app/rocketmq/store:/home/rocketmq/store \

rocketmq:4.4.0 \

sh mqnamesrv

#6.创建broker容器需要挂载的目录

mkdir /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/logs:/home/rocketmq/logs \

-v /usr/local/develop/docker-app/rocketmq/store:/home/rocketmq/store \

-v /usr/local/develop/docker-app/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \

rocketmq:4.4.0 \

sh mqbroker -n namesrv:9876

#9.创建RocketMQ-console可视化工具

docker run -d \

--name rmqconsole \

-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.浏览器预览

(2)docker-compose方式

#1.安装docker-compose

yum install docker-compose

#2.新建配置文件docker-compose.yml

cd /usr/local/develop/docker-app/rocketmq

vim docker-compose.yml

#3.加入下面的配置

```yml

version: '3'

services:

namesrv:

#通过docker images查看镜像名称

image: rocketmqinc/rocketmq

#容器起名

container_name: rocketmq-namesrv

#指定端口

ports:

- 9876:9876

#指定挂载路径

volumes:

- /home/test/develop/docker-app/rocketmq/logs:/home/rocketmq/logs

- /home/test/develop/docker-app/rocketmq/store:/home/rocketmq/store

#执行命令

command: sh mqnamesrv

broker:

image: rocketmqinc/rocketmq

container_name: rocketmq-broker

ports:

- 10909:10909

- 10911:10911

- 10912:10912

volumes:

- /home/test/develop/docker-app/rocketmq/logs:/home/rocketmq/logs

- /home/test/develop/docker-app/rocketmq/store:/home/rocketmq/store

- /home/test/develop/docker-app/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf

command: sh mqbroker -n namesrv:9876 -c /opt/rocketmq-4.4.0/conf/broker.conf

depends_on:

- namesrv

#下面的JAVA_HOME为容器内的路径

environment:

- JAVA_HOME=/usr/lib/jvm/jre

console:

image: styletang/rocketmq-console-ng

container_name: rocketmq-console

ports:

- 8080:8080

depends_on:

- namesrv

environment:

- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rocketmq-namesrv:9876

- Dcom.rocketmq.sendMessageWithVIPChannel=false

```

#4.在配置文件所在目录执行启动命令

docker-compose up -d #-d后台运行,可不加

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.复制容器内文件到宿主机

docker cp zookeeper:/opt/zookeeper-3.4.13/conf /home/test/develop/docker-app/zookeeper

docker cp zookeeper:/opt/zookeeper-3.4.13/data /home/test/develop/docker-app/zookeeper

#5.删除zookeeper

docker stop zookeeper

docker rm zookeeper

#6.创建最终的zookeeper

docker run -d --name zookeeper -p 2181:2181 \

-v /home/test/develop/docker-app/zookeeper/conf:/opt/zookeeper-3.4.13/conf \

-v /home/test/develop/docker-app/zookeeper/data:/opt/zookeeper-3.4.13/data \

-v /etc/localtime:/etc/localtime \

-e TZ="Asia/Shanghai" \

wurstmeister/zookeeper

#7.先简单启动kafka

docker run -d --name kafka -p 9092:9092 \

--link zookeeper:zookeeper \

-e KAFKA_BROKER_ID=0 \

-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.186.128:9092 \

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \

-e TZ="Asia/Shanghai" \

-v /etc/localtime:/etc/localtime \

wurstmeister/kafka

#8.复制容器内文件到宿主机

docker cp kafka:/opt/kafka_2.13-2.8.1/config /home/test/develop/docker-app/kafka

#9.删除kafka

docker stop kafka

docker rm kafka

#10.创建最终的kafka

docker run -d --name kafka -p 9092:9092 \

--link zookeeper:zookeeper \

-e KAFKA_BROKER_ID=0 \

-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.186.128:9092 \

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \

-e TZ="Asia/Shanghai" \

-v /etc/localtime:/etc/localtime \

-v /home/test/develop/docker-app/kafka/config:/opt/kafka_2.13-2.8.1/config \

-v /home/test/develop/docker-app/kafka/logs:/kafka \

wurstmeister/kafka

说明:

--link zookeeper:zookeeper: 连接到名为“zookeeper”的另一个Docker容器,并且在当前的容器中可以通过zookeeper这个别名来访问它。

-e KAFKA_BROKER_ID=0 在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181: 配置zookeeper管理kafka的路径

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.186.128:9092: 把kafka的地址端口注册给zookeeper,这里ip需要更改

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092: 配置kafka的监听端口

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

注意:

如果更改config中server.properties的配置,更改的配置是不会生效的,会被-e配置覆盖掉

#11.进入kafka容器

docker exec -it kafka /bin/bash

#12.进入kafka的bin目录下

cd /opt/kafka/bin

#13.创建一个新主题(test-kafka)来存储事件

./kafka-topics.sh --create --topic test-kafka --bootstrap-server localhost:9092

#14.测试消费消息:

./kafka-console-consumer.sh --topic test-kafka --from-beginning --bootstrap-server localhost:9092

#15.测试生产消息:

./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加入了自定义的网络network(es_kibana),就用network里的地址

#可以通过命令(docker inspect 容器id)查看,Networks->IPAddress地址就是

elasticsearch.hosts: ["http://192.168.231.130:9200"]

#设置请求超时时长

elasticsearch.requestTimeout: 120000

#设置页面语言

i18n.locale: "zh-CN"

#设置es的普通用户的用户名密码,普通用户的创建步骤在第7条ElasticSearch中有介绍

elasticsearch.username: "test"

elasticsearch.password: "test"

xpack.monitoring.ui.container.elasticsearch.enabled: true

----------------------------------------------------------------------------------------------------

#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

在docker中安装nacos,很详细_docker安装nacos-CSDN博客

#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/data

mkdir -p /usr/local/develop/docker-app/nacos/conf

#4.先简单启动nacos容器

docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server

#5.复制容器的相关文件到挂载目录

docker cp nacos:/home/nacos/conf/ /usr/local/develop/docker-app/conf

docker cp nacos:/home/nacos/data/ /usr/local/develop/docker-app/data

docker cp nacos:/home/nacos/logs/ /usr/local/develop/docker-app/logs

#6.建库建表

创建数据库nacos_config,执行conf目录下的mysql-schema.sql文件

#7.修改conf下的配置文件application.properties,先备份在修改

```properties

# spring

server.servlet.contextPath=/nacos

server.contextPath=/nacos

server.port=8848

# server.tomcat.accesslog.max-days=30

server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

server.tomcat.accesslog.enabled=false

# default current work dir

# server.tomcat.basedir=file:.

#*************** Config Module Related Configurations ***************#

### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.

spring.datasource.platform=mysql

spring.sql.init.platform=mysql

nacos.cmdb.dumpTaskInterval=3600

nacos.cmdb.eventTaskInterval=10

nacos.cmdb.labelTaskInterval=300

nacos.cmdb.loadDataAtStart=false

# 这里必须为公网或服务器内网地址,我这里是服务器的内网地址,容器内部没有mysql,绝对不能使用 127.0.0.1和localhost

# 如果nacos启动失败,Nacos Server did not start because dumpservice bean construction failure : No DataSource set

# 加上 &serverTimezone=UTC ,再不行就加上 &allowPublicKeyRetrieval=true

# 将connectTimeout 和 socketTimeout 分别加个0,避免出现超时异常

db.num=1

db.url.0=jdbc:mysql://192.168.186.128:3306/huishi-config?characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC

db.user.0=root

db.password.0=root

### The auth system to use, currently only 'nacos' and 'ldap' is supported:

# 鉴权类型,默认为nacos

nacos.core.auth.system.type=nacos

# 是否开启鉴权功能,默认为false

nacos.core.auth.enabled=false

# Base64加密前密码 TcmxJw05k$-_zcx.)8EtFC^D^F1W!IPr

# Base64加密后密码 VGNteEp3MDVrJC1femN4Lik4RXRGQ15EXkYxVyFJUHI=

# 加密网站:https://www.qqxiuzi.cn/bianma/base64.htm

# 自定义密钥,在自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。同nacos.core.auth.plugin.nacos.token.secret.key

nacos.core.auth.default.token.secret.key=VGNteEp3MDVrJC1femN4Lik4RXRGQ15EXkYxVyFJUHI=

### worked when nacos.core.auth.system.type=nacos

### The token expiration in seconds:

# 用户登陆临时accessToken的过期时间,默认18000

nacos.core.auth.plugin.nacos.token.expire.seconds=18000

### The default token:

# 默认鉴权插件用于生成用户登陆临时accessToken所使用的密钥,在2.2.1后无默认值,必须执行此变更,否则无法启动;其他版本为建议设置。

nacos.core.auth.plugin.nacos.token.secret.key=VGNteEp3MDVrJC1femN4Lik4RXRGQ15EXkYxVyFJUHI=

### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.

nacos.core.auth.caching.enabled=false

# 关闭使用user-agent判断服务端请求并放行鉴权的功能

nacos.core.auth.enable.userAgentAuthWhite=false

# 用于替换useragent白名单的身份识别key,不可为空,2.2.1后无默认值,必须执行此变更,否则无法启动

nacos.core.auth.server.identity.key=nacosKey

# 用于替换useragent白名单的身份识别value,不可为空,2.2.1后无默认值,必须执行此变更,否则无法启动

nacos.core.auth.server.identity.value=nacosValue

## spring security config

### turn off security

nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**

# metrics for elastic search

management.metrics.export.elastic.enabled=false

management.metrics.export.influx.enabled=false

nacos.naming.distro.taskDispatchThreadCount=10

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

```

#8.删除先前创建的nacos容器

docker stop nacos

docker rm nacos

#9.运行nacos,创建最终的nacos容器

docker run \

--name nacos -d \

-p 8848:8848 \

-p 7848:7848 \

-p 9848:9848 \

-p 9849:9849 \

--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/conf:/home/nacos/conf \

-v /usr/local/develop/docker-app/nacos/logs:/home/nacos/logs \

-v /usr/local/develop/docker-app/nacos/data:/home/nacos/data \

nacos/nacos-server

#10.检查是否启动

docker ps

#11.访问地址 默认账号密码是nacos/nacos

http://ip:8848/nacos

注意:服务注册时报错 Client not connected, current status:STARTING

该错误明确地指向了客户端与服务器之间的连接障碍。为了确保流畅的连接,两者之间的通信参数和网络环境都需要满足特定的条件

在网上查了一堆解决方案,网络、服务器状态、防火墙、日志分析,都没有发现问题

之后发现Nacos2.0版本相比1.X新增了gRPC的通信方式,因此需要增加3个端口。新增端口是在配置的主端口(server.port)基础上,进行一定偏移量自动生成。

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: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 test test #设置账号密码

exit退出容器

#7.重启容器

docker restart mqtt

#8.客户端访问

未完待续~~~~

如果这份博客对大家有帮助,希望各位给南山寺夜雨一个免费的点赞👍作为鼓励,并评论收藏一下⭐,谢谢大家!!!

制作不易,如果大家有什么疑问或给南山寺夜雨的意见,欢迎评论区留言。

⭐⭐⭐如果有小伙伴需要本文中安装好了各种软件的虚拟机CentOS,私聊我获取哦~⭐⭐⭐

相关推荐

列的成语
365bet在线体育

列的成语

📅 07-11 👁️ 6723
日本裁判执法揭幕战
365bet新手开户指南

日本裁判执法揭幕战

📅 08-14 👁️ 333
王者荣耀QQ区与微信区的划分及查询方法,王者荣耀手q区有哪些
汽车后挡风玻璃膜起泡?4大原因和解决方法
365被限制了让提款

汽车后挡风玻璃膜起泡?4大原因和解决方法

📅 08-13 👁️ 5441
寰的解释
365bet在线体育

寰的解释

📅 07-26 👁️ 7077
少帅中喜顺为什么走了
365被限制了让提款

少帅中喜顺为什么走了

📅 07-13 👁️ 2801