|
|
|
리눅스팁 Go Unix Power Tools Online Book
Go Bash Guide
|
|
Read No. 99 article |
2002-02-05 11:03:30 |
|
|
|
|
NickName |
풀비누 |
Subject |
유동 아이피(Dynamic IP)로 웹호스팅하기 |
|
|
홈페이지 : http://yawong.com
등록일 : 2001.05.14 16:38:24
조회 : 1363
출처 : Yawong.com
리눅스에서 웹서버를 운영하시는 분은 아시겠지만,
웹서버(아파치)를 작동 시킬려면 httpd.conf 란 설정 파일에서 모든 웹서버 관련 설정을 해 줍니다.
아파치 설정파일은 /etc/httpd/conf/httpd.conf (이하 와우리눅스 배포버젼 7.0 까치 릴리즈 기준) 에 있습니다.
여기서 줄마다 해석하려니 불가능 하군요.(넘 많습니다. T.T)
기본 설정 관련 문서는 여러곳에서 찾을 수 있으니, 직접 찾아보시기 바랍니다.
유동아이피로 웹서버를 돌린다 해도, 외부 DNS 의 IP 주소를 업데이트 한다면 문제될 것이 하나도 없습니다. 걍 외부 DNS 를
업데이트 해주시면 끄읕~~
외부 DNS 란 ?
외부 인터넷 사이트들에서 제공하는, 유동아이피를 제때 제때 업데이트 해 주어, 도메인 wowlinux.com 와 같은 네임에 IP 를
연결해 주는 업체들을 말하죠. EASYDNS.com 이 그 중의 하나입니다.
만약, 유동아이피를 쓰시면서, 아파치로 가상호스트까지 하실려면, 꼬옥~ httpd.conf 파일 마지막에 가상호스트 설정을 해줘야
하는데, 매번 아이피가 변할 때마다 모든 설정을 손으로 일일이 바꿔주기란 정말로 막노동(?) 입니다.
그래서, 게으른(?) 사람땜에 리모콘 TV 가 나왔듯이,
저희가 모든 작업을 한방에 완성하는 셀 스크립트를 만들었습니다.
이곳에 설명된 내용을 처리할 수 있는 스크립트를 httpd://www.yawong.com 사이트에 공개할 예정입니다.
이것은 아피치 서버에서 가상호스트 설정을 변경하여, 유동아이피에서도 웹호스팅을 할 수 있게 하는 프로그램 입니다.
단!!! 유동아이피로 웹호스팅을 하거나, 가상호스트가 필요 없는 분께서는 걍 운영 하시면 됩니다.
아래 것들이 하나도 필요 없습니다.
이하 모든 명령들은 명령줄 밑에 주석이 붙은 라인 바이 라인(Line by Line) 형식으로 설명을 합니다.
1.0 프로그램 만들기 전 준비작업
집중!!!! 이하 모든 작업은 root 로 로그인 하셔서 완성 하셔야 합니다.
언제 생각이 어떻게 변해서, 현재 아파치 설정으로 되돌리고 싶을 지는 아무도 모를 일입니다.
그런 경우를 생각해서 현재 설정파일을 백업합니다.
# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak
이렇게 설정파일을 httpd.conf.bak 라는 파일로 백업을 합니다.
가상호스트 사용자 설정 정보 파일을 저장 할 디렉터리를 만듭니다.
어디에 만드나 상관없으나, 기타 사용자가 접근이 불가능 한 곳에 만들어야 합니다.
이하는 / 에 vhosts 란 디렉터리를 만들고 퍼미션을 700 로 하는 것으로 예를 듭니다.
# mkdir /vhosts
# chmod 700 /vhosts
이렇게 하면, 이제 root 만이 이 디렉터리를 엑세스 할 수 있습니다.
1.1 기본설정 파일 만들기 (basic.conf)
# cp /etc/httpd/conf/httpd.conf /vhosts/basic.conf
원본 설정파일 httpd.conf 를, 방금 만든 /vhosts/ 디렉터리안에 basic.conf 란 파일로 복사를 합니다.
# vi /vhosts/basic.conf
vi 문서 편집으로 들어 갑니다.
아래로 쭈욱~~~ 내려가시다 보면,
1003 줄까지 기본 환경 설정 및 기본 웹디렉토리 설정입니다.
1004 번째 줄부터는 VirtualHost(가상호스트) 설정인데,
우리가 고칠 부분은 바로 이 1004 번째 줄부터이므로, 1003번째 줄까지 남기시고, 그 밑은 지우셔야 합니다.
vi 팁
지우는 명령은 한줄 = dd, 여러줄 d#d 인데, 두 d 사이의 # 는 현재 줄부터 시작하여 아래로 지울 줄 수입니다. d100d 하시면,
현재 줄부터 시작하여 밑으로 100줄을 지우는거요. 잘 못 지웠을 경우, u 를 누르시면 방금 실행 한 것이 회복이 되죠.
다아~ 지우고 나면 이제 제일 마지막 줄에, 머 VIA PROXY 가 어쩌구 저쩌구 하는게 남을 꺼예요. 그러면 이제 저장하고 나와야
겠죠?
vi 팁
vi 에서 저장하고 나오는 명령은 :wq 또는 :x 입니다.
저장 안하고 걍 나오는 건 :q!
저장만 하는 기능은 :w
vi 팁
vi 에서 : 로 시작되는 명령은 마지막줄 모드 명령(Last line mode command)이라고 하며, 말그대로 : 를 타입하면 젤 마지막
줄에 현재 타이핑하는 명령이 보입니다. :q! 이렇게...
이렇게 하면 basic.conf 란 파일로 기본 설정은 저장 되었습니다.
이제 가상호스트 관련 설정을 해야겠죠?
1.2 아이피 포획 및 완정한 설정파일 생성 스크립 (make-conf)
/vhosts 디렉토리안에 make-conf 란 파일을 만듭니다.
# vi /vhosts/make-conf
vi 팁
vi 에서 모두 3가지 모드가 있습니다. 명령모드, 편집모드, 마지막 줄 모드.
이 3가지 모드 중에서, 위에서 우리가 쓰던 dd 명령은 명령모드에서 실행 한 결과이며, dd 역시 하나의 명령입니다. 명령
모드에선 모든 키가 명령키로 간주되며, 명령모드에서 편집모드로의 전환은 i, a, r, c, o 등 키로 수행이 됩니다.
지금, 편집 모드로 들어 가시려면 i 를 누르세요.
그리고, 아래와 같이 명령어들을 입력 합니다.
nslookup www.MY-DOMAIN | tail -2 | head -1 |cut -c 11- > /vhosts/ip-tmp
주의!! www.MY-DOMAIN 에는 현재 갖고 계신 도메인 이름을 씁니다.
예)www.wowlinux.com
DSN 설정에서 내 도메인의 상태를 출력하고, 결과를 tail 로 넘겨 마지막 2줄을 출력합니다.
또 결과를 head 로 넘겨 첫 줄을 걸러 낸 다음에 결과를 cut 로 넘겨 11번째 캐릭터부터 출력하여 결과를 /vhosts 내에
ip-tmp
란 파일에 저장합니다.
read ip < /hosts/ip-tmp
ip-tmp 내의 내용(현재 ip 주소) 를 읽어내여 변수 ip 에 저장합니다.
cat /vhosts/basic.conf > /vhosts/httpd.conf
위에서 만들었던 basic.conf 파일의 내용을 전부 출력하여 /vhosts 내에 httpd.conf 란 파일로 저장합니다.
echo "NameVirtualHost" $ip >> /vhosts/httpd.conf
가상호스트 설정의 첫 시작인 "NameVirtualHost IP주소" 문구를 /vhosts/httpd.conf 파일에 추가합니다.
이제 저장하고 나오시면 됩니다.
vi 팁
편집모드에서 명령 모드로 가려면 키보드 제일 윗쪽에 있는 ESC 키를 누르시면 됩니다.
이제 :x 라고 하셔서 저장하고 나오시면 되겠죠?
1.3 사용자 마다의 가상호스트 설정 파일 만들어 주는 쉘 스크립 및 새 사용자 추가 기능 (adduser)
이제 ls -l /usr/sbin/adduser 해보시면, adduser 이란 파일이 useradd 란 파일의 심볼릭 링크로 되어 있을 겁니다.
그러면, 심볼릭 링크니깐 지워도 무방하겠죠?
# rm /usr/sbin/adduser
adduser 이란 파일을 지웁니다.
경고!!
rm /usr/sbin/useradd 하시면 절대 안됩니다!!!! 스펠링 잘 보세요!!!
이제, 또 다시 vi 에디터를 씁니다.
# vi /usr/sbin/adduser
adduser 이란 파일을 만듭니다.
현재 빈 파일이죠. 이제 편집모드로 들어갑니다.
그리고, 아래와 같이 명령어들을 입력 합니다.
echo -n USER ID:
#"USER ID:" 라는 메세지를 출력 한다.
read USER_ID
#사용자가 입력하게 커서가 반짝이며, 입력한 값을 USER_ID 란 변수에 저장 한다.
useradd $USER_ID
#USER_ID 의 값을 불러내여, 사용자 아이디로 하고, 그 아이디에 해당하는 어카운트를 만든다.
chmod 755 /home/$USER_ID
#사용자 디렉터리 퍼미션을 755로 변경 한다. 이렇게 해야 웹에서 방문 할수가 있음.
passwd $USER_ID
#새로 만들어진 사용자의 비밀번호를 변경한다.
rm -rf /home/$USER_ID/Desktop
rm -rf /home/$USER_ID/.kde
rm -rf /home/$USER_ID/.screenrc
rm -rf /home/$USER_ID/.kderc
#보통 웹 호스팅 사용자는 FTP 같은 클라이언트로 서버를 원격조종(REMOTE CONTROL) 하므로 X윈도 가 필요치 않다. 몇
바이트라도 필요없는 파일은 삭제해서 디스크공간을 확보하는 습관을 키우는 것이 서버 관리자로서는 필히 갖추어야 할
것이라고
본다. 그러므로 사용자 계정의 X윈도 관련 파일들을 삭제 한다.
echo ServerAdmin $USER_ID > /vhosts/$USER_ID
echo DocumentRoot /home/$USER_ID >> /vhosts/$USER_ID
echo ServerName $USER_ID.YOUR-DOMAIN >> /vhosts/$USER_ID
echo ErrorLog /home/$USER_ID/.error.log >> /vhosts/$USER_ID
echo CustomLog /home/$USER_ID/.access.log common >> /vhosts/$USER_ID
echo CustomLog /home/$USER_ID/.referer.log referer >> /vhosts/$USER_ID
echo CustomLog /home/$USER_ID/.agent.log agent >> /vhosts/$USER_ID
#주의!! 3번 째 줄에, ServerName 있는데 YOUR-DOMAIN 인은 현재 사용자께서 갖고 계시는 도메인 이름 을 넣습니다. 예)
$USER_ID.wowlinux.com
#이상의 설정은 표준 가성서버 설정이며, 웹에서의 루트 디렉토리는 사용자계정 홈지렉토리(이 디렉토리는 DucomentRoot
/home/$USER_ID/public_html 이같은 방법으로 바꿀 수가 있습니다.) 로 설정 됩니다. 서버 이름, 즉 도메인은 사용자
<이이디.내 도메인> 으로 되며, 로그파일은 사용자계정의 홈디렉토리안에 .파일(숨김파일) 로 저장 됩니다. 만약 로그
파일 하나로 모든 기록을 남기실려면 콤비네이션 으로 하면 됩니다.
콤비네이션 로그관련 자료는 넷에 가득하니 찾아 보시면 금방 찾을 수 있을걸루 압니다.
echo "###" $USER_ID "###"
echo "echo "<VirtualHost $ip>" >> /vhosts/httpd.conf" >> /sbin/web
echo "cat /vhosts/"$USER_ID ">> /vhosts/httpd.conf" >> /sbin/web
echo "echo "<Directory" \"/home/$USER_ID\"">"" ">>
/vhosts/httpd.conf" >> /sbin/web
echo "echo Options ExecCGI >> /vhosts/httpd.conf" >> /sbin/web
echo "echo </Directory> >> /vhosts/httpd.conf" >> /sbin/web
echo "echo </VirtaulHost> >> /vhosts/httpd.conf" >> /sbin/web
#경고!! 4번째 줄 잘 보셔야 합니다.
한 글자라도 빠뜨리면 결과는 어처구니 없는게 나올 수 있습니다.
5번째 줄에서, 만약 사용자가 CGI 를 실행하게 하실려면 그대로 두시고, CGI 를 실행하지 못하게 하실려면 앞에 # 를 다세요.
/sbin/web
#BATCH 파일을 실행해서 추가된 내용을 적용하고 웹서버를 재시동 한다.
저장하고 빠져 나오세요.
1.4 BATCH 실행 파일 (/sbin/web)
#vi /sbin/web
파일에 아래와 같은 문구를 적습니다.
/vhosts/make-conf
# 새로운 httpd.conf 파일을 만든다.
mv -f /vhosts/httpd.conf /etc/httpd/conf
# 새로만든 파일을 이동하여 원래파일을 덮어쓴다.
/etc/rc.d/init.d/httpd restart
# 웹서버를 재시동 한다.
2. 마지막 설정!!!!
하하.... 힘드셨죠? 이제 마지막 설정 남았어욤...
머냐면요? 퍼미션 변경!!!
이제까지 만드신 파일들 중, 퍼미션을 변경해 주어야 작동되는 파일들이 있죠.
/usr/sbin/adduser
/sbin/web
/vhosts/make-conf
이 세 개의 파일입니다.
이제 아래와 같이 명령을 넣으셔서 퍼미션을 변경하세요.
# chmod 700 /usr/sbin/adduser /sbin/web /vhosts/make-conf
야호옷~~ 이제
# adduser
하셔서 사용자를 추가하시거나, 아이피가 바졌을 때,
# web
하시면, 모든 설정이 자동으로 척척~ 되구,
나중에 Starting httpd: [OK] 가 나오면서 새 설정이 적용됩니다.
3. 이 글의 저작권
이 글과 소스는 "백두넷 네트워크(BackTo.Net)"와 야옹닷컴(Yawong.com) 의 야옹이가 썼으며, GPL을 따릅니다. 이
글을 어디에나, 누구에게나 보내도 좋으며, 자유 배포가 가능합니다.
그러나, 도덕상, 이 글을 쓴 사람의 이름을 고치거나 하면 양심에 걸리는 일이겠져?
완전한 프로그램 패키지는 (그니깐 프로그램 소스를 손으로 일일이 써주지 않아도 된다는 말씀이겠죠? ㅋㅋㅋ)
httpd://www.yawong.com/download/dynamic_ip.tar 이나
ftp://ftp.yawong.com/dynamic_ip.tar 에서 구하실 수 있도록 준비
중입니다.
글믄 모두들 수고하시구요~ 해피리눅싱~~~~~
|
|
Page Loading [ 0.04 Sec ]
SQL Time [ 0 Sec ]
|
|
|