#!/bin/bash #this script is source packages installed lnmp for redhat or centos 6.xmal yum -y install wget #"============download the source package==============" wget http: //cloud .github.com /downloads/libevent/libevent/libevent-2 .0.21-stable. tar .gz wget http: //Nginx .org /download/Nginx-1 .3.8. tar .gz wget http: //www .cmake.org /files/v2 .8 /cmake-2 .8.6. tar .gz wget http: //ftp .gnu.org /gnu/bison/bison-2 .5.1. tar .gz wget http: //cdn .MysqL.com /Downloads/MysqL-5 .5 /MysqL-5 .5.30. tar .gz wget http: //ncu .dl.sourceforge.net /project/qdbm/qdbm/1 .8.77 /qdbm-1 .8.77. tar .gz wget http: //ftp .gnu.org /pub/gnu/libiconv/libiconv-1 .14. tar .gz wget http: //fossies .org /linux/www/gd-2 .0.35. tar .gz wget http: //sourceforge .net /projects/mcrypt/files/Libmcrypt/2 .5.8 /libmcrypt-2 .5.8. tar .bz2 /download wget http: //sourceforge .net /projects/mhash/files/mhash/0 .9.9.9 /mhash-0 .9.9.9. tar .bz2 /download wget http: //sourceforge .net /projects/mcrypt/files/MCrypt/2 .6.8 /mcrypt-2 .6.8. tar .gz /download wget http: //cronolog .org /download/cronolog-1 .6.2. tar .gz wget http: //cn2 .PHP.net /distributions/PHP-5 .4.14. tar .gz wget http: //ncu .dl.sourceforge.net /project/pcre/pcre/8 .11 /pcre-8 .11. tar .gz #"=============download all======================" printf "========install the compile tool=============\n" yum -y install gcc gcc-c++ openssl-devel ncurses ncurses-devel zlib-devel bzip2 bzip2 -devel curl-devel libjpeg-devel libxml2* libpng* freetype* libxslt* #yum -y groupinstall "Development" "Development Tools" #or use this command instead of the above #tar the source package 解压源代码包到指定的目录 tar zxvf pcre-8.11. tar .gz -C /usr/local/src/ tar zxvf libevent-2.0.21-stable. tar .gz -C /usr/local/src/ tar zxvf Nginx-1.3.8. tar .gz -C /usr/local/src/ tar zxvf cmake-2.8.6. tar .gz -C /usr/local/src/ tar zxvf bison-2.5.1. tar .gz -C /usr/local/src/ tar zxvf MysqL-5.5.30. tar .gz -C /usr/local/src/ tar zxvf libiconv-1.14. tar .gz -C /usr/local/src/ tar zxvf qdbm-1.8.77. tar .gz -C /usr/local/src/ tar zxvf gd-2.0.35. tar .gz -C /usr/local/src/ tar zxvf mcrypt-2.6.8. tar .gz -C /usr/local/src/ @H_962_403@tar zxvf cronolog-1.6.2. tar .gz -C /usr/local/src/ tar zxvf PHP-5.4.14. tar .gz -C /usr/local/src/ tar jxvf libmcrypt-2.5.8. tar .bz2 -C /usr/local/src/ tar jxvf mhash-0.9.9.9. tar .bz2 -C /usr/local/src/ #Compile the unpack the source code package 编译解压的源代码包 echo "===========Nginx Relevant source package is installed========== " echo "##### pcre install#####" cd /usr/local/src/pcre-8 .11/ . /configure --prefix= /usr/local/pcre && make && make install printf "====pcre is ok====\n" echo "#####libevent install######" cd /usr/local/src/libevent-2 .0.21-stable/ . /configure --prefix= /usr/local/libevent && make && make install printf "====libevent is ok====\n" echo "####Nginx install######" groupadd -r Nginx useradd -r -g Nginx -s /bin/false -M Nginx cd /usr/local/src/Nginx-1 .3.8/ ###before you configure,you can see "./configure ?help" see carefully "?with-pcre=DIR set path to PCRE library sources"在编译之前可以先help看看 . /configure --prefix= /usr/local/Nginx --with-pcre= /usr/local/src/pcre-8 .11/ --sbin-path= /usr/local/Nginx/sbin/Nginx --pid-path= /usr/local/Nginx/logs/Nginx .pid \ --with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --user=Nginx --group=Nginx \ --http-proxy-temp-path= /var/tmp/Nginx/proxy/ --http-fastcgi-temp-path= /var/tmp/Nginx/fcgi/ --lock-path= /var/lock/Nginx .lock --http-client-body-temp-path= /var/tmp/Nginx/client/ \
&& make && make install printf "======Nginx is ok!!======\n" mkdir -pv /var/tmp/Nginx/ #write startup Nginx files by yourself 自己手动写Nginx的启动脚本 cat >> /etc/init .d /Nginx << EOF #!/bin/bash # Nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: ? 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features,but it’s not for everyone. # processname: Nginx # pidfile: /var/run/Nginx.pid # config: /usr/local/Nginx/conf/Nginx.conf Nginxd= /usr/local/Nginx/sbin/Nginx Nginx_config= /usr/local/Nginx/conf/Nginx .conf Nginx_pid= /usr/local/Nginx/logs/Nginx .pid RETVAL=0 prog= "Nginx" # Source function library. . /etc/rc .d /init .d /functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $Nginxd ] || exit 0 # Start Nginx daemons functions. start() { if [ -e $Nginx_pid ]; then echo "Nginx already running…." exit 1 fi echo -n $ "Starting $prog: " daemon $Nginxd -c ${Nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/Nginx return $RETVAL } # Stop Nginx daemons functions. stop() { echo -n $ "Stopping $prog: " killproc $Nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/Nginx /usr/local/Nginx/logs/Nginx .pid } reload() { echo -n $ "Reloading $prog: " #kill -HUP `cat ${Nginx_pid}` killproc $Nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo "Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL EOF chmod +x /etc/init .d /Nginx chkconfig --add Nginx chkconfig --level 35 Nginx on service Nginx restart echo "===========MysqL Relevant source package is installed========== " useradd -M -s /sbin/nologin MysqL echo "##### cmake install#####" cd /usr/local/src/cmake-2 .8.6 . /bootstrap && gmake && gmake install printf "====cmake is ok====\n" echo "##### bison install#####" cd /usr/local/src/bison-2 .5.1/ . /configure && make && make install printf "====bison is ok====\n" echo "##### MysqL install#####" cd /usr/local/src/MysqL-5 .5.30/ cmake -DCMAKE_INSTALL_PREFIX= /usr/local/MysqL -DMysqL_UNIX_ADDR= /tmp/MysqL .sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS:STRING=utf8,gbk -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 \ -DMysqL_DATADIR= /var/MysqL/data && make && make install printf "====MysqL is ok====\n" #set up the MysqL configuration file and initialize the database 建立MysqL的配置文件和初始化数据库 #cp usr/local/MysqL/support-files/my-huge.cnf /etc/my.cnf ##if you memory is greater than 2G,please choose this 内存大于2G就copy这个配置文件 cp /usr/local/MysqL/support-files/my-medium .cnf /etc/my .cnf cp /usr/local/MysqL/support-files/MysqL .server /etc/init .d /MysqLd /usr/local/MysqL/scripts/MysqL_install_db --user=MysqL --basedir= /usr/local/MysqL/ --datadir= /var/MysqL/data /usr/local/MysqL/bin/MysqLd_safe --user=MysqL chmod -R 755 /usr/local/MysqL chown -R MysqL:MysqL /usr/local/MysqL chown -R MysqL:MysqL /var/MysqL/data chkconfig --add MysqLd chkconfig --level 35 MysqLd on service MysqLd restart read -p "please set up password for MysqL:" pwd /usr/local/MysqL/bin/MysqLadmin -u root password $ pwd export PATH=$PATH: /usr/local/MysqL/bin/ echo "PATH=$PATH:/usr/local/MysqL/bin" >> /etc/profile ln -s /usr/local/MysqL/bin/ * /usr/local/bin/ ln -s /usr/local/MysqL/lib/ * /usr/lib ln -s /usr/local/MysqL/include/MysqL/ * /usr/include/ echo "===========PHP Relevant source package is installed========== " echo "####libiconv install####" cd /usr/local/src/libiconv-1 .14/ . /configure --prefix= /usr/local/libiconv && make && make install printf "====libiconv is ok====\n" echo "####qdbm install#####" cd /usr/local/src/qdbm-1 .8.77/ . /configure --prefix= /usr/local/qdbm -- enable -devel -- enable -zlib -- enable -iconv && make && make install printf "====qdbm is ok====\n" echo "####gd install####" cd /usr/local/src/gd-2 .0.35/ . /configure --prefix= /usr/local/gd2 --with-jpeg --with-png --with-zlib --with-freetype && make && make install printf "====gd is ok====\n" sed -i '/\*gd_free/a\void (*data);' /usr/local/gd2/include/gd_io .h echo "/usr/local/gd2/lib" >> /etc/ld .so.conf ldconfig echo "####libmcrypt and libltdl install####" cd /usr/local/src/libmcrypt-2 .5.8/ . /configure --prefix= /usr/local/libmcrypt && make && make install @H_494_1404@ldconfig cd /usr/local/src/libmcrypt-2 .5.8 /libltdl . /configure --prefix= /usr/local/libltdl -- enable -ltdl- install && make && make install ln -sf /usr/local/lib/libmcrypt .* /usr/lib ln -sf /usr/local/bin/libmcrypt-config /usr/bin printf "====libmcrypt and libltdl is ok====\n" echo "####mhash install####" cd /usr/local/src/mhash-0 .9.9.9/ . /configure --prefix= /usr/local/mhash && make && make install ln -sf /usr/local/lib/libmhash .* /usr/lib/ printf "====mhash is ok====\n" echo "####mcrypt install####" cd /usr/local/src/mcrypt-2 .6.8/ /sbin/ldconfig
. /configure --prefix= /usr/local/mcrypt && make && make install printf "====mcrypt is ok====\n" echo "####cronolog install####" cd /usr/local/src/cronolog-1 .6.2 . /configure --prefix= /usr/local/cronolog && make && make install printf "====cronolog is ok====\n" echo "####PHP install#####" ln -sf /usr/local/MysqL/lib/libMysqLclient .so.18 /usr/lib ln -sf /usr/local/qdbm/lib/libqdbm .so* /usr/lib cd /usr/local/src/PHP-5 .4.14 . /configure --prefix= /usr/local/PHP5 --with-config- file -path= /usr/local/PHP5/etc --with-MysqL= /usr/local/MysqL \ --with-iconv= /usr/local/libiconv --with-gd= /usr/local/gd2 --with-iconv- dir = /usr/local --with-pdo-MysqL= /usr/local/MysqL \ --with-libxml- dir = /usr --with-qdbm= /usr/local/qdbm --with-mime-magic= /usr/share/file/magic --with-jpeg- dir --with-png- dir --with-freetype- dir \ --with-bz2 --with-zlib --without-pear --with-xmlrpc --with-zlib- dir --with-curl --with-curlwrappers --with-mcrypt= /usr/local/libmcrypt --with-mhash \ --with-ttf --with-xsl --with-gettext --with-pear --with-openssl -- enable -discard-path -- enable -gd-native-ttf \ -- enable -bcmath -- enable -shmop -- enable -sysvsem -- enable -inline-optimization -- enable -mbregex -- enable -xml \ -- enable -soap -- enable -calendar -- enable -wddx -- enable -dba -- enable -gd-native-ttf-- enable -calendar -- enable -safe-mode \ -- enable - ftp -- enable -fpm -- enable -zip -- enable -mbstring -- enable -bcmath -- enable -sockets -- enable -exif -- enable -magic-quotes --disable-rpath --disable-debug \ && make && make install printf "====PHP is ok====\n" ln -s /usr/local/PHP5/bin/ * /usr/local/bin/ ln -s /usr/local/PHP5/sbin/ * /usr/local/sbin/ cp /usr/local/src/PHP-5 .4.14 /PHP .ini-production /usr/local/PHP5/PHP .ini #Configure Nginx support PHP 配置Nginx支持PHP环境 cp /usr/local/PHP5/etc/PHP-fpm .conf.default /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/run/s/;//g' /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/^ /d' /usr/local/PHP5/etc/PHP-fpm .conf sed -i 's/nobody/Nginx/g' /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/start/s/2/20/' /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/min/s/1/5/' /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/max_spare/s/3/25/' /usr/local/PHP5/etc/PHP-fpm .conf sed -i '/max_children/s/5/35/' /usr/local/PHP5/etc/PHP-fpm .conf /usr/local/sbin/PHP-fpm #启动PHP-fpm进程 #test Nginx MysqL PHP work tegether sed -i '/\<user\>/a user Nginx;' /usr/local/Nginx/conf/Nginx .conf #把user改为Nginx用户 sed -i '/\<index\>/s/index.html index.htm/index.html index.htm index.PHP/g' /usr/local/Nginx/conf/Nginx .conf #添加支持index.PHP #这下面的六句自己手动的 |