涉及redis,mysql,xtrabackup, tomcat

1. ubuntu中

#!/bin/bash

#first, change to root

#出错立刻中断
set -e apt-get update
#useful tools
apt-get -y install build-essential libssl-dev libcurl4-openssl-dev unzip makepasswd lrzsz \
language-pack-zh-hans-base python-pip python-dev libxp6 libev-dev pwgen expect #. auto scp software from aliyun #/usr/bin/expect <<EOF SCP拷贝,这种方式老是传一半出错。
#set ip 47.52.136.86
#set pass 12345 #spawn ssh root@$ip
#spawn scp -r root@$ip:/root/UBUNTU .
#expect {
# "(yes/no)" {send "yes\r"; exp_continue}
# " password: " {send "$pass\r"}
#} #expect "*#" {send "df -h\r"}
#expect "*#" {send "exit\r"}
#expect eof #EOF #rsync支持断点续传
rsync -rP --rsh=ssh 47.52.136.86:/root/UBUNTU/ /root echo "nameserver 114.114.114.114" >> /etc/resolvconf/resolv.conf.d/base
resolvconf -u #. this script is for creating a new user
A_NAME=$(ls /home)
[ -z "A_NAME" ] && /usr/sbin/useradd axinfu
A_NAME=$(ls /home) su - $A_NAME -c "mkdir axinfu && cd axinfu && mkdir mgrfilepath cert accountfile config" #. this script is for JDK
JdkPath="/usr/lib/jvm" if [ ! -d "$JdkPath" ]; then
mkdir -p $JdkPath #attention here
fi tar xzvf jdk.tar.gz -C /usr/lib/jvm update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_80/bin/java"
update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_80/bin/javac"
update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_80/bin/javaws" #set env for jdk
JAVA_HOME=/usr/lib/jvm/jdk1..0_80 (
cat << EOF
export JAVA_HOME=/usr/lib/jvm/jdk1..0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
)>>/etc/profile #another way, this is better
#cat >> /etc/profile <<EOF
#LINE
#LINE
#EOF source /etc/profile #.for tomcat
tar xzvf apache-tomcat-7.0..tar.gz -C /home/"${A_NAME}"
mv /home/$A_NAME/apache-tomcat-7.0./webapps /home/$A_NAME
chown -R $A_NAME:$A_NAME /home/$A_NAME #copy setenv.sh for tomcat
cp /usr/lib/jvm/setenv.sh /home/$A_NAME/apache-tomcat-7.0./bin/ #change ownership of tomcat
/bin/chown -R $A_NAME:$A_NAME /home/$A_NAME/apache-tomcat-7.0./ #edit server.xml
sed -i -e '22 s/8005/-1/' -e '71 s/8080/8081/' -e '125 s#webapps#../webapps#' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml
sed -i -e '93 s/</<!--/' -e '93 s/>/-->/' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml sed -i -e '71 s#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml #start tomcat
/bin/su -s /bin/sh - $A_NAME -c "cd /home/$A_NAME/apache-tomcat-7.0.81/bin/&&./startup.sh"
#上面这个命令可以简化为
#su - $A_NAME -c "cd apache-tomcat-7.0.81/bin/&&./startup.sh"
#-c command:变更为帐号为USER的使用者并执行指令后再变回原来使用者。command一般用双引号指定
#-s shell:指定要执行的shell,而且参数中必须是shell的完整的路径。如果没有,则默认为/bin/sh,所以这里也可以不写
#-或-l或--login:这个参数加了之后,就好像是重新login为该使用者一样,工作目录也会改变为该用户的家目录 cat tomcat > /etc/init.d/tomcat
/bin/chmod /etc/init.d/tomcat #add to startlist
update-rc.d tomcat defaults #. for crontab
(
cat << EOF
* * * python /root/mysql_back_up/main.py full
* * * * python /root/mysql_back_up/main.py inc
EOF
)>/var/spool/cron/crontabs/root
/bin/chmod +x /var/spool/cron/crontabs/root #. collect info
CPU=$(lscpu | sed -n '4p' | awk -F "[ ]+" '{print $2}')
BLK=$(lsblk | grep disk | awk -F "[ ]+" '{print $4}')
RAM=$(free -g | grep Mem | awk -F "[ ]+" '{print $2}')
PLATFORM=$(dmidecode -s system-product-name) (
cat << EOF
cpu:$CPU
disk:$BLK
ram:$RAM
platform:$PLATFORM EOF
)>INFO cat /proc/scsi/scsi | grep Vendor >> INFO
echo -e "\n" >> INFO
cat /proc/version >> INFO #create password
pwgen -Bs > secret.txt #. for mysql exist=$(dpkg -l | grep mysql) # 若没有返回,说明已完成卸载
if [ -n "$exist" ]; then
#uninstll mysql5.
apt-get autoremove --purge mysql-server-.*
apt-get remove mysql-common
dpkg -l |grep ^rc|awk '{print $2}' | xargs dpkg -P
fi #install mysql5. http://blog.csdn.net/u011304615/article/details/68942115
echo 'mysql-server-5.6 mysql-server/root_password password 123' | debconf-set-selections
echo 'mysql-server-5.6 mysql-server/root_password_again password 123' | debconf-set-selections
#apt-get install mysql-client-core-5.6 mysql-client-5.6 mysql-server-5.6 -y 这种安装方式修改字符集会启动不了mysql
apt-get install -y mysql-server-5.6 mysql-client-5.6 libmysqlclient-dev #在[mysqld]行后面加入内容,解决不同版本[mysqld]行数不同的问题
sed -ir "/[mysqld]/ a character_set_server=utf8 \nbinlog_format=row" /etc/mysql/my.cnf
service mysql restart mysql -uroot -p123 -e "GRANT RELOAD, PROCESS, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bak'@'localhost' IDENTIFIED BY 'axfchonga';FLUSH PRIVILEGES" mysql_secure_installation #. for backup wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/debian/trusty/x86_64/percona-xtrabackup-24_2.4.8-1.trusty_amd64.deb
dpkg -i percona-xtrabackup-24_2.4.8-.trusty_amd64.deb #. this script is for REDIS
tar xzvf redis-stable.tar.gz
cd redis-stable
#yum -y groupinstall "Development Tools"
make
make install
cd utils
/usr/bin/expect <<EOF
spawn ./install_server.sh
expect "*6379*" {send "\r"}
expect "*conf*" {send "\r"}
expect "*log*" {send "\r"}
expect "*var/lib*" {send "\r"}
expect "*server*" {send "\r"}
expect "*ok*" {send "\r"}
expect eof EOF

2. centos中

#!/bin/bash

#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

#
yum update
yum install autoconf automake binutils bison flex gcc gcc-c++ gettext libtool make patch pkgconfig rpm-build yum-utils epel-release
yum-plugin-fastestmirror yum-plugin-downloadonly openssl-devel nc curl wget man nss vim system-config-network-tui bind-utils lokkit pciutils redhat-lsb-core libX11 libXp telnet #. for mysql
wget https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el6/mysql57-community-release-el6-7.noarch.rpm
rpm -ivh mysql57-community-release-el6-.noarch.rpm
sed -ie '27 s/0/1/; 34 s/1/0/' /etc/yum.repos.d/mysql-community.repo #参数i必须在参数e前面,e表示可以有多个命令
yum install mysql-community-server mysql-community-devel mysql-community-client #sed -i -e '2 i character-set-server=uft8' -e '2 i binlog-format=row' /etc/my.cnf
sed -ir '/\[mysqld\]/a character-set-server=utf8 \nbinlog-format=row' /etc/my.cnf service mysqld start #. create user
A_NAME=$(ls /home)
[ -z "A_NAME" ] && /usr/sbin/useradd axinfu
A_NAME=$(ls /home) su - $A_NAME -c "mkdir axinfu && cd axinfu && mkdir mgrfilepath cert accountfile config"
#another way
#A_NAME=$(cat /etc/passwd | grep home | cut -d: -f ) #有的系统是500,所以取不到。
#[ -z "A_NAME" ] && /usr/sbin/useradd axinfu
#A_NAME=$(cat /etc/passwd | grep home | cut -d: -f ) #. for JDK
JdkPath="/usr/lib/jvm" if [ ! -d "$JdkPath" ]; then
mkdir -p $JdkPath #attention here
fi tar xzvf jdk.tar.gz -C /usr/lib/jvm update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.7.0_80/bin/java"
update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/jdk1.7.0_80/bin/javac"
update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/lib/jvm/jdk1.7.0_80/bin/javaws" #set env for jdk
JAVA_HOME=/usr/lib/jvm/jdk1..0_80 (
cat << EOF
export JAVA_HOME=/usr/lib/jvm/jdk1..0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EOF
)>>/etc/profile #another way, this is better
#cat >> /etc/profile <<EOF
#LINE
#LINE
#EOF
source /etc/profile #. for tomcat
tar xzvf apache-tomcat-7.0..tar.gz -C /home/"${A_NAME}"
mv /home/$A_NAME/apache-tomcat-7.0./webapps /home/$A_NAME
chown -R $A_NAME:$A_NAME /home/$A_NAME #copy setenv.sh for tomcat
cp /usr/lib/jvm/setenv.sh /home/$A_NAME/apache-tomcat-7.0./bin/ #change ownership of tomcat
/bin/chown -R $A_NAME:$A_NAME /home/$A_NAME/apache-tomcat-7.0./ #edit server.xml
sed -i -e '22 s/8005/-1/' -e '71 s/8080/8081/' -e '125 s#webapps#../webapps#' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml
sed -i -e '93 s/</<!--/' -e '93 s/>/-->/' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml
sed -i -e '71 s#HTTP/1.1#org.apache.coyote.http11.Http11NioProtocol#' /home/$A_NAME/apache-tomcat-7.0./conf/server.xml #start tomcat
/bin/su -s /bin/sh - $A_NAME -c "cd /home/$A_NAME/apache-tomcat-7.0.81/bin/&&./startup.sh"
#上面这个命令可以简化为
#su - $A_NAME -c "cd apache-tomcat-7.0.81/bin/&&./startup.sh"
#-c command:变更为帐号为USER的使用者并执行指令后再变回原来使用者。command一般用双引号指定
#-s shell:指定要执行的shell,而且参数中必须是shell的完整的路径。如果没有,则默认为/bin/sh,所以这里也可以不写
#-或-l或--login:这个参数加了之后,就好像是重新login为该使用者一样,工作目录也会改变为该用户的家目录
cat tomcat > /etc/init.d/tomcat
/bin/chmod /etc/init.d/tomcat chkconfig --add tomcat #. for mysql_crontab
(
cat << EOF
* * * python /root/mysql_back_up/main.py full
* * * * python /root/mysql_back_up/main.py inc
EOF
)>/var/spool/cron/root
/bin/chmod +x /var/spool/cron/root #. backup
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.8/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.8-1.el6.x86_64.rpm
wget ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm #依赖包
rpm -ivh libev-4.15-.el6.rf.x86_64.rpm
yum install perl-DBD-mysql #依赖包
yum -y install perl-Digest-MD5 #依赖包 rpm -ivh percona-xtrabackup--2.4.-.el6.x86_64.rpm #. for REDIS tar xzvf redis-stable.tar.gz
cd redis-stable
yum -y groupinstall "Development Tools"
make
make install
cd utils
./install_server.sh # download REDIS
#wget http://download.redis.io/redis-stable.tar.gz # download TOMCAT
#wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79.tar.gz

最新文章

  1. cmd 下通过NTML代理访问Maven 库
  2. CSS3的学习--实现瀑布流
  3. Extjs3 + swfUpload实现多文件上传控件
  4. RobotFrameWork http/https oauth接口测试 (一)
  5. js对汉字首字母排序
  6. Android:Intent传递数据的几种类型和源码实现
  7. 网络(一),libevent客户端部分
  8. Content-type 的说明
  9. PHP中session的使用
  10. 以前写过的ajax基础案例(王欢-huanhuan)
  11. Uva 1342 - That Nice Euler Circuit
  12. Java和R齐头并进才是根本
  13. ERROR 1045 (28000): Access denied for user xxx &amp; ERROR 1449 (HY000): The user specified as a definer xxx does not exists
  14. Android开发小问题集
  15. 配置GitHub Push自动触发Jenkins的构建
  16. Activity的介绍
  17. 第74节:Java中的Cookie和Session
  18. javascript 字符串函数
  19. 【传输协议】什么是CA证书
  20. JS将日期转化为unix时间戳

热门文章

  1. 推荐一个好用的sql版本控制和美化工具SQLToolbelt
  2. Openssl gendsa命令
  3. JMeter下载及安装配置完整版
  4. JAVA 上加密算法的实现用例,MessageDigest介绍
  5. p4980 polya定理
  6. 虚拟机上linux与windows之间复制粘贴
  7. 迁移ORACLE数据库文件到ASM
  8. java解决跨域
  9. 【转载】Redis Sentinel服务配置
  10. Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表