- #!/bin/bash
定義變量localpath為目前腳本的路徑,作用是在後面使用變量來尋找程式包;
- localpath=`pwd`
判斷是否存在檔案/tmp/lamp_lock,如果有這個檔案表明這個腳本已經運作了,作用是防止重複運作腳本。如果沒有這個檔案,這建立該檔案,并繼續後面的步驟;
- if [ -e /tmp/lamp_lock ]
- then
- echo "This script is running..."
- exit 9
- fi
- touch /tmp/lamp_lock
檢查目前的作業系統和使用者是不是滿足安裝的需求;
- system=`uname`
- if [ ! ${system}=Linux ]
- then
- echo "You system is not rhel 5.5!!"
- exit 11
- fi
- user=`echo $UID`
- if [ ! $user=0 ]
- then
- echo "You are not root!"
- exit 10
- fi
自定義函數,函數的作用是判斷傳回值是否為0;
- jubgement() {
- if [ ! $?=0 ]
- then
- echo "Is error!!!"
- exit
- fi
- }
- phpver="5.2.14"
- httpdver="2.2.11"
- mysqlver="5.5.3-m3"
- mhashver="0.9.9.9"
- convver="1.13.1"
- libmcver="2.5.8"
- mcryptver="2.6.8"
- pdover="1.0.2"
- eAccver="0.9.6.1"
- tar fxz php-${phpver}.tar.gz 2>>/tmp/error.log
- tar fxj httpd-${httpdver}.tar.bz2 2>>/tmp/error.log
- tar fxz mysql-${mysqlver}.tar.gz 2>>/tmp/error.log
- tar fxz libiconv-${convver}.tar.gz 2>>/tmp/error.log
- tar fxz libmcrypt-${libmcver}.tar.gz 2>>/tmp/error.log
- tar fxz mcrypt-${mcryptver}.tar.gz 2>>/tmp/error.log
- tar fxz mhash-${mhashver}.tar.gz 2>>/tmp/error.log
- tar fxz PDO_MYSQL-${pdover}.tgz 2>>/tmp/error.log
- tar fxj eaccelerator-${eAccver}.tar.bz2 2>>/tmp/error.log
安裝配置apache,并做了一個apache的啟動腳本;
- cd ${localpath}/httpd-${httpdver}
- ./configure --with-mpm=prefork --enable-cache --enable-disk-cache --enable-mem-cache --enable-file-cache --enable-nonportable-atormics --enable-mods-shared=most --enable-so 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- cat > /etc/rc.d/init.d/apache << EOF
- #!/bin/bash
- case \$1 in
- start )
- /usr/local/apache2/bin/apachectl \$1
- echo "apache [start]"
- ;;
- stop )
- /usr/local/apache2/bin/apachectl \$1
- echo "apache [stop]"
- ;;
- restart )
- /usr/local/apache2/bin/apachectl \$1
- echo "apache [stop]"
- sleep 2
- echo "apache [start]"
- esac
- EOF
- chmod a+x /etc/rc.d/init.d/apache
- service apache start 2>>/tmp/error.log
- sleep 5
安裝配置MySQL;
- CFLAGS="-06 -mpentumpro -fomit-frame-pointer"
- CXXFLAGS="-06 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"
- yum install gcc gcc-c++ ncurses-devel libtool -y >& /dev/null
- cd ${localpath}/mysql-${mysqlver}
- useradd mysql
- ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-big-tables --with-ssl --with-embedded-server --enable-local-infile --with-plugins=innobase --enable-static --with-client-ldflgs=-all-static --with-mysqld-ldflags=-all-static 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- cat ${localpath}/mysql-${mysqlver}/support-files/my-huge.cnf > /etc/my.cnf
- cat /usr/local/mysql/share/mysql/mysql.server > /etc/init.d/mysql
- chmod a+x /etc/init.d/mysql
- /usr/local/mysql/bin/mysql_install_db --user=mysql
- chown mysql:mysql /usr/local/mysql -R
- mkdir /usr/local/mysql/data
- sed -i.bak '/\[mysqld\]/a datadir=\/usr\/local\/mysql\/data' /etc/my.cnf
- cat /etc/my.cnf|grep skip-name-resolve || sed -i '/\[mysqld\]/a skip-name-resolve' /etc/my.cnf
- echo "/usr/local/mysql/lib/mysql/" >> /etc/ld.so.conf
- ldconfig
- ln -s /usr/local/mysql/bin/* /usr/local/bin/
- ln -s /usr/local/mysql/libexec/* /usr/local/libexec/
- ln -s /usr/local/mysql/share/man/man1/* /usr/share/man/man1/
- ln -s /usr/local/mysql/share/man/man5/* /usr/share/man/man5/
- service mysql start 2>>/tmp/error.log
- sleep 5
安裝并配置PHP
- cd ${localpath}/libiconv-${convver}
- ./configure 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- cd ${localpath}/libmcrypt-${libmcver}
- ./configure 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- ldconfig
- cd libltdl
- ./configure --enable-ltdl-install
- jubgement
- make && make install
- jubgement
- cd ${localpath}/mhash-${mhashver}
- ./configure 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- cd ${localpath}/mcrypt-${mcryptver}
- ./configure 2>>/tmp/error.log
- jubgement
- make && make install 2>>/tmp/error.log
- jubgement
- mount /dev/cdrom /mnt
- yum -y install libjpeg* libpng* libxml2* zlib* glibc* glib2* bzip2* nvurses* curl* libidn* openssl* freetype*
- cd ${localpath}/php-${phpver}
- ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv-dir=/usr/local/ --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath -enable-discard-path --enable-safe-mode --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl -with-curlwrappers --enable-mbregex --enable-force-cgi-redirect --enable-mbstring --with-mcrypt --with-gd --enable-gd-native-tty 2>>/tmp/error.log
- jubgement
- make ZEND_EXTRA_LIBS='-liconv' 2>>/tmp/error.log
- jubgement
- make install 2>>/tmp/error.log
- jubgement
- cp ${localpath}/php-${phpver}/php.ini-dist /usr/local/php/etc/php.ini
- echo "AddType text/html .php" >> /usr/local/apache2/conf/httpd.conf
- echo "AddHandler php5-script .php" >> /usr/local/apache2/conf/httpd.conf
- sed -i.bak '/IfModule mime_module/a\ \ \ \ AddType application/x-httpd-php .php' /usr/local/apache2/conf/httpd.conf
- cat > /usr/local/apache2/htdocs/index.php << EOF
- <? phpinfo() ?>
- EOF
- cat > /usr/local/apache2/htdocs/test.html << EOF
- $link=mysql_connect('localhost','root','')
- if (!$link) {
- die ('Could not connect:' mysql_error())
- }
- echo '<h1>Connected successfully</h1>';
- phpinfo();
- ?>
- EOF
- service apache stop 2>>/tmp/error.log
- service apache start 2>>/tmp/error.log
- rm -fr /tmp/lamp_lock
- echo "include /usr/local/apache2/conf/prefork.c" >>/usr/local/apache2/conf/httpd.conf
- cat > /usr/local/apache2/conf/prefork.c << EOF
- <IfModule prefork.c>
- startServers 8
- MinSpareServers 5
- MaxSpareServers 20
- ServerLimit 20000
- MaxClients 20000
- MaxRequestsPerChild 2000
- </IfModule>
- EOF
- cd ${localpath}/PDO_MYSQL-${pdover}
- /usr/local/php/bin/phpize
- ./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
- jubgement
- make && make install
- jubgement
- sed -i.bak '/extension_dir =/ s/.\//\/usr\/local\/php\/lib\/extensions\/no-debug-non-zts-20060613/g' /usr/local/php/etc/php.ini
- sed -i.bak '/extension_dir =/a extension = "pdo_mysql.so"' /usr/local/php/etc/php.ini
- echo "extension = pdo_mysql.so" >> /usr/local/php/etc/php.ini
- cd ${localpath}/eaccelerator-${eAccver}
- /usr/local/php/bin/phpize
- ./configure --enable-eaccelerator=share --with-php-config=/usr/local/php/bin/php-config
- echo "
- [eaccelerator]
- zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
- eaccelerator.shm_size="128"
- eaccelerator.cache_dir="/tmp/eaccelerator_cache"
- eaccelerator.enable="1"
- eaccelerator.oprimizer="1"
- eaccelerator.check_mtime="1"
- eaccelerator.debug="0"
- eaccelerator.filter=" "
- eaccelerator.shm_ttl="300"
- eaccelerator.shm_prune_period="120"
- eaccelerator.shm_only="0"
- eaccelerator.compress="1"
- eaccelerator.compress_level="9"" >>/usr/local/php/etc/php.ini