该脚本已经在centos 7.1 上测试通过,用时27分,硬件环境(1G,1U)。该脚本有安装PHP加速器xcache:


#!/bin/bash


#该脚本的作用 :在线一键部署LNMP

#Write      :King

#Date       :2015-03-19


#mysql      数据存放目录为/data/mysql

#php        主配置文件在 /usr/local/php/etc

#nginx      web 程序目录/usr/local/nginx/html/index,主配置目录 /usr/local/nignx/conf/nginx.conf


#×××目录

SoftDir='/usr/local/src'


#定义安装日志路径

LOG_INS='/var/log/install.log'


#定义Mysql 源码目录:

MysqlS='/usr/local/mysql'


#define make

function MAKE(){

    if [ `echo $?` -eq 0 ];then

            make >> $LOG_INS 2>&1

        else

            exit

    fi

}


#define make install

function MAKE_INS(){

    if [ `echo $?` -eq 0 ];then

            make install >> $LOG_INS 2>&1

        else

            exit

    fi

}


#安装系统扩展源:http://dl.fedoraproject.org/pub/epel

if [ `awk '{print $3}' /etc/redhat-release |awk -F '.' '{print $1}'` -eq 6 ];then

                rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm >> $LOG_INS 2>&1

        elif [ `awk '{print $4}' /etc/redhat-release |awk -F '.' '{print $1}'` -eq 7 ];then

                rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm >> $LOG_INS 2>&1

fi


#安装系统运维包:

yum install -y lrzsz gcc gcc-c++  bzip2 bzip2-devel make man vim tree unzip wget lua-devel lua-static patch libxml2-devel libxslt libxslt-devel gd gd-devel ntp ntpdate screen sysstat tree rsync lsof autoconf gettext  gettext-devel automake libtool git >> $LOG_INS 2>&1


#升级系统:

yum update -y >> $LOG_INS 2>&1


#替换selinux 配置:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config


#下载安装Mysql:  http://cdn.mysql.com/Downloads

cd $SoftDir && wget -q http://www.linuser.com/share/soft/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz


#解压:

tar zxf mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz


#移动解压目录病重命名Mysql:

mv mysql-5.6.26-linux-glibc2.5-x86_64 /usr/local/mysql


#添加mysql 系统用户:

if [ -z `grep mysql /etc/passwd` ] ;then

        useradd -s /sbin/nologin mysql

fi


#创建mysql 初始化数据目录:

if [ ! -d "/data/mysql" ] ;then

        mkdir -p /data/mysql

fi


#将mysql 初始化目录所属主和组修改为mysql:

chown -R mysql.mysql /data/mysql/


#初始化

cd $MysqlS && ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql  >> $LOG_INS 2>&1


#备份系统默认的my.cnf 文件:

mv /etc/my.cnf{,.bak}


#复制mysql 的 主配置文件到etc 目录下病重命名为my.cnf

 \cp support-files/my-default.cnf /etc/my.cnf


#复制mysql 的启动脚本到/etc/init.d 目录下:

 \cp support-files/mysql.server /etc/init.d/mysqld


#赋予启动755 权限:

chmod 755 /etc/init.d/mysqld


#修改my.cnf 文件配置如下:

cat << EOF > /etc/my.cnf

[mysqld]

pid-file=/data/mysql/mysql.pid

log-error=/var/log/mysql.log

datadir = /data/mysql

basedir = /usr/local/mysql

character-set-server=utf8

port = 3306

socket = /tmp/mysql.sock

key_buffer_size = 256M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

read_buffer_size = 1M

read_rnd_buffer_size = 4M

myisam_sort_buffer_size = 64M

thread_cache_size = 8

query_cache_size = 16M

thread_concurrency = 8

binlog_format=mixed

server-id = 1

slow-query-log = 1

slow-query-log-file = /data/mysql/mysql-slow.log

log-bin = mysql-bin

log-bin-index = mysql-bin.index

symbolic-links = 0

skip-name-resolve


[client]

port = 3306

socket = /tmp/mysql.sock

default-character-set=utf8


[mysqldump]

quick

max_allowed_packet = 16M


#[mysqld_safe]


[mysql]

no-auto-rehash


[myisamchk]

key_buffer_size = 128M

sort_buffer_size = 128M

read_buffer = 2M

write_buffer = 2M


[mysqlhotcopy]

interactive-timeout

EOF


#启动mysql:

service mysqld start


if [ `echo $?` -eq 0 ] ;then

        echo "Mysql started"

else

        exit

fi


#将Mysqld 设置为随机启动:

chkconfig --add mysqld && chkconfig mysqld on


#=====================================                 安装LTP          =======================================

#下载LTP:

cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/ltp-full-20150420.tar.bz2


#解压

tar jxf ltp-full-20150420.tar.bz2


#配置编译参数:

cd ./ltp-full-20150420 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS 


#=====================================                 安装openssl1.0.2           =======================================

#下载openssl:

cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/openssl-1.0.2.tar.gz


#解压:

tar zxf openssl-1.0.2.tar.gz


#进入解压目录,配置编译参数:

cd ./openssl-1.0.2 && ./config >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#=====================================                 安装curl-7.45.0           =======================================

#下载:

cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/curl-7.45.0.tar.gz


#解压:

tar zxf curl-7.45.0.tar.gz


#进入解压目录,配置编译参数:

cd ./curl-7.45.0 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#=====================================                 安装libmcrypt-2.5.8                  ==================================

#下载:

cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/libmcrypt-2.5.8.tar.gz


#解压:

tar zxf libmcrypt-2.5.8.tar.gz


#进入解压目录,配置编译参数:

cd ./libmcrypt-2.5.8 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#=======================================        安装PHP 5.5.22          ====================================

#下载PHP 5.5.22

cd $SoftDir &&  wget -q http://www.linuser.com/share/soft/php-5.5.30.tar.gz


#解压PHP:

tar zxf php-5.5.30.tar.gz


#添加php-fpm 用户,不允许登陆系统

useradd -s /sbin/nologin php-fpm


#进入PHP解压目录,配置编译参数:

cd ./php-5.5.30 && ./configure --prefix=/usr/local/php   --with-config-file-path=/usr/local/php/etc  --enable-fpm   --with-fpm-user=php-fpm  --with-fpm-group=php-fpm   --with-mysql=/usr/local/mysql  --with-mysql-sock=/tmp/mysql.sock  --with-libxml-dir  --with-gd   --with-jpeg-dir   --with-png-dir   --with-freetype-dir  --with-iconv-dir   --with-zlib-dir   --with-mcrypt   --enable-soap   --enable-gd-native-ttf   --enable-ftp  --enable-mbstring  --enable-exif  --enable-zend-multibyte   --disable-ipv6   --with-pear   --with-curl --with-openssl --with-mysqli --enable-mysqlnd --with-gettext >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#复制Php 主配置:

 \cp php.ini-production /usr/local/php/etc/php.ini


#创建php-fpm 主配置文件:

cat <<EOF > /usr/local/php/etc/php-fpm.conf

[global]

pid = /usr/local/php/var/run/php-fpm.pid

error_log = /usr/local/php/var/log/php-fpm.log

[www]

listen = 127.0.0.1:9000

user = php-fpm

group = php-fpm

pm = dynamic

pm.max_children = 50

pm.start_servers = 20

pm.min_spare_servers = 5

pm.max_spare_servers = 35

pm.max_requests = 500

rlimit_files = 1024

EOF


#测试php-fpm 配置:

/usr/local/php/sbin/php-fpm -t

if [ `echo $?` -eq 0 ];then

        echo "php-fpm installed successfully"

else

        exit

fi


#拷贝php-fpm 启动脚本:

 \cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm


#赋予脚本可执行权限:

chmod 755 /etc/init.d/php-fpm


#关闭php 版本信息:

sed -i 's/expose_php = On/expose_php = Off/g' /usr/local/php/etc/php.ini


#将php-fpm 写入随机启动:

chkconfig --add php-fpm && chkconfig php-fpm on


#启动php-fpm

service php-fpm start 


#=======================================        安装pcre2-10.00                ====================================

#下载

cd $SoftDir && wget -q http://www.linuser.com/share/soft/pcre-8.37.tar.gz


#解压:

tar zxf pcre-8.37.tar.gz


#接入pcre,配置编译参数:

cd ./pcre-8.37 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#=======================================        添加libmaxminddb        ====================================

#下载:

cd $SoftDir && wget -q http://www.linuser.com/share/soft/libmaxminddb-1.1.1.tar.gz


#解压:

tar zxf libmaxminddb-1.1.1.tar.gz


cd ./libmaxminddb-1.1.1 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS



#=======================================        添加geoip2模块                ====================================

#下载

cd $SoftDir && wget -q  http://www.linuser.com/share/soft/ngx_http_geoip2_module-master.zip


#解压:

unzip ngx_http_geoip2_module-master.zip >> $LOG_INS 2>&1


#=======================================        添加libuwind               ====================================

#下载:

cd $SoftDir && wget -q http://www.linuser.com/share/soft/libunwind-1.1.tar.gz


#解压:

tar zxf libunwind-1.1.tar.gz


#进入解压目录,配置编译参数::

cd ./libunwind-1.1 && ./configure >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#=======================================        添加gperftools                ====================================

#下载:

cd $SoftDir && wget -q http://www.linuser.com/share/soft/gperftools-master.zip


#解压:

unzip gperftools-master.zip


#进入解压目录,执行autogen.sh 生产配置文件:

cd ./gperftools-master && ./autogen.sh  >> $LOG_INS 2>&1


#配置编译参数:

if [ `echo $?` -eq 0 ];then

                ./configure >> $LOG_INS 2>&1

        else

                exit

fi


#编译及安装

MAKE && MAKE_INS


#=======================================        安装Tengine 2.1.0          ====================================

#下载

cd $SoftDir && wget -q http://www.linuser.com/share/soft/nginx-1.8.0.tar.gz

#解压:

tar zxf nginx-1.8.0.tar.gz


#进入解压目录,配置编译参数:

cd ./nginx-1.8.0 && ./configure --prefix=/usr/local/nginx --with-http_realip_module  --with-http_sub_module --with-http_dav_module --with-http_gzip_static_module --with-http_stub_status_module  --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_secure_link_module --with-http_stub_status_module --with-http_ssl_module --http-log-path=/var/log/nginx_access.log --with-google_perftools_module --with-pcre=/usr/local/src/pcre-8.37 --with-openssl=/usr/local/src/openssl-1.0.2 --add-module=/usr/local/src/ngx_http_geoip2_module-master >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#设置软链接

ln -s /usr/local/lib/libmaxminddb.so.0 /usr/lib64

ln -s /usr/local/lib/libprofiler.so.0 /usr/lib64

ln -s /usr/local/lib/libunwind.so.8 /usr/lib64


#检测初始化完成的nginx 配置是否有问题

/usr/local/nginx/sbin/nginx  -t

if [ `echo $?` -eq 0 ];then

        echo "Nginx installed successfully!"

else

        exit

fi


#创建nginx 启动脚本

cat <<EOF > /etc/init.d/nginx

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings


NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"


start() {

        echo -n \$"Starting \$prog: "

        mkdir -p /dev/shm/nginx_temp

        daemon \$NGINX_SBIN -c \$NGINX_CONF

        RETVAL=\$?

        echo

        return \$RETVAL

}


stop() {

        echo -n \$"Stopping \$prog: "

        killproc -p \$NGINX_PID \$NGINX_SBIN -TERM

        rm -rf /dev/shm/nginx_temp

        RETVAL=\$?

        echo

        return \$RETVAL

}


reload(){

        echo -n \$"Reloading \$prog: "

        killproc -p \$NGINX_PID \$NGINX_SBIN -HUP

        RETVAL=\$?

        echo

        return \$RETVAL

}


restart(){

        stop

        start

}


configtest(){

    \$NGINX_SBIN -c \$NGINX_CONF -t

    return 0

}


case "\$1" in

  start)

        start

        ;;

  stop)

        stop

        ;;

  reload)

        reload

        ;;

  restart)

        restart

        ;;

  configtest)

        configtest

        ;;

  *)

        echo $"Usage: \$0 {start|stop|reload|restart|configtest}"

        RETVAL=1

esac


exit \$RETVAL

EOF


#赋予脚本可执行权限

chmod 755 /etc/init.d/nginx


#备份nginx主配置文件

 \cp /usr/local/nginx/conf/nginx.conf{,.bak}


#重新nginx 配置:

cat << EOF > /usr/local/nginx/conf/nginx.conf

error_log /var/log/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

        server_tokens off;

    server {

        listen       80;

        server_name  localhost;

        location / {

            root   html;

            index  index.html index.htm index.php;

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

        location ~ \.php\$ {

            root           html;

            fastcgi_pass   127.0.0.1:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  \$document_root\$fastcgi_script_name;

            include        fastcgi_params;

        }

    }

}

EOF


#创建PHP测试文件:

echo "<?php   echo phpinfo();  ?>" >/usr/local/nginx/html/index.php


#备份index.html:

mv /usr/local/nginx/html/index.html{,.bak}


#启动nginx:

service nginx start


#将nginx 写入随机启动:

chkconfig --add nginx && chkconfig nginx on


#开启防火墙的80端口

iptables -I INPUT -p tcp --dport 80 -j ACCEPT


#保存防火墙配置

service iptables save


#重启防火墙:

service iptables restart


#设置nginx、mysql 及php 的环境变量:

echo "PATH=$PATH:/usr/local/php/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/php/sbin" >> /etc/profile



#刷新环境变量配置,使其立即生效:

source /etc/profile


##=======================================        安装php 加速器 xcache 3.2.0         ====================================

#官方地址:http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz


cd $SoftDir && wget -q http://www.linuser.com/share/soft/xcache-3.2.0.tar.gz


#解压

tar zxf xcache-3.2.0.tar.gz


#执行phpize,生成xcache 的configure 文件

cd ./xcache-3.2.0 && /usr/local/php/bin/phpize --clean &&  /usr/local/php/bin/phpize


#配置编译参数:

./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config >> $LOG_INS 2>&1


#编译及安装

MAKE && MAKE_INS


#将xcache 结合php

echo "extemsiobn_dir='/usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/'" >> /usr/local/php/etc/php.ini

echo "extension=xcache.so" >> /usr/local/php/etc/php.ini


#检测php 是否有误:

/usr/local/php/sbin/php-fpm -t


#重启php-fpm:

service php-fpm restart