#! /bin/bash
echo "java环境初始化开始"
#功能描述: Centos8.5系统自动初始化脚本
#自动配置:IP地址\Yum源\docer\docker-compose v2.7.0\ZSH\Portainer\Cockpit\zabbix-agent2\chronyd
#脚本执行方法
#  1.刚安装完的系统最好重启一下, 如果是虚拟机的一定要重启!!! 
#  2.删除所有#开头的注释, vim打开本文件光标停在首行并执行"set ff=unix"回车一直过滤到最后一行,保存退出!
#  3.执行命令"bash 01Auto_default_v1.5.sh"
#程序: 01Auto_default_v1.5.sh
#日期: 2022-8-25
#制作人: zl

#配置网卡IP地址
#nmcli con modify eth0 connection.autoconnect yes
#nmcli con modify eth0 ipv4.address 192.168.1.7/24
#nmcli con modify eth0 ipv4.method manual
#nmcli con modify eth0 ipv4.gateway 192.168.1.1
#nmcli con modify eth0 ipv4.dns "114.114.114.114 8.8.8.8"
#nmcli c reload
#nmcli c down eth0
#nmcli c up eth0
#nmcli d reapply eth0
#systemctl restart NetworkManager

#配置sshd和修改端口号为2538并添加进selinux和firewalld中
echo "Port 22">>/etc/ssh/sshd_config
echo "Port 8338">>/etc/ssh/sshd_config
echo "ListenAddress 0.0.0.0:22">>/etc/ssh/sshd_config
echo "ListenAddress 0.0.0.0:2538">>/etc/ssh/sshd_config
echo "Protocol 2">>/etc/ssh/sshd_config
echo "HostKey /etc/ssh/ssh_host_rsa_key">>/etc/ssh/sshd_config
echo "PermitRootLogin yes">>/etc/ssh/sshd_config
echo "StrictModes yes">>/etc/ssh/sshd_config
echo "MaxAuthTries 5">>/etc/ssh/sshd_config
echo "MaxSessions 3">>/etc/ssh/sshd_config
echo "PasswordAuthentication yes">>/etc/ssh/sshd_config
echo "AllowUsers root baiinfo">>/etc/ssh/sshd_config
echo "PermitEmptyPasswords no">>/etc/ssh/sshd_config
dnf install policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 2538
systemctl restart sshd
firewall-cmd --permanent --add-port=2538/tcp --zone=public
firewall-cmd --reload

#配置dnf源, 可以自行更换为阿里等公共源, 这里用的是私Yum库
mkdir -p /etc/yum.repos.d/backup && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
curl http://192.168.1.139:22538/os/x86_64/centos8.repo -o /etc/yum.repos.d/centos8.repo
dnf clean all && dnf makecache
dnf install -y mtr vim bash-completion

#配置docker和docker-compose
dnf erase -y podman buildah
dnf remove docker*
rm -fr /var/lib/docker/
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
systemctl daemon-reload
dnf clean all && dnf makecache
dnf install -y docker-ce
systemctl start docker
systemctl enable docker
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.7.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
#docker-compose version && docker version
cat >/etc/docker/daemon.json<<DD
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"2"},
  "bip":"10.10.136.1/24"
}
DD
systemctl daemon-reload
systemctl restart docker

#配置Portainer管理器, 访问URL: https://local_ip:9443
docker image load -i ./Portainer-CN/6053537portainer-celatest.tar
#docker pull 6053537/portainer-ce (在线安装方式)
mkdir -p /data/Portainer_data/
docker run -d -p 8000:8000 -p 9443:9443 --name portainer \
    --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /data/Portainer_data/:/data \
    6053537/portainer-ce

#配置cockpit系统运维工具,访问URL: https://local_IP:9090
dnf install -y cockpit
systemctl enable --now cockpit.socket
firewall-cmd --permanent --zone=public --add-service=cockpit
firewall-cmd --reload

#配置Zabbix-Agent端, Zabbix服务端为192.168.25.38, 如果有server=127.0.0.1一定要注销
rpm -ivh ./zabbix/zabbix-agent-6.2.3-release1.el8.x86_64.rpm
sed -i '/Server=/d' /etc/zabbix/zabbix_agentd.conf
sed -i '/ServerActive=/d' /etc/zabbix/zabbix_agentd.conf 
sed -i '/Hostname=/d' /etc/zabbix/zabbix_agentd.conf
echo "Server=192.168.25.38">>/etc/zabbix/zabbix_agentd.conf 
echo "Hostname=$(hostname)">>/etc/zabbix/zabbix_agentd.conf
systemctl enable --now zabbix-agent
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --reload
usermod -a -G docker zabbix
systemctl restart zabbix-agent

#配置时钟服务器为192.168.25.38
sed -i 's/pool 2.centos.pool.ntp.org iburst/server 192.168.25.38 iburst/g' /etc/chrony.conf
systemctl restart chronyd.service

# 安装Java环境
yum install -y java-1.8.0-openjdk
echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-1.el8_4.x86_64/">>/etc/profile
echo "export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar">>/etc/profile
echo "export PATH=$PATH:$JAVA_HOME/bin">>/etc/profile
source /etc/profile

# 安装nexus3正式仓库 (用于正式环境java项目被引用jar的存放,需审核无误后上传至该仓库中)
# 第一次登录要改admin密码,初始化密码在nexus容器/nexus-data/admin.password
# 修改admin密码后,选择Disable anonymous access,防止游客访问
yum install -y maven
mkdir -p /data/nexus-data && chmod -R 777 /data/nexus-data
mkdir -p /data/software/nexus
docker image load -i ./nexus3/nexus3.tar.gz
cat >/data/software/nexus/docker-compose.yml<<DD
version: '3.1'
services:
  nexus3:
    image: sonatype/nexus3:3.36.0
    restart: always
    container_name: nexus
    network_mode: host 
    ports:
      - 28081:8081
      - 28082:8082
    volumes:
      - /data/nexus-data:/nexus-data
DD
firewall-cmd --permanent --add-port=28081/tcp && \
firewall-cmd --permanent --add-port=28082/tcp && \
firewall-cmd --reload

# 导入MySql8,密码为:1+1=2.abcd1234(注意引用时加''或转义字符\)
mkdir -p /data/mysql/{data,conf,logs}
mkdir -p /data/software/mysql/
docker image load -i ./mysql8/mysql8.tar.gz
cat >/data/software/mysql/docker-compose.yml<<DD
version: '3.1'
services:
  db:
    image: mysql:8
    restart: always
    container_name: bi-mysql8
    network_mode: host   
    environment:
      MYSQL_ROOT_PASSWORD: 1+1=2.abcd1234
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    volumes:
      - /data/mysql/data:/var/lib/mysql
      - /data/mysql/conf:/etc/mysql/conf.d
      - /data/mysql/logs:/logs
DD

# NACOS镜像
mkdir -p /data/software/nscos
docker image load -i ./nacos/nacos-server.tar.gz

# nginx1.23.1镜像
mkdir -p /data/nginx/{data,conf,logs}
mkdir -p /data/software/nginx/
docker image load -i ./nginx/nginx.tar.gz
cat >/data/nginx/conf/nginx_conf<<DD
upstream baiinfo_cluster {
    server 192.168.10.34;
    server 192.168.10.35;
}
server {
    listen       80;
    server_name  localhost;
    access_log  /wwwlogs/access.log  main;
    error_log /wwwlogs/error.log;
    location / {
        proxy_pass http://dsj.baiinfo.com;
        proxy_set_header Host $host:$server_port;
        }
}
DD
cat >/data/software/nginx/docker-compose.yml<<DD
version: '3.1'
services:
  nginx:
    restart: always
    container_name: nginx
    network_mode: host 
    image: nginx
    ports:
      - 80:80
    volumes:
      - /data/nginx/data:/usr/share/nginx/html
      - /data/nginx/logs:/wwwlogs
      - /data/nginx/conf/nginx_conf:/etc/nginx/conf.d/default.conf
    privileged: true
DD
firewall-cmd --permanent --add-port=80/tcp && \
firewall-cmd --reload

# skywalking监控(单节点)镜像, URL: 192.168.10.35:18082
mkdir -p /data/elasticsearch/data
chmod -R 777 /data/elasticsearch/data
mkdir -p /data/software/skywalking
docker image load -i ./skywalking/elasticsearch.tar.gz
docker image load -i ./skywalking/skywalking-oap-server.tar.gz
docker image load -i ./skywalking/skywalking-ui.tar.gz

# minio(多节点)镜像, 访问URL:http://local_IP:9001
mkdir -p /data/software/minio
docker image load -i ./minio/minio.tar.gz

# redis集群(cluster)镜像
mkdir -p /data/software/redis
mkdir -p /data/redis/share/redis-node-{1,2,3,4}
mkdir -p /data/redis/conf
mkdir -p /data/redis/logs
touch /data/redis/logs/redis-node-{1,2,3,4}-log.txt
chmod -R 777 /data/redis/logs
docker image load -i ./redis7/redis7.tar.gz
cat >/data/software/redis/docker-compose.yml<<DD
version: '3.1'
services:
DD
for port in $(seq 1 4)
do
cat >/data/redis/conf/redis-node-${port}.conf<<DD
protected-mode no
bind 0.0.0.0
port 638${port}
cluster-enabled yes 
appendonly yes 
logfile "/logs/redis-node-${port}-log.txt"
requirepass bai_redis_2538 
masterauth bai_redis_2538
DD
cat >>/data/software/redis/docker-compose.yml<<DD
  redis-node-${port}:
    image: redis:latest
    restart: always
    network_mode: host
    container_name: redis-node-${port}
    privileged: true
    ports:
      - 638${port}:638${port}
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /data/redis/share/redis-node-${port}:/data
      - /data/redis/conf/redis-node-${port}.conf:/etc/redis/redis.conf
      - /data/redis/logs:/logs
    command: ["redis-server","/etc/redis/redis.conf"]
DD
done
firewall-cmd --permanent --add-port=6381-6384/tcp && \
firewall-cmd --permanent --add-port=16381-16384/tcp && \
firewall-cmd --reload

# elasticsearch集群(cluster) 
docker image load -i ./es7/elasticsearch_7.1.0.tar.gz
mkdir -p /data/es-cluster/node/data4
mkdir -p /data/es-cluster/node/config4
mkdir -p /data/es-cluster/node/logs4
mkdir -p /data/es-cluster/node/plugins4
chmod 777 -R /data/es-cluster
# 写入es节点配文件, 需要手动修改节点配置
cat >/data/es-cluster/node/config3/es.yml<<DD
# 设置集群名称,集群内所有节点的名称必须一致
cluster.name: baiinfo-es-cluster
# 设置节点名称,集群内节点名称必须唯一
node.name: node3
# 表示该节点会不会作为主节点,true表示会;false表示不会
node.master: true
# 当前节点是否用于存储数据,是:true、否:false
node.data: true
# 监听地址,用于访问该es
network.host: 0.0.0.0
# 发布地址,一个单一地址,用于通知集群中的其他节点
network.publish_host: 192.168.10.36
# es对外提供的http端口,默认 9200
http.port: 9200
# TCP的默认监听端口,默认 9300
transport.tcp.port: 9300
# 集群中的节点可以有N个有master资格的节点: 默认为1,对于大的集群来说,可以设置大一点的值(2-4)
discovery.zen.minimum_master_nodes: 1
# 写入候选主节点的设备地址,在开启服务后可以被选为主节点
discovery.seed_hosts: ["192.168.10.35:9300", "192.168.10.35:9301","192.168.10.34:9300","192.168.10.36:9300","192.168.10.37"]
discovery.zen.fd.ping_timeout: 1m
discovery.zen.fd.ping_retries: 5
# 初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node1", "node2","node3"]
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.keystore.type: PKCS12
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.type: PKCS12
xpack.security.audit.enabled: true
DD
firewall-cmd --permanent --add-port=9200/tcp && \
firewall-cmd --permanent --add-port=9300/tcp && \
firewall-cmd --reload
echo "vm.max_map_count=262144">>/etc/sysctl.conf
sysctl -p
# 写入es节点启动文件, 需要手动修改节点配置
mkdir -p /data/software/es-cluster
cat >>/data/software/es-cluster/docker-compose.yml<<DD
version: '3.1'
services:
  es3:
    image: elasticsearch:7.1.0
    restart: always
    network_mode: host
    container_name: baiinfo-es-node3
    privileged: true
    environment:
      - 'ES_JAVA_OPTS=-Xms6144m -Xmx6144m'
    volumes:
      - /data/es-cluster/node/config3/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - /data/es-cluster/node/data3:/usr/share/elasticsearch/data
      - /data/es-cluster/node/plugins3:/usr/share/elasticsearch/plugins
      - /data/es-cluster/node/config3/elastic-certificates.p12:/usr/share/elasticsearch/config/elastic-certificates.p12
DD

# 安装nodejs, 版本node-v14.18.2.tar.gz 
cp ./nodejs/node-v14.18.2-linux-x64.tar.gz /data/software
cd /data/software
tar -zxvf node-v14.18.2-linux-x64.tar.gz
ln -s /data/software/node-v14.18.2-linux-x64/bin/npm /usr/local/bin/
ln -s /data/software/node-v14.18.2-linux-x64/bin/node /usr/local/bin/
ln -s /data/software/node-v14.18.2-linux-x64/bin/npx /usr/local/bin/
rm node-v14.18.2-linux-x64.tar.gz

#配置ZSH解释器
dnf install -y zsh
cp -a ./oh-my-zsh/ ~/.oh-my-zsh
bash ~/.oh-my-zsh/tools/install.sh
sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME\=\"ys\"/g' ~/.zshrc
source ~/.zshrc

初始化centos环境脚本的更多相关文章

  1. bash-1 初始化CentOS系统的初始化脚本

    初始化CentOS系统的初始化脚本 #!/bin/bash # #******************************************************************* ...

  2. Centos 环境一键部署脚本(shell脚本)

    谨以此文纪念吊炸天的Centos环境一键部署方案的新鲜出炉 辛苦大半年,产品准备上线了,BOSS亲自体验安装部署,看着超过200+页的安装文档直接崩溃了(需要部署23个基础服务),经历了超过3个小时的 ...

  3. centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复

    centos环境下使用percona-xtrabackup对mysql5.6数据库innodb和myisam进行快速备份及恢复 有时候我们会碰到这样的业务场景: 1.将大的数据库恢复到本地进行业务测试 ...

  4. Centos环境下部署游戏服务器-软件安装

    这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...

  5. 【linux】系统初始化的shell脚本

    根据参考网上的一些文章,总结出来一个系统初始化的shell脚本 1.初始化脚本 #!/bin/bash cat << EOF +------------------------------ ...

  6. 在centos环境下编译安装myrocksdb

    rocksdb(https://rocksdb.org.cn/)是脸书(facebook)公司开源的一个key-value存储引擎,基于leveldb开发.rocksdb使用的是LSM存储引擎,纯c+ ...

  7. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  8. CentOS环境Docker安装教程(官方推荐的docker三种方式安装)

    CentOS环境Docker安装教程(官方推荐的docker三种方式安装) 一.使用yum方式安装 1.安装依赖包 $ sudo yum install -y yum-utils device-map ...

  9. CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...

  10. freescale-sdk linux移植一搭建编译环境脚本host-prepare.sh分析

    接下来使用自己的课外歇息时间,对基于PowerPC架构freescale-sdk,进行linux移植和分析.主要參考官方文档freescale linux sdk START_HERE.html,首先 ...

随机推荐

  1. 【剑指Offer】【字符串】字符串的排列

    题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入一个字符串,长 ...

  2. tp save()的用法

    save()方法可以新增数据,也可以修改数据 但是要注意,在第二次save()的时候会默认修改 需 model('Keyword')->isUpdate(false)->save($dat ...

  3. java HashMap 原理

    jdk1.7 和 1.8 大致相同但还是有区别,主要是数据结构的区别,1.7 为数组+链表:1.8 为数组+链表+红黑树 关键知识点 加载因子:装填因子,目的是何时对 map 进行扩容,默认是 0.7 ...

  4. python中下拉框选择

    如选择省区城市 provice = driver.find_element_by_id('****') #先给定位的元素付个变量 select(prvice).select_by_bisible_te ...

  5. cuda、cudnn、tnesorrt的查看安装

    1.首先本地查看cuda已安装的版本 11.7输入命令:[nvcc -V]输出:nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 ...

  6. docker之rabbitmq delayed message exchange

    创建dockerfile FROM rabbitmq:3.9.11-management-alpine COPY rabbitmq_delayed_message_exchange-3.9.0.ez ...

  7. GPS授时仪(网络校时服务器)成功投运攀枝花市中西医结合医院

    GPS授时仪(网络校时服务器)成功投运攀枝花市中西医结合医院 技术交流:岳峰 15901092122 论述当下网络时间同步的重要性 北京华人开创公司 技术交流15901092122 概述:电脑时间走时 ...

  8. The emulator process for AVD Pixel_4_XL_API_30 was killed 问题

    转载请注明来源:https://www.cnblogs.com/Sherlock-L/p/14946317.html 问题: 因为工作关系接触到了Android Studio,新建了4和11系统的模拟 ...

  9. 学习笔记-Java面向对象

    学习来源: B站[狂神说Java]Java零基础学习视频通俗易懂 static关键字详解 package com.oop.demo07; //static public class Student{ ...

  10. 使用Mybatis plus xml 记录过程

    <select id="selectByConditions" resultType="com.springboot.domain.DemoQueryModel&q ...