设为首页 收藏本站
查看: 1698|回复: 1

CentOS7一键编译安装LNMP环境

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-8-22 08:51:20 | 显示全部楼层 |阅读模式
#!/bin/sh
#!/bin/sh
#author: vim
#qq: 82996821
#OS: Centos7.2
#filename: auto_install_lnmp.sh

#init variable
PHP_VERSION='7.0.20'    #PHP版本号
NGINX_VERSION='1.10.3'    #NGINX版本号

TOOL_DIR=`pwd`
APP_INSTALL_DIR='/usr/local'    #服务安装路径
DATA_DIR='/data'    #数据目录

#source function library
. /etc/init.d/functions


installMySQL(){
    echo "----- install mysql -----"
    cd ${TOOL_DIR}
    [ ! -f mysql57-community-release-el7-8.noarch.rpm  ] && \
    wget https://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
    rpm -ivh mysql57-community-release-el7-8.noarch.rpm
    yum -y install mysql-server
    [ $? -eq 0  ]&&action $"install mysql:" /bin/true||action $"install mysql:" /bin/false

cat > /etc/my.cnf <<EOF
[mysqld]
#开启binlog日志
server-id=1
log-bin=mysql-bin
#设置端口
port=$MYSQL_PORT
#数据文件目录
datadir=$DATA_DIR/mysql
socket=$DATA_DIR/mysql/mysql.sock

symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld.pid

#开启慢查询日志
slow-query-log=On
slow_query_log_file=/var/log/mysql_slow_query.log
long_query_time=2
log_queries_not_using_indexes=ON

#控制error log、genera log,等等记录日志的显示时间参数
log_timestamps=SYSTEM
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sql_mode='NO_ENGINE_SUBSTITUTION'

[client]
socket=$DATA_DIR/mysql/mysql.sock
EOF

    systemctl start mysqld
    [ $? -eq 0  ]&&action $"start mysql:" /bin/true||action $"start mysql:" /bin/false
    systemctl enable mysqld
}

installMakeMySQL(){
    cd ${TOOL_DIR}
    yum -y install gcc-c++ ncurses-devel cmake make perl gcc autoconf automake zlib libxml libgcrypt libtool bison
    useradd -r -s /sbin/nologin mysql
    [ ! -f mysql-boost-5.7.18.tar.gz  ] && \
    wget https://cdn.mysql.com/Downloads/ ... boost-5.7.18.tar.gz
    tar zxf mysql-boost-5.7.18.tar.gz
    cd mysql-5.7.18
    cmake -DCMAKE_INSTALL_PREFIX=${APP_INSTALL_DIR}/mysql-5.17.18 -DMYSQL_DATADIR=${DATA_DIR}/mysql -DMYSQL_UNIX_ADDR=${DATA_DIR}/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=./boost

    make && make install
    [ $? -eq 0  ]&&action $"install make mysql:" /bin/true||action $"install make nginx:" /bin/false

    ln -s ${APP_INSTALL_DIR}/mysql-5.17.18/ /usr/local/mysql

cat > /etc/my.cnf <<EOF
[mysqld]
server-id=1
log-bin=mysql-bin
port=$MYSQL_PORT
datadir=$DATA_DIR/mysql
socket=$DATA_DIR/mysql/mysql.sock

symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

slow-query-log=On
slow_query_log_file=/var/log/mysql_slow_query.log
long_query_time=2
log_queries_not_using_indexes=ON

log_timestamps=SYSTEM
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
sql_mode='NO_ENGINE_SUBSTITUTION'

[client]
socket=$DATA_DIR/mysql/mysql.sock
EOF
    mkdri ${DATA_DIR}/mysql -p
    chown mysql.mysql /data/mysql/
    ${APP_INSTALL_DIR}/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql
    ${APP_INSTALL_DIR}/mysql/support-files/mysql.server start
    [ $? -eq 0  ]&&action $"start mysql:" /bin/true||action $"start mysql:" /bin/false
    echo "${APP_INSTALL_DIR}/mysql/support-files/mysql.server start" >> /etc/rc.local
    systemctl enable mysqld
}

installNginx(){
    echo "----- step : install nginx-----"
    yum -y install pcrepcre-devel openssl openssl-devel zlib zlib-devel
    #create nginx user
    useradd www -s /sbin/nologin -M

    cd ${TOOL_DIR}
    [ ! -f nginx-${NGINX_VERSION}.tar.gz  ] && \
    wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
    tar xf nginx-${NGINX_VERSION}.tar.gz
    cd nginx-${NGINX_VERSION}

    ./configure --user=www --group=www --prefix=${APP_INSTALL_DIR}/nginx-${NGINX_VERSION} --with-http_stub_status_module --with-http_ssl_module
    make && make install
    [ $? -eq 0  ]&&action $"install nginx:" /bin/true||action $"install nginx:" /bin/false
     
    ln -s ${APP_INSTALL_DIR}/nginx-${NGINX_VERSION}/ ${APP_INSTALL_DIR}/nginx


    ${APP_INSTALL_DIR}/nginx/sbin/nginx
    [ $? -eq 0  ]&&action $"start nginx:" /bin/true||action $"start nginx:" /bin/false
    echo "${APP_INSTALL_DIR}/nginx/sbin/nginx"  >> /etc/rc.local
     
}

installPHP(){
    echo "----- step : install php -----"
    yum -y install libxml2-devel libxml2 libxml2-devel curl curl-devel  libjpeg-devel libpng-devel freetype-devel libxslt-devel
    cd ${TOOL_DIR}
    [ ! -f php-${PHP_VERSION}.tar.gz ] && \
    wget http://cn2.php.net/distributions/php-${PHP_VERSION}.tar.gz
    tar xf php-${PHP_VERSION}.tar.gz
    cd php-${PHP_VERSION}
    ./configure  \
    --prefix=${APP_INSTALL_DIR}/php-${PHP_VERSION} \
    --with-config-file-path=${APP_INSTALL_DIR}/php-${PHP_VERSION}/etc \
    --enable-mbstring \
    --enable-sockets \
    --enable-fpm \
    --with-mysqli \
    --enable-mysqlnd \
    --with-pdo-mysql=mysqlnd \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --enable-xml \
    --disable-rpath \
    --enable-inline-optimization \
    --with-curl \
    --enable-mbregex \
    --with-gd \
    --enable-gd-native-ttf \
    --with-openssl \
    --enable-zip \
    --enable-short-tags \
    --enable-static \
    --with-fpm-user=www \
    --with-fpm-group=www

    make && make install
    [ $? -eq 0  ]&&action $"install php:" /bin/true||action $"install php:" /bin/false

    ln -s ${APP_INSTALL_DIR}/php-${PHP_VERSION} ${APP_INSTALL_DIR}/php

    echo "----- step : config php -----"
    cd ${TOOL_DIR}/php-${PHP_VERSION}
    cp php.ini-development ${APP_INSTALL_DIR}/php/etc/php.ini
    cd ${APP_INSTALL_DIR}/php/etc
    cp php-fpm.conf.default php-fpm.conf
    cd ${APP_INSTALL_DIR}/php/etc/php-fpm.d/
    cp www.conf.default www.conf

    #start php-fpm
    ${APP_INSTALL_DIR}/php/sbin/php-fpm -c ${APP_INSTALL_DIR}/php/etc/php.ini
    [ $? -eq 0  ]&&action $"start php:" /bin/true||action $"start php:" /bin/false
    echo "${APP_INSTALL_DIR}/php/sbin/php-fpm -c ${APP_INSTALL_DIR}/php/etc/php.ini"  >> /etc/rc.local
}


initAllEnv(){
    echo "----- step : add env -----"
    echo "export PATH=$PATH:$HOME/bin:${APP_INSTALL_DIR}/php/bin:${APP_INSTALL_DIR}/nginx/sbin/:/usr/local/mysql/bin/" >>/etc/profile
    source /etc/profile
    [ $? -eq 0  ]&&action $"initAllEnv:" /bin/true||action $"initAllEnv:" /bin/false
    echo "PATH: $PATH"
}

    AStr="Yum install MySQL"
    BStr="Make install MySQL"
    CStr="Make Install Nginx"
    DStr="Make install PHP"
    EStr="InitAll Environment"
    FStr="One key auto make install"

     
while true
do   
    echo "###############################################################"
    echo "<========================@system init@========================>"
    echo "A --${AStr}"
    echo "B --${BStr}"
    echo "C --${CStr}"
    echo "D --${DStr}"
    echo "E --${EStr}"
    echo "F --${FStr}"

    echo "------------------------------------------------"
    echo "Note: after 60s will exit"

    read -n1 -t60 -p "Choose one of A-B-C-D-E-:::" option
    option=${option:-0}

    flag0=$(echo $option|egrep "0"|wc -l)
    flag1=$(echo $option|egrep "q|Q"|wc -l)
    flag2=$(echo $option|egrep "[A-Fa-f]"|wc -l)


    if [ $flag0 -eq 1  ]; then
         exit 1
    elif [ $flag1 -eq 1 ]; then
         exit
    elif [ $flag2 -ne 1  ]; then
         echo "Pls input A--->F letter"
    fi

    echo -e "\nyour choose is: $option\n"
    echo "after 5s start install......"
    sleep 5
    case $option in
         A|a)
              installMySQL
         ;;
         B|b)
              installMakeMySQL
         ;;
         C|c)
              installNginx
         ;;
         D|d)
              installPHP
         ;;
         E|e)
              initAllEnv
         ;;
         f|F)
              installMakeMySQL
              installNginx
              configNginx
              installPHP
              initAllEnv
         ;;
         *)
         echo "Please input A-F,thank you!"
         #exit
         ;;
    esac
done



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-403287-1-1.html 上篇帖子: 安装lamp脚本 下篇帖子: 搭建简单的lamp环境网站
累计签到:14 天
连续签到:1 天
发表于 2017-8-22 14:35:41 | 显示全部楼层
这个能来个详细的使用方法么,是直接存脚 本运行么?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表