zoukankan      html  css  js  c++  java
  • Apache源码编译安装脚本

      Apache是开源的的、最流行的Web服务器软件之一,它快速、可靠并且可通过简单的API扩充,将Perl/Python/PHP等解释器编译到服务器中。Apache的模块超多,以及具有运行稳定,强大的rewrite功能、动态处理能力强等优点,在追求稳定的业务环境下被广泛使用。

      以下是Apache2.4版本prefork模式的源码编译脚本:

    #!/bin/bash
    #
    #********************************************************************
    #Author:        Eddie.Peng
    #URL:           https://www.cnblogs.com/eddie1127/
    #Date:          2019-10-18
    #FileName:      httpd_install.sh
    #Description:   The script for install Apache httpd web server
    #********************************************************************
    
    # Set color
    COLORBEG="33[1;31m"
    COLOREND="33[0m"
    
    # Check if user is root
    if [ $(id -u) !=0 ];then
    	echo -e "${COLORBEG} Error! You must be root to run this script,please use root to install. ${COLOREND}"
    	exit 10
    fi
    
    clear
    echo "=========================================================================="
    echo " "
    echo "The script for install Apache httpd web server"
    echo " "
    echo "=========================================================================="
    
    #modify system and kernel args
    ulimit -SHn 65535
    cat >>/etc/security/limits.conf << EOF
    * soft nproc 
    * hard nproc 65535
    * soft nofile 65535
    * hard nofile 65535
    EOF
    
    cat >> /etc/sysctl.conf << EOF
    fs.file-max = 2000000
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_keepalive_time = 600
    net.ipv4.tcp_keepalive_intvl = 15
    net.ipv4.tcp_keepalive_probes = 3
    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_syncookies = 1
    net.core.netdev_max_backlog = 8096
    net.core.somaxconn = 65535
    net.ipv4.icmp_echo_ignore_broadcasts = 1
    net.ipv4.icmp_ignore_bogus_error_responses = 1
    EOF
    sysctl -p
    
    
    # Install dependent software packge
    yum -y install wget gcc apr-devel apr-util-devel pcre-devel openssl-devel libnghttp2-devel expat-devel
    
    #Check files if exits
    echo "=============================== Check files ========================================="
    CUR_DIR=$(pwd)
    VER=httpd-2.4.41.tar.gz
    DIR=${VER%.tar*}
    INSTALL_DIR=/usr/local/httpd24
    
    cd $CUR_DIR
    if [ -s $VER ];then
    	echo "$VER [found]"
    else
    	echo -e "${COLORBEG} $VER not found!!! download now... ${COLOREND}"
    	wget -c http://mirrors.tuna.tsinghua.edu.cn/apache/httpd/$FILE
    fi
    
    #Create run user for httpd server
    id -u apache
    if [ $? -eq 0 ];then
    	echo -e "${COLORBEG} user apache already exist,skip... ${COLOREND}"
    else
    	groupadd -g 48 apache
    	useradd -u 48 -r -s /sbin/nologin -g apache apache
    	echo -e "33[1;32m user apache has been created. 33[0m"
    fi
    
    #Install httpd web server
    cd $CUR_DIR
    tar -xvf $VER -C /usr/local/src
    cd /usr/local/src/$DIR
    ./configure --prefix=$INSTALL_DIR 
    --enable-so 
    --enable-ssl 
    --enable-cgi 
    --enable-http 
    --enable-http2 
    --enable-proxy 
    --enable-proxy-fcgi 
    --enable-rewrite 
    --with-zlib 
    --with-pcre 
    --with-mpm=prefork 
    --enable-modules=most 
    --enable-mpms-shared=all 
    --disable-version
    
    make -j $(nproc) && make install
    
    echo "===================================== Check install ================================================="
    clear
    INSTALL=""
    
    echo "Checking..."
    if [ -s $INSTALL_DIR/bin/httpd ] && [ -s $INSTALL_DIR/conf/httpd.conf ];then
    	echo -e "33[1;32m httpd install OK! 33[0m"
    	INSTALL="OK"
    else
    	echo -e "${COLORBEG} Error,$INSTALL_DIR/bin/httpd not found! httpd install failed,please check ${COLOREND}"
    fi
    
    if [ "$INSTALL" = "OK" ];then
    	echo -e "33[1;32m Congratulation! httpd install completed! enjoy it. 33[0m"
    	echo "================================================================================"
    	echo "The path of some dirs:"
    	echo "httpd_exec_dir: $INSTALL_DIR/bin"
    	echo "httpd config : $INSTALL_DIR/conf"
    	echo "================================================================================="
    else
    	echo -e "${COLORBEG} Sorry,httpd install Failed! Please check and reinstall. ${COLOREND}"
    	exit 20
    fi
    
    #Add httpd service on start up
    cat > /usr/lib/systemd/system/httpd.service << EOF
    [Unit]
    Description=The Apache HTTP Server
    After=network.target remote-fs.target nss-lookup.target
    Documentation=man:httpd(8)
    Documentation=man:apachectl(8)
    
    [Service]
    Type=forking
    #EnvironmentFile=/etc/sysconfig/httpd
    ExecStart=$INSTALL_DIR/bin/httpd $OPTIONS -k start
    ExecReload=$INSTALL_DIR/bin/httpd $OPTIONS -k graceful
    ExecStop=/bin/kill -WINCH ${MAINPID}
    KillSignal=SIGCONT
    PrivateTmp=true
    [Install]
    WantedBy=multi-user.target
    EOF
    
    systemctl daemon-reload
    systemctl enable --now httpd.service
    
    #Check start up
    if [ $? -eq 0 ];then 
    	echo -e "33[1;32m httpd service start success! 33[0m"
    else
    	echo -e "${COLORBEG} httpd service start failed,please check. ${COLOREND}"
    fi
    
    
  • 相关阅读:
    Lumen源码分析之 一步一步带你实现Lumen容器(一)
    php 注册器模式 工厂模式
    理解 PHP 依赖注入 和 控制反转
    composer使用git作为仓储
    monolog记录日志
    Jupyter Notebook快捷键
    图像灰度化
    一道算法题:拼数字
    [转]Vue生态系统中的库
    window.postMessage实现网页间通信
  • 原文地址:https://www.cnblogs.com/eddie1127/p/11830119.html
Copyright © 2011-2022 走看看