<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      centos7 系統初始化一鍵配置腳本

      1、設置ip地址

      [root@localhost ~]# [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192
      TYPE=Ethernet
      NAME=ens192
      DEVICE=ens192
      ONBOOT=yes
      IPADDR=192.168.1.232
      PREFIX=24
      GATEWAY=192.168.1.1
      DNS1=8.8.8.8
      [root@localhost ~]#

      2、系統初始化腳本

      #!/bin/bash
      
      # 日志函數
      log() {
          echo -e "\033[1;32m[$(date '+%Y-%m-%d %H:%M:%S')] $1\033[0m"
      }
      
      error() {
          echo -e "\033[1;31m[$(date '+%Y-%m-%d %H:%M:%S')] ERROR: $1\033[0m" >&2
      }
      
      # 檢查是否為root用戶
      check_root() {
          if [ "$(id -u)" -ne 0 ]; then
              error "請使用root用戶運行此腳本"
              exit 1
          fi
          log "用戶檢查通過: 當前為root用戶"
      }
      
      # 檢查操作系統
      check_os() {
          if [ -f /etc/redhat-release ]; then
              OS=$(cat /etc/redhat-release | awk '{print $1}')
              VERSION=$(cat /etc/redhat-release | awk '{print $4}' | cut -d. -f1)
              if [ "$OS" = "CentOS" ] && [ "$VERSION" = "7" ]; then
                  log "操作系統檢查通過: CentOS 7"
              else
                  error "不支持的操作系統: 需要CentOS 7, 當前為 $OS $VERSION"
                  exit 1
              fi
          else
              error "無法識別操作系統: 不是CentOS系統"
              exit 1
          fi
      }
      
      # 檢查網絡連接
      check_network() {
          log "正在檢查網絡連接..."
          
          # 測試百度連通性
          ping -c 3 www.baidu.com > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "無法連接到百度,請檢查網絡配置"
              
              # 嘗試測試Docker官方源
              log "嘗試直接連接Docker官方源..."
              ping -c 3 download.docker.com > /dev/null 2>&1
              if [ $? -ne 0 ]; then
                  error "無法連接到Docker官方源,請檢查網絡或防火墻設置"
                  exit 1
              else
                  log "可以連接到Docker官方源,繼續安裝..."
              fi
          else
              log "網絡連接正常"
          fi
          
          # 測試HTTPS連接
          log "測試HTTPS連接..."
          curl -s https://www.baidu.com > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "HTTPS連接失敗,可能是防火墻或代理設置問題"
              exit 1
          fi
          log "HTTPS連接正常"
      }
      
      # 檢查磁盤空間
      check_disk_space() {
          log "正在檢查磁盤空間..."
          AVAILABLE_SPACE=$(df -BG / | awk 'NR==2 {print $4}' | tr -d 'G')
          if [ "$AVAILABLE_SPACE" -lt 2 ]; then
              error "磁盤空間不足: 需要至少2GB可用空間,當前只有 ${AVAILABLE_SPACE}GB"
              exit 1
          fi
          log "磁盤空間檢查通過: 可用空間 ${AVAILABLE_SPACE}GB"
      }
      
      # 系統初始化操作
      system_initialization() {
          log "開始系統初始化操作..."
      
          # 更換yum源為阿里云源
          log "更換yum源為阿里云源..."
          mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
          curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
          if [ $? -ne 0 ]; then
              error "更換yum源失敗"
              exit 1
          fi
          log "yum源更換為阿里云源成功"
      
          # 升級yum
          log "升級yum..."
          yum update -y yum > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "yum升級失敗"
              exit 1
          fi
          log "yum升級完成"
      
          # 關閉防火墻
          log "關閉防火墻..."
          systemctl stop firewalld
          systemctl disable firewalld > /dev/null 2>&1
          log "防火墻已關閉并禁用開機自啟"
      
          # 禁用SELinux
          log "禁用SELinux..."
          setenforce 0
          sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
          log "SELinux已禁用"
      
          # 設置時區為Asia/Shanghai
          log "設置時區為Asia/Shanghai..."
          timedatectl set-timezone Asia/Shanghai
          log "時區已設置為Asia/Shanghai"
      
          # 安裝vim
          log "安裝vim..."
          yum install -y vim > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "vim安裝失敗"
              exit 1
          fi
          log "vim安裝完成"
      
          # 安裝python3
          log "安裝python3..."
          yum install -y python3 python3-pip > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "python3安裝失敗"
              exit 1
          fi
          log "python3安裝完成"
      
          log "系統初始化操作完成"
      }
      
      # 安裝前清理
      pre_install_cleanup() {
          log "執行安裝前清理..."
          
          # 清理舊版本Docker
          yum remove -y docker \
                        docker-client \
                        docker-client-latest \
                        docker-common \
                        docker-latest \
                        docker-latest-logrotate \
                        docker-logrotate \
                        docker-engine
          
          # 清理Yum緩存
          log "清理Yum緩存..."
          yum clean all > /dev/null 2>&1
          rm -rf /var/cache/yum > /dev/null 2>&1
          log "安裝前清理完成"
      }
      
      
      # 添加EPEL源(CentOS 7需要)
      add_epel_repo() {
          log "添加EPEL源..."
          yum install -y epel-release > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "添加EPEL源失敗"
              
              # 嘗試備用方法
              log "嘗試備用方法添加EPEL源..."
              curl -sSL https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm -o epel-release.rpm
              rpm -ivh epel-release.rpm > /dev/null 2>&1
              rm -f epel-release.rpm
              
              if [ $? -ne 0 ]; then
                  error "無法添加EPEL源,某些依賴可能無法安裝"
              else
                  log "EPEL源添加成功"
              fi
          else
              log "EPEL源添加成功"
          fi
      }
      
      # 添加Docker源
      add_docker_repo() {
          log "添加Docker源..."
          
          # 清理可能的殘留
          rm -f /etc/yum.repos.d/docker-ce.repo
          
          # 嘗試使用阿里源
          log "嘗試使用阿里源..."
          # yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo > /dev/null 2>&1
          yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo > /dev/null 2>&1
          
          if [ $? -ne 0 ]; then
              error "阿里源添加失敗,嘗試使用網易云鏡像源..."
              
              # 使用網易云鏡像源
              yum-config-manager --add-repo https://mirrors.163.com/.help/CentOS7-Base-163.repo > /dev/null 2>&1
              
              if [ $? -ne 0 ]; then
                  error "網易云鏡像源添加失敗,嘗試使用清華大學鏡像源..."
                  
                  # 使用清華大學鏡像源
                  yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo > /dev/null 2>&1
                  
                  if [ $? -ne 0 ]; then
                      error "所有鏡像源添加失敗,請檢查網絡連接"
                      exit 1
                  else
                      log "清華大學鏡像源添加成功"
                  fi
              else
                  log "阿里云鏡像源添加成功"
              fi
          else
              log "Docker官方源添加成功"
          fi
          
          # 更新軟件包緩存
          log "更新軟件包緩存..."
          yum makecache fast > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "更新軟件包緩存失敗"
              exit 1
          fi
          log "軟件包緩存更新完成"
      }
      
      # 驗證鏡像源
      verify_repo() {
          log "驗證鏡像源可用性..."
          yum list docker-ce > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "鏡像源不可用或配置錯誤"
              
              # 嘗試重建緩存
              log "嘗試重建Yum緩存..."
              yum clean all > /dev/null 2>&1
              rm -rf /var/cache/yum > /dev/null 2>&1
              yum makecache fast > /dev/null 2>&1
              
              # 再次驗證
              yum list docker-ce > /dev/null 2>&1
              if [ $? -ne 0 ]; then
                  error "重建緩存后鏡像源仍然不可用"
                  return 1
              fi
          fi
          log "鏡像源驗證通過"
          return 0
      }
      
      # 安裝Docker
      install_docker() {
          log "開始安裝Docker..."
          
          # 更新系統
          log "更新系統軟件包..."
          yum update -y > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "系統更新失敗"
              exit 1
          fi
          log "系統更新完成"
          
          # 添加EPEL源
          add_epel_repo
          
          # 安裝必要的依賴
          log "安裝必要的依賴..."
          yum install -y yum-utils device-mapper-persistent-data lvm2 \
              curl wget tar openssl-devel > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "依賴安裝失敗"
              exit 1
          fi
          log "依賴安裝完成"
          
          # 添加Docker源
          add_docker_repo
          
          # 驗證鏡像源
          verify_repo || exit 1
          
          # 鎖定Docker版本為20.10.x(更適合CentOS 7)
          log "安裝Docker CE 20.10.x版本..."
          yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io-1.6.23 > /dev/null 2>&1
          
          if [ $? -ne 0 ]; then
              error "Docker安裝失敗"
              
              # 收集更多錯誤信息
              log "收集詳細錯誤信息..."
              yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io-1.6.23 2> docker_install_error.log
              
              # 嘗試安裝最新可用版本
              log "嘗試安裝最新可用版本..."
              yum install -y docker-ce docker-ce-cli containerd.io > /dev/null 2>&1
              
              if [ $? -ne 0 ]; then
                  error "安裝最新版本也失敗,詳細錯誤信息已保存到docker_install_error.log"
                  exit 1
              else
                  log "成功安裝最新可用版本的Docker"
              fi
          else
              log "Docker 20.10.24安裝完成"
          fi
          
          # 啟動并啟用Docker服務
          log "啟動Docker服務..."
          systemctl start docker
          if [ $? -ne 0 ]; then
              error "啟動Docker服務失敗"
              exit 1
          fi
          systemctl enable docker > /dev/null 2>&1
          log "Docker服務已啟動并設置為開機自啟"
      }
      
      # 驗證安裝
      verify_installation() {
          log "開始驗證Docker安裝..."
          
          # 檢查Docker版本
          log "檢查Docker版本..."
          DOCKER_VERSION=$(docker version --format '{{.Server.Version}}' 2>/dev/null)
          if [ -z "$DOCKER_VERSION" ]; then
              error "無法獲取Docker版本,安裝可能失敗"
              
              # 檢查服務狀態
              log "檢查Docker服務狀態..."
              systemctl status docker > docker_service_status.log 2>&1
              error "Docker服務狀態信息已保存到docker_service_status.log"
              
              exit 1
          fi
          log "Docker版本: $DOCKER_VERSION"
          
          # 檢查Docker服務狀態
          log "檢查Docker服務狀態..."
          SYSTEMCTL_STATUS=$(systemctl is-active docker)
          if [ "$SYSTEMCTL_STATUS" != "active" ]; then
              error "Docker服務未運行"
              exit 1
          fi
          log "Docker服務狀態: 運行中"
          
          
          log "Docker安裝驗證通過!"
      }
      
      # 配置Docker
      configure_docker() {
          log "配置Docker..."
          
          # 創建配置目錄
          mkdir -p /etc/docker
          
          # 創建并寫入配置文件
          cat > /etc/docker/daemon.json << EOF
      {
        "registry-mirrors": [
           "https://docker.m.daocloud.io",
           "https://docker.imgdb.de",
           "https://docker-0.unsee.tech",
           "https://docker.hlmirror.com",
           "https://docker.1ms.run",
           "https://func.ink",
           "https://lispy.org",
           "https://docker.xiaogenban1993.com"
          ],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
          "max-size": "100m"
        },
        "storage-driver": "overlay2"
      }
      EOF
          
          # 重新加載并重啟Docker
          systemctl daemon-reload
          systemctl restart docker
          
          log "Docker配置完成"
      }
      
      # 安裝Docker Compose(僅使用阿里云鏡像源)
      install_docker_compose() {
          log "開始安裝Docker Compose(僅使用阿里云鏡像源)..."
          
          # 檢查Python3和pip是否已安裝(系統初始化階段已安裝,但增加二次校驗)
          if ! command -v python3 &> /dev/null; then
              error "Python3未安裝,請檢查系統初始化步驟"
              exit 1
          fi
          if ! command -v pip3 &> /dev/null; then
              log "正在安裝pip3..."
              yum install -y python3-pip > /dev/null 2>&1
              if [ $? -ne 0 ]; then
                  error "pip3安裝失敗"
                  exit 1
              fi
              log "pip3安裝完成"
          fi
          
          # 升級pip并安裝Docker Compose(固定使用阿里云源,無回退)
          log "升級pip并通過阿里云源安裝Docker Compose..."
          pip3 install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/ > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "pip升級失敗(阿里云源)"
              exit 1
          fi
          
          pip3 install docker-compose -i https://mirrors.aliyun.com/pypi/simple/ > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "Docker Compose安裝失敗(阿里云源)"
              # 保存詳細錯誤日志
              pip3 install docker-compose -i https://mirrors.aliyun.com/pypi/simple/ 2> docker_compose_install_error.log
              error "詳細錯誤已保存至 docker_compose_install_error.log"
              exit 1
          fi
          
          # 驗證安裝版本
          DOCKER_COMPOSE_VERSION=$(docker-compose --version | awk '{print $NF}')
          if [ -z "$DOCKER_COMPOSE_VERSION" ]; then
              error "Docker Compose安裝后無法獲取版本,可能安裝失敗"
              exit 1
          fi
          log "Docker Compose安裝完成(版本: $DOCKER_COMPOSE_VERSION)"
      }
      
      # 驗證Docker Compose安裝
      verify_docker_compose() {
          log "驗證Docker Compose功能..."
          
          # 檢查基本命令可用性
          log "測試'docker-compose --version'命令..."
          docker-compose --version > /dev/null 2>&1
          if [ $? -ne 0 ]; then
              error "Docker Compose命令不可用"
              exit 1
          fi
          
          # 嘗試簡單運行(可選,需用戶確認)
          read -p "是否創建測試Compose文件并驗證?(y/n) [默認: n] " choice
          choice=${choice:-n}
          if [ "$choice" == "y" ]; then
              log "創建測試docker-compose.yml..."
              cat > docker-compose-test.yml << EOF
      version: '3'
      services:
        web:
          image: nginx:alpine
          ports:
            - "80:80"
      EOF
              log "啟動測試服務..."
              docker-compose -f docker-compose-test.yml up -d > /dev/null 2>&1
              if [ $? -ne 0 ]; then
                  error "Docker Compose運行測試服務失敗"
                  rm -f docker-compose-test.yml
                  exit 1
              fi
              log "測試服務啟動成功,端口80已暴露"
              log "正在清理測試環境..."
              docker-compose -f docker-compose-test.yml down > /dev/null 2>&1
              rm -f docker-compose-test.yml
              log "測試環境清理完成"
          else
              log "跳過功能測試,如需驗證請手動運行'docker-compose --version'"
          fi
      }
      
      
      # 主函數
      main() {
          log "========== 開始Docker安裝腳本 =========="
          
          check_root
          check_os
          check_network
          check_disk_space
          system_initialization
          pre_install_cleanup
          install_docker
          verify_installation
          configure_docker
          install_docker_compose
          verify_docker_compose
          
          log "========== Docker安裝完成 =========="
          log "版本: $DOCKER_VERSION"
          log "服務狀態: 運行中"
          log "配置文件: /etc/docker/daemon.json"
          log "使用命令 'docker --help' 獲取使用幫助"
      }
      
      # 執行主函數
      main

       

       

      posted @ 2025-05-15 17:34  QiuPing  閱讀(46)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久久久人妻一区二区三区| a国产一区二区免费入口| 中文字幕人成无码免费视频 | 加勒比中文字幕无码一区| 国产高清国产精品国产专区| 99久久精品午夜一区二区| 伊人久久大香线蕉网av| 亚洲精品国模一区二区| 亚洲啪啪精品一区二区的| 国产日韩综合av在线| 国产精品久久久午夜夜伦鲁鲁| 熟妇人妻系列aⅴ无码专区友真希| 国产呦交精品免费视频| 成人中文在线| 亚洲精品区午夜亚洲精品区| 凸凹人妻人人澡人人添| 亚洲产在线精品亚洲第一站一| 999精品色在线播放| 午夜福利在线观看6080| 亚洲午夜精品久久久久久抢| 中文国产不卡一区二区| 午夜精品区| 中文字幕国产精品第一页| 亚洲一区成人在线视频| 国产一区二区av天堂热| 国产亚洲精品一区二区无| 亚洲男人天堂2018| 二连浩特市| 亚洲精品一区二区三区蜜| 久久精品国产99久久美女| 在线天堂新版资源www在线下载| 一二三四中文字幕日韩乱码| 亚洲成人av在线高清| 亚洲男人的天堂久久香蕉| 成人av天堂网在线观看| 亚洲免费成人av一区| 国产美女69视频免费观看| 亚洲综合精品中文字幕| 精品国产亚洲av麻豆特色| 国产精品亚洲片在线观看麻豆| 性一交一乱一伦|