• 后台部署运维零碎总结


    一、场景

    为了实现项目部署简化,尽量都由脚本来完成,需要将许多手动处理过程进行脚本化处理。

    二、环境

    1、VMware 虚拟机

    Download VMware Workstation Pro

    2、获取CentOs 镜像

    3、使用镜像在虚拟机中安装

    4、配置网卡信息,重启网络

     

     

    三、执行

    1、docker 相关

    离线下载安装 

    https://download.docker.com/linux/static/stable/

    #!/bin/sh
    echo '解压tar包...'
    tar -xvf $1
    echo '将docker目录移到/usr/bin目录下...'
    cp docker/* /usr/bin/
    echo '将docker.service 移到/etc/systemd/system/ 目录...'
    cp docker.service /etc/systemd/system/
    echo '添加文件权限...'
    chmod +x /etc/systemd/system/docker.service
    echo '重新加载配置文件...'
    systemctl daemon-reload
    echo '启动docker...'
    systemctl start docker
    echo '设置开机自启...'
    systemctl enable docker.service
    echo 'docker安装成功...'
    docker -v                                                                

    在linux系统中需要将一个服务设置成开机自启动,一般可以配置一个脚本service文件,放入到 

    /usr/lib/systemd/system 目录下面。 例如docker服务:

    [Unit]
    Description=Docker Application Container Engine
    Documentation=https://docs.docker.com
    After=network-online.target firewalld.service
    Wants=network-online.target

    [Service]
    Type=notify
    # the default is not to use systemd for cgroups because the delegate issues still
    # exists and systemd currently does not support the cgroup feature set required
    # for containers run by docker
    ExecStart=/usr/bin/dockerd
    ExecReload=/bin/kill -s HUP $MAINPID
    # Having non-zero Limit*s causes performance problems due to accounting overhead
    # in the kernel. We recommend using cgroups to do container-local accounting.
    LimitNOFILE=infinity
    LimitNPROC=infinity
    LimitCORE=infinity
    # Uncomment TasksMax if your systemd version supports it.
    # Only systemd 226 and above support this version.
    #TasksMax=infinity
    TimeoutStartSec=0
    # set delegate yes so that systemd does not reset the cgroups of docker containers
    Delegate=yes
    # kill only the docker process, not all processes in the cgroup
    KillMode=process
    # restart the docker process if it exits prematurely
    Restart=on-failure
    StartLimitBurst=3
    StartLimitInterval=60s

    [Install]
    WantedBy=multi-user.target
     

    然后使用systemctl enable xxx.service 命令开启即可。 

    docker ps -a 可以查看启动的容器

    2、neo4j 相关

    使用同样方式将服务设置成开机启动

    #!/bin/bash
    currentDir=$(cd `dirname $0`; pwd)
    targetDir=/opt/prov
    source /etc/profile

    ##检查用户是否为root用户,只允许root用户执行此脚本
    if [ $(id -u) != "0" ]; then
        echo "Error: You must be root to run this script, please use root to install"
        exit 1
    fi
    ##检查JDK环境
    if [ -z $JAVA_HOME ];then
        echo "JAVA_HOME not exists" 
        exit 1
    fi

    ##检查安装环境
    if [ ! -d "$targetDir" ];then
        mkdir -p $targetDir
        chmod 755 -R $targetDir
        if [ ! -d "$targetDir" ];then
            echo "$targetDir does not exist and cannot be created";
            exit 1
        fi
    fi

    tar -zxf $1  -C $targetDir

    cat > /lib/systemd/system/neo4j.service < [Unit]
    Description=neo4j
    After=network.target

    [Service]
    Type=forking
    Environment="JAVA_HOME=$JAVA_HOME"
    ExecStart=$targetDir/neo4j-community-3.4.5/bin/neo4j-start.sh
    ExecStop=$targetDir/neo4j-community-3.4.5/bin/neo4j-stop.sh
    PrivateTmp=true
     
    [Install]  
    WantedBy=multi-user.target
    EOF

    systemctl daemon-reload
    systemctl enable neo4j.service
    systemctl start neo4j.service

    exit 0

    注意在官方提供的压缩文件中,需要将启动命令写入shell脚本中作为一个sh文件执行,另外就是Neoj 的默认账号密码是在data目录下得dbms auth 文件中,如果忘记密码了,可以删除这个文件重新启动,会生成默认账号密码。

    另外neo4j 注意配置允许远程访问

    将 54 行的【# dbms.connectors.default_listen_address=0.0.0.0】注释 【#】去掉

    3、数据库处理

     对于需要使用脚本导入数据的时候,可以直接连接,用命令导入数据,例如:

    #!/bin/bash
    currentDir=$(cd `dirname $0`; pwd)
    mysql -u账号 -p密码 -P端口 -h地址 < use 数据库名称;
    source $currentDir/数据库数据.sql;

    EOF

    exit 0

    批量修改数据库中某些表的某个字段数据,可以先根据元数据中找出这些数据,然后用concat拼接sql 语句,最后分组返回一个字符串。

    select GROUP_CONCAT(p.execSql SEPARATOR '; ' )

    from

    (

    SELECT

    CONCAT( 'UPDATE ', table_name, ' SET 修改字段 = 修改值' ) AS `execSql`,

    '1' AS id

    from

    (

    SELECT TABLE_NAME FROM

    information_schema.COLUMNS

    WHERE

    COLUMN_NAME='修改字段'

    and table_name in

    (

    select table_name from information_schema.TABLES where TABLE_SCHEMA='数据库名称'

    )

    )

    T

    )

    P

    GROUP BY P.id

    需要注意group_concat 最大限制修改:

    show global VARIABLES like 'group_concat_max_len'

    set global group_concat_max_len=1024000

     

    navicat 导入数据注意设置最大传输包大小限制:

    show global variables like 'max_allowed_packet'

    set global max_allowed_packet=1024*1024*32

  • 相关阅读:
    windows上安装好了pip,并正确配置了路径后,特别地使用
    专业五月考自测
    【LeetCode】删除有序数组中的重复项、合并两个有序数组
    PHP变量底层原理
    java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
    解决CentOS 7 无法连接外网(新手友好版)
    SpringCloud基础概念学习笔记(Eureka、Ribbon、Feign、Zuul)
    【精讲】vue中的集成动画及配置代理
    零基础html学习/刷题-第一期
    如何用 Docker 安装运行 mysql?
  • 原文地址:https://blog.csdn.net/yangwubolwg/article/details/127999024