java + mysql +redis + minio + nginx + rocketmq + rocketmq-console + elasticsearch + kibana + logstash 一键部署可拆分

#!/bin/bash## 作者:陈步云## 微信:15648907522###### 将基本环境yum安装的包放入如下目录## Basic-package/basic-rpm###### 将基础环境服务包放入如下目录## Basic-package######function 0-basic-install () {## 基础环境安装cd Basic-package/basic-rpm || exityum -y install *.rpmsystemctl disable firewalldsystemctl stop firewalld}function 1-java-install () {## 作者:陈步云## 微信:15648907522if [ "$(java -version)" ]; thenecho "command \"java\" exists on system"elseif [ -d "/cby/backend/base-service/" ]; thenecho "directory \"/cby/backend/base-service/\" exists"else## 安装Java程序cd Basic-package || exitmkdir -p cby/backend/base-service/cp jdk-8u102-linux-x64.tar.gz cby/backend/base-service/cd cby/backend/base-service/ || exittar -xf jdk-8u102-linux-x64.tar.gzmv cby/backend/base-service/jdk1.8.0_102/ cby/backend/base-service/jdk8/fiif [ "$(grep "JAVA_HOME=/usr/local/jdk1.8.0_151" etc/profile)" ]; thenecho 'JAVA_HOME in profile'else## 添加Java环境变量echo 'export JAVA_HOME=/cby/backend/base-service/jdk8' >> etc/profileecho -e 'export PATH=$PATH:$JAVA_HOME/bin' >> etc/profileecho -e 'export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> etc/profilesource etc/profilefifiecho "java version:"java -version}function 2-mysql-install () {## 作者:陈步云## 微信:15648907522if [ "$(mysql -V)" ]; thenecho "command \"mysql\" exists on system"elsecd Basic-package || exitif [ -x "mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar" ]; thenecho "file \"mysql-5.7.34-1.el7.x86_64.rpm-bundle.tar\" is executable"else## 解压安装包的文件tar xvf mysql-5.7.34-1.el7.x86_64.rpm-bundle.taryum install ./*.rpm -yfi## 启动服务,并开机自启if [ "$(mysql -V)" ]; thensystemctl start mysqldsystemctl enable mysqldfi## 查看MySQL默认密码echo 'mysql password:'sudo grep 'temporary password' var/log/mysqld.log | awk '{print $11}'## 默认密码获取mysqlpssswd=$(sudo grep 'temporary password' var/log/mysqld.log | awk '{print $11}')## 一系列授权操作mysql -u root -p$mysqlpssswd -e "set global validate_password_length=0;" --connect-expired-passwordmysql -u root -p$mysqlpssswd -e "set global validate_password_policy=0;" --connect-expired-passwordmysql -u root -p$mysqlpssswd -e "set password for 'root'@'localhost' = password('123456');" --connect-expired-passwordmysql -u root -p$mysqlpssswd -e "use mysql;" --connect-expired-passwordmysql -u root -p$mysqlpssswd -e "grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;" --connect-expired-passwordmysql -u root -p123456 -e "flush privileges;" --connect-expired-passwordfi}function 3-redis-install () {## 作者:陈步云## 微信:15648907522yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-develif [ "$(redis-server --version)" ]; thenecho "command \"redis\" exists on system"elseif [ -d "/cby/backend/base-service/" ]; thenecho "directory \"/cby/backend/base-service/\" exists"elsemkdir -p cby/backend/base-service/fiif [ -d "/cby/backend/base-service/" ]; then## 解压安装服务cd Basic-package || exitcp redis-5.0.12.tar.gz cby/backend/base-service/cd cby/backend/base-service/ || exittar xf redis-5.0.12.tar.gzmv cby/backend/base-service/redis-5.0.12/ cby/backend/base-service/redis/elsemkdir -p cby/backend/base-service/fiif [ -d "/cby/backend/base-service/redis/" ]; thencd cby/backend/base-service/redis/ || exit## 写入配置文件cat >redis.conf<<EOFbind 0.0.0.0protected-mode nodaemonize yesEOF## 编译此服务make -j "$(cat proc/cpuinfo |grep "processor"|wc -l)"fiif [ -d "/cby/backend/base-service/redis/src/" ]; thencd cby/backend/base-service/redis/src/ || exitmake installfi## 进入安装目录后启动服务cd cby/backend/base-service/redis/ || exitredis-server redis.conffi}function 4-minio-install () {#!/bin/bash## 作者:陈步云## 微信:15648907522if [ "$(/cby/backend/base-service/minio/minio -v)" ]; thenecho "command \"minio\" exists on system"elseif [ -d "/cby/backend/base-service/minio/" ]; thenecho "directory \"/cby/backend/base-service/minio/\" exists"else## 添加执行权限并将服务拷贝到目的地cd Basic-package || exitmkdir -p cby/backend/base-service/minio/cp minio cby/backend/base-service/minio/cd cby/backend/base-service/minio/ || exitchmod +x miniofiif [ "$(grep "MINIO_ACCESS_KEY" etc/profile)" ]; thenecho 'MINIO_ACCESS_KEY in profile'else## 将账号密码写入环境变量echo -e 'export MINIO_ACCESS_KEY=minio' >> etc/profileecho -e 'export MINIO_SECRET_KEY=thinker@123' >> etc/profilesource etc/profilefiif [ -d "/cby/backend/base-service/minio/data" ]; thenecho "directory \"/cby/backend/base-service/minio/data\" exists"elsemkdir -p cby/backend/base-service/minio/datafiif [ -x "/cby/backend/base-service/minio/minio" ]; thenecho "file \"/cby/backend/base-service/minio/minio\" is executable"source etc/profilenohup cby/backend/base-service/minio/minio server --address 0.0.0.0:9000 cby/backend/base-service/minio/data > minio.log 2>&1 &fifi}function 5-nginx-install () {## 作者:陈步云## 微信:15648907522if [ "$(/cby/backend/base-service/nginx/sbin/nginx -v)" ]; thenecho "command \"nginx\" exists on system"elseif [ -d "/cby/backend/base-service/" ]; thenecho "directory \"/cby/backend/base-service/\" exists"elsemkdir -p cby/backend/base-service/fiif [ -d "/cby/backend/base-service/nginx-1.18.0/" ]; thenecho "directory \"/cby/backend/base-service/nginx-1.18.0/\" exists"else## 解压所需包并安装所需依赖cd Basic-package || exitcp nginx-1.18.0.tar.gz cby/backend/base-service/cd cby/backend/base-service/ || exittar -zxf nginx-1.18.0.tar.gzyum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-develfiif [ -d "/cby/backend/base-service/nginx" ]; thenecho "directory \"/cby/backend/base-service/nginx\" exists"elsemkdir -p cby/backend/base-service/nginxfiif [ -d "/cby/backend/base-service/nginx-1.18.0/" ]; then## Nginx编译echo "directory \"/cby/backend/base-service/nginx-1.18.0/\" exists"cd cby/backend/base-service/nginx-1.18.0/ || exit./configure --prefix=/cby/backend/base-service/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_modulemake -j "$(cat proc/cpuinfo |grep "processor"|wc -l)"make installelseexit 1fiif [ "$(/cby/backend/base-service/nginx/sbin/nginx -v)" ]; thenecho "command \"nginx\" exists on system"echo 'nginx version is :'cby/backend/base-service/nginx/sbin/nginx -vfifi}function 6-rocketmq-install () {## 作者:陈步云## 微信:15648907522if [ "$(ls cby/backend/base-service/rocketmq/startup.sh)" ]; thenecho "command \"rocketmq\" exists on system"elseif [ -d "/cby/backend/base-service/" ]; thenecho "directory \"/cby/backend/base-service/\" exists"elsemkdir -p cby/backend/base-service/fiif [ -d "/cby/backend/base-service/package/rocketmq/" ]; thenecho "directory \"/cby/backend/base-service/package/rocketmq/\" exists"elsemkdir -p cby/backend/base-service/package/rocketmq/fiif [ -d "/cby/backend/base-service/rocketmq/" ]; thenecho "directory \"/cby/backend/base-service/rocketmq/\" exists"elsecd Basic-package || exityum -y install unzipcp -r rocketmq/ cby/backend/base-service/package/cd cby/backend/base-service/package/rocketmq/ || exitunzip rocketmq-all-4.5.2-bin-release.zipmv rocketmq-all-4.5.2-bin-release/ cby/backend/base-service/rocketmq/cp *.sh cby/backend/base-service/rocketmq/cd cby/backend/base-service/rocketmq/ || exitsh cby/backend/base-service/rocketmq/startup.shfi## 测试消息if [ -x "/cby/backend/base-service/rocketmq/bin/tools.sh" ]; thenecho "file \"/cby/backend/base-service/rocketmq/bin/tools.sh\" is executable"echo '发送测试消息'bash cby/backend/base-service/rocketmq/bin/tools.sh cby/backend/base-service/rocketmq/org.apache.rocketmq.example.quickstart.Producerecho '接受测试消息'bash cby/backend/base-service/rocketmq/bin/tools.sh cby/backend/base-service/rocketmq/org.apache.rocketmq.example.quickstart.Consumerfifi}function 7-rocketmq-console-install () {## 作者:陈步云## 微信:15648907522if [ "$(ls cby/backend/base-service/rocketmq-console/startup.sh)" ]; thenecho "command \"rocketmq-console\" exists on system"elseif [ -d "/cby/backend/base-service/" ]; thenecho "directory \"/cby/backend/base-service/\" exists"elsemkdir -p cby/backend/base-service/fiif [ -d "/cby/backend/base-service/rocketmq-console" ]; thenecho "directory \"/cby/backend/base-service/rocketmq-console\" exists"else## 将所需包拷贝过去并启动cd Basic-package || exitcp -r rocketmq-console/ cby/backend/base-service/rocketmq-consolecd cby/backend/base-service/rocketmq-console/ || exitsh startup.shfifi}function 8-Elasticsearch-install () {## 作者:陈步云## 微信:15648907522if [ "$(ls openes/elasticsearch)" ]; thenecho "command \"elasticsearch\" exists on system"else## 修改一些配置cat >>/etc/security/limits.conf<<EOF## 添加以下内容* soft nofile 65536* hard nofile 131072* soft nproc 4096* hard nproc 4096EOFcat >"$(ls etc/security/limits.d/*.conf)"<<EOF# Default limit for number of user's processes to prevent# accidental fork bombs.# See rhbz #432903 for reasoning.* soft nproc 4096root soft nproc unlimitedEOFcat >>/etc/sysctl.conf<<EOFvm.max_map_count=655360EOFif [ -d "/openes/" ]; thenecho "directory \"/openes/\" exists"elsecd Basic-package || exitmkdir -p openes/## 创建目录后将安装包拷贝过去cp elasticsearch-7.13.2-linux-x86_64.tar.gz openes/## 添加用户并设置密码useradd openesecho "es" | passwd --stdin openeschown -R openes:openes openes/sysctl -psu - openes <<!cd openestar xf elasticsearch-7.13.2-linux-x86_64.tar.gzmv elasticsearch-7.13.2/ elasticsearch/if [ -d "/openes/es_repo/data" ]; thenecho "directory \"/openes/es_repo/data\" exists"elsemkdir -p openes/es_repo/datafiif [ -d "/openes/es_repo/logs" ]; thenecho "directory \"/openes/es_repo/logs\" exists"elsemkdir -p openes/es_repo/logsficat >>/openes/elasticsearch/config/elasticsearch.yml<<EOF## 修改以下配置node.name: node-1## 数据目录位置path.data: openes/es_repo/data## 日志目录位置path.logs: openes/es_repo/logscluster.initial_master_nodes: ["node-1"]## 绑定到0.0.0.0,允许任何ip来访问network.host: 0.0.0.0EOFopenes/elasticsearch/bin/elasticsearch -d!fisleep 20scurl -I http://127.0.0.1:9200/fi}function 9-Kibana-install () {## 作者:陈步云## 微信:15648907522if [ "$(ls /openes/kibana)" ]; thenecho "command \"elasticsearch\" exists on system"elsecd /Basic-package || exitmkdir -p /openes/## 创建目录后将安装包拷贝过去## 并赋予权限cp -r kibana/ /openes/package/chown -R openes:openes /openes/su - openes <<!cd /openes/package/tar xf kibana-7.13.2-linux-x86_64.tar.gzmv kibana-7.13.2-linux-x86_64/ /openes/kibana/mv *.sh /openes/kibana/cat >>/openes/kibana/config/kibana.yml<<EOF## 修改以下配置server.port: 5601server.host: "0.0.0.0"elasticsearch.hosts: ["http://127.0.0.1:9200"]kibana.index: ".kibana"i18n.locale: "zh-CN"EOFcd /openes/kibana/sh startup.sh!sleep 20s## 测试验证curl -I http://127.0.0.1:5601/fi}function 10-Logstash-install () {## 作者:陈步云## 微信:15648907522if [ "$(ls /openes/logstash)" ]; thenecho "command \"logstash\" exists on system"elsecd /Basic-package || exitmkdir -p /openes/## 创建目录后将安装包拷贝过去## 并赋予权限cp logstash-7.13.2-linux-x86_64.tar.gz /openes/chown -R openes:openes /openes/## 切换用户在另一个用户中执行su - openes <<!cd /openes/tar xf logstash-7.13.2-linux-x86_64.tar.gzmv logstash-7.13.2/ /openes/logstash/if [ -d "/openes/es_repo/data" ]; thenecho "directory \"/openes/es_repo/data\" exists"elsemkdir -p /openes/es_repo/datafiif [ -d "/openes/es_repo/logs" ]; thenecho "directory \"/openes/es_repo/logs\" exists"elsemkdir -p /openes/es_repo/logsficat >>/openes/logstash/config/logstash.yml<<EOF## 修改以下配置path.data: /openes/logstash_repo/datapath.logs: /openes/logstash_repo/logsEOFcat >/openes/logstash/config/logstash-data-govern.conf<<EOF## Sample Logstash configuration for creating a simple## tcp -> Logstash -> Elasticsearch pipeline.input {tcp {mode => "server"host => "0.0.0.0"port => 4560codec => json_lines}}output {elasticsearch {hosts => ["http://127.0.0.1:9200"]index => "data-govern-%{+YYYY.MM.dd}"}}EOFcd /openes/logstash/ || exitchown -R openes:openes /openes/source /etc/profilenohup ./bin/logstash -f config/logstash-data-govern.conf > logstash.log 2>&1 &!"ps -aux|grep logstash"fi}0-basic-install1-java-install2-mysql-install3-redis-install4-minio-install5-nginx-install6-rocketmq-install7-rocketmq-console-install8-Elasticsearch-install9-Kibana-install10-Logstash-install

文章转载自Linux运维交流社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




