编译安装LNMP脚本

脚本内容

#!/bin/bash
#
#脚本创建时间:2016-10-20 by jinxing mail:419525170@qq.com
#系统CentOS6.5 最小化安装系统 并安装全部的开发包组
#目录说明:/home/webtronics/webserver/ 软件安装目录    /tools 软件存放目录   /home/webtronics/logs 日志目录
#安装软件版本:nginx-1.6.3 php-5.3.27  mysql-5.5.51 
#需要的包:nginx-1.6.3.tar.gz 
#          mysql-5.5.51-linux2.6-x86_64.tar.gz
#          php-5.5.26.tar.gz 
#          libiconv-1.14.tar.gz 
#确保YUM可用,用于安装依赖包
#使用场景是:Nginx和PHP 安装在同一台服务器,MySQL安装与另一台服务器
#一、Nginx安装步骤:1安装配置nginx 2 主配置文件配置 3 虚拟主机配置 4 访问日志切割 5测试页 6优化
#二、mysql二进制包安装 (作用为了使PHP生成连接MySQL程序)
#三、PHP安装步骤 1 PHP依赖包 2 PHP5.3.27编译3 PHP-FPM优化 3 php.ini优化

#########################################################
################# 一 nginx 安装配置 ######################
#########################################################
### 环境准备

mkdir -p /home/webtronics/webserver/nginx
mkdir -p /tools
mkdir -p /home/webtronics/logs/nginx
yum -y install wget git
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
cd /tools
useradd nginx -s /sbin/nologin -M

### 安装依赖包
cd /tools
yum -y install pcre pcre-devel openssl-devel openssl git
#下载ngx_cache_purge(清除指定URL缓存)
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar xzf ngx_cache_purge-2.3.tar.gz
#下载nginx-http-concat,能把多个CSS和JS合并成一个请求
git clone git://github.com/alibaba/nginx-http-concat.git

### 编译安装ngixn
if [ ! -e /tools/nginx-1.6.3.tar.gz ]
then
    wget http://nginx.org/download/nginx-1.6.3.tar.gz
    tar xf nginx-1.6.3.tar.gz
else 
 tar xf nginx-1.6.3.tar.gz
fi
cd /tools/nginx-1.6.3

./configure --prefix=/home/webtronics/webserver/nginx --with-pcre --with-ipv6 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --add-module=/tools/nginx-http-concat --add-module=/tools/ngx_cache_purge-2.3

if [ $? -ne 0 ]
then 
    echo "configure_error"
    exit 1
fi
make
if [ $? -ne 0 ]
then
        echo "make_error"
        exit 1
fi
make install
if [ $? -ne 0 ]
then
        echo "make install_error"
        exit 1
        
fi


#########################################################
############## 2 nginx 主配置文件配置 ###################
#########################################################
### 标准的配置文件 ###


#########################################################
############### 3 nginx 访问日志切割 ####################
#########################################################


### 启动nginx 并设置 开机启动
/home/webtronics/webserver/nginx/sbin/nginx
echo '/home/webtronics/webserver/nginx/sbin/nginx' >>/etc/rc.local

##########################################################
########## 二 mysql解压安装  #############################
##########################################################

####安装依赖包
yum -y install ncurses-devel ncurses-devel bison-devel automake perl libaio-devel

####环境准备
mkdir -p /data
cd /data
useradd mysql -s /sbin/nologin -M


#####二进制解压安装mysql
if [ ! -e mysql-5.5.51-linux2.6-x86_64.tar.gz ]
then
        wget http://downloads.mysql.com/archives/get/file/mysql-5.5.51-linux2.6-x86_64.tar.gz
        tar xf mysql-5.5.51-linux2.6-x86_64.tar.gz
else
tar xf mysql-5.5.51-linux2.6-x86_64.tar.gz
fi 
mv mysql-5.5.51-linux2.6-x86_64 mysql
chown -R root:mysql /data/mysql/
chown -R mysql:mysql /data/mysql/*
###创建配置文件
 cp /data/mysql/support-files/my-innodb-heavy-4G.cnf /etc/my.cnf
###启动脚本配置(mysql.server最终会用到mysqld_safe)
sed -i 's#/usr/local/mysql#/data/mysql#g' /data/mysql/bin/mysqld_safe;    #替换默认路径成/app/mysql
sed -i 's#^basedir=.*#basedir=/data/mysql#g' /data/mysql/support-files/mysql.server;    # 指定MySQL路径
sed -i 's#^datadir=.*#datadir=/data/mysql/data#g' /data/mysql/support-files/mysql.server;    # 指定MySQL数据路径
sed -i 's#/usr/local/mysql#/data/mysql#g' /data/mysql/support-files/mysql.server; #替换默认路径成/app/mysql
cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
###初始化
/data/mysql/scripts/mysql_install_db \
--basedir=/data/mysql/ \
--datadir=/data/mysql/data/ \
--user=mysql
if [ $? -ne 0 ]
then 
    echo "error"
    exit 1
fi
######后台启动并开启自启动
/etc/init.d/mysqld start
echo '/etc/init.d/mysqld start >/dev/null' >>/etc/rc.local
####启动进程
###/data/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --datadir=/data/mysql/data &
######配置环境变量
echo 'export PATH="/data/mysql/bin:$PATH"' >>/etc/profile
. /etc/profile



##########################################################
##############  三 编译安装PHP-5.5.26 #######################
##########################################################
####安装依赖
#base库
yum -y install zlib libxml libjpeg-turbo-devel openssl-devel freetype-devel libtool-ltdl-devel
yum -y install libxml2-devel libpng-devel gd-devel libcurl-devel libxslt-devel curl-devel bzip2 bzip2-devel
#epel库
yum -y install libmcrypt-devel mhash-devel mcrypt

### 编译安装libiconv包 ###

mkdir -p /tools
mkdir -p /home/webtronics/webserver/php
cd /tools

if [ ! -e libiconv-1.14.tar.gz ]
    then
        wget http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
        tar xf libiconv-1.14.tar.gz
else
  tar xf libiconv-1.14.tar.gz
fi

cd libiconv-1.14

./configure --prefix=/usr/local

if [ $? -ne 0 ]
then
        echo "configure_error"
        exit 1
fi
make
if [ $? -ne 0 ]
then
        echo "make_error"
        exit 1
fi
make install
if [ $? -ne 0 ]
then
        echo "make install_error"
        exit 1
fi
####环境配置
ln -s /data/mysql/lib/libmysqlclient.so.18 /usr/lib64/
touch ext/phar/phar.phar
####防止报错不到libiconv.so.2的库文件
echo "/usr/local/lib" >> /etc/ld.so.conf
/sbin/ldconfig

#########################################################
################ 2 PHP5.5.26 编译安装 ###################
#########################################################

###编译安装PHP
cd /tools
if [ ! -e php-5.5.26.tar.gz ]
then
    wget http://mirrors.sohu.com/php/php-5.5.26.tar.gz
    tar xf php-5.5.26.tar.gz
else
 tar xf php-5.5.26.tar.gz
fi
cd php-5.5.26

./configure \
--prefix=/home/webtronics/webserver/php \
--with-mysql=/data/mysql \
--with-mysqli \
--with-mysql=mysqlnd \
--with-iconv-dir=/usr/local \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-bz2 \
--with-libxml-dir=/usr \
--with-curl \
--with-mcrypt \
--with-gd \
--with-openssl \
--with-xmlrpc \
--with-mhash \
--with-xsl \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--enable-xml \
--enable-bcmath \
--enable-shmop \
--enable-zip \
--enable-inline-optimization \
--enable-mbregex \
--enable-fpm \
--enable-fastcgi \
--enable-mbstring \
--enable-gd-native-ttf \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--enable-short-tags \
--enable-static \
--enable-ftp \
--disable-json \
--disable-rpath


if [ $? -ne 0 ]
then
        echo "configure_error"
        exit 1
fi


make
if [ $? -ne 0 ]
then
       make ZEND_EXTRA_LIBS='-liconv'
elif
     [ $? -ne 0 ]
then 
     echo "make error"
     ext1
fi
make install
if [ $? -ne 0 ]
then
        echo "make install_error"
        exit 1
fi


###执行函数
#php53-src-install


#########################################################
################ 3 PHP-FPM  优化配置 ####################
#########################################################
####日志路径
mkdir -p /home/webtronics/logs/php
######PID文件存放路径
mkdir -p /home/webtronics/webserver/php/logs

cd /home/webtronics/webserver/php/etc/
cp -a php-fpm.conf.default php-fpm.conf
### 设置PID路径
sed -i 's#;pid = run\/php-fpm.pid#pid = \/home\/webtronics\/webserver\/php\/logs\/php-fpm.pid#g' php-fpm.conf
### 设置错误日志路径
sed -i 's#;error_log = log\/php-fpm.log#error_log = \/home\/webtronics\/logs\/php\/php-fpm.log#g' php-fpm.conf
### 错误日志级别
sed -i 's#;log_level =.*#log_level = error#g' php-fpm.conf
### 打开文件描述符限制
sed -i 's#;rlimit_files =.*#rlimit_files = 32768#g' php-fpm.conf
### 事件处理机制epoll模型
sed -i 's#; events.mechanism =.*#events.mechanism = epoll#g' php-fpm.conf
### nginx 监听用户和组
sed -i 's#;listen.owner = nginx#listen.owner = nginx#g' php-fpm.conf
sed -i 's#;listen.group = nginx#listen.group = nginx#g' php-fpm.conf
### 静态方式下开启的php-fpm进程的最大数量
sed -i 's#pm.max_children = .*#pm.max_children = 64#g' php-fpm.conf
### 动态方式开启的子进程的起始数量10-20即可
sed -i 's#pm.start_servers =.*#pm.start_servers = 16#g' php-fpm.conf
### 动态方式空闲状态下的最小php-fpm进程数量
sed -i 's#pm.min_spare_servers =.*#pm.min_spare_servers = 5#g' php-fpm.conf
### 动态方式空闲状态下的最大php-fpm进程数量
sed -i 's#pm.max_spare_servers =.*#pm.max_spare_servers = 20#g' php-fpm.conf
### 进程空闲时多长时间被释放
sed -i 's#;pm.process_idle_timeout =.*#pm.process_idle_timeout = 15s;#g' php-fpm.conf
### 工作进程处理完多少请求后自动重启(防止内存溢出)
sed -i 's#;pm.max_requests =.*#pm.max_requests = 2048#g' php-fpm.conf
### 设置慢日志文件路径,当脚本执行时间大于5秒,会记录到此日志中
sed -i 's#;slowlog = log\/\$pool.log.slow#slowlog = \/home\/webtronics\/logs\/php\/$pool.log.slow#g' php-fpm.conf
### 设置脚本执行时间大于10秒时被慢日志记录
sed -i 's#;request_slowlog_timeout =.*#request_slowlog_timeout = 10#g' php-fpm.conf


#######################################

###启动FPM进程并设置开机启动
/home/webtronics/webserver/php/sbin/php-fpm
echo "/home/webtronics/webserver/php/sbin/php-fpm" >>/etc.rc.local

###############说明
echo '/home/webtronics/webserver/nginx/sbin/nginx -t 查看输出ok 和successful语法正确'
echo '/home/webtronics/webserver/nginx/sbin/nginx -s reload平滑启动'

 

posted on 2023-10-12 11:27  luokeli  阅读(10)  评论(0)    收藏  举报

导航