# 听书软件环境安装 电商软件环境安装部署 # 一、环境准备 ## 1安装docker 环境安装: > yum -y install gcc-c++ 第一步:安装必要的一些系统工具 > yum install -y yum-utils device-mapper-persistent-data lvm2 第二步:添加软件源信息 > yum-config-manager --add-repo [http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo](http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo "http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo") 第三步:更新并安装Docker-CE > yum makecache fast > yum -y install docker-ce 第四步:开启Docker服务 > service docker start > systemctl enable docker 第五步:测试是否安装成功 > docker -v 第六步:配置镜像加速器 您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 > sudo mkdir -p /etc/docker 新建daemon.json文件内容如下: ```bash { "registry-mirrors":["https://docker.mirrors.ustc.edu.cn","http://hubmirror.c.163.com"] } ``` 以上镜像不能使用了,使用阿里云的镜像! [官方镜像加速 (aliyun.com)](https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.60743.0.i1) ![](assets/docker001.png) { "registry-mirrors":["https://q0awbeqk.mirror.aliyuncs.com"] } > sudo systemctl daemon-reload > sudo systemctl restart docker ## 2安装mysql 已安装或能访问忽略 第一步:拉取镜像 > docker pull mysql:8.0.29 第二步:启动 > docker run --name tingshu_mysql --restart=always -v /home/ljaer/mysql:/var/lib/mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=root -d mysql:8.0.29 第三步:测试mysql 进入容器: > docker exec -it gmalldocker\_mysql /bin/bash 登录mysql: mysql -u root -p root 如果顺利进入,安装成功 **修改时区**: ``` # 进入容器 docker exec -it tingshu_mysql /bin/bash # 下列方法 1~3 中任选其一即可: # 1.强制生成 Asia/Shanghai 时区文件软链接 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 2.Asia/Shanghai 软链接实际指向 PRC 文件,将其复制为 localtime 时区文件 cp /usr/share/zoneinfo/PRC /etc/localtime # 3.通过 tzselect 命令,可选择 Beijing、HongKong 城市时区 tzselect # 修改后查看当前容器时区 date -R Mon, 15 May 2023 23:05:49 +0800 # 连接 mysql 服务 mysql -uroot -p # 设置后查看 Mysql 时区配置属性。 show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | +------------------+--------+ ``` ## 3安装kafka (不用安装) 第一步:拉取zookeeper、kafka镜像 > docker pull wurstmeister/zookeeper > > docker pull wurstmeister/kafka 第二步:启动zookeeper、kafka > docker run -d --name zookeeper -p 2181:2181 -e TZ="Asia/Shanghai" --restart always wurstmeister/zookeeper > > docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.200.130:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.200.130:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -e TZ="Asia/Shanghai" wurstmeister/kafka 参数介绍: --name:容器名字 -p:端口号 KAFKA_BROKER_ID:该ID是集群的唯一标识 KAFKA_ADVERTISED_LISTENERS:kafka发布到zookeeper供客户端使用的服务地址。 KAFKA_ZOOKEEPER_CONNECT:zk的连接地址 KAFKA_LISTENERS:允许使用PLAINTEXT侦听器 第三步:进入kafka容器内部 ```sh docker exec -it kafka /bin/bash cd /opt/kafka_2.13-2.8.1/bin 通过生产者想topic 发送消息 ./kafka-console-producer.sh --broker-list 192.168.200.130:9092 --topic atguigu(topic名) 另外打开一个窗口 消费者消费消息 kafka-console-consumer.sh --bootstrap-server 192.168.200.130:9092 --topic atguigu ``` Kafka图形化管理工具kafdrop ```sh docker run -d --name kafkadrop \ -p 9093:9000 \ -e JVM_OPTS="-Xms32M -Xmx64M" \ -e KAFKA_BROKERCONNECT=192.168.200.6:9092 \ obsidiandynamics/kafdrop ``` 访问地址:http://192.168.200.6:9093/ ## 4安装redis 在Docker方式下部署Redis 7.0并设置用户名和密码,可以按照以下步骤进行操作: 1. 创建一个名为`redis.conf`的配置文件,并添加以下内容: ```conf mkdir -p /mydata/redis vim /mydata/redis/redis.conf 内容如下: requirepass your_password ``` 将`your_password`替换为你想要的密码。 2. 使用以下命令运行Redis容器: ```shell docker run -d --name my_redis -v /mydata/redis/redis.conf:/usr/local/etc/redis/redis.conf -p 6379:6379 redis:7.0.10 redis-server /usr/local/etc/redis/redis.conf ``` 这将创建一个名为`my_redis`的容器,将宿主机上的`redis.conf`文件挂载到容器内的`/usr/local/etc/redis/redis.conf`路径,并将容器的6379端口映射到宿主机的6379端口。 3. 现在你可以使用以下命令连接到Redis容器并进行身份验证: ```shell docker exec -it 容器id /bin/bash redis-cli -h localhost -p 6379 -a your_password 或 auth default your_password ``` 将`your_password`替换为之前设置的密码。 现在你已经成功地使用挂载配置文件的方式部署了Redis 7.0,并设置了用户名和密码。 ## 5安装nacos 已安装或能访问忽略 第一步:拉取镜像 > docker pull nacos/nacos-server:v2.1.1 第二步:启动 ```shell docker run -d \ -e MODE=standalone \ -e PREFER_HOST_MODE=hostname \ -e SPRING_DATASOURCE_PLATFORM=mysql \ -e MYSQL_SERVICE_HOST=192.168.200.6 \ -e MYSQL_SERVICE_PORT=3306 \ -e MYSQL_SERVICE_USER=root \ -e MYSQL_SERVICE_PASSWORD=root \ -e MYSQL_SERVICE_DB_NAME=nacos_config \ -p 8848:8848 \ -p 9848:9848 \ -p 9849:9849 \ --name nacos2.1.1 \ --restart=always \ nacos/nacos-server:v2.1.1 ``` ## 6安装sentinel(不用安装) 已安装或能访问忽略 第一步:拉取镜像 > docker pull bladex/sentinel-dashboard 第二步:启动 > docker run --name=gmalldocker\_sentinel-dashboard --restart=always -p 8858:8858 -d bladex/sentinel-dashboard:latest ## 7安装elasticsearch 已安装或能访问忽略 第一步:拉取镜像 > docker pull elasticsearch:8.5.0 第二步:启动 需要在宿主机建立:三个文件夹 > rm -rf /opt/elasticsearch > > mkdir -p /opt/elasticsearch/{config,plugins,data} > > 项配置中文分词器直接去github下载拷贝到plugins目录再重启即可 ```shell yum install -y unzip unzip elasticsearch-analysis-ik-8.5.0.zip -d ik-analyzer rm -rf elasticsearch-analysis-ik-8.5.0.zip ``` > 制作配置文件 ``` cat < /opt/elasticsearch/config/elasticsearch.yml xpack.security.enabled: false xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: false # 不配报错 xpack.security.enrollment.enabled: true http.host: 0.0.0.0 EOF ``` 授予权限 > chmod -R 777 /opt/elasticsearch 执行 ```纯文本 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \ --net elastic \ --restart=always \ -e "discovery.type=single-node" \ -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -v /opt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /opt/elasticsearch/data:/usr/share/elasticsearch/data \ -v /opt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \ -d elasticsearch:8.5.0 ``` 如果运行时提示elastic 未找到 执行这个命令 : docker network create elastic ``` # 重置下面两个密码,注意:需等待es启动 docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic -i # -i 表示自定义密码 给java客户端用的 docker exec -it elasticsearch bin/elasticsearch-reset-password -u kibana_system -i # 给 kibana 用的 用户名: elastic 密码可以使用: 111111 ``` 第三步:安装中文分词器 1. 下载elasticsearch-analysis-ik-8.5.0.zip 2. 上传到/mydata/elasticsearch/plugins 目录后,解压:unzip elasticsearch-analysis-ik-8.5.0.zip -d ik-analyzer **必须删除原来的压缩包elasticsearch-analysis-ik-8.5.0.zip** 3. 重启es:docker restart a24eb9941759 a24eb9941759:表示容器ID 运行时,需要改成自己的容器ID ## 8安装logstash 安装 logstash 第一步:拉取镜像 > docker pull logstash:8.5.0 第二步:需要提前在linux服务器上环境 /mydata/logstash/logstash.conf,内容如下 > mkdir -p /mydata/logstash ```json input { tcp { mode => "server" host => "0.0.0.0" port => 5044 codec => json_lines } } filter{ } output { elasticsearch { hosts => "192.168.200.6:9200" index => "tingshu-%{+YYYY.MM}" user => "elastic" password => "111111" } } ``` 第三步:创建容器 ```纯文本 docker run --name logstash -p 5044:5044 \ --net elastic \ --restart=always \ --link elasticsearch:es \ -v /mydata/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \ -d logstash:8.5.0 ``` ## 9安装kibana 第一步:拉取镜像 ``` docker pull kibana:8.5.0 ``` 第二步:启动 删除一些目录 ``` rm -rf /opt/kibana mkdir -p /opt/kibana/{config,data} ``` 创建配置文件 ```sh docker run --name kibana -p 5601:5601 -d kibana:8.5.0 cat < /opt/kibana/config/kibana.yml server.host: "0.0.0.0" # 不配报错 server.shutdownTimeout: "5s" elasticsearch.hosts: [ "http://elasticsearch:9200" ] elasticsearch.username: "kibana_system" # 不能用 elastic elasticsearch.password: "111111" i18n.locale: "zh-CN" EOF ``` 停止删除正在运行的容器 docker stop kibana && docker rm kibana 启动kibana ```sh sudo docker run --name kibana \ --net elastic \ -v /opt/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml \ -p 5601:5601 -d kibana:8.5.0 ``` 登录kibana ,注意需要使用elastic 用户登录不能使用 kibana_system 这个用户登录。 测试:在Kibana开发工具中,测试安装分词词库是否可以使用! ```json GET /_analyze { "analyzer": "ik_smart", "text": "我是中国人" } ``` ## 10安装zipkin 第一步:拉取镜像 > docker pull openzipkin/zipkin 第二步:启动 > docker run --name zipkin --restart=always -d -p 9411:9411 openzipkin/zipkin ## 11安装minio 已安装或能访问忽略 第一步:拉取镜像 > docker pull minio/minio 第二步:启动 ```纯文本 docker run \ -p 9000:9000 \ -p 9001:9001 \ --name=gmalldocker_minio \ -d --restart=always \ -e "MINIO_ROOT_USER=admin" \ -e "MINIO_ROOT_PASSWORD=admin123456" \ -v /home/data:/data \ -v /home/config:/root/.minio \ minio/minio server /data --console-address ":9001" ``` 浏览器访问:[http://IP:9001/minio/login,登录使用自定义账户密码admin/admin123456登录](http://IP:9001/minio/login,登录使用自定义账户密码admin/admin123456登录 "http://IP:9001/minio/login,登录使用自定义账户密码admin/admin123456登录") **注意**:文件上传时,需要调整一下linux 服务器的时间与windows 时间一致! > 第一步:安装ntp服务 > yum -y install ntp > 第二步:开启开机启动服务 > systemctl enable ntpd > 第三步:启动服务 > systemctl start ntpd > 第四步:更改时区 > timedatectl set-timezone Asia/Shanghai > 第五步:启用ntp同步 > timedatectl set-ntp yes > 第六步:同步时间 > ntpq -p ## 12安装在线Yapi 服务器 拉取镜像 > docker pull mongo:4.2.5 启动mongo > docker run -d --name tingshu_mongo --restart=always -p 27017:27017 -v /mydata/mongodb:/data/db mongo:4.2.5 获取Yapi 镜像 > docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi 初始化Yapi 数据库索引以及管理员账号 > docker run -it --rm --link tingshu_mongo:mongo --entrypoint npm --workdir /api/vendors registry.cn-hangzhou.aliyuncs.com/anoy/yapi run install-server ![](assets/image-20221128104310609_LxQ7RVSyLq.png) 启动Yapi 服务 > docker run -d --name yapi --restart=always --link tingshu_mongo:mongo --workdir /api/vendors -p 3000:3000 registry.cn-hangzhou.aliyuncs.com/anoy/yapi server/app.js 使用Yapi [http://192.168.200.6:3000](http://192.168.200.6:3000 "http://192.168.200.6:3000") 登录账号 admin@admin.com,密码 ymfe.org ## 13安装RabbitMQ 拉取镜像: ```shell #获取镜像 docker pull rabbitmq:3.12.0-management #新建目录 mkdir -p /mydata/rabbitmq/{log,data,plugins} #将 .erlang.cookie 文件的权限修改为只允许所有者访问 chmod 600 /mydata/rabbitmq/.erlang.cookie ``` 启动 Docker 容器 ```shell docker run -d --name rabbitmq \ --restart=always \ --privileged=true \ -v mq-plugins:/plugins \ -e RABBITMQ_DEFAULT_USER=admin \ -e RABBITMQ_DEFAULT_PASS=admin \ -p 5672:5672 \ -p 15672:15672 \ rabbitmq:3.12.0-management ``` **上传插件** 查看数据卷: ```sh docker volume inspect mq-plugins ``` ![image-20240720145850385](assets/image-20240720145850385.png) 接下来,将插件上传到这个目录。 **安装插件** 进入MQ容器内部来执行安装 执行时,请将其中的 `-it` 后面的`mq`替换为你自己的容器名. ``` docker exec -it rabbitmq bash ``` 进入容器内部后,执行下面命令开启插件: ```sh rabbitmq-plugins enable rabbitmq_delayed_message_exchange ``` 结果如下: ![](assets/image-20240720151519455.png) # 注意: 停止所有的容器 > docker stop \$(docker ps -aq) 删除所有的容器 > docker rm \$(docker ps -aq) \#删除所有的镜像 > docker rmi \$(docker images -q) 查询Docker中各容器占用内存情况: ``` docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" ```