9. 도서관/__사. Network

초급 서버관리자를 위한 쉘스크립트 1탄 - Apache VirtualHost 쉽게 셋팅하기

행복 금융 2008. 11. 27.
이제 본격적으로 국제공인자격증을 따기 위해서는 하나하나의 지식들을 정리해 나가야 한다.

그러한 이유에서 'Linux & Network' 라는 카테고리를 만들었다.

이 카테고리는 LPIC나 RHCE를 준비하기 위한 공간도 되겠지만 서버관리자를 꿈꾸거나 서버관리기술이 필요한 후배들과 다른 블로거 분들에게도 유용하게 쓰일 수 있는 정보들을 하나 둘 씩 올리는 공간으로 사용할까 한다.

초반 시작은 간단한 쉘스크립트 지식으로 만들 수 있는 몇가지에 대해서 안내하는 것으로 시작해 볼까 한다.

Apache VirutalHost 셋팅 쉽게 하기

#!/bin/bash
-- Bourne Shell로 실행할 스크립트라고 선언해주는 부분이다.
-- sh를 사용할 경우 #!/bin/sh , csh를 사용할 경우 #!/bin/csh 식으로 입력하면 된다.

echo "VirutalHost Setting Script"
-- 화면상에 내용을 출력하기 위해서 echo 를 사용한다.

if [ -z $1 ]
-- if는 보통 [ ] 안에 조건식을 넣어서 표현하는데 일반적인 산술연산과는 조금 다르다.
-- 여기서 $1의 경우 첫번째 인자를 대체하는 형태며 $1, $2, $3 식으로 늘어나게된다.

-b 파일 : 파일이 블럭 장치 파일이면 참
-c 파일 : 파일이 문자 장치 파일이면 참
-d 파일 : 파일이 디렉토리이면 참
-e 파일 : 파일이 존재하면 참
-f 파일 : 파일이 정규 파일이면 참
-L 파일 : 파일이 심볼릭 링크이면 참
-p 파일 : 파일이 네임드(named) 파이프이면 참
-S 파일 : 파일이 소켓이면 참
-r 파일 : 파일이 읽기 가능이면 참
-s 파일 : 파일의 크기가 0보다 크면 참
-w 파일 : 파일이 쓰기 가능이면 참
-x 파일 : 파일이 실행 가능이면 참
파일1 -nt 파일2 : 파일1이 파일2보다 새로운 파일이면 참
파일1 -ot 파일2 : 파일1이 파일2보다 오래된 파일이면 참
파일1 -ef 파일2 : 파일1과 파일2가 같은 파일이면 참

문자열식은 문자열에 대한 비교를 한다.

-z 문자열 : 문자열의 길이가 0이면 참
-n 문자열 : 문자일의 길이가 0이 아니면 참
문자열1 = 문자열2 : 문자열1과 문자열2가 같으면 참
문자열1 != 문자열2 : 문자열1과 문자열2가 다르면 참

수식은 숫자값을 비교한다. 양의 정수, 음의 정수, 0, 변수값이 올 수 있다.

값1 -eq 값2 : 값1 = 값2
값1 -ne 값2 : 값1 != 값2
값1 -lt 값2 : 값1 < 값2
값1 -le 값2 : 값1 <= 값2
값1 -gt 값2 : 값1 > 값2
값1 -ge 값2 : 값1 >= 값2

이외에도 다음과 같이 식 전체에 대한 연산이 가능하다.

! 식 : 식에 대한 부정(not)
식1 -a 식2 : 식1과 식2에 대한 논리곱(and)
식1 -o 식2 : 식1과 식2에 대한 논리합(or)
 
       then
-- then 은 조건식이 참일 경우 그 다음 문장을 수행하라는 표시다.

                echo "Please type the domain"

-- echo는 해당하는 문장을 화면에 출력할 때 사용된다.

        else

-- else 는 해당하는 조건이 거짓일때 그 다음 문장을 수행하라는 표시다.

if [ -z $2 ]
-- if 안에 또 if가 들어갈 수 있다. $2는 두번째 인자를 의미한다.

        then
-- then 은 조건식이 참일 경우 그 다음 문장을 수행하라는 표시다.

                echo "please type the id"

-- echo는 해당하는 문장을 화면에 출력할 때 사용된다.
 
       else
-- else 는 해당하는 조건이 거짓일때 그 다음 문장을 수행하라는 표시다.

                echo "<VirtualHost    xx.xx.xx.xx>" >> /etc/apache2/sites-enabled/hosting.vhosts
                echo "ServerName      $1" >> /etc/apache2/sites-enabled/hosting.vhosts
                echo "ServerAlias     *.$1" >> /etc/apache2/sites-enabled/hosting.vhosts
                echo "DocumentRoot    /home/hosting/$2/public_html/" >> /etc/apache2/sites-enabled/hosting.vhosts
                echo "ErrorLog \"|/usr/sbin/cronolog /etc/apache2/logs/%Y/%m/%d/$1-error.log\"" >> /etc/apache2/sites-enabled/hostin
g.vhosts
                echo "CustomLog \"|/usr/sbin/cronolog /etc/apache2/logs/%Y/%m/%d/$1-access.log\" common" >> /etc/apache2/sites-enabl
ed/hosting.vhosts
                echo "</VirtualHost>" >> /etc/apache2/sites-enabled/hosting.vhosts

-- 일반적으로 Vhost 설정은 각자마다 다르다 위 내용을 보면 알겠지만 echo 뒤에 >>가 들어가 있는 것을 볼 수 있다. 리눅스에서의 echo는 똑똑하게도 기존의 파일에 새로운 내용을 추가하는 일을 할 수가 있다. 그러한 역할을 하는 것이 >> 태그이다.

-- 첫번째 인자를 통해서 도메인을 입력받고, 두번째 인자를 통해서 홈디렉토리 설정을 하고 있는 모습을 볼수가 있다.

fi
-- fi는 하나의 if문을 끝내기 위해서 사용된다.

fi

-- fi는 하나의 if문을 끝내기 위해서 사용된다.

이렇게 간단한 스크립트 작성 하나만으로도 서버관리를 무지 쉽고 재미있게 할 수 있다. 항상 중요한 것은 기초부터 시작해서 기본기를 탄탄하게 한 다음에 응용을 할 수 있는 자세를 갖는 것이다.

그닥 높은 기술이나 영리한 머리를 갖고 있지 않고도 할 수 있는 일들이기에 Tip이라고 까지는 할 수 없지만 일을 하면서 소소하게 배우고 알게되는 것들에 대해서 함께 나눌 수 있도록 포스팅을 이어가고자 한다.

'9. 도서관 > __사. Network' 카테고리의 다른 글

쉘배우기  (0) 2008.11.27
Ubuntu + Squid를 이용한 프록시 구성하기  (0) 2008.11.27
리눅스 좋은  (0) 2008.11.27
“3G+ 전쟁 시작됐다” ②  (0) 2008.11.27
솔라리스 팁 모음  (0) 2008.11.26

댓글

💲 추천 글