#!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # Check if user is root 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 echo "=========================================================================" 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 fi else 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 fi fi if [ -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.tgz fi if [ -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.gz fi if [ -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.gz fi if [ "$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 fi else 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 fi fi if [ -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.gz fi if [ -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.gz fi if [ -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.gz fi if [ -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.gz fi if [ -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.gz fi if [ -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.gz fi if [ -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.gz fi echo "============================check files==================================" } function InstallDependsAndOpt() { cd $cur_dir tar zxvf autoconf-2.13.tar.gz cd autoconf-2.13/ ./configure --prefix=/usr/local/autoconf-2.13 make && make install cd ../ tar zxvf libiconv-1.14.tar.gz cd libiconv-1.14/ ./configure make && make install cd ../ cd $cur_dir tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure make && make install /sbin/ldconfig cd libltdl/ ./configure --enable-ltdl-install make && make install cd ../../ cd $cur_dir tar zxvf mhash-0.9.9.9.tar.gz cd mhash-0.9.9.9/ ./configure make && make install cd ../ ln -s /usr/local/lib/libmcrypt.la /usr/lib/libmcrypt.la ln -s /usr/local/lib/libmcrypt.so /usr/lib/libmcrypt.so ln -s /usr/local/lib/libmcrypt.so.4 /usr/lib/libmcrypt.so.4 ln -s /usr/local/lib/libmcrypt.so.4.4.8 /usr/lib/libmcrypt.so.4.4.8 ln -s /usr/local/lib/libmhash.a /usr/lib/libmhash.a ln -s /usr/local/lib/libmhash.la /usr/lib/libmhash.la ln -s /usr/local/lib/libmhash.so /usr/lib/libmhash.so ln -s /usr/local/lib/libmhash.so.2 /usr/lib/libmhash.so.2 ln -s /usr/local/lib/libmhash.so.2.0.1 /usr/lib/libmhash.so.2.0.1 cd $cur_dir tar zxvf mcrypt-2.6.8.tar.gz cd mcrypt-2.6.8/ ./configure make && make install cd ../ if [ `getconf WORD_BIT` = '32' ] && [ `getconf LONG_BIT` = '64' ] ; then ln -s /usr/lib64/libpng.* /usr/lib/ ln -s /usr/lib64/libjpeg.* /usr/lib/ fi ulimit -v unlimited if [ ! `grep -l "/lib" '/etc/ld.so.conf'` ]; then echo "/lib" >> /etc/ld.so.conf fi if [ ! `grep -l '/usr/lib' '/etc/ld.so.conf'` ]; then echo "/usr/lib" >> /etc/ld.so.conf fi if [ -d "/usr/lib64" ] && [ ! `grep -l '/usr/lib64' '/etc/ld.so.conf'` ]; then echo "/usr/lib64" >> /etc/ld.so.conf fi if [ ! `grep -l '/usr/local/lib' '/etc/ld.so.conf'` ]; then echo "/usr/local/lib" >> /etc/ld.so.conf fi ldconfig cat >>/etc/security/limits.conf<>/etc/sysctl.conf</etc/ld.so.conf.d/mysql.conf</tmp/mysql_sec_script<<EOF use mysql; update user set password=password('$mysqlrootpwd') where user='root'; delete from user where not (user='root') ; delete from user where user='root' and password=''; drop database test; DROP USER ''@'%'; flush privileges; EOF /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script rm -f /tmp/mysql_sec_script /etc/init.d/mysql restart /etc/init.d/mysql stop echo "============================MySQL 5.1.60 install completed=========================" } function InstallMySQL55() { echo "============================Install MySQL 5.5.26==================================" cd $cur_dir rm -f /etc/my.cnf tar zxvf mysql-5.5.28.tar.gz cd mysql-5.5.28/ cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_EMBEDDED_SERVER=1 -DENABLED_LOCAL_INFILE=1 make && make install groupadd mysql useradd -s /sbin/nologin -M -g mysql mysql cp support-files/my-medium.cnf /etc/my.cnf sed '/skip-external-locking/i\datadir = /usr/local/mysql/var' -i /etc/my.cnf if [ $installinnodb = "y" ]; then sed -i 's:#innodb:innodb:g' /etc/my.cnf sed -i 's:/usr/local/mysql/data:/usr/local/mysql/var:g' /etc/my.cnf else sed '/skip-external-locking/i\default-storage-engine=MyISAM\nloose-skip-innodb' -i /etc/my.cnf fi /usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql chown -R mysql /usr/local/mysql/var chgrp -R mysql /usr/local/mysql/. cp support-files/mysql.server /etc/init.d/mysql chmod 755 /etc/init.d/mysql cat >/etc/ld.so.conf.d/mysql.conf</tmp/mysql_sec_script<<EOF use mysql; update user set password=password('$mysqlrootpwd') where user='root'; delete from user where not (user='root') ; delete from user where user='root' and password=''; drop database test; DROP USER ''@'%'; flush privileges; EOF /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script rm -f /tmp/mysql_sec_script /etc/init.d/mysql restart /etc/init.d/mysql stop echo "============================MySQL 5.5.26 install completed=========================" } function InstallPHP52() { echo "============================Install PHP 5.2.17=========================" cd $cur_dir export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader tar zxvf php-5.2.17.tar.gz gzip -cd php-5.2.17-fpm-0.5.14.diff.gz | patch -d php-5.2.17 -p1 cd php-5.2.17/ wget -c http://soft.vpser.net/web/php/bug/php-5.2.17-max-input-vars.patch patch -p1 < php-5.2.17-max-input-vars.patch ./buildconf --force ./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-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-fastcgi --enable-fpm --enable-force-cgi-redirect --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 make ZEND_EXTRA_LIBS='-liconv' make install mkdir -p /usr/local/php/etc cp php.ini-dist /usr/local/php/etc/php.ini cd ../ rm -f /usr/bin/php ln -s /usr/local/php/bin/php /usr/bin/php ln -s /usr/local/php/bin/phpize /usr/bin/phpize ln -s /usr/local/php/sbin/php-fpm /usr/bin/php-fpm 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 = "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/; cgi.fix_pathinfo=0/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_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket/g' /usr/local/php/etc/php.ini 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 cat >>/usr/local/php/etc/php.ini<>/usr/local/php/etc/php.ini</usr/local/php/etc/php-fpm.conf</home/wwwroot/default/phpinfo.php<<eof eof echo "Copy PHP Prober..." cd $cur_dir tar zxvf p.tar.gz cp p.php /home/wwwroot/default/p.php cp conf/index.html /home/wwwroot/default/index.html echo "============================Install PHPMyAdmin=================================" tar zxf phpmyadmin-latest.tar.gz mv phpMyAdmin-3.4.8-all-languages /home/wwwroot/default/phpmyadmin/ cp conf/config.inc.php /home/wwwroot/default/phpmyadmin/config.inc.php sed -i 's/LNMPORG/LNMP.org'$RANDOM'VPSer.net/g' /home/wwwroot/default/phpmyadmin/config.inc.php mkdir /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.nginx cp init.d.nginx /etc/init.d/nginx chmod +x /etc/init.d/nginx chkconfig --level 345 php-fpm on chkconfig --level 345 nginx on chkconfig --level 345 mysql on echo "===========================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 iptables if [ -s /sbin/iptables ]; then /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables-save fi } function CheckInstall() { echo "===================================== Check install ===================================" clear isnginx="" 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." fi if [ -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." fi if [ -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." fi if [ "$isnginx" = "ok" ] && [ "$ismysql" = "ok" ] && [ "$isphp" = "ok" ]; then echo "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 status netstat -ntl else echo "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.log CheckAndDownloadFiles 2>&1 | tee -a /root/lnmp-install.log InstallDependsAndOpt 2>&1 | tee -a /root/lnmp-install.log if [ "$isinstallmysql55" = "n" ]; then InstallMySQL51 2>&1 | tee -a /root/lnmp-install.log else InstallMySQL55 2>&1 | tee -a /root/lnmp-install.log fi if [ "$isinstallphp53" = "n" ]; then InstallPHP52 2>&1 | tee -a /root/lnmp-install.log else InstallPHP53 2>&1 | tee -a /root/lnmp-install.log fi InstallNginx 2>&1 | tee -a /root/lnmp-install.log CreatPHPTools 2>&1 | tee -a /root/lnmp-install.log AddAndStartup 2>&1 | tee -a /root/lnmp-install.log CheckInstall 2>&1 | tee -a /root/lnmp-install.log
CentOS_6.5安装Nginx+PHP+MySQL
原创wx5eba5c8cb0b6f ©著作权
©著作权归作者所有:来自51CTO博客作者wx5eba5c8cb0b6f的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:linux卸载php
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
centos7安装mysql8
centos7安装mysql8全过程
mysql Server MySQL -
CentOS下编译安装Nginx+PHP+MySQL
本文使用软件版本:Nginx: nginx-1.0.5MySQL: mysql-5.0.40PHP : &nbs
php Linux MySQL Nginx CentOS5.5 -
CentOS_6.5安装Redis_3.0.2
在centos6.5下安装和配置Redis3.0.2
安装 配置 centos