Centos7 部署项目环境配置及基本命令

Centos7基本命令

  • 查看CPU相关信息

    lscpu
    
  • 查看IP地址

    cat /etc/hosts
    
  • centOS系统更新命令

    yum -y update
    
  • 查看当前活动用户

    w # 
    
  • 查看内存使用情况

    free -m
    
  • 查看内核/操作系统/CPU等信息

    uname -a
    
  • 查看计算机名

    hostname
    
  • 查看操作系统信息

    cat /etc/os-release
    
  • 安装vim

    yum -y install vim*
    
  • 安装wget

    yum -y install wget
    
  • 安装net-tools工具

    yum install net-tools
    
  • 查看端口占用

    netstat -tlnp|grep 80
    
  • 一次性的清除占用80端口的程序

    lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh
    
  • 手工终止进程的运行

    kill 5014
    kill -9 5014  # 强制停止
    
  • 开启端口

    firewall-cmd --zone=public --add-port=80/tcp --permanent
    
    命令含义:
    
    –zone #作用域
    
    –add-port=80/tcp #添加端口,格式为:端口/通讯协议
    
    –permanent #永久生效,没有此参数重启后失效
    
  • 防火墙设置

    systemctl status firewalld  #查看防火墙状态 Active 属性
    
    firewall-cmd --reload #重启firewall
    
    systemctl stop firewalld.service #停止firewall
    
    systemctl disable firewalld.service #禁止firewall开机启动
    
    * 防火墙打开特定端口
      
        ```bash
        # --permanent永久生效,没有此参数重启后失效
        firewall-cmd --zone=public --add-port=8080/tcp --permanent
        # 重新载入防火墙
        firewall-cmd --reload
    

centOS7 连接网络

  • 网络相关命令

    ip addr  # 查看网络信息
    ifconfig # 查看网络信息
    systemctl restart network.service # 重启网络
    
  • 查看网络配置

    cat /etc/sysconfig/network-scripts/ifcfg-lo
    

Java安装及环境配置

  • 首先准备Linux版的java安装包,上传到服务器

  • 创建安装目录

    mkdir /usr/local/java/
    
  • 解压至安装目录

    tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/java/
    
  • 设置环境变量

    • 打开文件

      vim /etc/profile
      
    • 在profile文件末尾添加

      export JAVA_HOME=/usr/local/java/jdk1.8.0_171
      export JRE_HOME=${JAVA_HOME}/jre
      export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
      export PATH=${JAVA_HOME}/bin:$PATH
      
    • 使环境变量生效

      source /etc/profile
      
    • 添加软链接

      ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java
      
  • 检查java -version和javac命令

  • 启动jar包,并后台运行

    nohup java -jar XXXXXX.jar &  # 启动jar包并后台运行
    
    ps aux|grep XXXXX.jar  # 查看jar包占用的端口
    
    kill -9 端口号  # 杀死进程
    

Maven安装及环境配置

  • 下载maven

    • wget方法

      wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
      
      yum -y install apache-maven
      
    • 一般下载

      http://mirrors.hust.edu.cn/apache/maven/maven-3/3.6.0/binaries/
      
  • 创建安装目录

    mkdir /usr/local/maven3/
    
  • 解压至安装目录

    tar zxf apache-maven-3.6.0-bin.tar.gz -C /usr/local/maven3/
    
  • 设置环境变量

    • 编辑环境变量文件

      vi /etc/profile
      
    • 在文件末尾添加

      export M2_HOME=/usr/local/maven3/apache-maven-3.6.0
      export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
      
    • 使环境变量生效

      source /etc/profile
      
  • 检查是否生效 mvn -v 命令

  • 打开maven安装目录conf文件下setting.xml文件,找到对应的xml标签设置

    • 配置阿里镜像

        <mirrors>
          <mirror>
              <id>nexus-aliyun</id>
              <mirrorOf>central</mirrorOf>
              <name>Nexus aliyun</name>
              <url>http://maven.aliyun.com/nexus/content/groups/public</url>
          </mirror>
        </mirrors>
      
    • 配置docker-maven-plugs 打包

        <pluginGroups>
              <pluginGroup>com.spotify</pluginGroup>
        </pluginGroups>
      
  • 在根目录下构建镜像

    mvn clean package -Dmaven.test.skip=true
    
  • mvn 打包(由于项目模块之间存在依赖关系,所以打包只能整体打包)

    mvn clean   # 清空
    mvn package  # 打包
    

Git安装及环境配置

  • 使用yum命令安装,

    yum install git
    

    安装过程中有提示选项,输入y,回车继续安装

  • 生成秘钥,生成过程中的选项按三下回车,不用输入

    ssh-keygen -t rsa -C "您的email"
    
  • 秘钥生成好之后,打开文件,复制秘钥设置到仓库中

    vim /root/.ssh/id_rsa.pub
    
  • Git 基本命令

    • 查看当前仓库修改的文件

      git status
      
    • 撤回文件修改

      git checkout 文件名
      
  • git 命令切换分支

    • 查询本地当前分支

      git branch -a
      
    • 查询远端分支

      git branch -r
      
    • 如果不匹配需要执行下面的命令

      git pull
      
    • 然后再执行 git branch -a 命令 ,其中带* 符号的分支就是当前所在地分支

      [root@localhost backstage-cloud]# git branch -a
      * backstage-cloud-v1.0
        remotes/origin/master
      
    • 切换分支命令,格式为本地分支名,对应远端分支名

      git checkout -b backstage-cloud-v1.2-dev origin/backstage-cloud-v1.2-dev
      
    • 执行成功提示

      Branch backstage-cloud-v1.2-dev set up to track remote branch backstage-cloud-v1.2-dev from origin.
      Switched to a new branch 'backstage-cloud-v1.2-dev'
      
    • 再执行查询分支命令,可以看到分支已经切换成功

      [root@localhost backstage-cloud]# git branch -a
        backstage-cloud-v1.0
      * backstage-cloud-v1.2-dev
        remotes/origin/HEAD -> origin/backstage-cloud-v1.0
        remotes/origin/master
      
      

Docker安装及环境配置

  • 卸载旧版本docker

    sudo yum remove docker  docker-common docker-selinux docker-engine
    
  • 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

    sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    
  • 设置yum源

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  • 可以查看所有仓库中所有docker版本,并选择特定版本安装

    yum list docker-ce --showduplicates | sort -r
    
  • 安装docker

    sudo yum install docker-ce  #安装最新版docker
    sudo yum install <FQPN>  # 选择版本安装,例如:sudo yum install docker-ce-17.12.0.ce
    
  • 启动并加入开机启动

    sudo systemctl start docker
    sudo systemctl enable docker
    
  • 启动/关闭/重启docker

    systemctl start docker # 开启docker
    systemctl restart docker # 重启docker
    systemctl stop docker # 关闭docker
    
  • 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

    docker version
    
  • 安装安装 docker-compose(该版本需要去GitHub确认,是不是最新版本)

    sudo curl -L https://github.com/docker/compose/releases/download/1.25.0-rc2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    
  • 配置

    sudo chmod +x /usr/local/bin/docker-compose
    
  • 检查是否安装成功

    docker-compose --version
    
  • 删除为none的镜像

    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
    docker iscses|grep none|awk '{print $3 }'|xargs docker rmi
    
  • 根据docker-compose.yml服务的编排启动docker文件

    docker-compose up -d
    
  • 查看docker容器运行状态配置信息(IP地址等)

    docker inspect 容器ID
    
  • 查看所有镜像

    docker iscses
    
  • 查看网络模式

    docker network ls
    
  • 查看所有在运行的容器

    docker ps
    
  • 进入容器命令行(根据镜像版本选择)

    docker exec -it 容器id /bin/sh
    
    docker exec -it 容器id /bin/bash
    
    docker exec -it 容器id bash
    
  • 关闭容器和删除容器

    docker stop 容器id # 停止容器
    docker rm 容器id  # 删除容器
    
    # 另一种方法
    docker-compose stop 容器id  
    docker-compose rm 容器id
    
  • 删除镜像(删除镜像前必须先停止删除容器)

    docker rmi 镜像id
    
  • 查看docker容器内存占用命令

    docker stats
    
  • 查看容器内部地址

    docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器id
    
  • 查看容器运行的日志

    docker logs 容器ID
    
    docker logs --since 30m 容器ID # 查看最近三十分钟日志
    docker logs --tail 300 容器ID  # 查看倒数三白行数据
    
  • docker容器中进行文件编辑(按照不同的环境选择)

    apt-get update  # 先更新
    apt-get install vim  # 再安装vim 即可进行文件编辑
    
  • Dockerfile 文件编辑(举例)

    # 指定镜像
    FROM openjdk:8u191-jdk-alpine3.9
    
    # 维护者信息
    MAINTAINER ******@gmail.com
    
    # 在新镜像内部执行的命令,比如安装一些软件、配置一些基础环境,可使用\来换行,当前设置是指定时区,&&支持多命令
    RUN mkdir -p /service-eureka && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    # 设置工作目录
    WORKDIR /service-eureka
    
    # 设置端口
    EXPOSE 8761
    
    # 将文件复制到镜像中
    ADD ./service-eureka/target/service-eureka-1.0-SNAPSHOT.jar ./
    
    CMD java -Djava.security.egd=file:/dev/./urandom -jar service-eureka-1.0-SNAPSHOT.jar
    
    
  • docker-compose.yml 文件编辑(举例)

      #注册中心
      service-eureka:
        build:
          context: ./
          # Dockerfile文件地址
          dockerfile: ./service-eureka/Dockerfile
        restart: always
        ports:
          # 宿主机映射端口 :容器端口  同一个模块构建镜像只要宿主机端口不冲突就行
          - "8761:8761"
        volumes:
          # 宿主机地址 :docker容器地址,映射目录(容器路径需要根据dockerfile配置来设置)
          - ./service-eureka/target/:/service-eureka    
        container_name: service-eureka
        hostname: service-eureka  
        iscse: service-eureka
        #    networks:                 #网络模式
        #      - eureka-net        
        environment:               #环境变量
          SERVER_PORT: "8761"      #自定义参数用于给服务的配置文件传递参数
        mem_limit: 400m            #设置容器最大内存
    

Python安装及环境配置

  • 安装编译相关的工具

    yum -y groupinstall "Development tools";
    
    yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel;
    
    yum install libffi-devel -y;
    
  • 下载安装包

    wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
    
  • 创建文件夹

    mkdir /usr/local/python3/
    
  • 解压到相关目录

    tar -xvJf Python-3.7.0.tar.xz -C /usr/local/python3/
    
  • 检查源码的依赖合法性

    ./configure
    
  • 编译安装

    make && make install
    

Tomcat安装及环境配置

  • 获取官方安装包

    wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
    
  • 创建tomcat安装文件夹

    mkdir /usr/local/tomcat
    
  • 解压文件

    tar -zxvf apache-tomcat-8.5.43.tar.gz
    
  • 将tomcat文件移动到 /usr/local/tomcat/下面

    mv apache-tomcat-8.5.43 /usr/local/tomcat/
    
  • 转到安装目录下面

    cd usr/local/tomcat/apache-tomcat-8.5.43/bin/
    
  • 启动tomcat或关闭tomcat

    ./startup.sh
    ./shutdown.sh
    
  • 配置Manager

    • 编辑apache-tomcat-8.5.43/conf/tomcat-users.xml

      <role rolename="manager-gui"/>
      <role rolename="manager-script"/>
      <role rolename="manager-jmx"/>
      <role rolename="manager-status"/>
      <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
      
    • 编辑编辑 apache-tomcat-8.5.43/webapps/manager/META-INF/context.xml,允许任意 IP 访问

      <?xml version="1.0" encoding="UTF-8"?>
      <Context antiResourceLocking="false" privileged="true" >
        <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
        <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
      </Context>
      
    • 访问 http://ip:端口/manager/html 进入 manager 页面

RabbitMQ 配置

由于本项目使用的RabbitMQ运行在docker容器中,所以下面的命令需要进入运行rabbitmq容器的内部执行,进入容器内部的命令在上面docker配置中;

  • 外部连接RabbitMQ

    • 建立新的用户

      rabbitmqctl add_user admin admin                 #新增用户/密码(admin/admin)
      rabbitmqctl set_user_tags admin administrator    #给用户admin配置权限
      rabbitmqctl  set_permissions -p /  admin '.*' '.*' '.*' # 配置admin用户拥有所有权限
      rabbitmqctl  list_user_permissions admin  # 查看admin用户拥有的权限
      

      也可以在页面中配置,使用创建时的用户登录,然后配置用户的账号密码为admin/admin,接着点add user,然后点击用户名进去,进行两次set

    • 启动WEB管理插件

      rabbitmq-plugins enable rabbitmq_management
      
  • 创建新的RabbitMQ容器的时候需要创建账户,两种方法,上面说的是第一种使用命令行进入容器内部创建,另外一种就是进入rabbitMQ的控制页面进行手动创建:

    • 先进入 IP:15672, 进入管理界面,默认账号为
    system
    system123
    
    • 然后在admin标签页添加账户
    • 然后点击账户名,进行权限设定

Nginx安装及环境配置

  • 安装Nginx/卸载

    $ sudo yum -y install nginx   # 安装 nginx
    $ sudo yum remove nginx  # 卸载 nginx
    

    使用yum进行Nginx安装时,Nginx配置文件在/etc/nginx目录下。

  • 配置Nginx服务

    $ sudo systemctl enable nginx # 设置开机启动 
    $ sudo service nginx start # 启动nginx服务
    $ sudo service nginx stop # 停止nginx服务
    $ sudo service nginx restart # 重启nginx服务
    $ sudo service nginx reload # 重新加载配置,一般是在修改过nginx配置文件时使用。
    
  • 安装依赖库

    • 安装gcc

      yum -y install gcc gcc-c++ # nginx编译时依赖gcc环境
      
    • 安装pcre

      yum -y install pcre pcre-devel # 让nginx支持重写功能
      
    • 安装zlib

      # zlib库提供了很多压缩和解压缩的方式,nginx使用zlib对http包内容进行gzip压缩
      $ sudo yum -y install zlib zlib-devel 
      
    • 安装OpenSSL

      # 安全套接字层密码库,用于通信加密
      $ sudo yum -y install openssl openssl-devel
      
  • 配置及使用

    • 查看日志

      /var/log/nginx/access.log;  # 运行日志
      /var/log/nginx/error.log;   # 错误日志
      
    • 配置Nginx.conf文件,文件位置,/etc/nginx/nginx.conf

      # For more information on configuration, see:
      #   * Official English Documentation: http://nginx.org/en/docs/
      #   * Official Russian Documentation: http://nginx.org/ru/docs/
      
      user nginx;
      worker_processes auto;
      error_log /var/log/nginx/error.log;
      pid /run/nginx.pid;
      
      # Load dynamic modules. See /usr/share/nginx/README.dynamic.
      include /usr/share/nginx/modules/*.conf;
      
      events {
          worker_connections 1024;
      }
      
      http {
          # log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
          #                  '$status $body_bytes_sent "$http_referer" '
          #                  '"$http_user_agent" "$http_x_forwarded_for"';
      
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" $http_host '
                              '$status $request_length $body_bytes_sent "$http_referer" '
                              '"$http_user_agent"  $request_time $upstream_response_time';
      
      
      
          access_log  /var/log/nginx/access.log  main;
      
          sendfile            on;
          tcp_nopush          on;
          tcp_nodelay         on;
          keepalive_timeout   65;
          types_hash_max_size 2048;
      
          include             /etc/nginx/mime.types;
          default_type        application/octet-stream;
      
          # Load modular configuration files from the /etc/nginx/conf.d directory.
          # See http://nginx.org/en/docs/ngx_core_module.html#include
          # for more information.
          include /etc/nginx/conf.d/*.conf;
      
          upstream scs-service {
              ip_hash; # 基于IPhash算法,保持session一致性
              # 网关地址
              server 172.19.0.10:8762 weight=1 max_fails=3 fail_timeout=30s;
              server 172.19.0.8:8763 weight=1 max_fails=3 fail_timeout=30s;
      
          }
      
          server {
              listen       80 default_server;
              # listen       [::]:80 default_server;
              server_name  localhost;
              root         /usr/share/nginx/html;
      
              # Load configuration files for the default server block.
              include /etc/nginx/default.d/*.conf;
      
              location /scs-service/ {
              proxy_pass http://scs-service/;
              proxy_set_header Host $host;
              }
      
              error_page 404 /404.html;
                  location = /40x.html {
              }
      
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
              }
          }
      
      
      # Settings for a TLS enabled server.
      #
      #    server {
      #        listen       443 ssl http2 default_server;
      #        listen       [::]:443 ssl http2 default_server;
      #        server_name  _;
      #        root         /usr/share/nginx/html;
      #
      #        ssl_certificate "/etc/pki/nginx/server.crt";
      #        ssl_certificate_key "/etc/pki/nginx/private/server.key";
      #        ssl_session_cache shared:SSL:1m;
      #        ssl_session_timeout  10m;
      #        ssl_ciphers HIGH:!aNULL:!MD5;
      #        ssl_prefer_server_ciphers on;
      #
      #        # Load configuration files for the default server block.
      #        include /etc/nginx/default.d/*.conf;
      #
      #        location / {
      #        }
      #
      #        error_page 404 /404.html;
      #            location = /40x.html {
      #        }
      #
      #        error_page 500 502 503 504 /50x.html;
      #            location = /52x.html {
      #        }
      #    }
      
      }
                                                             
      
    • 如请求失败错误日志为failed (13: Permission denied),则需要关闭selinux,

      • 临时关闭selinux

        setenforce 0 # 关闭
        setenforce 1 # 开启
        
      • 永久关闭

        vim /etc/selinux/config
        

        输出如下

        # This file controls the state of SELinux on the system.
        # SELINUX= can take one of these three values:
        #     enforcing - SELinux security policy is enforced.
        #     permissive - SELinux prints warnings instead of enforcing.
        #     disabled - No SELinux policy is loaded.
        # SELINUX=enforcing
        SELINUX=disabled
        # SELINUXTYPE= can take one of three values:
        #     targeted - Targeted processes are protected,
        #     minimum - Modification of targeted policy. Only selected processes are protected.
        #     mls - Multi Level Security protection.
        SELINUXTYPE=targeted                 
        
        • 将SELinux status:enable 修改为disabled,需要重启系统.

Mysql安装及环境配置

  • MYSQL常用命令:

    # 数据库连接和基础操作命令
    mysql -u root -h IP地址 -p  # 根据IP地址连接数据库
    
    show databases; # 显示所有数据库名
    
    use 数据库名; # 进入数据库
    
    show tables; # 显示所有表名
    
    
    # 数据库属性和配置
    show full processlist;  # 查看当前链接主机
    
    show variables like "max_connections";   # 查看最大连接数                                                                                                                                                                                        
    
    set GLOBAL max_connections=300;  # 设置最大连接数
    
    show global variables like 'wait_timeout';   # 查看设置的全局等待超时时间
    
    set global wait_timeout=300;  # 设置全局超时时间
    
  • Linux中安装数据库,操作命令

    • 卸载系统自带的MariaDB

      • 查看有没有安装 mariadb

        rpm -qa|grep -i mariadb
        
      • 卸载mariadb

        rpm -e --nodeps ********
        
      • 删除my.conf

        rm  /etc/my.conf
        
    • 卸载已安装的mysql(没安装忽略)

      • 查看有没有安装mysql

        rpm -qa|grep -i mysql
        
      • 如果有,卸载

        rpm -e *********
        
      • 查看mysql服务

        chkconfig --list | grep -i mysql
        
      • 删除mysql服务

        chkconfig --del mysql
        
      • 查找mysql分散的文件

        whereis mysql 
        
      • 找到后删除

        rm -rf /usr/lib/mysql
        
    • 官网下载安装包 ,下载地址为

      https://dev.mysql.com/downloads/mysql
      
    • 创建用户组

      groupadd mysql
      
    • 创建一个用户名为mysql的用户并加入mysql用户组

      useradd -g mysql mysql
      
    • 安装依赖

      yum install perl   
      yum -y install autoconf j
      yum install libaio
      
    • 解压安装包

      tar -xvf  ********
      
    • 运行命令进行安装

      rpm -ivh MySQL-client-5.6.44-1.el7.x86_64.rpm
      
      rpm -ivh MySQL-devel-5.6.44-1.el7.x86_64.rpm
      
      rpm -ivh MySQL-server-5.6.44-1.el7.x86_64.rpm
      
    • 安装完成后修改密码

      • 查看服务的状态

        service mysql status
        
      • 如果是运行状态,执行关闭命令关闭mysql:

        service mysql stop 
        
      • 执行以下两个命令来跳过密码登录mysql:

        mysqld_safe --user=mysql --skip-grant-tables --skip-networking & mysql -u root -p
        
      • 执行以下命令修改密码:

        use mysql;
        
        select host,user,password from user;
        
        update user set password=password("root") where user='root';
        
        quit;
        
      • 重启mysql:

        service mysql restart
        
      • 登录mysql:

        mysql -uroot -proot 
        
      • 使用mysql数据库:use mysql

        use mysql 
        
      • 修改密码(第一次登录必须修改以下)

        set password = password('root');
        
      • 刷新权限:

        flush privileges; 
        
      • 配置远程访问权限。

        grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
        
        flush privileges;
        
        quit;
        
        service mysql restart;
        
      • 新增账户(只适用于mysql5.6)

        insert into mysql.user values
        ('localhost', '用户名', password('密码'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '', 'N');
         
        insert into mysql.user values
        ('%', '用户名', password('密码'), 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password', '', 'N');
        
      • 设置mysql开机启动:

        • 查看服务:

          chkconfig --list mysql 
          
        • 开启mysql服务自动启动:

          chkconfig mysql on 
          
  • 使用容器的方式启动mysql , docker-compose.yml中配置mysql数据库,配置数据库主从

      # -----------------mysql-主库----------------------
      mysql-master:
        command:
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
          --max_allowed_packet=128M
          --default-authentication-plugin=mysql_native_password
        build:
          context: ./
          dockerfile: db/mysql/Dockerfile
        environment:
          MYSQL_ROOT_PASSWORD: iysys01
          TZ: Asia/Shanghai
        restart: always
        container_name: mysql-master
        iscse: mysql-master
        ports:
          - "3339:3306"
    
      # -----------------mysql-从库----------------------
      mysql-slave:
        command:
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
          --lower_case_table_names=1
          --max_allowed_packet=128M
          --default-authentication-plugin=mysql_native_password
        build:
          context: ./
          dockerfile: db/mysql/Dockerfile
        environment:
          MYSQL_ROOT_PASSWORD: iysys
          TZ: Asia/Shanghai
        restart: always
        container_name: mysql-slave
        iscse: mysql-slave
        ports:
          - "3340:3306"
    
  • 数据库基本信息

    MASTER
    账号:root
    密码:iysys01
    端口:3339
    
    slave
    账号:root
    密码:iysys
    端口:3340
    
  • docker容器中的mysql主从配置

    • 进入到容器内部

      docker exec -it mysql-master /bin/bash
      
    • 更新容器并安装vim

      apt-get update  #更新
      apt-get install vim  #安装vim
      
    • 数据库关闭和重启

      service mysqld stop
      service mysql restart
      
    • 配置Mater主数据库,进入到 /etc/mysql 目录下,打开my.cnf文件,在文件中添加如下配置

      [mysqld]
      ## 同一局域网内注意要唯一
      server-id=100  
      ## 开启二进制日志功能,可以随便取(关键)
      log-bin=mysql-bin
      
    • 使用docker命令进入到master中,登录数据库执行命令,创建slave用户和密码

      CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
      
    • 给创建的用户授予权限

      GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
      
    • 配置slave数据库,进入到 /etc/mysql 目录下,打开my.cnf文件,在文件中添加如下配置

      [mysqld]
      ## 设置server_id,注意要唯一
      server-id=101  
      ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
      log-bin=mysql-slave-bin   
      ## relay_log配置中继日志
      relay_log=edu-mysql-relay-bin  
      
    • 连接主数据库,执行

      show master status;
      

      返回数据

      File Position
      mysql-bin.000002 617
    • 进入到slave数据库执行,master_host为主数据库容器的内部IP地址,同时将上面查询的参数配置到下面的命令中.

      change master to master_host='172.19.0.12', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000002', master_log_pos= 617, master_connect_retry=30;
      
    • slave执行

      show slave status
      

      返回数据,注意两个值

      Slave_IO_Running Slave_SQL_Running
      NO NO
    • 执行以下命令开启主从复制

      start slave
      

      执行成功后上面两个值为YES

Redis安装及环境配置

  • redis删除数据

    redis-cli -h IP -p 端口 -a 密码
    
    flushall 
    
  • 查询所有key, 并删除指定的key

    keys *
    
  • 删除指定的key

    del key名
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容