常用中间件的安装脚本

安装脚本

基于Centos7.8系统环境下, 安装单节点的中间件:redis/rocketmq/mysql/elasticsearch/kibana/nacos

部署脚本如下:

#!/bin/bash

# 单机基本环境安装:redis/rocketmq/es/kibana/mysql
# java/git/maven

read -p "input ip:" addr

echo '-------------docker installing-------------'

yum -y remove docker-*
yum -y remove containerd*
rm -rf /var/lib/docker

yum list installed |grep docker
rpm -qa |grep docker


sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce-20.10.1 docker-ce-cli-20.10.1 containerd.io docker-compose-plugin

sudo systemctl start docker
sudo systemctl enable docker

echo '-------------docker installed-------------'

echo '--------------pulling image-------------'
echo 'pull mysql 8.0'
docker pull mysql/mysql-server:8.0

echo 'pull redis 6.0'
docker pull redis:6.0

echo 'pull rocket latest'
docker pull rocketmqinc/rocketmq

echo 'pull rmq console dashboard'
docker pull pangliang/rocketmq-console-ng

echo  'pull elastic'
docker network create elastic
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.12.1
docker pull docker.elastic.co/kibana/kibana:7.12.1

echo 'pull nacos'
docker pull nacos/nacos-server

echo '-------------- pull image finished -------------'

echo 'run mysql container'
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql/mysql-server:8.0

echo 'run redis container'
mkdir -p /usr/local/docker/redis/

echo -e 'bind 0.0.0.0\n
daemonize yes\n
protected-mode no\n' > /usr/local/docker/redis/redis.conf

docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v \
/usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d redis:6.0  \
redis-server /etc/redis/redis.conf

echo 'start rocketmq container'
mkdir -p  /docker/rocketmq/data/namesrv/logs   /docker/rocketmq/data/namesrv/store

docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv
echo 'roketmq namesrv success start '

mkdir -p  /docker/rocketmq/data/broker/logs   /docker/rocketmq/data/broker/store /docker/rocketmq/conf

echo -e 'brokerClusterName = DefaultCluster
      brokerName = broker-a
      #0表示Master,大于0表示不同的slave
      brokerId = 0
      #表示几点做消息删除动作,默认是凌晨4点
      deleteWhen = 04
      #在磁盘上保留消息的时长,单位是小时
      fileReservedTime = 48
      #有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
      brokerRole = ASYNC_MASTER
      #刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
      flushDiskType = ASYNC_FLUSH
      # 设置broker节点所在服务器的ip地址
      brokerIP1 = '${addr}'
      # 磁盘使用达到95%之后,生产者再写入消息会报错 CODE: 14 DESC: service not available now, maybe disk full
      diskMaxUsedSpaceRatio=95' > /docker/rocketmq/conf/broker.conf

docker run -d  \
--restart=always \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909 \
-v  /docker/rocketmq/data/broker/logs:/root/logs \
-v  /docker/rocketmq/data/broker/store:/root/store \
-v /docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq \
sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

echo 'run rmq dashboard'

docker run -d \
--restart=always \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=${addr}:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng

echo 'run elastic'
docker run -d --name es01-test --net elastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.12.1
docker run -d --name kib01-test --net elastic -p 5601:5601 -e "ELASTICSEARCH_HOSTS=http://es01-test:9200" docker.elastic.co/kibana/kibana:7.12.1

echo 'run nacos'
docker run --env MODE=standalone --name mynacos -d -p 8848:8848 docker.io/nacos/nacos-server

echo 'install jdk8'
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

echo 'install git'
yum install -y git

echo 'install maven'
yum install -y maven

echo 'update maven mirror'
echo '<?xml version="1.0" encoding="UTF-8"?>
      <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
          <mirrors>
              <mirror>
                  <id>ali-maven</id>
                  <mirrorOf>*</mirrorOf>
                  <name>ali mirror</name>
                  <url>https://maven.aliyun.com/repository/public</url>
              </mirror>
          </mirrors>
      </settings>' > /etc/maven/settings.xml

echo 'successful!'

echo 'install node 14.x'
curl -sL https://rpm.nodesource.com/setup_16.x | bash
sudo yum install -y nodejs
npm install -g cnpm --registry=https://registry.npm.taobao.org

echo "please run : CREATE USER demo@'%' IDENTIFIED BY 'demo@123';
GRANT ALL ON *.* TO 'demo'@'%'; flush privileges;"
docker exec -it mysql-test /bin/bash -c "mysql -uroot -p123456;"



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Python脚本运维中,中间件是一种常用的技术,用于处理请求和响应之间的逻辑。它可以在请求到达目标服务器之前或响应返回给客户端之前执行一些操作。下面是一个简单的示例,演示了如何使用Python脚本来实现中间件功能: ```python # 定义一个中间件类 class Middleware: def __init__(self, app): self.app = app def __call__(self, environ, start_response): # 在请求到达目标服务器之前执行的操作 # 可以在这里进行身份验证、日志记录等操作 # 调用下一个中间件或目标应用程序 response = self.app(environ, start_response) # 在响应返回给客户端之前执行的操作 # 可以在这里进行响应处理、添加头部信息等操作 return response # 定义一个简单的应用程序 def application(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain')] start_response(status, headers) return [b'Hello, World!'] # 创建中间件实例并将应用程序作为参数传递 app = Middleware(application) # 启动服务器并监听端口 # 这里使用的是Python内置的WSGI服务器 from wsgiref.simple_server import make_server server = make_server('localhost', 8000, app) server.serve_forever() ``` 这个示例中,我们定义了一个`Middleware`类,它接受一个应用程序作为参数,并在`__call__`方法中实现了中间件的逻辑。在`__call__`方法中,我们可以在请求到达目标服务器之前执行一些操作,然后调用下一个中间件或目标应用程序。在响应返回给客户端之前,我们也可以执行一些操作。 请注意,这只是一个简单的示例,实际中间件的实现可能更加复杂,具体取决于你的需求和应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一点博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值