编译安装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平滑启动'
本文来自博客园,站在巨人的肩膀上,坚持开源精神,遵循开源协议:Apache Licene 2.0协议。
浙公网安备 33010602011771号