化妆品排行榜
  1. 首页 >
  2. 美妆资讯 >
  3. 美妆 >
  1. 通过这个部署脚本看看能否提升你的shell能力

美妆资讯
通过这个部署脚本看看能否提升你的shell能力
2023-08-05

提醒:本文为合集文章,后续会持续更新!

关注我,持续学习shell脚本,每日提升!

前几天给了一个Nginx部署脚本,今天再来一个MySQL的部署脚本。同样地,先给出部署文档步骤:

1)下载

cd /usr/local\nsudo curl -O https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz

2)解压

sudo tar Jxf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz\nsudo ln -s mysql-8.0.30-linux-glibc2.12-x86_64 mysql

3)创建用户

sudo useradd -s /sbin/nologin mysql

4)创建数据目录

sudo mkdir -p /data/mysql\nsudo chown -R mysql:mysql /data/mysql

5)定义配置文件

sudo vi /etc/my.cnf #写入如下内容\n[mysql]\nport = 3306\nsocket = /tmp/mysql.sock\n[mysqld]\nuser = mysql\nport = 3306\nbasedir = /usr/local/mysql\ndatadir = /data/mysql\nsocket = /tmp/mysql.sock\npid-file = /data/mysql/mysqld.pid\nlog-error = /data/mysql/mysql.err

6)安装依赖

##Rocky / CentOS\nsudo yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64 libaio-devel\n## Ubuntu\nsudo apt install libaio-dev libtinfo5

7)初始化

/usr/local/mysql/bin/mysqld --console --initialize-insecure --user=mysql ## initialize-insecure使用空密码

8)启动

sudo vi /usr/lib/systemd/system/mysqld.service #写如下内容\n[Unit]\nDescription=MYSQL server\nAfter=network.target\n[Install]\nWantedBy=multi-user.target\n[Service]\nType=forking\nTimeoutSec=0\nPermissionsStartOnly=true\nExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize $OPTIONS\nExecReload=/bin/kill -HUP -$MAINPID #这里-HUP可以是改成-s HUP,就变成强制杀进程,有需要可以改,下面也一样\nExecStop=/bin/kill -QUIT $MAINPID #-s QUIT是强制杀进程\nKillMode=process\nLimitNOFILE=65535\nRestart=on-failure\nRestartSec=10\nRestartPreventExitStatus=1\nPrivateTmp=false\n### end\n\nsudo systemctl daemon-reload\nsudo systemctl enable mysqld\nsudo systemctl start mysqld

9)配置环境变量

sudo vi /etc/profile #最后面增加下面一行内容\nexport PATH=$PATH:/usr/local/mysql/bin\n## 然后执行下面命令,使其生效\nsudo source /etc/profile

10)设置密码

mysqladmin -uroot password your_new_passwd

将上面步骤写成脚本:

#!/bin/bash\n\n### 设置变量 ###\nmysql_url=https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz\n\nmysql_base_dir=/usr/local/mysql\nmysql_data_dir=/data/mysql\n\nmysql_root_pwd=aminglinux.Com\nmysql_rep_pwd=Aminglinux123\n\n##########################\nck_ok()\n{\n if [ $? -ne 0 ]\n then\n echo $1 error.\n exit 1\n fi\n}\ndownload_mysql()\n{\n ##下载前,先判断当前目录下是否已经下载过\n cd /usr/local\n if [ -f mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz ]\n then\n echo 当前目录已经存在mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz\n echo 检测md5\n mysql_md5=`md5sum mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz|awk {print $1}`\n if [ ${mysql_md5} == 2469b1ae79e98110277d9b5bee301135 ]\n then\n return 0\n else\n sudo /bin/mv mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz.old\n fi\n fi\n sudo wget ${mysql_url}\n ck_ok 下载mysql\n}\n\ninstall_mysql()\n{\n cd /usr/local\n echo 解压mysql\n sudo tar Jxf mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz\n ck_ok 解压mysql\n if [ -d ${mysql_base_dir} ]\n then\n echo ${mysql_base_dir}已经存在,挪走\n sudo /bin/mv ${mysql_base_dir} ${mysql_master_base_dir}-`date +%s`\n fi\n sudo mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql\n if id mysql &>/dev/null\n then\n echo 系统已经存在mysql用户,跳过创建\n else\n echo 创建mysql用户\n sudo useradd -s /sbin/nologin mysql\n fi\n\n if [ -d ${mysql_data_dir} ]\n then\n echo ${mysql_data_dir}已经存在,挪走\n sudo /bin/mv ${mysql_data_dir} ${mysql_data_dir}-`date +%s`\n fi\n echo 创建mysql datadir\n sudo mkdir -p ${mysql_data_dir}\n sudo chown -R mysql ${mysql_data_dir}\n\n\n if [ -f ${mysql_base_dir}/my.cnf ]\n then\n echo master配置文件已经存在,删除\n sudo rm -f ${mysql_base_dir}/my.cnf\n fi\n echo 创建master配置文件my.cnf\n cat > /tmp/my.cnf <<EOF\n[mysqld]\nuser = mysql\nport = 3306\nserver_id = 1\nbasedir = ${mysql_base_dir}\ndatadir = ${mysql_data_dir}\nsocket = /tmp/mysql.sock\npid-file = ${mysql_data_dir}/mysqld.pid\nlog-error = ${mysql_data_dir}/mysql.err\nEOF\n sudo /bin/mv /tmp/my.cnf ${mysql_base_dir}/my.cnf\n\n echo 安装依赖\n sudo yum install -y ncurses-compat-libs-6.1-9.20180224.el8.x86_64 libaio-devel\n\n echo 初始化\n sudo ${mysql_base_dir}/bin/mysqld --console --datadir=${mysql_data_dir} --initialize-insecure --user=mysql\n ck_ok 初始化\n\n if [ -f /usr/lib/systemd/system/mysqld.service ]\n then\n echo mysql服务管理脚本已经存在,挪走\n sudo /bin/mv /usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/mysqld.service-`date +%s`\n fi\n echo 创建服务启动脚本\n cat > /tmp/mysqld.service <<EOF\n[Unit]\nDescription=MYSQL server\nAfter=network.target\n[Install]\nWantedBy=multi-user.target\n[Service]\nType=forking\nTimeoutSec=0\nPermissionsStartOnly=true\nExecStart=${mysql_base_dir}/bin/mysqld --defaults-file=${mysql_base_dir}/my.cnf --daemonize $OPTIONS\nExecReload=/bin/kill -HUP -$MAINPID\nExecStop=/bin/kill -QUIT $MAINPID\nKillMode=process\nLimitNOFILE=65535\nRestart=on-failure\nRestartSec=10\nRestartPreventExitStatus=1\nPrivateTmp=false\nEOF\n\n sudo /bin/mv /tmp/mysqld.service /usr/lib/systemd/system/mysqld.service\n sudo systemctl unmask mysqld\n sudo systemctl daemon-reload\n sudo systemctl enable mysqld\n echo 启动mysql\n sudo systemctl start mysqld\n ck_ok 启动mysql\n\n\n echo 设置mysql密码\n ${mysql_base_dir}/bin/mysqladmin -S/tmp/mysql.sock -uroot password ${mysql_root_pwd}\n ck_ok 设置mysql密码\n}\n\nmain()\n{\n download_mysql\n install_mysql\n}\n\nmain

写脚本最重要的是思路,有了思路,有了命令,还难么?当然,我们还需要考虑到脚本可能出现的异常,比如下载的包不对,很有可能导致后面的解压出错。所以就需要先判断下载的包到底对不对。不过,这个能力就需要一点一点积累了,多写多练肯定是没错的。

关注阿铭linux,持续提升!

版权声明:CosMeDna所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系删除!

本文链接://www.cosmedna.com/article/934454339.html