后台部署运维零碎总结

一、场景

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

二、环境

1、VMware 虚拟机

Download VMware Workstation Pro

2、获取CentOs 镜像

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

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

后台部署运维零碎总结_第1张图片 

 

三、执行

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

你可能感兴趣的:(后端,运维)