#!/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
Last modification:November 10th, 2020 at 04:11 pm
如果觉得我的文章对你有用,请随意赞赏