美文网首页
Linux lamp 自动脚本

Linux lamp 自动脚本

作者: Zzzz_e02b | 来源:发表于2019-11-13 16:45 被阅读0次
#!bin/bash
# 一键安装lnmp环境脚本

# 设置path
dir=/usr/local/src
# nginx
nginx_download_path="https://nginx.org/download/nginx-1.14.0.tar.gz"
nginx_name="nginx-1.14.0.tar.gz"
nginx_version_name="nginx-1.14.0"
# mysql
mysql_download_path="https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.43.tar.gz"
mysql_name="mysql-5.6.43.tar.gz"
mysql_version_name="mysql-5.6.43"
# apache
apache_download_path="https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.39.tar.gz"
apache_download_name="httpd-2.4.39.tar.gz"
apache_version_name="httpd-2.4.39"
# apr
apr_download_path="http://mirrors.hust.edu.cn/apache/apr/apr-1.6.5.tar.gz"
apr_download_name="apr-1.6.5.tar.gz"
apr_version_name="apr-1.6.5"
# apr-util
apr_util_download_path="http://mirrors.hust.edu.cn/apache/apr/apr-util-1.6.1.tar.gz"
apr_util_download_name="apr-util-1.6.1.tar.gz"
apr_util_version_name="apr-util-1.6.1"
# php
php_download_path="http://cn2.php.net/distributions/php-7.2.8.tar.gz"
php_name="php-7.2.8.tar.gz"
php_version_name="php-7.2.8"

# 安装前准备
initInstall() {
    # 删除旧配置
    rpm -qa |  grep http || echo " no httpd " && yum -y remove http* >/dev/null && echo "http ok"
    rpm -qa |  grep nginx || echo " no nginx " && yum -y remove nginx* >/dev/null && echo "nginx ok"
    rpm -qa |  grep php || echo " no php " && yum -y remove php* >/dev/null && echo "php ok"
    rpm -qa |  grep mysql || echo " no mysql " && yum -y remove mysql* >/dev/null && echo "mysql ok"

    # 关闭selinux
    if [ -s /etc/selinux/config ]; then
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    fi

    yum -y install vim net-tools lsof httpd-devel epel-release aria2 wget expat-devel gcc pcre pcre-devel gcc-c++ autoconf libxml2 libxml2-devel zlib zlib-devel glibc libjpeg libjpeg-devel libpng libpng-devel glibc-devel glib2 glib2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel openssl openssl-devel openldap openldap-devel  openldap-clients openldap-servers make cmake freetype-devel libmcrypt libmcrypt-devel libxslt-devel
}

# 下载需要的软件
# 注意aria2因为网络原因可能会安装失败,导致下列安装包没有下载
#
downLoad() {
    cd $dir
    #aria2c -s 10 -x 10 $php_download_path
    #aria2c -s 10 -x 10 $nginx_download_path
    #aria2c -s 10 -x 10 $mysql_download_path
    aria2c -s 10 -x 10 $apr_download_path
    aria2c -s 10 -x 10 $apr_util_download_path
    aria2c -s 10 -x 10 $apache_download_path
    aria2c -s 10 -x 10 https://ftp.pcre.org/pub/pcre/pcre-8.42.tar.gz
}

# 安装nginx
installNginx() {
    cd $dir
    tar zxvf $nginx_name
    cd $nginx_version_name
    useradd nginx -s /sbin/nologin -M
    ./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --with-pcre --with-cc-opt="-Wno-deprecated-declarations"
    [ $(echo $?) -eq 0 ] && make && make install
    echo 'export PATH=$PATH:/usr/local/nginx/nginx' > /etc/profile.d/nginx.sh
    cp /usr/local/nginx/nginx /usr/bin
    [ $(echo $?) -eq 0 ] && echo "nginx install success"
}

startNginx() {
    nginx -t
}

# 安装mysql
installMysql() {
    cd $dir
    tar zxvf $mysql_name
    mv $mysql_version_name /usr/local/mysql
    useradd mysql -s /sbin/nologin -M
    chown -R mysql.mysql /usr/local/mysql
    cd /usr/local/mysql
    mkdir data && mkdir log
    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile
    groupadd mysql && useradd -r -g mysql -s /bin/false mysql
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DCOMPILATION_COMMENT='JSS for mysqltest' \
-DWITH_READLINE=ON \
-DSYSCONFDIR=/data/mysqldata/3306 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
    make && make install
    chown -R mysql:mysql .
    chown -R mysql:mysql data
    chmod +x -R /usr/local/mysql

    cat << EOF > /etc/my.cnf
[client]      
socket=/usr/local/mysql/mysql.sock      
[mysqld]      
basedir=/usr/local/mysql      
datadir=/usr/local/mysql/data      
pid-file=/usr/local/mysql/data/mysqld.pid      
socket=/usr/local/mysql/mysql.sock      
log_error=/usr/local/mysql/log/mysqld.log
EOF
    if [ -f /etc/my.cnf ];
       then
        ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data --socket=/usr/local/mysql/mysql.sock --pid-file=/usr/local/mysql/data/mysqld.pid --log-error=/usr/local/mysql/log/mysqld.log --basedir=/usr/local/mysql
       else
           echo "MySQL安装失败!!!!"
           exit 1
    fi
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
}

startMysql() {
    /etc/init.d/mysqld start
    if [ $(netstat -lutnp|grep 3306|wc -l) -eq 1 ]     
        then       
            echo "mysql starting success..."  /bin/true   
        else       
            echo "mysql starting fail,plaese check the service!"   
    fi
}

installAprUtil() {
    cd $dir
    tar -xzf $apr_download_name
    cd $apr_version_name
    sed -i 's/$RM "$cfgfile"/# $RM "$cfgfile"/g' configure
    ./configure --prefix=/usr/local/apr
    make && make install        

    cd $dir
    tar -xzf $apr_util_download_name
    cd $apr_util_version_name
    ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/
    make && make install

    cd $dir
    tar -zxvf pcre-8.42.tar.gz
    cd pcre-8.42
    ./configure --prefix=/usr/local/pcre/
    make && make install
}

# 安装apache
installApache() {
    echo "run"
    cd $dir
    tar -zxvf $apache_download_name
    cd $apache_version_name
     ./configure --prefix=/usr/local/apache2.4.25 \
    --sysconfdir=/usr/local/apache2.4.25 \
    --with-pcre=/usr/local/pcre \
    --with-apr-util=/usr/local/apr-util \
    --with-apr=/usr/local/apr \
    --enable-so \
    --enable-deflate \
    --enable-expires \
    --enable-headers \
    --enable-ssl \
    --enable-cgi \
    --enable-proxy \
    --enable-proxy-fcgi \
    --enable-rewrite \
    --enable-mpms-shared=all \
    --with-mpm=prefork \
    --enable-mods-shared=most \
    --enable-dav \
    --enable-dav-fs \
    --enable-dav-lock    
    make && make install
    cd /usr/local
    ln -s apache2.4.25 apache
    /usr/local/apache/bin/apachectl -l
    /usr/local/apache/bin/apachectl -M
}


startApache() {
    sed -i 's/#ServerName/ServerName/g' /usr/local/apache2.4.25/conf/httpd.conf
    /usr/local/apache/bin/apachectl start
    cp /usr/local/apache2.4.25/bin/apachectl /etc/rc.d/init.d/httpd
    sed -i '2i\#chkconfig: 345 70 70' /etc/rc.d/init.d/httpd
    sed -i '3i\#description: apache' /etc/rc.d/init.d/httpd
    chmod +x /etc/init.d/httpd
    chkconfig --add httpd 
    chkconfig httpd on
    systemctl start httpd
    if [ $(netstat -lutnp|grep 80|wc -l) -eq 1 ]
        then
            echo "apache starting success..." /bin/true
        else
            echo "apache starting fail,plaese check the service!"
    fi
}

installPhp() {
    cd $dir
    tar -xzf $php_name
    cd $php_version_name
    echo $(pwd)
    ./configure --prefix=/usr/local/php \
    --with-config-file-path=/usr/local/php/etc \
    --with-config-file-scan-dir=/usr/local/php/etc/php.d \
    --enable-mysqlnd \
    --with-mysqli \
    --with-pdo-mysql \
    --enable-fpm \
    --with-libdir=lib64 \
    --with-libxml-dir \
    --with-fpm-user=nginx \
    --with-fpm-group=nginx \
    --with-gd \
    --with-iconv \
    --with-zlib \
    --enable-xml \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --enable-mbregex \
    --enable-mbstring \
    --enable-ftp \
    --with-openssl \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --without-pear \
    --with-gettext \
    --enable-session \
    --with-curl \
    --with-jpeg-dir \
    --with-freetype-dir \
    --enable-opcache \
        --with-apxs2=/usr/local/apache2.4.25/bin/apxs
    make && make install
    
    cp php.ini-development /etc/php.ini
    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
    cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf

    chmod +x /etc/init.d/php-fpm
    PATH=$PATH:/usr/local/php/bin/
    echo "export PATH=$PATH:/usr/local/php/bin/" >>/etc/profile
    source /etc/profile
    chkconfig --add php-fpm
    chkconfig php-fpm  on
}

startPhpFpm() {
    /etc/init.d/php-fpm start
    if [ $(netstat -lutnp|grep 9000|wc -l) -eq 1 ]
        then
            echo "php-fpm starting success..." /bin/true
        else
            echo "php-fpm starting fail,plaese check the service!"
    fi
}

main() {
    initInstall
    downLoad
    #installNginx
    #installMysql
    installAprUtil
    installApache
    installPhp
    startApache 
    #startMysql
    #startNginx
    startPhpFpm    
    source /etc/profile
}

main

git:https://github.com/zhaofenghao/linux/edit/master/start.sh

相关文章

网友评论

      本文标题:Linux lamp 自动脚本

      本文链接:https://www.haomeiwen.com/subject/prckictx.html