#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATH# Check if user is rootif [ $(id -u) != "0" ]; then echo "Error: You must be root to run this script, please use root to install lnmp" exit 1ficlearecho "========================================================================="echo "LNMP V1.0 for CentOS/RadHat Linux VPS Written by Licess"echo "========================================================================="echo "A tool to auto-compile & install Nginx+MySQL+PHP on Linux "echo ""echo "For more information please visit http://www.lnmp.org/"echo "========================================================================="cur_dir=$(pwd)#set mysql root password echo "===========================" mysqlrootpwd="root" echo "Please input the root password of mysql:" read -p "(Default password: root):" mysqlrootpwd if [ "$mysqlrootpwd" = "" ]; then mysqlrootpwd="root" fi echo "===========================" echo "MySQL root password:$mysqlrootpwd" echo "==========================="#do you want to install the InnoDB Storage Engine?echo "===========================" installinnodb="n" echo "Do you want to install the InnoDB Storage Engine?" read -p "(Default no,if you want please input: y ,if not please press the enter button):" installinnodb case "$installinnodb" in y|Y|Yes|YES|yes|yES|yEs|YeS|yeS) echo "You will install the InnoDB Storage Engine" installinnodb="y" ;; n|N|No|NO|no|nO) echo "You will NOT install the InnoDB Storage Engine!" installinnodb="n" ;; *) echo "INPUT error,The InnoDB Storage Engine will NOT install!" installinnodb="n" esac#which PHP Version do you want to install?echo "===========================" isinstallphp53="n" echo "Install PHP 5.3.17,Please input y" echo "Install PHP 5.2.17,Please input n or press Enter" read -p "(Please input y or n):" isinstallphp53 case "$isinstallphp53" in y|Y|Yes|YES|yes|yES|yEs|YeS|yeS) echo "You will install PHP 5.3.17" isinstallphp53="y" ;; n|N|No|NO|no|nO) echo "You will install PHP 5.2.17" isinstallphp53="n" ;; *) echo "INPUT error,You will install PHP 5.2.17" isinstallphp53="n" esac#which MySQL Version do you want to install?echo "===========================" isinstallmysql55="n" echo "Install MySQL 5.5.27,Please input y" echo "Install MySQL 5.1.60,Please input n or press Enter" read -p "(Please input y or n):" isinstallmysql55 case "$isinstallmysql55" in y|Y|Yes|YES|yes|yES|yEs|YeS|yeS) echo "You will install MySQL 5.5.27" isinstallmysql55="y" ;; n|N|No|NO|no|nO) echo "You will install MySQL 5.1.60" isinstallmysql55="n" ;; *) echo "INPUT error,You will install MySQL 5.1.60" isinstallmysql55="n" esac get_char() { SAVEDSTTY=`stty -g` stty -echo stty cbreak dd if=/dev/tty bs=1 count=1 2> /dev/null stty -raw stty echo stty $SAVEDSTTY } echo "" echo "Press any key to start...or Press Ctrl+c to cancel" char=`get_char`function InitInstall(){ cat /etc/issue uname -a MemTotal=`free -m | grep Mem | awk '{print $2}'` echo -e "\n Memory is: ${MemTotal} MB " #Set timezone rm -rf /etc/localtime ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime yum install -y ntp ntpdate -u pool.ntp.org date rpm -qa|grep httpd rpm -e httpd rpm -qa|grep mysql rpm -e mysql rpm -qa|grep php rpm -e php yum -y remove httpd* yum -y remove php* yum -y remove mysql-server mysql yum -y remove php-mysql yum -y install yum-fastestmirror yum -y remove httpd #yum -y update #Disable SeLinux if [ -s /etc/selinux/config ]; then sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config fi cp /etc/yum.conf /etc/yum.conf.lnmp sed -i 's:exclude=.*:exclude=:g' /etc/yum.conf for packages in patch make cmake gcc gcc-c++ gcc-g77 flex bison file libtool libtool-libs autoconf kernel-devel libjpeg libjpeg-devel libpng libpng-devel libpng10 libpng10-devel gd gd-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glib2 glib2-devel bzip2 bzip2-devel libevent libevent-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel vim-minimal nano fonts-chinese gettext gettext-devel ncurses-devel gmp-devel pspell-devel unzip libcap; do yum -y install $packages; done mv -f /etc/yum.conf.lnmp /etc/yum.conf}function CheckAndDownloadFiles(){echo "============================check files=================================="if [ "$isinstallphp53" = "n" ]; then 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 if [ -s php-5.2.17-fpm-0.5.14.diff.gz ]; then echo "php-5.2.17-fpm-0.5.14.diff.gz [found]" else echo "Error: php-5.2.17-fpm-0.5.14.diff.gz not found!!!download now......" wget -c http://soft.vpser.net/web/phpfpm/php-5.2.17-fpm-0.5.14.diff.gz fielse if [ -s php-5.3.17.tar.gz ]; then echo "php-5.3.17.tar.gz [found]" else echo "Error: php-5.3.17.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/php/php-5.3.17.tar.gz fifiif [ -s memcache-3.0.6.tgz ]; then echo "memcache-3.0.6.tgz [found]" else echo "Error: memcache-3.0.6.tgz not found!!!download now......" wget -c http://soft.vpser.net/web/memcache/memcache-3.0.6.tgzfiif [ -s pcre-8.12.tar.gz ]; then echo "pcre-8.12.tar.gz [found]" else echo "Error: pcre-8.12.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/pcre/pcre-8.12.tar.gzfiif [ -s nginx-1.2.7.tar.gz ]; then echo "nginx-1.2.7.tar.gz [found]" else echo "Error: nginx-1.2.7.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/nginx/nginx-1.2.7.tar.gzfiif [ "$isinstallmysql55" = "n" ]; then if [ -s mysql-5.1.60.tar.gz ]; then echo "mysql-5.1.60.tar.gz [found]" else echo "Error: mysql-5.1.60.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/datebase/mysql/mysql-5.1.60.tar.gz fielse if [ -s mysql-5.5.28.tar.gz ]; then echo "mysql-5.5.28.tar.gz [found]" else echo "Error: mysql-5.5.28.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/datebase/mysql/mysql-5.5.28.tar.gz fifiif [ -s libiconv-1.14.tar.gz ]; then echo "libiconv-1.14.tar.gz [found]" else echo "Error: libiconv-1.14.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/libiconv/libiconv-1.14.tar.gzfiif [ -s libmcrypt-2.5.8.tar.gz ]; then echo "libmcrypt-2.5.8.tar.gz [found]" else echo "Error: libmcrypt-2.5.8.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/libmcrypt/libmcrypt-2.5.8.tar.gzfiif [ -s mhash-0.9.9.9.tar.gz ]; then echo "mhash-0.9.9.9.tar.gz [found]" else echo "Error: mhash-0.9.9.9.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/mhash/mhash-0.9.9.9.tar.gzfiif [ -s mcrypt-2.6.8.tar.gz ]; then echo "mcrypt-2.6.8.tar.gz [found]" else echo "Error: mcrypt-2.6.8.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/web/mcrypt/mcrypt-2.6.8.tar.gzfiif [ -s phpmyadmin-latest.tar.gz ]; then echo "phpmyadmin-latest.tar.gz [found]" else echo "Error: phpmyadmin-latest.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/datebase/phpmyadmin/phpmyadmin-latest.tar.gzfiif [ -s p.tar.gz ]; then echo "p.tar.gz [found]" else echo "Error: p.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/prober/p.tar.gzfiif [ -s autoconf-2.13.tar.gz ]; then echo "autoconf-2.13.tar.gz [found]" else echo "Error: autoconf-2.13.tar.gz not found!!!download now......" wget -c http://soft.vpser.net/lib/autoconf/autoconf-2.13.tar.gzfiecho "============================check files=================================="}function InstallDependsAndOpt(){cd $cur_dirtar zxvf autoconf-2.13.tar.gzcd autoconf-2.13/./configure --prefix=/usr/local/autoconf-2.13make && make installcd ../tar zxvf libiconv-1.14.tar.gzcd libiconv-1.14/./configuremake && make installcd ../cd $cur_dirtar zxvf libmcrypt-2.5.8.tar.gzcd libmcrypt-2.5.8/./configuremake && make install/sbin/ldconfigcd libltdl/./configure --enable-ltdl-installmake && make installcd ../../cd $cur_dirtar zxvf mhash-0.9.9.9.tar.gzcd mhash-0.9.9.9/./configuremake && make installcd ../ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.laln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.soln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.aln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.laln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.soln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1cd $cur_dirtar zxvf mcrypt-2.6.8.tar.gzcd mcrypt-2.6.8/./configuremake && make installcd ../if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then ln -s /usr/lib64/libpng.* /usr/lib/ ln -s /usr/lib64/libjpeg.* /usr/lib/fiulimit -v unlimitedif [ ! `grep -l "/lib" '/etc/ld.so.conf'` ]; then echo "/lib" >> /etc/ld.so.conffiif [ ! `grep -l '/usr/lib' '/etc/ld.so.conf'` ]; then echo "/usr/lib" >> /etc/ld.so.conffiif [ -d "/usr/lib64" ] && [ ! `grep -l '/usr/lib64' '/etc/ld.so.conf'` ]; then echo "/usr/lib64" >> /etc/ld.so.conffiif [ ! `grep -l '/usr/local/lib' '/etc/ld.so.conf'` ]; then echo "/usr/local/lib" >> /etc/ld.so.conffildconfigcat >>/etc/security/limits.conf< >/etc/sysctl.conf< /etc/ld.so.conf.d/mysql.conf< /tmp/mysql_sec_script< /etc/ld.so.conf.d/mysql.conf< /tmp/mysql_sec_script< >/usr/local/php/etc/php.ini< >/usr/local/php/etc/php.ini< /usr/local/php/etc/php-fpm.conf< /home/wwwroot/default/phpinfo.php< eofecho "Copy PHP Prober..."cd $cur_dirtar zxvf p.tar.gzcp p.php /home/wwwroot/default/p.phpcp conf/index.html /home/wwwroot/default/index.htmlecho "============================Install PHPMyAdmin================================="tar zxf phpmyadmin-latest.tar.gzmv phpMyAdmin-3.4.8-all-languages /home/wwwroot/default/phpmyadmin/cp conf/config.inc.php /home/wwwroot/default/phpmyadmin/config.inc.phpsed -i 's/LNMPORG/LNMP.org'$RANDOM'VPSer.net/g' /home/wwwroot/default/phpmyadmin/config.inc.phpmkdir /home/wwwroot/default/phpmyadmin/upload/mkdir /home/wwwroot/default/phpmyadmin/save/chmod 755 -R /home/wwwroot/default/phpmyadmin/chown www:www -R /home/wwwroot/default/phpmyadmin/echo "============================phpMyAdmin install completed================================="}function AddAndStartup(){echo "============================add nginx and php-fpm on startup============================"echo "Download new nginx init.d file......"wget -c http://soft.vpser.net/lnmp/ext/init.d.nginxcp init.d.nginx /etc/init.d/nginxchmod +x /etc/init.d/nginxchkconfig --level 345 php-fpm onchkconfig --level 345 nginx onchkconfig --level 345 mysql onecho "===========================add nginx and php-fpm on startup completed===================="echo "Starting LNMP..."/etc/init.d/mysql start/etc/init.d/php-fpm start/etc/init.d/nginx start#add 80 port to iptablesif [ -s /sbin/iptables ]; then/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT/sbin/iptables-savefi}function CheckInstall(){echo "===================================== Check install ==================================="clearisnginx=""ismysql=""isphp=""echo "Checking..."if [ -s /usr/local/nginx ] && [ -s /usr/local/nginx/sbin/nginx ]; then echo "Nginx: OK" isnginx="ok" else echo "Error: /usr/local/nginx not found!!!Nginx install failed."fiif [ -s /usr/local/php/sbin/php-fpm ] && [ -s /usr/local/php/etc/php.ini ] && [ -s /usr/local/php/bin/php ]; then echo "PHP: OK" echo "PHP-FPM: OK" isphp="ok" else echo "Error: /usr/local/php not found!!!PHP install failed."fiif [ -s /usr/local/mysql ] && [ -s /usr/local/mysql/bin/mysql ]; then echo "MySQL: OK" ismysql="ok" else echo "Error: /usr/local/mysql not found!!!MySQL install failed."fiif [ "$isnginx" = "ok" ] && [ "$ismysql" = "ok" ] && [ "$isphp" = "ok" ]; thenecho "Install lnmp 1.0 completed! enjoy it."echo "========================================================================="echo "LNMP V1.0 for CentOS/RadHat Linux VPS Written by Licess "echo "========================================================================="echo ""echo "For more information please visit http://www.lnmp.org/"echo ""echo "lnmp status manage: /root/lnmp {start|stop|reload|restart|kill|status}"echo "default mysql root password:$mysqlrootpwd"echo "phpinfo : http://yourIP/phpinfo.php"echo "phpMyAdmin : http://yourIP/phpmyadmin/"echo "Prober : http://yourIP/p.php"echo "Add VirtualHost : /root/vhost.sh"echo ""echo "The path of some dirs:"echo "mysql dir: /usr/local/mysql"echo "php dir: /usr/local/php"echo "nginx dir: /usr/local/nginx"echo "web dir : /home/wwwroot/default"echo ""echo "========================================================================="/root/lnmp statusnetstat -ntlelseecho "Sorry,Failed to install LNMP!"echo "Please visit http://bbs.vpser.net/forum-25-1.html feedback errors and logs."echo "You can download /root/lnmp-install.log from your server,and upload lnmp-install.log to LNMP Forum."fi}InitInstall 2>&1 | tee /root/lnmp-install.logCheckAndDownloadFiles 2>&1 | tee -a /root/lnmp-install.logInstallDependsAndOpt 2>&1 | tee -a /root/lnmp-install.logif [ "$isinstallmysql55" = "n" ]; then InstallMySQL51 2>&1 | tee -a /root/lnmp-install.logelse InstallMySQL55 2>&1 | tee -a /root/lnmp-install.logfiif [ "$isinstallphp53" = "n" ]; then InstallPHP52 2>&1 | tee -a /root/lnmp-install.logelse InstallPHP53 2>&1 | tee -a /root/lnmp-install.logfiInstallNginx 2>&1 | tee -a /root/lnmp-install.logCreatPHPTools 2>&1 | tee -a /root/lnmp-install.logAddAndStartup 2>&1 | tee -a /root/lnmp-install.logCheckInstall 2>&1 | tee -a /root/lnmp-install.log