当前位置:网站首页>Analyze apache SH script
Analyze apache SH script
2022-06-29 22:15:00 【Brother Xing plays with the clouds】
analysis shell Script , Learning methods , This is in fact lnmp Re installation under environment apache, Realization lnmpa Environmental Science .
#!/bin/bash # Definition PATH Variable PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin # Statement PATH For environment variables export PATH # Check if user is root #id -u Current user's uid, You can also use backquotes `id -u`, The effect is the same ,0 by root Users of 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 screen operation clear # Can recognize special characters 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 http://www.lnmp.org \n" printf "=======================================================================\n" # Give the current path to the variable cur_dir cur_dir=$(pwd) # Let's focus on , see ip, # adopt 1 Time grep, Filter out those that do not contain inet The line of #2 Secondary reverse grep That is, take the rows that are not included , Filter out those that contain 127.0.0.1 and inet6 The line of #awk Print page 2 Column #tr -d Get rid of addr:, That's all that's left 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="" # To read user keyboard input, you can also use -t 30 Specify a time limit read -p "Please input Administrator Email Address:" ServerAdmin if [ "$ServerAdmin" == "" ]; then echo "Administrator Email Address will set to [email protected]!" ServerAdmin="[email protected]" else echo "===========================" echo Server Administrator Email="$ServerAdmin" echo "===========================" fi # Defined function get_char() { # Print the setting of the current terminal and assign variables SAVEDSTTY=`stty -g` #echo input characters stty -echo stty cbreak # Copy the specified input file to the specified output file , And format conversion can be carried out in the process of copying #if = Input file ,bs = bytes At the same time, set read / Number of bytes written to the buffer ( Equal to setting obs and ibs),count = blocks Copy only the entered blocks block 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 test If the length of the file is not zero , It is true 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 http://soft.vpser.net/web/apache/httpd-2.2.22.tar.gz fi #mod_rpaf yes apache A module of , The purpose is to obtain the authenticity of visitors 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 http://soft.vpser.net/web/apache/rpaf/mod_rpaf-0.6.tar.gz fi #php Source code 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 http://soft.vpser.net/web/php/php-5.2.17.tar.gz fi printf "=========================== install Apache ======================\n" # Stop other current services 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 # Backup 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/ # Start compilation and installation 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 Don't go alias Of 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 Implement content replacement sed -i 's/#ServerName www.example.com:80/ServerName www.lnmp.org:88/g' /usr/local/apache/conf/httpd.conf sed -i 's/ServerAdmin [email protected]/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/[email protected]/'$ServerAdmin'/g' /usr/local/apache/conf/extra/httpd-vhosts.conf mkdir -p /usr/local/apache/conf/vhost # towards /usr/local/apache/conf/httpd.conf At the end of Include conf/vhost/*.conf cat >>/usr/local/apache/conf/httpd.conf<<EOF Include conf/vhost/*.conf EOF # install 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 .. # Create soft chain 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 http://soft.vpser.net/web/php/bug/php-5.2.17-max-input-vars.patch # To make a patch, you need to know diff and 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 http://soft.vpser.net/lnmp/ext/debian_patches_disable_SSLv2_for_openssl_1_0_0.patch 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 ../ # install PDO Expand 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/ # add to 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 # According to the system installation ZendOptimizer if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then wget -c http://soft.vpser.net/web/zend/ZendOptimizer-3.3.9-linux-glibc23-x86_64.tar.gz 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 http://soft.vpser.net/web/zend/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz 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 # to php.ini Additional content 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 # add to apache Auto start script echo "Download new Apache init.d file......" wget -c http://soft.vpser.net/lnmp/ext/init.d.httpd 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 # Update system startup items 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 http://www.lnmp.org \n" printf "=======================================================================\n"
边栏推荐
- jfinal中如何使用过滤器监控Druid监听SQL执行?
- 从第三次技术革命看企业应用三大开发趋势
- 22 years of a doctor in Huawei
- Dynamic planning learning (continuous update)
- The explain function of the DALEX package of R language generates a machine learning model interpreter and predict for the specified classification prediction_ The parts function analyzes the contribu
- Deep learning remote sensing data set
- 尚硅谷实时数据仓库项目(阿里云实时数仓)
- 小型圖書館項目總結
- Datakit acts as an API server for local data acquisition
- A mysql IBD file is too large processing record
猜你喜欢
数论-整除分块
This time, I will talk about technology and life
Water polo chart - using dynamic ripples to show percentages
Golang operation etcd
尚硅谷实时数据仓库项目(阿里云实时数仓)
小型圖書館項目總結
Detailed explanation of MySQL and mvcc and the difference between RC and RR for snapshot reading
ASP dynamically creates table table
STM32 and gd32 notes
Layer 3 loop brought by route Summary - solution experiment
随机推荐
Shangsilicon Valley real-time data warehouse project (Alibaba cloud real-time data warehouse)
为什么要同时重写hashcode和equals方法之简单理解
Huawei's software testing director with 7 years' experience, several suggestions for all students who want to switch to software testing
Sophon CE community edition goes online, and free get is a lightweight, easy-to-use, efficient and intelligent data analysis tool
Weibo comments on high availability and high performance computing architecture
期末实训 简单通讯录 c语言
Automatic reply of wechat bulletin number intelligent reply with Turing robot
How to use filters in jfinal to monitor Druid for SQL execution?
研发测试时间比,BUG数据分析
Huawei cloud AOM version 2.0 release
美国隧道法ASTM E84 表面阻燃测试
从第三次技术革命看企业应用三大开发趋势
每日刷题记录 (八)
Final training simple address book c language
The soft youth under the blessing of devcloud makes education "smart" in the cloud
MySQL backup and restore
Don't worry about form deformation anymore
The explain function of the DALEX package of R language generates a machine learning model interpreter and predict for the specified classification prediction_ The parts function analyzes the contribu
Reading notes on how to connect the network - LAN on the server side (4)
Top ten questions for senior Performance Test Engineer