设为首页 收藏本站
查看: 2051|回复: 6

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

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2013-9-27 10:03:14 | 显示全部楼层 |阅读模式

[Shell] 纯文本查看 复制代码
分析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的用户id
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install lnmp"
    exit 1
fi
#清屏操作
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 [url]http://www.lnmp.org[/url] \n"
printf "=======================================================================\n"
#把当前路径给变量cur_dir
cur_dir=$(pwd)
#这个重点说一下,察看ip,
#通过1次grep,过滤掉不包含inet的行
#2次反向grep也就是取不包含的行,过滤掉包含127.0.0.1和inet6的行
#awk 打印第2列
#tr -d 去掉addr:,这样就只剩下ip
ipv4=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#set Server Administrator Email Address
    ServerAdmin=""
        #读取用户键盘输入还可以使用-t 30 指定时间限制
    read -p "Please input Administrator Email Address:" ServerAdmin
    if [ "$ServerAdmin" == "" ]; then
        echo "Administrator Email Address will set to [email]webmaster@example.com[/email]!"
        ServerAdmin="webmaster@example.com"
    else
    echo "==========================="
    echo Server Administrator Email="$ServerAdmin"
    echo "==========================="
    fi
        #定义函数
    get_char()
    {
        #打印当前终端的设置赋予变量
    SAVEDSTTY=`stty -g`
        #echo input characters
    stty -echo
    stty cbreak
        #把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换
        #if =输入文件,bs = bytes 同时设置读/写缓冲区的字节数(等于设置obs和ibs),count = blocks 只拷贝输入的blocks块
    dd if=/dev/tty bs=1 count=1 2> /dev/null
    stty -raw
    stty echo
    stty $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 [url]http://soft.vpser.net/web/apache/httpd-2.2.22.tar.gz[/url]
fi
#mod_rpaf是apache的一个模块,目的是为了获取访客的真实IP
if [ -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 [url]http://soft.vpser.net/web/apache/rpaf/mod_rpaf-0.6.tar.gz[/url]
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 [url]http://soft.vpser.net/web/php/php-5.2.17.tar.gz[/url]
fi
printf "=========================== install Apache ======================\n"
#停止当前的其他服务
echo "Stoping Nginx..."
/etc/init.d/nginx stop
echo "Stoping MySQL..."
/etc/init.d/mysql stop
echo "Stoping PHP-FPM..."
/etc/init.d/php-fpm stop
if [ -s /etc/init.d/memceached ]; then
  echo "Stoping Memcached..."
  /etc/init.d/memcacehd stop
fi
#备份
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_dir
rm -rf httpd-2.2.22/
tar zxvf httpd-2.2.22.tar.gz
cd 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=builtin
make && make install
cd ..
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 [url]www.example.com:80/ServerName[/url] [url]www.lnmp.org:88/g'[/url] /usr/local/apache/conf/httpd.conf
sed -i 's/ServerAdmin [email]you@example.com[/email]/ServerAdmin '$ServerAdmin'/g' /usr/local/apache/conf/httpd.conf
#sed -i 's/www.lnmp.org/'$domain'/g' /usr/local/apache/conf/extra/httpd-vhosts.conf
sed -i 's/webmaster@example.com/'$ServerAdmin'/g' /usr/local/apache/conf/extra/httpd-vhosts.conf
mkdir -p /usr/local/apache/conf/vhost
#向/usr/local/apache/conf/httpd.conf中末尾追加内容Include conf/vhost/*.conf
cat >>/usr/local/apache/conf/httpd.conf<<EOF
Include conf/vhost/*.conf
EOF
#安装rpaf
tar -zxvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6/
/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
cd ..
#创建软链
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.conf
echo "Stop php-fpm....."
rm -rf /usr/local/php/
cd $cur_dir
if [ -s php-5.2.17 ]; then
rm -rf php-5.2.17
fi
tar zxvf php-5.2.17.tar.gz
cd php-5.2.17/
wget -c [url]http://soft.vpser.net/web/php/bug/php-5.2.17-max-input-vars.patch[/url]
#打一个补丁这里需要了解diff和patch
patch -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-magic
if cat /etc/issue | grep -Eqi '(Debian|Ubuntu)';then
    cd ext/openssl/
    wget -c [url]http://soft.vpser.net/lnmp/ext/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch[/url]
    patch -p3 <debian_patches_disable_SSLv2_for_openssl_1_0_0.patch
    cd ../../
fi
rm -rf libtool
cp /usr/local/apache/build/libtool .
make ZEND_EXTRA_LIBS='-liconv'
make install
mkdir -p /usr/local/php/etc
cp php.ini-dist /usr/local/php/etc/php.ini
cd ../
#安装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/mysql
make && make install
cd $cur_dir/
# 添加 php extensions
sed -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.ini
sed -i 's#output_buffering = Off#output_buffering = On#' /usr/local/php/etc/php.ini
sed -i 's/post_max_size = 8M/post_max_size = 50M/g' /usr/local/php/etc/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 50M/g' /usr/local/php/etc/php.ini
sed -i 's/;date.timezone =/date.timezone = PRC/g' /usr/local/php/etc/php.ini
sed -i 's/short_open_tag = Off/short_open_tag = On/g' /usr/local/php/etc/php.ini
sed -i 's/; cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g' /usr/local/php/etc/php.ini
sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /usr/local/php/etc/php.ini
sed -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
#根据系统安装ZendOptimizer
if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then
        wget -c [url]http://soft.vpser.net/web/zend/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz[/url]
        tar zxvf ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz
    mkdir -p /usr/local/zend/
    cp ZendOptimizer-3.3.9-linux-glibc23-x86_64/data/5_2_x_comp/ZendOptimizer.so /usr/local/zend/
else
        wget -c [url]http://soft.vpser.net/web/zend/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz[/url]
    tar zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
    mkdir -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=1
zend_extension="/usr/local/zend/ZendOptimizer.so"
EOF
cd $cur_dir
cp conf/proxy.conf /usr/local/nginx/conf/proxy.conf
mv /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 [url]http://soft.vpser.net/lnmp/ext/init.d.httpd[/url]
cp init.d.httpd /etc/init.d/httpd
chmod +x /etc/init.d/httpd
echo "Test Nginx configure files..."
/usr/local/nginx/bin/nginx -t
echo "ReStarting Nginx......"
/etc/init.d/nginx restart
echo "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)';then
    update-rc.d -f httpd defaults
    update-rc.d -f php-fpm remove
else
    sed -i '/php-fpm/'d /etc/rc.local
    chkconfig --level 345 php-fpm off
    chkconfig --level 345 httpd on
fi
cd $cur_dir
rm -f /etc/init.d/php-fpm
mv /root/vhost.sh /root/lnmp.vhost.sh
cp vhost_lnmpa.sh /root/vhost.sh
chmod +x /root/vhost.sh
cp lnmpa /root/
chmod +x /root/lnmpa
printf "====================== 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 [url]http://www.lnmp.org[/url] \n"
printf "=======================================================================\n"



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-9520-1-1.html 上篇帖子: wordpress的安装和使用(原创图文教程)wamp 下篇帖子: 源码搭建LAMP平台

尚未签到

发表于 2013-11-29 21:25:55 | 显示全部楼层
我不是无坚不摧的城墙,也没有百毒不侵的心脏

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-2 12:37:04 | 显示全部楼层
青春仿佛因我爱你而开始,却令我看破爱这个字。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-5 12:40:31 | 显示全部楼层
〆.﹏对不起、您拨打的用户已结婚。。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-8 13:09:03 | 显示全部楼层
虚伪的你,使我过上虚伪的生活。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-10 13:13:27 | 显示全部楼层
甘愿俯身姿态到尘埃,你的微笑璀璨照亮我世界。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-12-13 15:08:51 | 显示全部楼层
只有在大排长龙时,才能真正体会到我们是‘龙的传人’。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表