LAMP环境是linux下web的常用组合,为了节省时间,不用每次都手动编译安装,一种方法是将安装好的包制作为RPM或则DEB包,另外一种方式就是采用脚本的形式自动编译安装。

脚本目录结构:

脚本分为LAMP的安装脚本,配置文件,全局变量,源码包

脚本功能演示:

安装httpd

安装mysql

安装php

安装memcached

脚本代码:

全局变量global_variables.sh

  1. #! /bin/bash 
  2.  
  3. #### global directory variables######### 
  4. SOURCE_DIR="./sources" 
  5. UNPACK_DIR="./unpack_sources" 
  6. INSTALL_ROOT="/opt" 
  7. CONF_SAMPLE="./conf_samples" 

安装httpd脚本

  1. #! /bin/bash 
  2.  
  3.  
  4.  
  5. ###### variables ################### 
  6. GLOABLE_VARIABLE_FILE="./global_variables.sh" 
  7. HTTPD_SOURCE_FILENAME="httpd-2.2.19.tar.gz" 
  8. UNPACK_DIR_NAME="httpd-2.2.19" 
  9.  
  10.  
  11.  
  12.  
  13.  
  14. #### source the global variable ##### 
  15. source ${GLOABLE_VARIABLE_FILE} 
  16.   
  17.  
  18. #########OK and failed ######## 
  19. GREEN_OK="\e[0;32m\033[1mOK\e[m"  
  20. RED_FAILED="\e[0;31m\033[1mFAILED\e[m" 
  21.  
  22.  
  23.  
  24. #######lots of  functions ########## 
  25.  
  26.  
  27. error() 
  28.     local FORMAT="$1" 
  29.     shift 
  30.     printf "${RED_FAILED} - ${FORMAT}" "$@" >&1 
  31.  
  32. info() 
  33.     local FORMAT="$1" 
  34.     shift 
  35.     printf "INFO - ${FORMAT}" "$@" >&1 
  36.  
  37. warning() 
  38.     local FORMAT="$1" 
  39.     shift 
  40.     print "WARNING - ${FORMAT}" "$@" >&1 
  41.  
  42.  
  43. check_source() 
  44.     info "Checking source file %s.\n" "${HTTPD_SOURCE_FILENAME}" 
  45.     if [ -f ${SOURCE_DIR}/${HTTPD_SOURCE_FILENAME} ] 
  46.     then 
  47.         info "Httpd file %s is ${GREEN_OK}.\n" "${HTTPD_SOURCE_FILENAME}" 
  48.     else 
  49.         error "%s file not found.\n" "${HTTPD_SOURCE_FILENAME}" 
  50.         exit $? 
  51.     fi 
  52.  
  53. unpack_file() 
  54.     info "Unpack the source file %s .\n" "${HTTPD_SOURCE_FILENAME}" 
  55.     tar -zxf ${SOURCE_DIR}/${HTTPD_SOURCE_FILENAME}  -C  ${UNPACK_DIR} 
  56.     if [[ $? != 0 ]] 
  57.     then 
  58.         error "Can not unpack file %s.\n"  "${HTTPD_SOURCE_FILENAME}" 
  59.         exit $? 
  60.     else  
  61.         info "Unpack %s done.${GREEN_OK}\n" "${HTTPD_SOURCE_FILENAME}" 
  62.     fi 
  63.  
  64. install_file() 
  65.     cd ${UNPACK_DIR}/${UNPACK_DIR_NAME} 
  66.     local CONFIG_VARIABLE="--prefix=${INSTALL_ROOT}/httpd --enable-so --enable-cgi --enable-proxy --enable-vhost-alias --enable-cache --enable-disk-cache --enable-mem-cache --enable-rewrite --enable-mods-shared=all --enable-usertrack --enable-ssl" 
  67.     local USER="www" 
  68.     info "Add the www user ...\n" 
  69.     groupadd -g 501 ${USER} 
  70.     useradd -g ${USER} -u 501 -s /sbin/nologin ${USER} 
  71.     info "Add user www done.\n" 
  72.     info "Now configure the httpd,this will take serveral minutes...\n" 
  73.     ./configure ${CONFIG_VARIABLE}  1>/dev/null 
  74.     if [[ $? == 0 ]] 
  75.     then 
  76.         info "Httpd configure ${GREEN_OK}. Now  make and make install.this will take serveral minutes... \n" 
  77.         make  1>/dev/null && make install  1>/dev/null 
  78.         if [[  $? == 0 ]] 
  79.         then 
  80.             info "HTTPD installed ${GREEN_OK}.\n" 
  81.         else 
  82.             error "Httpd not installed.\n " 
  83.             exit $? 
  84.         fi 
  85.     else 
  86.         error "Configure is not complete.\n"   
  87.         exit $? 
  88.     fi 
  89.     cd - 
  90.  
  91.  
  92. ################## main ########################## 
  93.  
  94. #Check the httpd file 
  95. info "Check the httpd file.\n" 
  96. check_source 
  97.  
  98. #Unpack the httpd file 
  99. unpack_file 
  100.  
  101.  
  102. #install the file 
  103. info "Begin to install the httpd service.\n" 
  104. install_file 
  105.  
  106.  
  107. mkdir -p /opt/www/html