本文安装包无法上传,可以找对应的安装包放在对应的目录下,有什么建议可以提一下
#!/bin/bash
#存放服务目录
Pwd="/data/program"
#存放软件包目录
App="/data/deploy"
Usr="/usr/local"
if [ ! -d $Pwd ]
then
mkdir -p $Pwd
fi
SELECT(){
echo
cat <<EOF
DATE : `date +%Y-%m-%d-%T`
==========================================
请选择对应数字的服务安装
==========================================
** 1)maven **
** 2)nginx **
** 3)redis **
** 4)mongo **
** 5)mysql **
** 6)node **
==========================================
EOF
}
#基础环境配置
Maven(){
#安装jdk
yum -y install vim lrzsz wget net-tools
if [ ! -d "$Usr/jdk1.8.0_171" ];then
tar -zxvf $App/jdk-8u171-linux-x64.tar.gz -C $Usr
if [ ! -d "$Usr/jdk" ];then
mv $Usr/jdk1.8.0_171 $Usr/jdk
fi
fi
#安装maven
if [ ! -d "$Usr/apache-maven-3.6.3" ];then
tar -zxvf $App/apache-maven-3.6.3-bin.tar.gz -C $Usr
if [ ! -d "$Usr/maven" ];then
mv $Usr/apache-maven-3.6.3 $Usr/maven
rm -rf /usr/local/maven/conf/settings.xml
cp $App/settings.xml /usr/local/maven/conf
fi
fi
#导入环境变量
cat << zhou >> /etc/profile
#java env
JAVA_HOME=/usr/local/jdk
JAVA_BIN=/usr/local/jdk
PATH=\$JAVA_HOME/bin:\$PATH
CLASSPATH=\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib
#maven env
export MVN_HOME=/usr/local/maven
export PATH=\$PATH:\$JAVA_HOME/bin:\$MVN_HOME/bin
zhou
soucre /etc/profile
echo -e '\033[32m----------------------------------环境已配置成功---------------------\033[0m'
sleep 3s
#继续选择部署
echo "继续选择需要安装的服务 不安装则exit退出 "
SELECT
read -p "Please choose [1-6]:" num
}
#nginx安装
Nginx(){
echo "nginx 部署 "
#安装nginx的依赖包
if [ ! -d "$Usr/pcre-8.35" ];then
tar -xvf $App/pcre-8.35.tar.gz -C $Usr
if [ ! -d "$Usr/pcre" ];then
mv $Usr/pcre-8.35 $Usr/pcre
fi
fi
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
cd $Usr/pcre
if ./configure 1>/dev/null
then
if make && make install 1>/dev/null
then
echo "pcre 安装成功"
else
echo "pcre 安装失败"
exit 1
fi
else
echo "make fail"
exit 1
fi
sleep 3s
if [ ! -d "$Pwd/nginx-1.14.2" ];then
tar -xvf $App/nginx-1.14.2.tar.gz -C $Pwd
fi
cd $Pwd/nginx-1.14.2
#编译nginx
if ./configure --prefix=/data/program/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/pcre 1>/dev/null
then
if make && make install 1>/dev/null
then
echo "nginx 安装成功"
else
echo "nginx 安装失败"
exit
fi
else
echo "configure fail"
exit 1
fi
sleep 3s
#修改配置文件
cat << zhou > /data/program/nginx/conf/nginx.conf
#user nobody;
worker_processes 2;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
log_format logstash_json '{ "@timestamp": "\$time_iso8601", '
'"remote_addr": "\$remote_addr", '
'"host": "\$host", '
'"remote_user": "\$remote_user", '
'"body_bytes_sent": "\$body_bytes_sent", '
'"request_time": "\$request_time", '
'"upstream_response_time": "\$upstream_response_time", '
'"hostname": "\$hostname", '
'"status": "\$status", '
'"upstream_addr": "\$upstream_addr", '
'"request_uri": "\$request_uri", '
'"request_method": "\$request_method", '
'"http_referrer": "\$http_referer", '
'"body_bytes_sent":"\$body_bytes_sent", '
'"http_x_forwarded_for": "\$http_x_forwarded_for", '
'"http_user_agent": "\$http_user_agent" } ';
access_log logs/access.log logstash_json;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 120;
keepalive_timeout 65;
proxy_read_timeout 600;
client_max_body_size 80m;
#client_max_body_size 100m;
include /data/program/nginx/conf.d/*.conf;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript;
gzip_vary off;
gzip_disable "MSIE [1-6]\.";
}
zhou
echo -e '\033[32m 需要加反向代理的配置文件,已放在家目录下
_________________________________________________________________
_________________________________________________________________\033[0m'
sleep 3s
#配置项目转发配置
mkdir -p $Pwd/nginx/conf.d
cp /data/deploy/*.conf $Pwd/nginx/conf.d
#启动nginx
.$Pwd/nginx/sbin/nginx
#继续安装服务
echo "继续选择需要安装的服务 不安装则exit退出"
SELECT
read -p "Please choose [1-6]:" num
}
#redis的安装
Redis(){
#安装redis的依赖环境
yum -y install cpp make gcc glibc-devel glibc-common glibc-kernheaders glibc binutils
#解压
if [ ! -d "$Pwd/redis-5.0.2" ];then
tar -xvf $App/redis-5.0.2.tar.gz -C $Pwd
cd $Pwd/redis-5.0.2/src
make
fi
sed -i 's/daemonize no/daemonize yes/g' $Pwd/redis-5.0.2/redis.conf
sed -i 's/# requirepass foobared/requirepass Yet@9LJB6Gl#DQl9*jXTFYY5h6#xP$VQ/g' $Pwd/redis-5.0.2/redis.conf
cd $Pwd/redis-5.0.2/src
./redis-server ../redis.conf
./redis-cli ping &> /dev/null
if [ $? -eq 0 ]
then
echo "redis is up "
else
echo "redis is down "
fi
#继续安装
echo "继续选择需要安装的服务 不安装则exit退出"
SELECT
read -p "Please choose [1-6]:" num
}
#MongoDB副本集的安装
Mongo(){
echo "mongodb 数据库的安装"
#!/bin/bash
#一键式部署mongodb replica set 集群
#多机版的副本集集群!
#存放服务目录
Usr="/usr/local"
Ip="192.168.142.101"
passwd="wxb"
#多机部署,可以就是分开部署master和slave
#arbiter裁决服务器是不会存储数据的可以随便部署在任意一台服务器中
#准备环境
yum -y install wget >/dev/null
#下载非交互式远程连接工具
yum -y install sshpass >/dev/null
sshpass -p "$passwd" scp /$Pwd/mongodb-linux-x86_64-3.4.4.tgz root@$Ip:$Pwd
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "cd $Pwd && tar -xvf mongodb-linux-x86_64-3.4.4.tgz -C $Pwd >/dev/null"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "mv $Pwd/mongodb-linux-x86_64-3.4.4.tgz/ $Pwd/mongo"
#导入环境变量
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "cat << wxb >>/etc/profile
export MONGODB_HOME=/data/program/mongo
export PATH=\$MONGODB_HOME/bin:\$PATH
wxb"
#完成后执行一下刷新即可source /etc/profile
#创建master数据存放目录
mkdir -p $Pwd/{mongo_data,mongo_log,mongo_pid}
#创建 slave的存放目录
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip " mkdir -p $Pwd/{mongo_data,mongo_log,mongo_pid}"
#创建 arbiter的存放目录
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "mkdir -p $Pwd/{mongo_arbiter_data,mongo_arbiter_log,mongo_arbiter_pid}"
# 11 服务器配置master服务
#创建master的配置文件
echo '
#master.conf
#数据目录
dbpath=$Pwd/mongo_data
#日志目录
logpath=$Pwd/mongo_log/master.log
#pid文件
pidfilepath=$Pwd/mongo_pid/master.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=$Pwd/mongo/testKeyFile.file
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定的端口
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > $Pwd/mongo/mongodb.conf
##配置 “slave”
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "echo '
#slave.conf
#数据目录
dbpath=$Pwd/mongo_data
#日志目录
logpath=$Pwd/mongo_log/slave.log
#pid文件
pidfilepath=$Pwd/mongo_pid/slave.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=$Pwd/mongo/testKeyFile.file
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27017
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > $Pwd/mongo/mongodb-slave.conf"
##配置裁决arbiter
#创建arbiter的配置文件
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "echo '
#arbiter.conf
#数据目录
dbpath=$Pwd/mongo_arbiter_data
#日志目录
logpath=$Pwd/mongo_arbiter_log/arbiter.log
#pid文件
pidfilepath=$Pwd/mongo_arbiter_pid/arbiter.pid
#节点之间用于验证文件,内容必须保持一致,权限600,仅Replica Set 模式有效
#keyFile=$Pwd/mongo/arbiter_testKeyFile.file
#数据库分目录存放
directoryperdb=true
#日志追加式存放
logappend=true
#replica set的名字
replSet=testdb
#绑定的IP
bind_ip=0.0.0.0
#指定slave的端口,单机部署的话端口不能一样
port=27018
#是否开启认证
#auth=true
#设置oplog的大小(MB)
oplogSize=100
#守护进程(后台运行)
fork=true
#不预先分配存储
#noprealloc=true
#最大连接数,默认2000
#maxConns=4000' > $Pwd/mongo/mongodb-arbiter.conf"
#启动服务
echo "启动master,slave,arbiter,服务"
$Pwd/mongo/bin/mongod -f ../mongodb-master.conf >/dev/null
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-slave.conf >/dev/null"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-arbiter.conf >/dev/null"
sleep 2
#开始配置replica set 副本集
echo "现在配置replica set 副本集"
Mongodb='$Pwd/mongo/bin/mongo'
$Mongodb <<EOF
use admin
cfg={
"_id" : "testdb",
"members" : [
{
"_id" : 0,
"host" : "192.168.142.100:27017",
"priority" : 2
},
{
"_id" : 1,
"host" : "192.168.142.101:27017",
"priority" : 1
},
{
"_id" : 2,
"host" : "192.168.142.101:27018",
"arbiterOnly" : true
}
]
}
rs.initiate(cfg)
rs.status()
exit;
EOF
sleep 2
echo ”到此mongodb-replica set 部署完毕,如此就不会引发mongodb的路由回旋“
#部署认证的复制
cp /data/deploy/testKeyFile.file $Pwd/mongo/testKeyFile.file
sshpass -p "$passwd" scp /data/deploy/testKeyFile.file root@$Ip:$Pwd/mongo
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "cp $Pwd/mongo/testKeyFile.file $Pwd/mongo/arbiter_testKeyFile.file >/dev/null"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "cd $Pwd/mongo && chmod 600 *.file "
#创建用户
$Mongodb <<EOF
use admin
db.createUser({user:"wcb",pwd:"123456789",roles:[{role:"root",db:"wcb-core"}]})
exit;
EOF
sleep 2
#开启密码验证和keyfile验证
sed -i 's/#auth=true/auth=true/g' $pwd/mongo/mongodb.conf && sed -i 's/#keyFile=$Pwd/mongo/testKeyFile.file/keyFile=$Pwd/mongo/testKeyFile.file/g' $pwd/mongo/mongodb.conf
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "sed -i 's/#auth=true/auth=true/g' $Pwd/mongo/mongodb-slave.conf && sed -i 's/#keyFile=$Pwd/mongo/testKeyFile.file/keyFile=$Pwd/mongo/testKeyFile.file/g' $pwd/mongo/mongodb-slave.conf"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "sed -i 's/#auth=true/auth=true/g' $Pwd/mongo/mongodb-arbiter.conf && sed -i 's/#keyFile=$Pwd/mongo/testKeyFile.file/keyFile=$Pwd/mongo/testKeyFile.file/g' $pwd/mongo/mongodb-arbiter.conf"
#重启mongo
echo "启动master,slave,arbiter,服务"
$Pwd/mongo/bin/mongod -f ../mongodb-master.conf --shutdown >/dev/null
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-slave.conf --shutdown>/dev/null"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-arbiter.conf --shutdown >/dev/null"
sleep 5
$Pwd/mongo/bin/mongod -f ../mongodb-master.conf >/dev/null
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-slave.conf >/dev/null"
sshpass -p "$passwd" ssh -o StrictHostKeyChecking=no root@$Ip "$Pwd/mongo/bin/mongod -f ../mongodb-arbiter.conf >/dev/null"
}
#mysql的安装
Mysql(){
echo " MySQL 5.7.10 数据库的安装 "
#解压
if [ ! -d "$Pwd/mysql-5.7.10-linux-glibc2.5-x86_64" ];then
tar -xvf $App/mysql-5.7.10-linux-glibc2.5-x86_64.tar.gz -C $Pwd
fi
#修改文件名
if [ ! -d "$Pwd/mysql" ];then
mv $Pwd/mysql-5.7.10-linux-glibc2.5-x86_64 $Pwd/mysql
fi
#创建数据存储目录
if [ ! -d "$Pwd/mysql/data" ];then
mkdir -p $Pwd/mysql/data
fi
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql $Pwd/mysql/
chown -R mysql:mysql $Pwd/mysql/data/
chown -R mysql $Pwd/mysql/
chown -R mysql $Pwd/mysql/data/
chmod -R 755 $Pwd/mysql/
yum -y install libaio
sleep 3s
echo " " > /etc/my.cnf
#导入配置文件
cat << wxb > /etc/my.cnf
[client]
no-beep
socket = $Pwd/mysql/mysql.sock
# pipe
# socket=0.0
port=3306
[mysql]
default-character-set=utf8
[mysqld]
basedir= $Pwd/mysql
datadir= $Pwd/mysql/data
port=3306
pid-file= $Pwd/mysql/mysqld.pid
skip-grant-tables
skip-name-resolve
socket = $Pwd/mysql/mysql.sock
character-set-server=utf8
default-storage-engine=INNODB
explicit_defaults_for_timestamp = true
# Server Id.
server-id=1
max_connections=2000
query_cache_size=0
table_open_cache=2000
tmp_table_size=246M
thread_cache_size=300
#限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用
thread_stack = 192k
key_buffer_size=512M
read_buffer_size=4M
read_rnd_buffer_size=32M
innodb_data_home_dir = $Pwd/mysql/data
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=16M
innodb_buffer_pool_size=256M
innodb_log_file_size=128M
innodb_thread_concurrency=128
innodb_autoextend_increment=1000
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
back_log=80
flush_time=0
join_buffer_size=128M
max_allowed_packet=1024M
max_connect_errors=2000
open_files_limit=4161
query_cache_type=0
sort_buffer_size=32M
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000
#批量插入数据缓存大小,可以有效提高插入效率,默认为8M
bulk_insert_buffer_size = 64M
interactive_timeout = 120
wait_timeout = 120
log-bin-trust-function-creators=1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
wxb
#编译数据库
cd $Pwd/mysql/bin/
./mysqld --user=mysql --basedir=$Pwd/mysql --datadir=$Pwd/mysql/data --initialize
cp $Pwd/mysql/support-files/mysql.server /etc/init.d/mysqld
if [ ! -x "/etc/init.d/mysqld" ];then
chmod 755 /etc/init.d/mysqld
fi
cd /etc/init.d
./mysqld start
#跳过密码 修改密码
cd $Pwd/mysql/bin
./mysql -uroot -p <<EOF
UPDATE mysql.user SET authentication_string = PASSWORD('NEW_USER_PASSWORD')WHERE User = 'root' AND Host = 'localhost';
flush privileges;
quit
EOF
sed -i 's/skip-grant-tables/#skip-grant-tables/g' /etc/my.cnf
./etc/init.d/msyqld restart
#授权用户 初始化数据库
./mysql -uroot -pNEW_USER_PASSWORD <<EOF
grant all privileges on *.* to root@'%' identified by 'NEW_USER_PASSWORD';
flush privileges;
source /data/deploy/authority.sql;
quit
EOF
echo -e '\033[32m Mysql安装成功 需要修改配置文件后启动,以及启动后需进入数据库修改密码
————————————————————————————————————————————————————————————————————————————
————————————————————————————————————————————————————————————————————————————\033[0m'
sleep 3s
#继续安装服务
echo "继续选择需要安装的服务 不安装则exit退出"
SELECT
read -p "Please choose [1-6]:" num
}
#node安装
Node(){
echo " node 的安装 "
#nvm 的 安装
if [ ! -d "/root/.nvm" ];then
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
cat << wxb >>/root/.bashrc
export NVM_DIR="\$HOME/.nvm"
[ -s "\$NVM_DIR/nvm.sh" ] && \. "\$NVM_DIR/nvm.sh" # This loads nvm
[ -s "\$NVM_DIR/bash_completion" ] && \. "\$NVM_DIR/bash_completion" # This loads nvm bash_completion
wxb
source /root/.bashrc
fi
#node 的安装
if [ ! -d "/root/.nvm/versions/node" ];then
NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
nvm install 8.11.4
fi
#pm2 的安装
if [ ! -d "/root/.pm2" ];then
npm config set registry https://registry.npm.taobao.org
npm install -g pm2
fi
#继续安装服务
echo "继续选择需要安装的服务 不安装则exit退出"
SELECT
read -p "Please choose [1-6]:" num
}
SELECT
read -p "Please choose [1-6]:" num
case $num in
1)
Maven
;;
2)
Nginx
;;
3)
Redis
;;
4)
Mongo
;;
5)
Mysql
;;
6)
Node
;;
*)
clear
exit
;;
esac