#!/bin/bash read -p 'The installation process takes about 5 to 10 minutes, depending on the performance of your server. To confirm the installation of the lnmp environment, press the Enter key.' function red(){ echo -e "\t\033[31m$1\033[0m" } function green(){ echo -e "\t\033[32m$1\033[0m" } yum clean all &> /dev/null yum -y install epel-release &> /dev/null while : do cat /etc/ld.so.conf | grep lib64 &> /dev/null if [ $? -ne 0 ];then echo '''/usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64''' >> /etc/ld.so.conf ldconfig -v &> /dev/null fi libzip_stat=`rpm -qa |grep libzip &> /dev/null && echo 'yes' || echo 'no'` mariadb_stat=`rpm -qa |grep mariadb &> /dev/null && echo 'yes' || echo 'no'` yum_stat=`yum repolist |tail -1 |awk '{print $2}'` if [ $libzip_stat = yes ];then rpm -e --nodeps `rpm -qa | grep libzip` continue elif [ $mariadb_stat = yes ];then rpm -e --nodeps `rpm -qa | grep mariadb` continue elif [ $yum_stat = 0 ];then red 'Yum error,Check your yum source!!!(maybe network,yum configure...)' exit else echo -e "\033[05m\033[35mStart testing the environment...\033[0m" echo -e "\t\033[32mStart testing the environment... [ OK ]\033[0m" break fi done function need_rpm() { yum -y install make yum -y install gmake yum -y install gcc yum -y install gcc-c++ yum -y install wget yum -y install openssl yum -y install openssl-devel yum -y install curl yum -y install curl-devel yum -y install libjpeg yum -y install libjpeg-devel yum -y install libpng yum -y install libpng-devel yum -y install freetype yum -y install freetype-devel yum -y install pcre yum -y install pcre-devel yum -y install libxslt yum -y install libxslt-devel yum -y install bzip2 yum -y install bzip2-devel yum -y install libxml2 yum -y install libxml2-devel } function down_app() { wget -P /lnmp/ https://nginx.org/download/nginx-1.14.2.tar.gz &> /dev/null && echo -e "\t\033[32mNginx Download completed!\033[0m" || echo -e "\t\033[31mNginx Download Faild!\033[0m" wget -P /lnmp/ http://cn2.php.net/get/php-7.3.0.tar.gz/from/this/mirror &> /dev/null && echo -e "\t\033[32mPHP Download completed!\033[0m" || echo -e "\t\033[31mPHP Download Faild!\033[0m" wget -P /lnmp/ https://nih.at/libzip/libzip-1.2.0.tar.gz &> /dev/null && echo -e "\t\033[32mLibzip Download completed!\033[0m" || echo -e "\t\033[31mLibzip Download Faild!\033[0m" wget -P /lnmp/ https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz &> /dev/null && green 'Mysql Download completed!' || red 'Mysql Download Faild!' } function nginx_install_configure() { id nginx &> /dev/null && userdel nginx useradd -M -s /sbin/nologin nginx &>/dev/null cd /lnmp / && tar -xf nginx-1.14.2.tar.gz && cd nginx-1.14.2/ ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-stream &>> /tmp/.nginx.configure.log if [ $? -ne 0 ];then red 'Nginx configure error!!! See /tmp/.nginx.configure.log' exit else echo ''' Configuration summary: nginx path prefix: "/usr/local/nginx" nginx binary file: "/usr/local/nginx/sbin/nginx" nginx modules path: "/usr/local/nginx/modules" nginx configuration prefix: "/usr/local/nginx/conf" nginx configuration file: "/usr/local/nginx/conf/nginx.conf" nginx pid file: "/usr/local/nginx/logs/nginx.pid" nginx error log file: "/usr/local/nginx/logs/error.log" nginx http access log file: "/usr/local/nginx/logs/access.log" nginx http client request body temporary files: "client_body_temp" nginx http proxy temporary files: "proxy_temp" nginx http fastcgi temporary files: "fastcgi_temp" nginx http uwsgi temporary files: "uwsgi_temp" nginx http scgi temporary files: "scgi_temp" ''' fi make &>> /tmp/.nginx.make.log if [ $? -ne 0 ];then red 'Nginx make error!!! See /tmp/.nginx.make.log' fi make install &>> /tmp/.nginx.makeinstall.log if [ $? -ne 0 ];then red 'Nginx make install error!!! See /tmp/.nginx.makeinstall.log' fi cd /usr/local/nginx/ cp -p conf/nginx.conf conf/nginx.conf.bak sed -i '65,68s/#//g' conf/nginx.conf sed -i '70,71s/#//g' conf/nginx.conf sed -i 's/fastcgi_params/fastcgi.conf/g' conf/nginx.conf green 'Nginx installed and configure successful.' /usr/local/nginx/sbin/nginx -t &> /dev/null && /usr/local/nginx/sbin/nginx netstat -nutlp |grep 80 &> /dev/null if [ $? -ne 0 ];then red 'Nginx start error!!!' else green 'Nginx started.' fi } function mysql_install_configure() { id mysql &> /dev/null && userdel mysql useradd -M -s /sbin/nologin mysql &> /dev/null cd /lnmp/ tar -xf mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.24-linux-glibc2.12-x86_64 /usr/local/mysql cd /usr/local/mysql/ mkdir data && chown -R mysql:mysql /usr/local/mysql/ ./bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize &>> /tmp/.mysql.initialize.log if [ $? -ne 0 ];then red 'Mysql initialize error!!! See /tmp/.mysql.initialize.log' else pass=`tail -1 /tmp/.mysql.initialize.log | awk '{print $NF}'` green 'Mysql initialize successful.)' green "Initial password: $pass" echo ''' Configuration summary: Mysql path prefix: "/usr/local/mysql" Mysql data path: "/usr/local/mysql/data" ''' fi ./support-files/mysql.server start &>> /tmp/.mysql.start.log netstat -nutlp | grep mysql &> /dev/null if [ $? -ne 0 ];then red 'Mysql start error!!! See /tmp/.mysql.start.log' else green 'Mysql started.' fi } function libzip_install_configure() { cd /lnmp/ tar -xf libzip-1.2.0.tar.gz cd libzip-1.2.0 ./configure &> /dev/null make &> /dev/null make install &> /dev/null cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h green 'Libzip installed.' } function php_install_configure() { cd /lnmp/ tar -xf mirror cd php-7.3.0/ while : do ./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip &>> /tmp/.php.configure.log if [ $? -ne 0 ];then red 'PHP configure error!!! See /tmp/.php.configure.log' exit else green 'PHP configure is ok' while : do make &>> /tmp/.php.make.log if [ $? -ne 0 ];then red 'PHP make error!!! See /tmp/.php.make.log' exit else green 'PHP make is ok' while : do cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h make install &>> /tmp/.php.makeinstall.log if [ $? -ne 0 ];then red 'PHP makeinstall error!!! See /tmp/.php.makeinstall.log' exit else green 'PHP Installed.' break fi done break fi done break fi done cp php.ini-development /usr/local/php/lib/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/php-fpm /usr/local/bin sed -i 's/; cgi.fix_pathinfo=1/ cgi.fix_pathinfo=0/g' /usr/local/php/lib/php.ini groupadd www-data &> /dev/null useradd -g www-data www-data &> /dev/null cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf sed -i 's/user = nobody/user = www-data/g' /usr/local/php/etc/php-fpm.d/www.conf sed -i 's/group = nobody/group = www-data/g' /usr/local/php/etc/php-fpm.d/www.conf /usr/local/bin/php-fpm netstat -nutlp |grep 9000 if [ $? -ne 0 ];then red 'PHP-FPM start error!!!' else green 'PHP-FPM started' fi } #start execute echo -e "\033[05m\033[35mInstall dependent software...\033[0m" need_rpm &> /dev/null green "Install dependent software...\t\t[ OK ]" echo -e "\033[05m\033[35mStart download apps...\033[0m" down_app echo -e "\033[05m\033[35mStart install nginx and configure it...\033[0m" nginx_install_configure echo -e "\033[05m\033[35mStart install mysql and configure it...\033[0m" mysql_install_configure echo -e "\033[05m\033[35mStart install Libzip and configure it...\033[0m" libzip_install_configure echo -e "\033[05m\033[35mStart install php and configure it...\033[0m" php_install_configure /usr/local/nginx/sbin/nignx -s stop &> /dev/null && /usr/local/nginx/sbin/nginx echo ''' <?php phpinfo(); ?>''' >> /usr/local/nginx/html/test.php curl http://127.0.0.1/test.php if [ $? -eq '0'];then green 'LNMP is ok !!!' else red 'Access PHP Faild!!!' fi