该脚本已经在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