#!/bin/sh
# add fastrepo
#/bin/echo "nameserver 202.96.128.86" >> /etc/resolv.conf
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
dir=/usr/local/src
function install_rest() {
echo "nameserver 202.96.128.86">> /etc/resolv.conf
centos=`cat /etc/redhat-release`
XT=`cat /etc/redhat-release | awk '{print $3}'| cut -b1`
H=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
HX=`cat /proc/cpuinfo | grep "core id" |wc -l`
DD=`df -h /`
W=`getconf LONG_BIT`
G=`cat /proc/meminfo | awk '/MemTotal/{printf("%1.1fG\n",$2/1024/1024)}' | sort | uniq`
SJ=`date '+%Y-%m-%d %H:%M:%S'`
IP=`curl -s http://v4.ipv6-test.com/api/myip.php`
if [ -z $IP ]; then
IP=`curl -s https://www.boip.net/api/myip`
fi
echo "
===============================服务器配置================================
| 系统版本 | |CPU个数| |CPU核心| |运行内存| |操作系统|
|$centos| | $H个 | | $HX核 | | $G | | $W 位 |
===============================硬盘使用情况===============================
$DD
==========================================================================
IP地址:$IP
==========================================================================
欢迎使用一键脚本,傻瓜式操作,认识中文就能架设!
自动识别5.x系到6.x系的centos系统,安装相应的支持库
"
echo -n "
输入 yes :"
read TRY
while [ "$TRY" != "yes" ]; do
echo "输入有误,请重新输入:"
echo -n "
输入有误,请重新输入:"
read TRY
done
}
function yum_depend(){
#install dependencies packages
yum install -y apr* autoconf automake bison bzip2 bzip2* cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng* libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libX* libtiff libtiff* make mpfr ncurses* ntp openssl nasm nasm* openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib* wget zlib-devel cmake lrzsz dos2unix vim
#wget install pkg
cd $dir
wget http://down-1251283329.cosgz.myqcloud.com/pkg.zip?sign=0NHe4QrEoyxpYxZepzPaE8Q6hLxhPTEyNTEyODMzMjkmaz1BS0lEQkhLQ3NTVG1EVFhPNjN5c0RUWVJEZHMxMnJVQVI3akUmZT0xNTIzMDk1NDU0JnQ9MTUyMDUwMzQ1NCZyPTE4MzY1NTAzOSZmPS9wa2cuemlwJmI9ZG93bg== -O pkg.zip
unzip pkg.zip
}
function install_nginx(){
echo "Nginx or tengine will be installed,please be patient"
#安装pcre
cd /usr/local/src
mkdir /usr/local/pcre
tar zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure --prefix=/usr/local/pcre
make && make install
#安装openssl 用途: OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能 及SSL协议,并提供丰富的应用程序供测试或其它目的使用
cd /usr/local/src
mkdir /usr/local/openssl
tar zxvf openssl-1.0.1j.tar.gz
cd openssl-1.0.1j
./config --prefix=/usr/local/openssl
make && make install
echo 'export PATH=$PATH:/usr/local/openssl/bin' >> /etc/profile
source /etc/profile
#安装zlib 用途: 是一个压缩和解压模块
cd /usr/local/src
mkdir /usr/local/zlib
tar zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/zlib
make && make install
#安装gperftools 用途:提高了服务器在高并发情况下的性能,从而降低了系统的负载
cd /usr/local/src
tar zxvf gperftools-2.1.tar.gz
cd gperftools-2.1
./configure --enable-frame-pointers
make && make install
echo '/usr/local/lib' > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
mkdir /tmp/tcmalloc
chmod 777 /tmp/tcmalloc -R
#安装libunwind 用途: libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,32位操作系统不要安装。其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
cd /usr/local/src
tar zxvf libunwind-1.1.tar.gz
cd libunwind-1.1
./configure
make && make install
#安装tengine 特性: Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
groupadd www
useradd -g www www -s /bin/false
cd /usr/local/src
tar zxvf tengine-2.1.2.tar.gz
cd tengine-2.1.2
./configure --prefix=/usr/local/tengine --user=www --group=www --prefix=/usr/local/tengine --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_realip_module --with-google_perftools_module --with-http_sysguard_module --with-http_upstream_check_module --with-http_sub_module --with-openssl=/usr/local/src/openssl-1.0.1j --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.36
make && make install
ln -s /lib64/libpcre.so.0.0.1 /lib64/libprofiler.so.0
ln -s /usr/local/tengine /usr/local/nginx
#把Nginx的启动脚本放到/usr/local/src/ 方便copy
cp /usr/local/src/nginx /etc/init.d/nginx
#更改为执行权限
chmod +x /etc/init.d/nginx
#添加
chkconfig --add nginx
#随系统启动
chkconfig --level 235 nginx on
#如果启动报错不存在这个目录的话,因为Windows的文本和Linux的文本不一样,所以我们需要转换一下,例如: dos2unix 文件名
dos2unix /etc/init.d/nginx
#把Nginx的默认模板和Tomcat的模板放进去/usr/local/src/去,方便copy,我这里使用的Tomcat模板,如果不需要Tomcat环境,就请手动更换为默认模板
rm -rf /usr/local/nginx/conf/nginx.conf
#cp /usr/local/src/n-nginx.conf /usr/local/nginx/conf/nginx.conf
cp /usr/local/src/t-nginx.conf /usr/local/nginx/conf/nginx.conf
#创建一个vhost得目录,把Tomcat的配置文件放进去,我默认使用的是tomcat的配置文件,注释掉的是Nginx+PHP的,根据所需选择
mkdir -p /usr/local/nginx/conf/vhost/
cp /usr/local/src/tomcat.com.conf /usr/local/nginx/conf/vhost/tomcat.com.conf
#cp /usr/local/src/nginx.com.conf /usr/local/nginx/conf/vhost/nginx.com.conf
#如果在生产环境下跑此脚本,在启动nginx之前,先测试一下nginx配置是否正常,显示OK则代表配置文件没有错误
/usr/local/nginx/sbin/nginx -t
sleep 3
}
function install_mysql(){
echo "mysql-5.6.36 will be installed,please be patient"
mkdir -p /data/mysqldata
mkdir -p /data/mysqlbinlog
mkdir -p /data/mysqllog
mkdir -p /data/tmp
mkdir -p /data/wwwlogs/
groupadd mysql
useradd -g mysql mysql -s /sbin/nologin -M
#单独安装数据库需要吧注释去掉
#安装gperftools 用途:提高了服务器在高并发情况下的性能,从而降低了系统的负载
#cd /usr/local/src
#tar zxvf gperftools-2.1.tar.gz
#cd gperftools-2.1
#./configure --enable-frame-pointers
#make && make install
#echo '/usr/local/lib' > /etc/ld.so.conf.d/usr_local_lib.conf
#/sbin/ldconfig
#mkdir /tmp/tcmalloc
#chmod 777 /tmp/tcmalloc -R
#安装libunwind 用途: libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解功能,32位操作系统不要 安装。其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理机制的API。
#cd /usr/local/src
#tar zxvf libunwind-1.1.tar.gz
#cd libunwind-1.1
#./configure
#make && make install
cd /usr/local/src
tar xf mysql-5.6.36.tar.gz
cd mysql-5.6.36
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_UNIX_ADDR=/data/mysqldata/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=1 -DWITH_ZLIB=system -DWITH_LIBWRAP=0 -DWITH_INNODB_MEMCACHED=1 -DWITH_DEBUG=OFF -DWITH_ZLIB=bundled -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=ON -DMYSQL_MAINTAINER_MODE=OFF -DMYSQL_DATADIR=/data/mysqldata -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/data/mysqldata/mysql.sock
#先编译 如果是多核电脑,则使用make –j * 参数,默认是4核
make -j 4
make install
sed -i 's@executing mysqld_safe@executing mysqld_safe\nexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so@' /usr/local/mysql/bin/mysqld_safe
chown -R mysql:mysql /data/
chown -R mysql:mysql /usr/local/mysql/
echo "MANPATH /usr/local/mysql/man" >> /etc/man.config
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf.d/mysql.conf
#删除系统默认的my.cnf,然后提前把my.cnf配置放到/usr/local/src/目录中进行copy
rm -rf /etc/my.cnf
cp /usr/local/src/my.cnf /etc/my.cnf
#下面这条命令是初始化数据库
touch /data/mysqllog/error.log
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysqldata
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 700 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 345 mysqld on
#添加环境变量
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
#刷新变量,即时生效
source /etc/profile
}
function install_php(){
echo "PHP will be installed,please be patient"
#安装yasm
cd /usr/local/src
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
#安装libmcrypt
cd /usr/local/src
tar zxvf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure
make && make install
#安装libvpx
cd /usr/local/src
tar xvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
./configure --prefix=/usr/local/libvpx --enable-shared --enable-vp9
make && make install
#安装tiff
cd /usr/local/src
tar zxvf tiff-4.0.3.tar.gz
cd tiff-4.0.3
./configure --prefix=/usr/local/tiff --enable-shared
make && make install
#安装libpng
cd /usr/local/src
tar zxvf libpng-1.6.15.tar.gz
cd libpng-1.6.15
./configure --prefix=/usr/local/libpng --enable-shared
make && make install
#安装freetype
cd /usr/local/src
tar zxvf freetype-2.5.4.tar.gz
cd freetype-2.5.4
./configure --prefix=/usr/local/freetype --enable-shared -without-png
make && make install
#安装jpeg
cd /usr/local/src
tar zxvf jpegsrc.v9b.tar.gz
cd jpeg-9b
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install
#安装libgd
cd /usr/local/src
tar zxvf libgd-2.1.0.tar.gz
cd libgd-2.1.0
./configure --prefix=/usr/local/libgd --enable-shared --with-jpeg=/usr/local/jpeg --with-png=/usr/local/libpng --with-freetype=/usr/local/freetype --with-fontconfig=/usr/local/freetype --with-tiff=/usr/local/tiff --with-vpx=/usr/local/libvpx --with-xpm=/usr/
make && make install
#安装t1lib
cd /usr/local/src
tar zxvf t1lib-5.1.2.tar.gz
cd t1lib-5.1.2
./configure --prefix=/usr/local/t1lib --enable-shared
make without_doc && make install
#安装libiconv
cd /usr/local/src
tar zxvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure --prefix=/usr/local/libiconv
make && make install
#注意:如果系统是64位,请执行以下两条命令,否则安装php会出错(32位系统不需要执行)
mv /usr/lib/libltdl.so /usr/lib/libltdl.so-bak
cp -frp /usr/lib64/libltdl.so* /usr/lib/
cp -frp /usr/lib64/libXpm.so* /usr/lib/
export LD_LIBRARY_PATH=/usr/local/libgd/lib
#安装php
cd /usr/local/src
tar -zvxf php-5.6.30.tar.gz
cd php-5.6.30
sed -i 's/return "unknown";/ return "9a";/g' /usr/local/src/php-5.6.30/ext/gd/libgd/gd_jpeg.c
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with- mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-mysql-sock=/tmp/mysql.sock - -with-pdo-mysql=/usr/local/mysql --with-gd --with-png-dir=/usr/local/libpng --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-xpm-dir=/usr/ --with-vpx- dir=/usr/local/libvpx/ --with-zlib-dir=/usr/local/zlib --with-t1lib=/usr/local/t1lib --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-mcrypt --with-curl --enable-ctype --disable-fileinfo
make && make install
#安装PHP扩展
ln -s /usr/local/php/lib/php/extensions /usr/lib64/extensions
#安装ioncube
cd /usr/local/src/
tar zxvf ioncube_loaders_lin_x86-64.tar.gz
mkdir /usr/local/ioncube
\cp -rf ioncube/* /usr/local/ioncube
#安装re2c
cd /usr/local/src/
tar -zxvf re2c-0.13.5.tar.gz
cd re2c-0.13.5
./configure
make && make install
#安装ImageMagick
cd /usr/local/src/
tar zxvf ImageMagick.tar.gz
cd ImageMagick-7.0.3-4
./configure --prefix=/usr/local/imagemagick
make && make install
export PKG_CONFIG_PATH=/usr/local/imagemagick/lib/pkgconfig/
#安装imagick
cd /usr/local/src/
tar zxvf imagick-3.4.1.tgz
cd imagick-3.4.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-imagick=/usr/local/imagemagick
make && make install
#安装phpredis
cd /usr/local/src/
tar zxvf phpredis-2.2.6.tar.gz
cd phpredis-2.2.6
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
#防止启动PHP-FPM报错,我们先在/data/wwwlogs/创建一个php-slow.log
touch /data/wwwlogs/php-slow.log
#看个人情况而定如果使用的是LNMP环境则启动PHP-FPM,如果是使用Tomcat环境,则不需要启动
#复制php配置文件到安装目录
cp php.ini-production /usr/local/php/etc/php.ini
#删除系统自带配置文件
rm -rf /etc/php.ini
#更换为我的PHP.ini配置文件
rm -rf /usr/local/php/etc/php.ini
cp /usr/local/src/php.ini /usr/local/php/etc/php.ini
#添加软连接到 /etc目录
ln -s /usr/local/php/etc/php.ini /etc/php.ini
#拷贝模板文件为php-fpm配置文件,自己根据服务器配置去优化
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
rm -rf /usr/local/php/etc/php-fpm.conf
cp /usr/local/src/php-fpm.conf /usr/local/php/etc/php-fpm.conf
#添加软连接到 /etc目录
ln -s /usr/local/php/etc/php-fpm.conf /etc/php-fpm.conf
#拷贝php-fpm到启动目录
cp /usr/local/src/php-5.6.30/sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm
#添加执行权限
chmod +x /etc/rc.d/init.d/php-fpm
#设置开机启动
chkconfig php-fpm on
}
function install_tomcat() {
echo "JDK and Tomcat will be installed,please be patient"
#我们先安装JDK环境
cd $dir
rpm -ivh jdk-8u131-linux-x64.rpm
#编辑/etc/profile插入变量
cat >> /etc/profile << EFF
#set java
export JAVA_HOME=/usr/java/jdk1.8.0_131
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EFF
#用source profile刷新
source /etc/profile
#刷新完成后用Java -version显示一下版本,显示成功则代表变量写入完成
java -version
#我们开始安装tomcat
cd $dir
tar zxvf apache-tomcat-8.0.9.tar.gz
mv apache-tomcat-8.0.9 /data/tomcat
#优化tomcat运行模式,开启ARP,目前Tomcat 8.x默认情况下全部是运行在nio模式下,而apr的本质就是使用jni技术调用操作系统底层的IO接口,所以需要提前安装所需要的依赖,首先是需要安装openssl和apr,命令如下:
yum -y install openssl-devel apr-devel
#进入Tomcat的bin目录,解压native源码包
cd /data/tomcat/bin
tar xf tomcat-native.tar.gz
cd tomcat-native-1.1.30-src/jni/native
./configure --with-apr=/usr/bin/apr-1-config --with-java-home="/usr/java/jdk1.8.0_131/" --with-ssl=yes
make && make install
#优化JVM,我有一个已经优化过的JVM文件,把他方法/usr/local/src/目录下,拷贝过去
rm -rf /data/tomcat/bin/catalina.sh
rm -rf /data/tomcat/conf/server.xml
cp $dir/catalina.sh /data/tomcat/bin/catalina.sh
cp $dir/server.xml /data/tomcat/conf/server.xml
chmod +x /data/tomcat/bin/catalina.sh
}
function install_lnmp(){
echo "tengine-2.1.2 mysql-5.6.36 php-5.6.30 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
free -m
install_rest
yum_depend
check_ok
install_nginx
check_ok
install_mysql
check_ok
install_php
}
function install_lnmt(){
echo "tengine-2.1.2 mysql-5.6.36 Tomcat8.0.9 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
check_ok
install_nginx
check_ok
install_mysql
check_ok
install_tomcat
}
function install_Nginx-MySQL(){
echo "tengine-2.1.2 mysql-5.6.36 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
check_ok
install_nginx
check_ok
install_mysql
}
function install_Nginx(){
echo "tengine-2.1.2 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
install_nginx
}
function install_MySQL(){
echo "mysql-5.6.36 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
install_mysql
}
function install_PHP(){
echo " php-5.6.30 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
install_php
}
function install_Tomcat(){
echo "Tomcat8.0.9 will be installed"
echo "===update yum repos and install dependecies packages,it will take serval mintinues==="
install_rest
yum_depend
install_tomcat
}
cat <<EOF
+--------------------------------------------------------------+
| 1:[Install LNMP] |
| 2:[Install LNMT] |
| 3:[Install Nginx-MySQL] |
| 4:[Install Nginx] |
| 5:[Install MySQL] |
| 6:[Install PHP] |
| 7:[Install Tomcat] |
| 8:[Exit] |
+--------------------------------------------------------------+
EOF
read -t 15 -p "please input the num you want:" input
case ${input} in
1)
install_lnmp
;;
2)
install_lnmt
;;
3)
install_Nginx-MySQL
;;
4)
install_Nginx
;;
5)
install_MySQL
;;
6)
install_PHP
;;
7)
install_Tomcat
;;
8)
exit
;;
*)
printf "You must input only in {1|2|3|4|5|6|7|8}\n"
esac