lnmp是当今博客和企业生产环境中的流行架构,这是我整理的安装脚本,配置文件的参数和优化不在其中,我会整理好,然后使用ansible推到每台服务器上 ```bash #!/bin/env bash #================================================================ # # # #this is lnmp(lemp) script n=tengine # Author:xw thank you!!! # Date:2018.4.10 # Description:install tengine,mysql,php # wang.cong@aliyun.com #================================================================ dir=/data nginx_download_path="http://tengine.taobao.org/download/tengine-2.1.2.tar.gz" nginx_install_dir="/usr/local/nginx" mysql_download_path="http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz" mysql_install_dir="/usr/local/mysql" php_download_path="http://cn2.php.net/distributions/php-5.6.30.tar.gz" php_install_path="/usr/local/php" nginx_name="tengine-2.1.2.tar.gz" mysql_name="mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz" php_name="php-5.6.30.tar.gz" libiconv_name="libiconv-1.14.tar.gz" libiconv_install_path="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz" #Initialization system install_Initialization(){ mkdir -p /data /usr/local/nginx /usr/local/php /usr/local/mysql [ -e $dir ] && cd $dir if [ ! -f $libiconv_name ];then wget -c $libiconv_install_path fi tar zxvf $libiconv_name cd $dir/libiconv-1.14 ./configure --prefix=/usr/local/libiconv make && make install /etc/init.d/iptables stop && chkconfig iptables off setenforce 0 && sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config yum install -y epel-release yum install -y libmcrypt-devel . /etc/init.d/functions } # install tengine-2.1.2.tar.gz install_nginx(){ # yum install something wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install -y pcre pcre-devel openssl openssl-devel gcc make gcc-c++ # download nginx [ -e $dir ] && cd $dir wget $nginx_download_path if [ -f $nginx_name ] then echo 'nginx download success' # tar tengine-2.1.2.tar.gz tar zxf $nginx_name && cd tengine-2.1.2 # add user nginx useradd nginx -s /sbin/nologin -M # install nginx ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_gzip_static_module --with-pcre --with-http_flv_module --with-http_mp4_module --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_realip_module [ $(echo $?) -eq 0 ] && make && make install [ $(echo $?) -eq 0 ] && echo "nginx install success" fi } # start nginx start_nginx(){ # check syntax /usr/local/nginx/sbin/nginx -t # start if [ $(echo $?) -eq 0 ] then /usr/local/nginx/sbin/nginx if [ $(netstat -lutnp|grep 80|wc -l) -eq 1 ] then action "nginx starting success..." /bin/true else echo "nginx starting fail,plaese check the service!" fi fi } # install mysql-5.6.35 install_mysql(){ # yum install something yum install -y ncurses-devel automake autoconf bison libtool-ltdl-devel # download mysql [ -e $dir ] && cd $dir wget $mysql_download_path if [ -f $mysql_name ] then echo 'mysql download success' # tar mysql echo "just wait a moment,mysql is Extracting..." tar zxf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz # rename mv mysql-5.6.35-linux-glibc2.5-x86_64 mysql-5.6.35 # mkdir dir mysql if [ ! -d $mysql_install_dir ] then mkdir -p $mysql_install_dir fi # move file to mysql_install_dir mv mysql-5.6.35/* /usr/local/mysql/ # add user mysql useradd mysql -s /sbin/nologin -M # chown chown -R mysql.mysql /usr/local/mysql # change dir cd $mysql_install_dir # install mysql ./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data # mv my.cnf [ $(echo $?) -eq 0 ] && \cp support-files/my-default.cnf /etc/my.cnf # mv mysql.server cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld # chmod +x chmod +x /etc/init.d/mysqld # add to boot auto launch chkconfig --add mysqld chkconfig mysqld on # add to PATH PATH=$PATH:/usr/local/mysql/bin/ echo "export PATH=$PATH:/usr/local/mysql/bin/" >>/etc/profile source /etc/profile fi } # start mysql_server start_mysql(){ # start /etc/init.d/mysqld start if [ $(netstat -lutnp|grep 3306|wc -l) -eq 1 ] then action "mysql starting success..." /bin/true else echo "mysql starting fail,plaese check the service!" fi } # install php-5.6.30.tar.gz install_php(){ # yum install something useradd www -M -s /sbin/nologin yum install zlib-devel openssl-devel openssl libxml2-devel libjpeg-devel libjpeg-turbo-devel freetype-devel libpng-devel gd-devel libcurl-devel libxslt-devel libxslt-devel libmcrypt-devel mcrypt mhash -y # download php [ -e $dir ] && cd $dir wget $php_download_path if [ -f $php_name ] then echo 'php download success' # tar file tar zxf $php_name && cd php-5.6.30 # install php echo "Please hold on!The configure output message is so large so that I hide the output message!..." ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --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 --disable-fileinfo --enable-maintainer-zts [ $(echo $?) -eq 0 ] && ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/ && touch ext/phar/phar.phar make && make install # copy php.ini cp php.ini-development /etc/php.ini # copy php-fpm cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm # chmod +x chmod +x /etc/init.d/php-fpm # add to PATH PATH=$PATH:/usr/local/php/bin/ echo "export PATH=$PATH:/usr/local/php/bin/" >>/etc/profile source /etc/profile # add to boot auto launch chkconfig --add php-fpm chkconfig php-fpm on fi } # start php-fpm start_phpfpm(){ # start /etc/init.d/php-fpm start if [ $(netstat -lutnp|grep 9000|wc -l) -eq 1 ] then action "php-fpm starting success... "/bin/true else echo "php-fpm starting fail,plaese check the service!" fi } # main function main(){ # install install_Initialization sleep 3 # install install_nginx sleep 3 install_mysql sleep 3 install_php # start start_nginx sleep 2 start_mysql sleep 2 start_phpfpm } main ```