2019년 7월 17일 수요일

apache httpd 서버 설치 스크립트

오픈소스 중 가장 많이 쓰는 웹서버 apache httpd server 를 설치 스크립트로 작성해 보았다.
httpd 설치는 두가지 방법이 있다. 패키지 설치, 소스컴파일!!
소스컴파일에 대한 스크립트이다. (패키지 설치는 너무 쉬움 yum install httpd -y) 

httpd 설치는 compile 제외하곤 그리 어렵지 않다.(사실 컴파일도 그렇게 어렵지 않다) 그래도 매번 반복되는 작업을 하지 않기 위해 스크립트를 만들어보았고, 만들면서.. 과연 이게 필요할까도 생각 했지만...끝은 내고 싶었기에 완성 하였다

최초 설치에 앞서 root 또는 sudo 권한이 있는 계정으로 필수 패키지를 설치 해야한다.
centos 기반으로 만들었고 최초 vm 생성한 후 컴파일 해가며 필요한 패키지를 찾았다.

#!/bin/bash

# root or sudo permission
# Required package
array=(apr-devel apr-util-devel openssl-devel pcre-devel)



# 반복문을 통해서 패키지를 하나씩 설치 한다.
for pkg in "${array[@]}"
do
  yum list $pkg > /dev/null
  if [ $? -eq 0 ];  then
    sudo yum install $pkg -y
  else
    echo "# [ERROR] $pkg not found or unknown name "
  fi
done



DIR=$(pwd)
# 설치 할 configure 파일 찾음
CONFIG=`find $DIR -type f -name "configure"`
# configure 파일경로 찾음
CONFIG_DIR=$(dirname $CONFIG)

# httpd server 를 설치할 디렉토리(prefix라함), 이미 환경변수(PREFIX)에 경로를 설정했으면 yes or no 물어본 후 설치가 진행됨
PREFIX=
echo "# PREFIX=$PREFIX"
# 환경변수(PREFIX)가 설정되지 않았음 프롬프트에서 받아서 처리
if [ -z $PREFIX ]; then
  echo -n "# Input PREFIX (install directory): ";
  read prefix;
# 입력이 없으면 에러 발생
  if [ -z $prefix ]; then
    echo ""
    echo "# [ERROR] Please input(prefix) it correctly!!! "
    echo ""
    exit ;
  fi
  PREFIX=$prefix
else
# 당연히 PREFIX 디렉토리는 없을 거고 웹서버가 설치 되면서 경로를 만들 것임, 하지만 이구분은 PREFIX 를 제대로 입력하였는지 확인 하는 용도
  if [ ! -d $PREFIX ]; then
    echo "# [INFO] PREFIX($PREFIX) will be created directory! automatically "
    echo ""
# 설치 진행 할 경우 yes, y 를 입력! 설치를 원치 않으면 no, n를 입력하는데 잘못 입력할 것을 대비해서 while 과 case를 써서 정확한 입력을 받음

    while true; do
      read -p  "# Do you want to install httpd server continue? (yes or no) " yn
      case $yn in
        [Yy]* ) echo "# [INFO] You entered YES"; echo "";
# 일반적으로 설치 할경우 설치파일 경로로 가서 configure, options로 설치한다. options은 크게 중요하지 않음
        cd $CONFIG_DIR;
        ./configure --prefix=$PREFIX --with-mpm=worker --enable-modules=most \
                    --enable-mods-shared=most --enable-cache --enable-file-cache \
                    --enable-so --enable-mime-magic --enable-expires --enable-header \
                    --enable-proxy --enable-ssl --enable-https --enable-mpms-shared=all \
                    --enable-vhosts-alias --enable-rewrite \

        make && make install;
        break;;

# 설치 진행 대답을 no로 했을 경우 그냥 빠져 나옴!
        [Nn]* ) echo "# [INFO] You entered NO";  echo ""; exit;;
        * ) echo "##################################";   
            echo "# [WARN] Please answer Yes or No #";   
            echo "##################################";;
      esac
    done
  fi
fi

댓글 없음:

댓글 쓰기