分析安装包lnmp中的apache.sh脚本

分析shell脚本,学习方法,这个其实是在lnmp环境下再安装apache,实现lnmpa环境。

#!/bin/bash#定义PATH变量PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin#声明PATH为环境变量export PATH# Check if user is root#id -u 当前用户的uid,也可以使用反引号`id -u`,效果一样,0为root的用户idif [ $(id -u) != “0” ]; thenecho “Error: You must be root to run this script, please use root to install lnmp”exit 1fi#清屏操作clear#可以识别特殊字符printf “=======================================================================\n”printf “Install Apache for LNMP V1.0 , Written by Licess \n”printf “=======================================================================\n”printf “LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux \n”printf “This script is a tool to install Apache for lnmp \n”printf “\n”printf “For more information please visit \n”printf “=======================================================================\n”#把当前路径给变量cur_dircur_dir=$(pwd)#这个重点说一下,,察看ip,#通过1次grep,过滤掉不包含inet的行#2次反向grep也就是取不包含的行,过滤掉包含127.0.0.1和inet6的行#awk 打印第2列#tr -d 去掉addr:,这样就只剩下ipipv4=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk ‘{print $2}’|tr -d “addr:”`#set Server Administrator Email AddressServerAdmin=””#读取用户键盘输入还可以使用-t 30 指定时间限制read -p “Please input Administrator Email Address:” ServerAdminif [ “$ServerAdmin” == “” ]; thenecho “Administrator Email Address will set to webmaster@example.com!”ServerAdmin=”webmaster@example.com”elseecho “===========================”echo Server Administrator Email=”$ServerAdmin”echo “===========================”fi#定义函数get_char(){#打印当前终端的设置赋予变量SAVEDSTTY=`stty -g`#echo input charactersstty -echostty cbreak#把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换#if =输入文件,bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和ibs),count = blocks 只拷贝输入的blocks块dd if=/dev/tty bs=1 count=1 2> /dev/nullstty -rawstty echostty $SAVEDSTTY}echo “”echo “Press any key to start install Apache for LNMP or Press Ctrl+C to cancel…”char=`get_char`printf “===================== Check And Download Files =================\n”#test测试 如果文件的长度不为零,则为真if [ -s httpd-2.2.22.tar.gz ]; then echo “httpd-2.2.22.tar.gz [found]” else echo “Error: httpd-2.2.22.tar.gz not found!!!download now……” wget -c fi#mod_rpaf是apache的一个模块,目的是为了获取访客的真实IPif [ -s mod_rpaf-0.6.tar.gz ]; then echo “mod_rpaf-0.6.tar.gz [found]” else echo “Error: mod_rpaf-0.6.tar.gz not found!!!download now……” wget -c fi#php源码if [ -s php-5.2.17.tar.gz ]; then echo “php-5.2.17.tar.gz [found]” else echo “Error: php-5.2.17.tar.gz not found!!!download now……” wget -c fiprintf “=========================== install Apache ======================\n”#停止当前的其他服务echo “Stoping Nginx…”/etc/init.d/nginx stopecho “Stoping MySQL…”/etc/init.d/mysql stopecho “Stoping PHP-FPM…”/etc/init.d/php-fpm stopif [ -s /etc/init.d/memceached ]; then echo “Stoping Memcached…” /etc/init.d/memcacehd stopfi#备份echo “Backup old php configure files…..”mkdir /root/lnmpbackup/cp /root/lnmp /root/lnmpbackup/cp /usr/local/php/etc/php.ini /root/lnmpbackup/cp /usr/local/php/etc/php-fpm.conf /root/lnmpbackup/#开始编译安装cd $cur_dirrm -rf httpd-2.2.22/tar zxvf httpd-2.2.22.tar.gzcd httpd-2.2.22/./configure –prefix=/usr/local/apache –enable-headers –enable-mime-magic –enable-proxy –enable-so –enable-rewrite –enable-ssl –enable-deflate –enable-suexec –disable-userdir –with-included-apr –with-mpm=prefork –with-ssl=/usr –disable-userdir –disable-cgid –disable-cgi –with-expat=builtinmake && make installcd ..mv /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.bak#\cp 不走alias的cp\cp $cur_dir/conf/httpd.conf /usr/local/apache/conf/httpd.conf\cp $cur_dir/conf/httpd-default.conf /usr/local/apache/conf/extra/httpd-default.conf\cp $cur_dir/conf/httpd-vhosts.conf /usr/local/apache/conf/extra/httpd-vhosts.conf\cp $cur_dir/conf/httpd-mpm.conf /usr/local/apache/conf/extra/httpd-mpm.conf\cp $cur_dir/conf/rpaf.conf /usr/local/apache/conf/extra/rpaf.conf#sed实现内容替换sed -i ‘s/#ServerName :80/ServerName :88/g’ /usr/local/apache/conf/httpd.confsed -i ‘s/ServerAdmin you@example.com/ServerAdmin ‘$ServerAdmin’/g’ /usr/local/apache/conf/httpd.conf#sed -i ‘s/www.lnmp.org/’$domain’/g’ /usr/local/apache/conf/extra/httpd-vhosts.confsed -i ‘s/webmaster@example.com/’$ServerAdmin’/g’ /usr/local/apache/conf/extra/httpd-vhosts.confmkdir -p /usr/local/apache/conf/vhost#向/usr/local/apache/conf/httpd.conf中末尾追加内容Include conf/vhost/*.confcat >>/usr/local/apache/conf/httpd.conf<<EOFInclude conf/vhost/*.confEOF#安装rpaftar -zxvf mod_rpaf-0.6.tar.gzcd mod_rpaf-0.6//usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.ccd ..#创建软链ln -s /usr/local/lib/libltdl.so.3 /usr/lib/libltdl.so.3#sed -i ‘s#your_ips#’$ipv4’#g’ /usr/local/apache/conf/extra/rpaf.confecho “Stop php-fpm…..”rm -rf /usr/local/php/cd $cur_dirif [ -s php-5.2.17 ]; thenrm -rf php-5.2.17fitar zxvf php-5.2.17.tar.gzcd php-5.2.17/wget -c #打一个补丁这里需要了解diff和patchpatch -p1 < php-5.2.17-max-input-vars.patch./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc –with-apxs2=/usr/local/apache/bin/apxs –with-mysql=/usr/local/mysql –with-mysqli=/usr/local/mysql/bin/mysql_config –with-iconv-dir –with-freetype-dir –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-discard-path –enable-magic-quotes –enable-safe-mode –enable-bcmath –enable-shmop –enable-sysvsem –enable-inline-optimization –with-curl –with-curlwrappers –enable-mbregex –enable-mbstring –with-mcrypt –enable-ftp –with-gd –enable-gd-native-ttf –with-openssl –with-mhash –enable-pcntl –enable-sockets –with-xmlrpc –enable-zip –enable-soap –without-pear –with-gettext –with-mime-magicif cat /etc/issue | grep -Eqi ‘(Debian|Ubuntu)’;thencd ext/openssl/wget -c patch -p3 <debian_patches_disable_SSLv2_for_openssl_1_0_0.patchcd ../../firm -rf libtoolcp /usr/local/apache/build/libtool .make ZEND_EXTRA_LIBS=’-liconv’make installmkdir -p /usr/local/php/etccp php.ini-dist /usr/local/php/etc/php.inicd ../#安装PDO扩展cd $cur_dir/php-5.2.17/ext/pdo_mysql//usr/local/php/bin/phpize./configure –with-php-config=/usr/local/php/bin/php-config –with-pdo-mysql=/usr/local/mysqlmake && make installcd $cur_dir/# 添加 php extensionssed -i ‘s#extension_dir = “./”#extension_dir = “/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/”\nextension = “memcache.so”\nextension = “pdo_mysql.so”\n#’ /usr/local/php/etc/php.inised -i ‘s#output_buffering = Off#output_buffering = On#’ /usr/local/php/etc/php.inised -i ‘s/post_max_size = 8M/post_max_size = 50M/g’ /usr/local/php/etc/php.inised -i ‘s/upload_max_filesize = 2M/upload_max_filesize = 50M/g’ /usr/local/php/etc/php.inised -i ‘s/;date.timezone =/date.timezone = PRC/g’ /usr/local/php/etc/php.inised -i ‘s/short_open_tag = Off/short_open_tag = On/g’ /usr/local/php/etc/php.inised -i ‘s/; cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g’ /usr/local/php/etc/php.inised -i ‘s/max_execution_time = 30/max_execution_time = 300/g’ /usr/local/php/etc/php.inised -i ‘s/disable_functions =.*/disable_functions = passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen/g’ /usr/local/php/etc/php.ini#根据系统安装ZendOptimizerif [ `getconf WORD_BIT` = ’32’ ] && [ `getconf LONG_BIT` = ’64’ ] ; thenwget -c tar zxvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gzmkdir -p /usr/local/zend/cp ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/elsewget -c tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gzmkdir -p /usr/local/zend/cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/fi#给php.ini追加内容cat >>/usr/local/php/etc/php.ini<<EOF;eaccelerator;ionCube[Zend Optimizer]zend_optimizer.optimization_level=1zend_extension=”/usr/local/zend/ZendOptimizer.so”EOFcd $cur_dircp conf/proxy.conf /usr/local/nginx/conf/proxy.confmv /usr/local/nginx/conf/nginx.conf /root/lnmpbackup/cp conf/nginx_a.conf /usr/local/nginx/conf/nginx.conf#添加apache自动启动脚本echo “Download new Apache init.d file……”wget -c cp init.d.httpd /etc/init.d/httpdchmod +x /etc/init.d/httpdecho “Test Nginx configure files…”/usr/local/nginx/bin/nginx -techo “ReStarting Nginx……”/etc/init.d/nginx restartecho “Starting Apache…..”/etc/init.d/httpd restart#更新系统启动项echo “Remove old startup files and Add new startup file…..”if cat /etc/issue | grep -Eqi ‘(Debian|Ubuntu)’;thenupdate-rc.d -f httpd defaultsupdate-rc.d -f php-fpm removeelsesed -i ‘/php-fpm/’d /etc/rc.localchkconfig –level 345 php-fpm offchkconfig –level 345 httpd onficd $cur_dirrm -f /etc/init.d/php-fpmmv /root/vhost.sh /root/lnmp.vhost.shcp vhost_lnmpa.sh /root/vhost.shchmod +x /root/vhost.shcp lnmpa /root/chmod +x /root/lnmpaprintf “====================== Upgrade to LNMPA completed =====================\n”printf “You have successfully upgrade from lnmp to lnmpa,enjoy it!\n”printf “=======================================================================\n”printf “LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux \n”printf “This script is a tool to upgrade from lnmp to lnmpa \n”printf “\n”printf “For more information please visit \n”printf “=======================================================================\n”

本文出自 “phper-每天一点点~” 博客,请务必保留此出处

勇于接受自己的失败,告诉自己,这就是自己的现实,

分析安装包lnmp中的apache.sh脚本

相关文章:

你感兴趣的文章:

标签云: