'Programming > tool' 카테고리의 다른 글
컴퓨팅 환경 Linux(Ubuntu)로 변경 (0) | 2010.11.25 |
---|---|
Qt Creator 에서 gtest 사용하기 (0) | 2010.11.24 |
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
컴퓨팅 환경 Linux(Ubuntu)로 변경 (0) | 2010.11.25 |
---|---|
Qt Creator 에서 gtest 사용하기 (0) | 2010.11.24 |
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
Ubuntu에서 VMWare 사용하기 (1) | 2010.12.01 |
---|---|
Qt Creator 에서 gtest 사용하기 (0) | 2010.11.24 |
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
프로젝트 생성
이름은 마음데로 하시구요
저는 Qt Console Application을 선택했습니다.
#include <iostream> using namespace std; #include <gtest/gtest.h> TEST( test, test ) { EXPECT_EQ( 1, 1 ); } int main(int argc, char *argv[]) { ::testing::InitGoogleTest( &argc, argv ); RUN_ALL_TESTS(); cout << "test" << endl; return 0; } |
LIBS += "/usr/local/lib/libgtest.a" 를 추가해주세요.
LIBS += "/usr/local/lib/libgtest.a" |
테스트 통과 화면 && "test" 출력 화면
저는 리눅스를 거의 처음 사용해보기 때문에 고수님들이 보시기에는 매우 쉬운 것들도 굉장히 헤매게 되네요.
그럼 이만 물러가겠습니다.
Ubuntu에서 VMWare 사용하기 (1) | 2010.12.01 |
---|---|
컴퓨팅 환경 Linux(Ubuntu)로 변경 (0) | 2010.11.25 |
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
컴퓨팅 환경 Linux(Ubuntu)로 변경 (0) | 2010.11.25 |
---|---|
Qt Creator 에서 gtest 사용하기 (0) | 2010.11.24 |
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW (0) | 2010.09.10 |
Qt Creator 에서 gtest 사용하기 (0) | 2010.11.24 |
---|---|
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW (0) | 2010.09.10 |
googletest 환경 구축 (0) | 2010.09.01 |
안녕하세요. moltak 입니다.
윈도우에서 Eclipse로 개발하면 컴파일러를 gcc를 사용하게 됩니다.
Eclipse에 CDT를 설치해서 소스코드 작성하고 gcc를 이용해 컴파일하며 gdb를 이용해 디버깅 하게 됩니다. 리눅스에서는 아주 쉽게 되는 작업이지만 처음 사용하는 저는 굉장히 어려웠습니다.
이 포스팅의 목표는 GoogleTest(이하 gtest)를 윈도우에서 gcc를 이용해 컴파일하고 eclipse에서 사용하는 것을 목표로 하겠습니다. 먼저 Eclipse와 JDK, CDT가 없으신 분은 [Eclipse에서 C, C++ 개발환경 구축하기] 를 참고하셔서 먼저 설치를 하시기 바랍니다.
먼저 gtest를 다운로드 받습니다. http://code.google.com/p/googletest/downloads/detail?name=gtest-1.5.0.zip
그 후 압축을 푼 후 아래를 따라 합니다.
실행 -> cmd -> cd gtest directory -> cd make -> mingw32-make Makefile all -> mingw32-make gtest.a
Figure 1 MinGW32-make
Figure 2 Make 수행 후
제대로 되셨다면 gtest.a 가 생성이 됩니다. .lib 라이브러리 파일은 msvc에서만 사용하는 라이브러리 파일이고 gcc는 .a라는 라이브러리 파일을 사용하게 됩니다. gtest.a 가 제대로 생성이 됐다면 이제 gtest를 사용하는 일만 남았습니다.
Figure 3 GTest 예제 코드
위 코드는 gtest를 사용하는 예제 코드입니다. 이 코드를 돌려 보도록 하겠습니다.
Eclipse를 실행시켜주세요. C++ 프로젝트를 생성 하신 후 위 코드를 작성 합니다.
이제 이클립스에서 몇 가지 설정을 해줘야 하는데요.
프로젝트 속성 -> C/C++ Build -> Settings -> GCC C++ Compiler -> Directories 부분에 gtest\include 폴더 추가해 주세요.
그리고 제가 가장 헤멘 부분. [.a] 링크하기!! 처음에 .a파일을 생성해야 하는 이유도 몰랐고 어떻게 하는지도 몰랐죠. 몇 일간 헤메니깐 답이 보이더군요. (이클립스를 이용해서 윈도우 플랫폼에서 C++ 개발하는 분들이 별로 없나 봅니다. 검색해도 잘 나오지 않던…)
다시 프로젝트 속성에 가셔서 C/C++ Build -> Settings -> MinGW C++ Linker -> Miscellaneous -> Other objects에 [gtest.a] 파일의 경로를 지정해 주시면 됩니다. 그리고 컴파일 하시면 성공!!
Figure 4 실행 화면
Figure4 그림처럼 나오면 성공입니다. ^^
이 글을 작성하고 나니깐 지난 3일간이 제가 엄청나게 삽질을 했다는 것을 알겠네요. 블로깅 양이 엄청 적은… 하지만 이제 리눅스와 윈도우에서 똑 같은 개발 환경을 갖고 프로젝트를 진행 할 수 있다는 것이 너무나 기쁘네요.
GTest를 G++로 컴파일해서 eclipse로 컴파일해서 사용했다는 것은 이제 어떤 라이브러리도 사용할 수 있다는 것을 뜻합니다. 물론 좀 복잡하게 사용해야 하지만… MSVC가 너무 잘 만들어진 IDE라서 윈도우에서는 MSVC 말고는 사용하기 힘들기도 할 것 같습니다. 하지만 Eclipse의 매력도 얕볼 수가 없는데 리눅스에서도 똑 같은 자신의 환경을 갖고 프로그래밍 할 수 있다는 큰 매력이 있다는 것입니다.
Bloger : moltak.net
우분투에서 gtest 사용하기 (0) | 2010.11.23 |
---|---|
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW (0) | 2010.09.10 |
googletest 환경 구축 (0) | 2010.09.01 |
MOSS 설치 포스팅 (0) | 2010.03.26 |
1.3 GCC를 실행하기 위한 윈도우 환경변수 설정하기
이제 어느 경로에 있던지 gcc 컴파일러를 실행할 수 있도록 환경을 조성해줄 필요가 있다.
이 방법은 Cygwin을 사용하지 않고 오로지 MinGW만 사용하는 경우에 해당한다. 만약 Cygwin을 함께 사용하시는 분이라면 배치파일을 만들어 사용하는 방법도 있다. (http://kldp.org/node/48962)
이제 MinGW가 설치되었으므로 window 기반에서 C, C++등을 개발할 수 있는 환경이 만들어진 것이다. 다음에 나오는 Eclipse기반이 아니더라도 메모장에서 C코드를 짜고 GCC로 컴파일할 수 있다. 하지만 개발툴을 메모장을 사용할 수는 없는 노릇아닌가?
2. Eclipse Galileo 버전을 설치한다.
Eclipse는 기존에 설치했던 사람이 대부분일 것이다. 이 설명은 필요없는 내용일 수 있으나 그냥 적어본다.
일단 Eclipse는 아래 링크에서 자신의 개발하고자 하는 목적별(Java, C/C++, PHP등)로 다운로드 받아 설치할 수 있다.
http://www.eclipse.org/downloads/
필자는 Java기반에서 개발하는 일이 많으므로 Java EE Developers를 위한 Eclipse IDE를 설치했다. Windows 32bit 기반을 다운로드 받았다. 설치는 받은 압축파일을 원하는 곳에 압축만 풀어주는 것으로 완료가 된다. 본인은 E:\eclipse 에 설치했다. C 드라이브에 설치하지 않은 이유는 나중에 운영체제를 다시 설치하는 경우에 Eclipse를 보존하기 위함이다.
Eclipse를 처음 설치하는 사람이라면 반드시 JRE가 자신의 컴퓨터에 미리 설치가 되어 있어야 Eclipse 구동이 가능하다. 다음 링크에서 JRE나 JDK 최신버전을 설치하면 되겠다.
http://java.sun.com/javase/downloads/index.jsp
만약 C/C++기반인 Eclipse를 다운로드 받아 설치하면 다음에 "3. CDT 플러그인을 설치한다"를 넘겨도 된다.
3. CDT 플러그 인을 설치한다.
CDT는 C/C++ Development Tool이다. 기존에 이클립스 기반으로 개발하던 사람이라면 C/C++도 Visual Studio와 같은 툴을 활용하지 않고 개발하고자 하는 욕구(?)가 들지도 모르겠다. CDT를 Eclipse에 설치하면 C,C++ 개발이 가능한 환경이 된다.
CDT는 개발하는 툴이지 컴파일러가 아니다. CDT를 설치했더라도 각각 운영체제 기반에서 제공하는 C/C++ 컴파일러와 연결하는 작업은 필요하다. 여기서는 CDT를 Eclipse에 설치하는 방법만 소개한다.
Eclipse 메뉴에서 Help > Install New Software... 를 선택한다.
아래와 같은 화면이 나오면 Add 버튼을 누른다.
이클립스의 Project > Build Automatically가 선택되어 있다면 위처럼 프로젝트를 만들게 되면 자동으로 MinGW의 g++을 찾아 컴파일을 실시하게 된다. 아래와 같은 메시지가 이클립스의 Console창에 나오면 제대로 실행된 것이다.
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
이미 정의되어 있습니다. 무시 (0) | 2010.11.01 |
---|---|
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
googletest 환경 구축 (0) | 2010.09.01 |
MOSS 설치 포스팅 (0) | 2010.03.26 |
Source Code 가독성 있게 블로깅 하기 (0) | 2010.03.19 |
googletest 환경 구축
안녕하세요. moltak입니다. 오늘은 TDD를 사용하기 위한 Google C++ Testing Frameworks를 설치해보고 예제를 돌려보겠습니다.
C++ Unit Test Framework는 굉장히 많습니다. JAVA는 JUnit과 Hamcrest라는 Framework 많이 사용하더군요. 하지만 C++은 언뜻 봐도 굉장히 많습니다. 저는 C++의 모든 Test Framework를 사용해본 것은 아닙니다. 그렇다고 Google Framework가 아주 좋다는 것도 아닙니다. 다만 사용하기 쉽고 굉장히 직관적이었습니다. (다른 Framework도 그런지는 모르겠네요. )
잔소리는 여기까지 하고 일단 사용해보도록 하겠습니다.
구글 Framework 또한 다른 라이브러리와 마찬가지로 아래 순서를 따르게 됩니다. 하나 하나 보도록 하죠.
1. Downloads
2. 설치
3. Visual Studio 설정
4. 사용하기
1. Downloads : : http://code.google.com/p/googletest/ 에 들어가서 상단에 Downloads 탭을 선택한 후 윈도우 버전 다운로드.
Figure 1 google test downloads
2. 설치 : 자신이 원하는 폴더에 압축해제. 그 후 gtest\msvc 폴더에 가서 gtest.sln 파일을 더블 클릭.
만약 버전이 안 맞아서 솔루션 파일을 변경해야 할 경우 .vcproj(프로젝트 파일)의 읽기 전용 속성을 해제하세요.
그 후 해당 솔루션을 컴파일 합니다.
3. VS 설정
VS2005~2008 : 도구->옵션->프로젝트 및 솔루션->VC++ 디렉터리
VS2010 : 프로젝트 옵션에서 설정해야 합니다.
포함 파일과 라이브러리 파일 경로 설정.
Figure 2 Visual Studio Setting
위 그림처럼 하시면 됩니다.
Google Testing Framework는 런타임 라이브러리가 다중 스레드 디버그(/MTd) 이기 때문에 우리의 프로젝트 설정도 위 처럼 바꿔 줘야 합니다.
프로젝트 설정 -> 구성 속성 -> C++ -> 코드 생성 -> 런타임 라이브러리 -> 다중 스레드 디버그(/MTd)
Figure 3 런타임 라이브러리 변경
그 후 라이브러리 링크
이렇게 하시면 기본적인 설정 방법은 끝이 났습니다. 다른 라이브러리와 사용법이 같기 때문에 쉽게 하셨을 것 같네요.
4. 사용
이제 진짜로 사용해보도록 하죠.
문법은 위 그림과 같습니다. (http://soupim.tistory.com/48 참조)
사용 하실 때는 아래 소스처럼 하시면 쉽게 사용이 가능하십니다.
Figure 4 사용 예제 소스
저는 Test Fixtures를 사용해서 테스트를 수행하곤 하는데요. 이 방법이 Java나 다른 책에서 설명하는 TDD기법과 아주 유사합니다.
Figure 5 Test Fixtures 사용 예제
여러분들도 위 방법을 사용해서 테스트를 수행해보세요. 그리고 테스트 이름은 한글로 하는 것이 좋다고 하더라고요. (채수원 : 고품질 쾌속개발을 위한 TDD 실천법과 도구(한빛미디어))
위 책을 보고 있는데요. 상당히 좋습니다.
Figure 6 실행 화면
5. 정리
이렇게 해서 Google Testing Framework 설치와 사용법이 설명이 끝났습니다. 많이 사용해 보시고 저한테도 알려주셨으면 감사하겠습니다. ^^
그리고 Google Test UI도 있는데요. 아래 경로로 찾아 들어가시면 됩니다.
Figure 7 Google Test UI
위 손가락 위치에 가시면 다운 받으실 수 있습니다. 상당히 보기 편하더라고요. 다른 Unit Test 툴처럼. 하지만 저만 그런지는 모르겠으나. 굉장히 느립니다. 5초 이상 걸리는 것 같습니다. 다른 분들도 한번씩 사용해 보세요. 더 보기 좋답니다. ^^
이만 마치도록 하겠습니다.
Bloger : moltak.net
Windows에서 Eclipse로 외부 라이브러리 사용하기 (0) | 2010.09.13 |
---|---|
Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW (0) | 2010.09.10 |
MOSS 설치 포스팅 (0) | 2010.03.26 |
Source Code 가독성 있게 블로깅 하기 (0) | 2010.03.19 |
08) IP 주소가 변경되었을 때의 DNS 서버관리 (0) | 2010.03.19 |
Eclipse Galileo에서 C,C++ 개발환경 구축하기 - CDT, MinGW (0) | 2010.09.10 |
---|---|
googletest 환경 구축 (0) | 2010.09.01 |
Source Code 가독성 있게 블로깅 하기 (0) | 2010.03.19 |
08) IP 주소가 변경되었을 때의 DNS 서버관리 (0) | 2010.03.19 |
07) BIND9의 named 데몬을 서비스에 등록하기 (0) | 2010.03.19 |
C, C++ 소스를 올리려는데 가독성이 너무 안좋군요... 예전 블로그는 어떻게 하는 지 잘 몰랐는데...
티스토리는 정보가 많더군요. 우허허허허ㅋ 그래서 검색했습니다.
http://withrobot.tistory.com/180 여기서 참조를 했습니다.
우리의 목표는 바로 아래 화면ㅋㅋ
2. 티스토리의 스킨에 업로드
네 이젠 Scripts 폴더와 Script 폴더에 있는 모든 파일을 올려야 해요.
티스토리의 관리자로 이동해서 스킨탭의 HTML/CSS 편집을 선택해 주세요.
</body> 앞에 다음 문장을 추가한다.
<script class="javascript" src="./images/shCore.js"></script>
<script class="javascript" src="./images/shBrushCSharp.js"></script>
<script class="javascript" src="./images/shBrushCpp.js"></script>
<script class="javascript" src="./images/shBrushCss.js"></script>
<script class="javascript" src="./images/shBrushDelphi.js"></script>
<script class="javascript" src="./images/shBrushJScript.js"></script>
<script class="javascript" src="./images/shBrushJava.js"></script>
<script class="javascript" src="./images/shBrushPhp.js"></script>
<script class="javascript" src="./images/shBrushPython.js"></script>
<script class="javascript" src="./images/shBrushRuby.js"></script>
<script class="javascript" src="./images/shBrushSql.js"></script>
<script class="javascript" src="./images/shBrushVb.js"></script>
<script class="javascript" src="./images/shBrushXml.js"></script>
<script class="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
아쉽게도 위지윅 모드에서 바로 적용하는 방법은 없다. 글을 쓰다가 소스 코드를 넣고 싶은 부분에서 메뉴바에 [EDIT] 버튼을 클릭하여 HTML 편집 모드로 전환한다. 그 다음 다음과 같은 문장을 추가한다.
<textarea name="code" class="Python" cols="60" rows="10">
코드는 여기에 복사한다.
</textarea>
http://withrobot.tistory.com/180 님이 python을 하셨기 때문에 저도 그렇게ㅋㅋㅋ 저 부분을 C++이나 C로 입맛에 맞게 바꿔 주세요.
수고 하셨습니다. 이젠 http://moltak.tistory.com/entry/Server-Socket-1 처럼 만들 수 있을 겁니다. 즐프 하세요~
googletest 환경 구축 (0) | 2010.09.01 |
---|---|
MOSS 설치 포스팅 (0) | 2010.03.26 |
08) IP 주소가 변경되었을 때의 DNS 서버관리 (0) | 2010.03.19 |
07) BIND9의 named 데몬을 서비스에 등록하기 (0) | 2010.03.19 |
06) BIND9 동작 테스트 (0) | 2010.03.19 |
http://jobdahan.net/server_window/17286
DNS 서버는 자신의 컴퓨터 인터넷 연결 IP Address와 밀접한 관계가 있습니다.
다른 서버들(웹 서버, 데이타베이스 서버, FTP 서버 등)은 자신의 컴퓨터 연결 IP Address가 변경되더라도
각 설정 파일들에 대해 별다른 수정없이 서비스 받고 있는 도메인의 IP Address만 Update 해주면 해결되지만
DNS 서버의 경우에는 그렇지 않습니다.
DNS 서버(BIND9, Windows에서는 ISC BIND 서비스)의 경우에는 서비스 받고 있는 도메인의 IP Address Update
뿐만이 아니라 설정 파일도 변경된 IP Address로 수정해서 BIND9을 재시작 해주어야만 합니다.
가정에 설치된 PC에 서버를 구축하였을 경우 유동 IP를 사용하기 때문에 IP 주소가 자주 변동될 수 있으므로
그에 대한 대책을 마련해야만 합니다.
그 대책의 하나는 자신의 IP 주소가 변경되면 DNIP 사이트에서 서비스 받고 있는 네임서버 도메인
(예 : ns.jobdahan.dnip.net)의 IP 주소를 업데이트 해주어야 하며,
둘째로 DNS 서버가 구축되어 있다면 개별 도메인 zone 파일(예 : jobdahan.dnip.net.zone)에 설정된
각 도메인에 대한 IP 주소도 업데이트 해주어야만 합니다.
우리는 네임서버 도메인을 DNIP 사이트에서 서비스 받고 있으므로 자신의 IP 주소가 변경되었을 경우
DNIP 사이트에 IP 주소를 업데이트 해주면 되는데 그 방법은 이미 “유동 IP를 고정 IP처럼 사용하기” 강좌에서
DNIP.exe를 이용하여 자동으로 업데이트하는 방법을 자세히 설명했었습니다.
DNS 서버는 원래 고정 IP인 곳에 설치하여야만 합니다만 지금 우리는 고정 IP가 아닌 유동 IP인 곳에
DNS 서버를 설치하였습니다. 그렇기 때문에 인터넷 연결 IP 주소가 변경되면 DNS 설정 파일에 있는 IP 주소도
변경시켜 주어야만 하는 약간의 불편함은 감수해야 합니다.
DNS 설정 파일에 있는 IP 주소를 업데이트 해주는 방법으로는 직접 수동으로 설정 파일의 IP 주소를 수정하는 방법과
\bin 디렉터리에 들어가 있는 nsupdate.exe를 이용하는 방법,
그리고 자체 제작한 소프트웨어로 IP 업데이트에 관련된 모든 작업을 자동으로 하는 방법이 있습니다.
여기에서는 수동으로 설정 파일의 IP 주소를 수정하는 방법에 대해서 설명하기로 하겠습니다.
[ 직접 IP Update ]
1) 변경된 인터넷 연결 IP 확인하여 서비스되고 있는 네임서버 도메인 IP 업데이트
~ 공유기를 사용하고 있을 때 내 컴퓨터 인터넷 연결 IP 주소를 확인하는 가장 간단한 방법으로는
FTP 서버인 Hub FTP 창을 열어 [IP 확인] 도구를 클릭해서 자신의 인터넷 연결 IP 주소를 알아 보거나
Port_Check.exe 같은 소프트웨어를 이용해서 알아 보는 방법이 있습니다.
(cmd 창의 ipconfig 명령은 공유기를 사용하지 않고 있을 때 인터넷 연결 IP 주소 확인이 가능하지만,
공유기를 사용하고 있을 때는 공유기의 사설 IP Address(192.168.xxx.xxx)가 표시됩니다.)
내 컴퓨터의 인터넷 연결 IP Address와 서비스 되고 있는 ns.ID.dnip.net의 IP Address가 서로 다를 경우
DNIP.exe를 이용하거나 http://www.dnip.net/update.cgi에서 IP Address를 업데이트 해 줍니다.
2) 개별 도메인 설정 zone 파일 수정
~ 자신의 IP 주소가 변경되었을 때 설정 파일 중 수정해 주어야 할 부분은 개별도메인 설정 파일인
HostName.zone(HostName : ns.ID.dnip.net에서 "ns."을 제외한 이름, HostName.zone ⇒ 예:jobdahan.dnip.net.zone)
파일만 수정하면 됩니다.
C:\APM_Setup\Server\DNS\etc\ 디렉터리에 있는 jobdahan.dnip.net.zone 파일을 메모장이나 텍스트 에디터로
열어 설정되어 있는 IP 주소를 모두 변경된 IP 주소로 수정하고 저장합니다.
예를 들어 자신의 외부 IP 주소가 210.95.205.15에서 210.95.205.105로 변경되었다면
아래의 내용과 같이 IP 주소가 들어간 부분만 210.95.205.15 ⇒ 210.95.205.105로 수정하고 저장합니다.
C:\APM_Setup\Server\DNS\etc\jobdahan.dnip.net.zone 파일의 내용
$TTL 43200
@ IN SOA ns.jobdahan.dnip.net. root.jobdahan.dnip.net. (
2007042710 ; ⇒ 이 네임서버의 데이타 버전, 현재 년월일시간으로 수정함
3H ;
15M ;
1W ;
1D ) ;
; Name Server
IN NS ns.jobdahan.dnip.net. ;
IN A 210.95.205.15 ; ⇒ IN A 210.95.205.105 ;
; Host name
ns IN A 210.95.205.15 ; ⇒ ns IN A 210.95.205.105 ;
; Virtual Host
www IN A 210.95.205.15 ; ⇒ www IN A 210.95.205.105 ;
mail IN A 210.95.205.15 ; ⇒ mail IN A 210.95.205.105 ;
ftp IN A 210.95.205.15 ; ⇒ ftp IN A 210.95.205.105 ;
shop IN A 210.95.205.15 ; ⇒ shop IN A 210.95.205.105 ;
3) zone 파일의 Reload 또는 DNS 서버(ISC BIND 서비스)의 재시작
~ [시작]-[실행]-cmd 입력하여 cmd 창을 열고, rndc reload 명령을 입력하고 [Enter] 키를 치면
C:\APM_Setup\Server\DNS\etc\ 디렉터리에 있는 모든 구성 파일들과 zone 파일들이 다시 읽혀져서
변경시킨 내용들이 DNS 서버에 적용되어 집니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats> rndc reload
server reload successful
C:\Documents and Settings\hats> _
여기에서 한 가지 알아 두셔야 할 점이 있습니다.
위와 같이 cmd 창에서 rndc reload 명령을 사용해서 named 데몬을 제어할 수 있는 이유는
앞서 name.conf 내용 설정에서 named 데몬이 rndc.key 파일의 key 값을 사용하고 있고,
named 데몬을 제어하는 rndc는 rndc.conf 파일에서 불러온 key 값을 사용하는데
rndc.key 파일과 rndc.conf 파일의 key 값을 동일하게 해 주었기 때문에 rndc로 named 제어가 가능한 것입니다.
[ DNS 서버(ISC BIND 서비스)의 재시작 ]
설정 파일이 수정되었을 때 rndc reload 명령을 이용하지 않고
DNS 서버 자체를 재시작 해주어도 수정한 업데이트 내용이 DNS 서버에 적용됩니다.
윈도우에서 DNS 서버(BIND9)를 재시작하여 주는 방법에는 다음의 두 가지가 있습니다.
첫째, [시작]-[제어판]-[성능 및 유지관리]-[관리 도구]를 선택, [서비스]를 더블클릭하여 열린 서비스 창에서
ISC BIND 라는 이름의 서비스를 찾아 오른쪽 클릭, 단축메뉴에서 [다시 시작]을 선택하면 ISC BIND 서비스가
중지되었다가 다시 시작됩니다.
둘째, cmd 창에서 다음의 명령 실행에 의해서도 DNS 서버(BIND9)를 재시작 할 수 있습니다.
net stop "ISC BIND" : DNS 서버(BIND9)의 중지
net start "ISC BIND" : DNS 서버(BIND9)의 시작
명령 프롬프트(cmd) 창
[ nsupdate.exe를 이용한 개별도메인 zone 파일 설정 Update 하기 ]
nsupdate.exe를 이용하는 방법에 대해서는 설명을 생략하기로 하겠습니다.
처음에는 이 부분에 대한 설명도 하려고 했었지만 이 방법 역시 수동적인 방법에 속하고
DNS 서버에 대해서 익숙치 않은 분들에게는 오히려 혼란만 줄 것 같아서 과감히(?) 생략했습니다.^^;
꼭 알아야 겠다는 분들이 계시다면 댓글을 달아 주시거나
관련 전문 서적을 참고하시기 바랍니다.
위와 같이 수동으로 작업을 해 주어도 되지만 이러한 일련의 작업들 즉, 외부 인터넷 연결 IP 주소가 변경되었는지
부팅할 때 마다 검사하고, 변경되었으면 개별 도메인 설정 zone 파일인 jobdahan.dnip.net.zone 파일의 내용 중
설정되어 있는 IP Address만 수정시켜 저장한 후 그 zone 파일을 reload 해주게 할 수 있는 소프트웨어를 만들어
동작하게 하면 아주 유용하겠지요?
BIND9의 설정파일들을 생성하거나 IP Address를 업데이트하는 소프트웨어를
PHP나 Delphi, C++ 등으로 만들 수 있을 것입니다.
여러분들께는 윈도우 명령 셸을 이용하여 BIND9의 모든 설정 파일들을 쉽게 생성하고 IP Update를 할 수 있는 배치 파일
(BINDzSet.cmd)을 배포하도록 하겠습니다.
아래의 기능 소개를 읽어보시고 유용하다는 생각이 드시면 이 글의 댓글로
"BINDzSet.cmd 신청합니다."라고 반드시 신청한 다음에
쪽지 보내 주시기 바랍니다.
그런데요...
DNS 서버가 설치되지 않았다면 이 배치 파일은 아무 소용없지 않겠습니까?
그래서 현재 자신의 서버에 BIND9이 설치되어 있어서 서브 도메인이 설정된 분들께만 드리고자 합니다.
(현재 이 강좌를 통해 DNS 서버를 구축한 분들이 몇 분이나 되는지 파악하고 싶어서이니 널리 양해 해주시길!^^;)
배치 파일 신청 방법은 먼저 앞서 설명한 방법으로 댓글을 올리신 다음 자신의 FTP 서버에 사용자 계정을 하나 만들고
아래의 내용을 저(ID : hats)에게 쪽지로 보내 주시기 바랍니다.
1) FTP 사용자 계정 ID와 Password( 예 : 아이디 named, Password 2345 )
2) 접속할 FTP 주소( 예 : ftp.xxx.dnip.net )
3) 접속할 수 있는 시간대( 예 : 18:00~19:00 )
(파일이 업로드된 것을 확인 후 FTP 계정은 삭제하거나 Password를 변경하시기 바랍니다.)
사용방법은 아래에도 설명되어 있지만 BINDzSet.cmd 파일을 시스템 Path를 지정해 놓았던
C:\APM_Setup\Server\DNS\bin\ 디렉터리에 넣은 다음 cmd 창을 열고 BINDzSet만 입력하십시오.
그러면 아래 내용과 같은 도움말이 나올 것입니다.
BINDzSet.cmd를 사용해 보시면 아시겠지만
명령 중 옵션 입력이 잘못되었을 때에는 그 상황에 맞는 도움말이 자세히 나오게 되어 작성되어 있습니다.
사용법을 익히시지 않더라도 도움말만 보면 쉽게 사용할 수 있을 것입니다.(저의 생각일 뿐...)
Windows OS에 DNS 서버(BIND9)을 설치한 후 설정 파일들을 만들어야 할 때
BINDzSet 명령 한 줄 입력할 때마다 입력한 설정 파일이 자동으로 만들어 질 것입니다.
그리고 곧 바로 그 설정 파일의 내용을 확인해 보실 수 있으며,
BIND9을 재시작시켜 변경 내용을 적용시킬 수 있습니다.
혹시, 좀 더 자세한 사용법 설명이 필요하시다면 댓글 달아 주십시오.
BINDzSet.cmd 사용법 설명 글 올리도록 하겠습니다.
BINDzSet.cmd는 여러분의 환경에 맞게 수정하시고 사용하셔도 됩니다.
단, 다른 곳에 올리지는 말아 주세요.-.-;
윈도우 명령 셸을 공부하시는데에도 도움이 될 것이라 여겨집니다.
앞에서 설명한 [ 직접 IP Update ]의 [2]와 [3] 항목은 BINDzSet.cmd를 사용한다면
다음과 같이 2번의 명령 실행으로 간단히 해결될 것입니다.
BINDzSet Dzone jobdahan.dnip.net 210.95.205.105 2007062015 shop
BINDzSet restart
배포 받는 과정이 귀찮으시다구요?
에~구!
그럼, 저도 할 수 없죠!^^;
[ BINDzSet 사용법 ]
*****************************************************************************************
명령 형식 : BINDzSet [설정파일명] [HostName] [IP] [Serial] [subD1 [subD2...[subD5]]]
*****************************************************************************************
ㅇ [설정파일명] : rndc, named.ca, localhost.zone, named.local, named.conf, Dzone 중 하나
ㅇ [Host Name] : 네임서버도메인(ns.ID.dnip.net)에서 "ns."을 제외한 이름 ID.dnip.net
ㅇ [IP] : 내 컴퓨터의 인터넷 연결 IP 주소 ex) 210.95.205.15
ㅇ [Serial] : 이 네임서버의 데이타 버전, 현재 년월일시간으로 정함 ex) 2007050101
ㅇ subD1 subD2 : 설정할 서브도메인 이름(공백으로 구분해서 5개까지 추가 가능)
www, mail, ftp, pds, blog는 기본으로 설정됨 ex) shop cafe commu 등
---------------------------------------------------------------------------------------------------
[ 실행 예 ]
[1] rndc.key, rndc.conf 파일 생성하기
BINDzSet rndc ⇒rndc.key 파일과 rndc.conf 파일을 생성
BINDzSet rndc view ⇒ 생성되어 있는 rndc.key, rndc.conf 파일 내용 보기
[2] named.ca 파일 생성하기
BINDzSet named.ca ⇒ named.ca 파일을 생성
BINDzSet named.ca view ⇒ 생성되어 있는 named.ca 파일 내용 보기
[3] localhost.zone 파일 생성하기
BINDzSet localhost.zone ⇒ localhost.zone 파일을 생성
BINDzSetlocalhost.zone view ⇒ 생성되어 있는 localhost.zone 파일 내용 보기
[4] named.local 파일 생성하기
BINDzSet named.local ⇒ named.local 파일을 생성
BINDzSet named.local view ⇒ 생성되어 있는 named.local 파일 내용 보기
[5] named.conf 파일 생성하기
BINDzSet named.conf ID.dnip.net ⇒ named.conf 파일을 생성
BINDzSet named.conf view ⇒ 생성되어 있는 named.conf 파일 내용 보기
[6] 개별도메인 Zone 파일 생성하기
BINDzSet Dzone ID.dnip.net xxx.xxx.xxx.xxx 2007050215 shop cafe commu
⇒ "ID.dnip.net.zone"이라는 파일명을 갖는 개별도메인 Zone 파일을 생성
xxx.xxx.xxx.xxx : 인터넷 연결 IP Address, 2007050215 : Serial,
shop, cafe, commu : 생성시킬 2차 도메인(www, mail, ftp, pds, blog는 기본으로 생성됨)
BINDzSet Dzone ID.dnip.net view ⇒ 생성되어 있는 개별도메인 Zone 파일 "ID.dnip.net.zone"의 내용 보기
[ 부가 기능 ]
(1) 내 컴퓨터 인터넷 연결 IP 확인
BINDzSet ipcheck
(2) BIND9 재 시작
BINDzSet restart
---------------------------------------------------------------------------------------------------
[ 사용 환경 ]
1. 이 파일의 이름은 BINDzSet.cmd 이며, Windows용 배치 파일이므로 cmd창에서 실행합니다.
2. BINDzSet.cmd 파일과 bindzset 폴더를 시스템 Path가 설정되어 있는 C:/APM_Setup/Server/DNS/bin/
디렉터리에 넣어두고 사용하십시오.
- bindzset 폴더에는 named.root, Port_Check.exe 파일이 들어가 있어야 합니다.
3. BIND9이 C:/APM_Setup/Server/DNS/ 디렉터리에 설치되어 있는 환경에 맞게 배치 파일 스크립트가
작성되어 있으므로 환경이 다를 경우 BINDzSet.cmd를 수정하여 사용하면 됩니다.
또한 C:/APM_Setup/temp/ 디렉터리도 사용하고 있음을 참고하십시오.
물론 이 강좌의 내용대로 하셨다면 수정 없이 그대로 사용하시면 됩니다.
4. BINDzSet의 실행하는 위치는 시스템 Path가 설정되어 있으므로 아무 디렉터리에서나 실행하면 됩니다.
MOSS 설치 포스팅 (0) | 2010.03.26 |
---|---|
Source Code 가독성 있게 블로깅 하기 (0) | 2010.03.19 |
07) BIND9의 named 데몬을 서비스에 등록하기 (0) | 2010.03.19 |
06) BIND9 동작 테스트 (0) | 2010.03.19 |
05) 개별 도메인 zone 파일 만들기 (1) | 2010.03.19 |
http://jobdahan.net/server_window/17274
현재는 BIND9이 설치되면서 윈도우즈 서비스에 ISC BIND라는 이름으로 등록은 되어 있지만
실행이 되지 않고 있는 상태입니다. 이 ISC BIND 서비스를 시작시켜 주어야 Windows XP가 부팅되면서
named 데몬이 자동으로 실행되게 됩니다.
(Windows XP에서 BIND9의 프로세스 이름은 named.exe이며 서비스 이름은 ISC BIND입니다.)
[시작]-[제어판]-[성능 및 유지관리]-[관리 도구]를 선택하여 관리 도구 창이 열리면
그 곳에서 [서비스]를 더블클릭하여 서비스 창을 엽니다.
그 서비스 창에서 ISC BIND 라는 이름의 서비스(상태 필드에 “시작됨”이라는 글자가 표시되지 않은 상태입니다.)를 찾아
오른쪽 클릭하여 단축메뉴에서 [속성]을 선택하면 ISC BIND 속성 창이 열립니다.
(이 속성 창을 여는 경로를 잘 기억해 두시기 바랍니다.)
아래의 그림과 같이 ISC BIND 속성 창의 [로그온] 탭을 클릭합니다.
BIND9을 설치하면서 로그온 계정 이름을 named라 하고 암호를 입력했을 것입니다.
그렇기 때문에 현재는 .\named 사용자 계정으로 선택되어져 있습니다.
이 .\named 라는 사용자 계정을 다음의 방법으로 로컬 시스템 계정으로 변경시켜 주어야만
named 데몬을 시작할 수 있게 됩니다.
아래의 왼쪽 그림과 같이 .\named 사용자 계정으로 선택되어 있는 상태를 [로컬 시스템 계정]으로 변경시키고
반드시 [적용] 버튼을 클릭합니다. 적용이 되면 [적용] 버튼은 비활성화 상태로 표시됩니다.
그 다음 오른쪽 그림과 같이 [일반] 탭을 클릭하고 “서비스 상태 :”라는 글자 바로 아래에 있는 [시작] 버튼을 클릭합니다.
서비스를 시작 상태를 나타내는 아래와 같은 서비스 제어 창이 열렸다가 자동으로 닫힐 것입니다.
서비스 제어 창이 닫히고 [시작] 버튼이 비활성화 상태가 되면 [ISC BIND 서비스]가 시작된 것입니다.
만약, 아래 그림과 같은 메시지가 나오면서 ISC BIND가 시작되지 않을 경우
[로그온] 탭에서 로컬 시스템 계정으로 변경시킨 다음 [적용] 버튼을 누르지 않은 채로 [일반] 탭에서 [시작] 버튼을
눌렀기 때문입니다.(저는 이 것 때문에 스트레스 엄청 받았었는뎅... 여러분들은 저 같은 실수 안 하시겠죠?)
이제 지속적인 서비스 실행이 되었으니 [확인] 버튼을 눌러 ISC BIND 속성 창을 닫고,
서비스 창에서 ISC BIND가 서비스되고 있는 상황을 보면
아래 그림과 같이 “시작됨”, “로컬 시스템”이라는 글자가 보일 것입니다.
[Ctrl+Alt+Del] 키를 눌러서 Windows 작업관리자 창의 [프로세스] 탭에서도 확인할 수 있습니다.
Windows 작업관리자 창의 프로세스 탭에서 named.exe라는 프로세스가 보일 것입니다.
현재 DNS 서버가 구동되어 네임 서비스를 하고 있는 중이며,
다음부터는 부팅하게 되더라도 자동으로 ISC BIND 서비스가 시작될 것입니다.
즉, DNS 서버가 동작하게 된다는 말이 되겠지요?
이제 ISC BIND를 서비스로 등록했으므로 실제 동작을 확인하기 위해서 서버 컴퓨터를 재부팅하여
다시 동작을 확인해 보도록 하십시오.
[6. BIND9 동작 테스트]의 3) 네임서버 질의 명령어 nslookup으로 확인, 4) ping 명령으로 전송 응답 테스트 과정을
다시 시도하여 마무리 동작 테스트하시길 바랍니다.
드디어 Windows XP에 DNS 서버(BIND9)을 모두 설치하고 설정한 다음
정상적인 동작까지 될 수 있도록 서비스 등록까지 하여
네임서버를 구동시켰으며 현재 네임 서비스를 하고 있는 중입니다.
Source Code 가독성 있게 블로깅 하기 (0) | 2010.03.19 |
---|---|
08) IP 주소가 변경되었을 때의 DNS 서버관리 (0) | 2010.03.19 |
06) BIND9 동작 테스트 (0) | 2010.03.19 |
05) 개별 도메인 zone 파일 만들기 (1) | 2010.03.19 |
04) named.ca, localhost.zone, named.local 파일 만들기 (0) | 2010.03.19 |
http://jobdahan.net/server_window/17272
DNS 서버인 BIND9을 본격적으로 구동시키기에 앞서 지금까지 설치/설정한 모든 사항들이 실제적으로 정상적인
동작을 하고 있는지 테스트 해 볼 것입니다.
DNS 서버의 데몬(named.exe)을 명령 창(cmd)에서 임시 실행시켜서 에러 유무 확인,
프로세스 창에서 실행된 데몬 확인,
네임서버 질의 명령어 nslookup으로 서브 도메인의 IP 주소 확인 및 ping 명령어로 전송 응답 테스트를 하여
DNS 서버(BIND9의 named)가 정상적으로 동작하고 있는지 확인합니다.
1) 명령 창(cmd)에서의 named.exe 실행
C:\APM_Setup\Server\DNS\bin\ 디렉터리에 named.exe 파일이 있는데
그 디렉터리는 미리 Path를 설정해 주었으므로 cmd 창에서 현재 디렉터리를 이동시키지 않고
곧 바로 named.exe를 실행할 수 있습니다.
[시작]-[실행]-cmd 입력하여 cmd 창을 열어서 named.exe -g 라는 명령어를 입력하고 Enter 키를 치면
아래와 같은 실행 상태가 보여 지고 C:\Documents and Settings\hats>라는 프롬프트가 표시되지 않은 채로
맨 아래에 커서가 깜박거리면서 named 데몬이 실행됩니다.
명령 프롬프트(cmd) 창(에러없이 실행된 예)
C:\Documents and Settings\hats>named -g
30-4-2007 13:58:28.986 starting BIND 9.4.0 -g
30-4-2007 13:58:29.002 found 2 CPUs, using 2 worker threads
30-4-2007 13:58:29.002 loading configuration from 'C:\APM_Setup\Server\DNS\etc\named.conf'
30-4-2007 13:58:29.002 listening on IPv4 interface Loopback Interface 1, 127.0.0.1#53
30-4-2007 13:58:29.002 listening on IPv4 interface TCP/IP Interface 2, 192.168.2.12#53
30-4-2007 13:58:29.017 automatic empty zone: 127.IN-ADDR.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 254.169.IN-ADDR.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 2.0.192.IN-ADDR.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
.0.0.0.0.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
.0.0.0.0.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: D.F.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 8.E.F.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: 9.E.F.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: A.E.F.IP6.ARPA
30-4-2007 13:58:29.017 automatic empty zone: B.E.F.IP6.ARPA
30-4-2007 13:58:29.033 command channel listening on 127.0.0.1#953
30-4-2007 13:58:29.033 ignoring config file logging statement due to -g option
30-4-2007 13:58:29.049 zone 0.0.127.in-addr.arpa/IN: loaded serial 1997022700
30-4-2007 13:58:29.049 zone localhost/IN: loaded serial 42
30-4-2007 13:58:29.049 zone jobdahan.dnip.net/IN: loaded serial 2007042710
30-4-2007 13:58:29.049 running
_
실행 상태를 보고 에러가 있는지 확인합니다. 만약 에러가 있으면 그 메시지를 확인하시고 설정 파일을 꼼꼼히 확인해 주시기
바랍니다. 위의 경우는 에러가 없이 실행된 상태의 한 예입니다.
[주의] 이 때 cmd 창을 닫으면 named 데몬의 실행이 중지되어 버립니다.
그러므로 동작 테스트가 끝날 때까지 반드시 cmd 창을 닫지 않도록 합니다.
커서가 깜박거리고 있는 그대로 그냥 놔 두십시오.^^;
[참고] 분명 모든 구문을 이상 없이 입력해 주었는데도 zone 파일을 정상적으로 읽어 들이지 못해 동작이 되지 않는 경우가
있을 수 있습니다. 아마 텍스트 에디터로 편집하면서 파일의 끝에 들어가는 보이지 않는 코드 때문이지 않았는지 짐작만 할
뿐입니다. 그렇지만 스트레스는 받지 마십시오. 해결 방법이 없겠습니까?
아래와 같은 에러 메시지가 나올 경우에는 해당되는 파일을 아예 삭제하시고,
에러난 파일을 이번에는 메모장을 이용하여 처음부터 다시 입력하여 만드시길 바랍니다.
named.local:11: file does not end with newlinedns_rdata_fromtext: jobdahan.dnip.net.zone:17: unexpected end of input
one jobdahan.dnip.net/IN: loading from master file jobdahan.dnip.net.zone failed: unexpected end of input
저도 처음 DNS 서버 구축할 때 이 것 때문에 스트레스 엄청 받았습니다.
혹시라도 설정 파일 내용을 이상 없이 입력했는데도 에러 메시지가 나올 경우 댓글로 에러 메시지와 함께
에러가 발생된 설정파일 내용도 올려 주시면 같이 해결해 보기로 하겠습니다.
2) named 데몬 프로세스 확인
에러가 없을 경우 [Ctrl+Alt+Del] 키를 눌러서 Windows 작업관리자 창을 연 다음
[프로세스] 탭을 클릭하여 아래 그림과 같이 named.exe가 실행되고 있는지 확인합니다.
3) 네임서버 질의 명령어 nslookup으로 확인
named 데몬이 동작되고 있음을 확인했으니 네임서버 질의 명령어(nslookup)를 이용해서
서브 도메인의 IP 주소를 확인해 볼 차례입니다.
[시작]-[실행]-cmd 입력하여 cmd 창을 하나 더 열어 놓습니다.
(왜냐구요? 아까 열어 놓았던 cmd 창은 named 데몬을 실행 중인데 그 창에서 다른 명령을 실행시키기 위해 프롬프트가
나오게 하려면 named를 중지시켜야 하고, 글케되믄 named 동작을 확인해 볼 수 없게 되기 땜시...)
새로 열린 cmd 창에서 아래와 같이 nslookup[Enter]을 입력하여 nslookup 모드로 들어갑니다.
프롬프트가>로 바뀌었을 것입니다.
이제 생성시킨 서브 도메인들을 각각 입력하여 질의 했을 때 IP 주소가 표시되면
그 주소가 위에서 작성했던 zone 파일인 jobdahan.dnip.net.zone에서 설정했던 주소인지 확인합니다.
210.95.205.15 이면 정상적으로 잘 설정되어 동작되고 있는 것입니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats>nslookup
Default Server: cns3.bora.net
Address: 203.248.252.2> www.jobdahan.dnip.net
Server: cns3.bora.net
Address: 203.248.252.2Name: www.jobdahan.dnip.net
Address: 210.95.205.15> jobdahan.dnip.net
Server: cns3.bora.net
Address: 203.248.252.2Name: jobdahan.dnip.net
Address: 210.95.205.15> mail.jobdahan.dnip.net
Server: cns3.bora.net
Address: 203.248.252.2Name: mail.jobdahan.dnip.net
Address: 210.95.205.15> ftp.jobdahan.dnip.net
Server: cns3.bora.net
Address: 203.248.252.2Name: ftp.jobdahan.dnip.net
Address: 210.95.205.15> shop.jobdahan.dnip.net
Server: cns3.bora.net
Address: 203.248.252.2Name: shop.jobdahan.dnip.net
> exit
Address: 210.95.205.15
C:\Documents and Settings\hats> _
확인이 끝났으면 exit 명령으로 nslookup 모드를 빠져 나옵니다.
4) ping 명령으로 전송 응답 테스트
이 번에는 설정된 도메인으로 패킷 데이터(Packet Data)를 보내고 그 응답 상태를 확인하기 위해 방금 nslookup 명령을
사용했던 cmd 창에서 ping 서브도메인[Enter]의 명령 형식으로 각 도메인들을 테스트합니다.
nslookup으로 확인이 잘 되었다면 ping 테스트 결과도 정상적일 것입니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats>ping jobdahan.dnip.net
Pinging jobdahan.dnip.net [210.95.205.15] with 32 bytes of data:
Reply from 210.95.205.15: bytes=32 time=1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255Ping statistics for 210.95.205.15:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0msC:\Documents and Settings\hats>ping www.jobdahan.dnip.net
Pinging www.jobdahan.dnip.net [210.95.205.15] with 32 bytes of data:
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255Ping statistics for 210.95.205.15:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0msC:\Documents and Settings\hats>ping shop.jobdahan.dnip.net
Pinging shop.jobdahan.dnip.net [210.95.205.15] with 32 bytes of data:
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255
Reply from 210.95.205.15: bytes=32 time<1ms TTL=255Ping statistics for 210.95.205.15:
C:\Documents and Settings\hats> _
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
ping 검사 결과 모두 Packets: Sent = 4, Received = 4, Lost = 0 (0% loss) 임을 알 수 있습니다.
즉, 4개의 패킷 데이터를 보내서 4개 모두 받아 손실이 0 이라는 의미입니다.
여기의 예에서는 3개 도메인에 대해서만 확인해 보았지만 여러분들은 설정한 서브 도메인 모두 확인해 보시기 바랍니다.
이제 DNS 서버(BIND9)의 동작 확인이 끝났으니 cmd 창을 두 개 모두 닫아도 좋습니다.
named가 실행되었던 cmd 창을 닫은 다음
Windows 작업관리자 창의 [프로세스] 탭을 보면 named 데몬의 실행이 중지되어 사라지고 없음을 알 수 있습니다.
자, 지금까지의 작업이 순조롭게 잘 되었습니까?
혹시라도 문제가 있으면 글을 올려 주시기 바랍니다.
작업이 잘 되었다면 이제는 임시가 아닌 정상적인 서비스가 되게 설정할 차례입니다.
08) IP 주소가 변경되었을 때의 DNS 서버관리 (0) | 2010.03.19 |
---|---|
07) BIND9의 named 데몬을 서비스에 등록하기 (0) | 2010.03.19 |
05) 개별 도메인 zone 파일 만들기 (1) | 2010.03.19 |
04) named.ca, localhost.zone, named.local 파일 만들기 (0) | 2010.03.19 |
03) named.conf 파일 만들기 (0) | 2010.03.19 |
설정 파일의 마지막으로 개별 도메인에 대한 zone 파일을 만들어 주어야 합니다.
만들 zone 파일의 이름은 zone "jobdahan.dnip.net"에서 정의한 zone 이름(Zone Name)에 “.zone"을 붙여 주는 것이
일반적인 방법입니다.
물론 이 zone 파일 역시 \etc 디렉터리 즉, C:\APM_Setup\Server\DNS\etc\ 디렉터리에 위치하고 있어야 합니다.
named.conf 파일의 options 블록에서 directory "C:\APM_Setup\Server\DNS\etc";로 정의했기 때문이지요.
바로 이 zone 파일에서 실제 사용하게 되는 도메인과 서브 도메인들을 설정해 주게 됩니다.
도메인 설정의 핵심이라고 할 수 있겠지요?
그래서 이 부분은 조금 더 자세하게 설명하기로 하겠습니다.
앞에서 설명한 named.conf 파일의 맨 아래 부분에 다음과 같은 zone 블록이 있었을 것입니다.
zone "jobdahan.dnip.net" IN {
type master;
file "jobdahan.dnip.net.zone";
allow-update { none; };
};
위의 구문에서 file "jobdahan.dnip.net.zone";은 jobdahan.dnip.net.zone 파일로 네임 서비스를 하겠다는 설정이므로
아래의 설명과 같은 내용의 jobdahan.dnip.net.zone 파일을 만들어 주어야 합니다.
[ 예 1] C:\APM_Setup\Server\DNS\etc\jobdahan.dnip.net.zone 파일의 내용
$TTL 43200
@ IN SOA ns.jobdahan.dnip.net. root.jobdahan.dnip.net. (
2007042710 ; 시리얼 값 (년월일시간)으로 대부분 셋팅
3H ; 2차 네임서버가 1차 네임서버에 접속하는 시간
15M ; 접속 실패 시 다시 시도할 시간 간격
1W ; 1차 네임서버에서 데이터가 없다면 1주 이후에 지워진다.
1D ) ; 위에서 설정한 TTL 값과 같은 의미
;
; Name Server
IN NS ns.jobdahan.dnip.net. ; 도메인을 소유한 DNS의 도메인
IN MX 10 mail.jobdahan.dnip.net. ; 메일을 보낼 도메인 또는 주소
IN A 210.95.205.15 ; 도메인이 찾아갈 IP 주소
;
; Host name
ns IN A 210.95.205.15 ;
;
; Virtual Host
www IN A 210.95.205.15 ; www.도메인이 찾아갈 IP주소
mail IN A 210.95.205.15 ; 메일서버 아이피
ftp IN A 210.95.205.15 ; FTP서버 아이피
* IN A 210.95.205.15 ; 모든 서브 도메인이 찾아갈 서버 ip 주소
다음은 위의 내용에 대한 설명입니다.
a) SOA ns.jobdahan.dnip.net. : 해당 도메인(ORIGIN : jobdahan.dnip.net)에 대하여 이 곳에 설정한 네임서버
(ns.jobdahan.dnip.net : DNIP 사이트에서 무료 서비스 받은 도메인)가 모든 정보를 가지고 있음을 선언하고 있습니다.
도메인 끝 부분에 마침표 “.”을 붙이고 있는 것에 유의하십시오.
b) root.jobdahan.dnip.net. : jobdahan.dnip.net이라는 도메인의 관리자 Email 주소에 해당합니다.
이 구문은 root@jobdahan.dnip.net을 의미하는 것으로 @기호 대신에 .(dot)을 사용하여
root.jobdahan.dnip.net.으로 입력합니다.
c) IN NS ns.jobdahan.dnip.net.;
해당 도메인(jobdahan.dnip.net)의 네임서버(ns.jobdahan.dnip.net)를 지정하는 곳입니다.
d)IN MX 10 mail.jobdahan.dnip.net.;
MX는 Mail eXchanger의 약어로서 해당 도메인(jobdahan.dnip.net)의 메일서버를 지정하는 곳입니다.
(지금은 메일서버가 구축되어 있지 않아 이 부분은 삭제해도 되지만 나중에 메일서버를 사용하게 될 때에는
삽입하여야 합니다.)
e) IN A 210.95.205.15 ;
해당 도메인(jobdahan.dnip.net)의 IP 주소가 210.95.205.15(자신의 컴퓨터 외부 인터넷 연결 IP 주소)임을 설정합니다.
f) ns IN A 210.95.205.15 ;
ns.jobdahan.dnip.net의 IP 주소가 210.95.205.15임을 설정합니다.
g) 서브 도메인 설정 ~ 각 서브 도메인들에 해당하는 IP 주소를 설정합니다.
www IN A 210.95.205.15 ;
mail IN A 210.95.205.15 ;
ftp IN A 210.95.205.15 ;
* IN A 210.95.205.15 ;ㅇ www IN A 210.95.205.15; : www.jobdahan.dnip.net의 IP 주소가 210.95.205.15 임을 설정합니다.
ㅇ mail IN A 210.95.205.15; : mail.jobdahan.dnip.net의 IP 주소가 210.95.205.15 임을 설정합니다.
(이 부분은 현재 메일서버를 사용하고 있지 않으므로 사용하지 않을 것이지만 나중에 메일서버를 사용하게 될 때에는
삽입하여야 합니다.)ㅇ ftp IN A 210.95.205.15; : ftp.jobdahan.dnip.net의 IP 주소가 210.95.205.15 임을 설정합니다.
(이 부분 역시 반드시 들어가야 할 부분은 아니며 ftp.jobdahan.dnip.net이라는 도메인이 필요할 경우에 삽입하면
됩니다.)ㅇ * IN A 210.95.205.15; : 앞에서 정의하지 않은 나머지 모든(*) 서브 도메인들의 IP 주소가 210.95.205.15임을 설정합니다.
이 방법은 특정 이름의 도메인이 정해지지 않았을 경우 무조건 기본 도메인으로 사용하고 있는 jobdahan.dnip.net으로
매핑(mapping) 처리되도록 한다든지, 또는 오타로 인한 도메인은 특정 도메인으로 처리하도록 할 때에 유용한 방법이
될 수 있을 것입니다.(여기에서는 사용하지 않도록 하겠습니다.)
위의 설명을 참고하여 자신의 환경에 맞게 내용을 메모장이나 텍스트 에디터로 작성한 다음 이 파일 역시 다른 zone 파일들이
있는 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 jobdahan.dnip.net.zone 이라는 파일명으로 저장합니다.
(작성할 때 아래의 [예 2] 내용을 샘플로 하시기 바라며, 주홍색 글자만 수정하시면 될 것입니다.)
[작성 시 주의사항] 1. 도메인 뒤에 붙어 있는 .(점)을 필히 입력하시고,
2. 모든 공백 라인은 “;” 문자로 주석 처리하시길 바랍니다.
여기에서는 ORIGIN 인 jobdahan.dnip.net을 비롯하여 www.jobdahan.dnip.net, mail.jobdahan.dnip.net,
ftp.jobdahan.dnip.net, shop.jobdahan.dnip.net이라는 jobdahan.dnip.net의 서브 도메인들을 생성하게 하는
jobdahan.dnip.net.zone 파일 작성하는 예를 들어 보겠습니다.
[ 예 2] C:\APM_Setup\Server\DNS\etc\jobdahan.dnip.net.zone 파일의 내용
$TTL 43200
@ IN SOA ns.jobdahan.dnip.net. root.jobdahan.dnip.net. (
2007042710 ; 시리얼 값 (년월일시간)으로 대부분 셋팅
3H ; 2차 네임서버가 1차 네임서버에 접속하는 시간
15M ; 접속 실패 시 다시 시도할 시간 간격
1W ; 1차 네임서버에서 데이터가 없다면 1주 이후에 지워진다.
1D ) ; 위에서 설정한 TTL 값과 같은 의미
; Name Server
IN NS ns.jobdahan.dnip.net. ; 도메인을 소유한 DNS의 도메인
IN A 210.95.205.15 ; 도메인이 찾아갈 IP 주소
; Host name
ns IN A 210.95.205.15 ;
; Virtual Host
www IN A 210.95.205.15 ; www.도메인이 찾아갈 IP주소
mail IN A 210.95.205.15 ; mail.도메인이 찾아갈 IP주소
ftp IN A 210.95.205.15 ; ftp.도메인이 찾아갈 IP주소
shop IN A 210.95.205.15 ; shop.도메인이 찾아갈 IP주소
[ 개별도메인 zone 파일의 유효성 검사(zone file validity checking) ]
BIND9의 동작 테스트를 하기 전에 먼저 etc 디렉터리에 있는 jobdahan.dnip.net.zone 파일이 유효한지 검사해 보기로
하겠습니다.
이 작업은 DNS 서버 구축의 성공 여부를 가늠할 수 있는 마지막 과정이기 때문에 이 검사에서 에러 메시지가
하나도 나오지 않아야만 합니다. 만약 에러 메시지가 나오면 그 에러메시지 내용을 잘 살펴본 후 반드시 그 부분을
해결하시기 바랍니다.
[시작]-[실행]-cmd 입력하여 cmd 창을 열고, 현재의 디렉터리를 C:\APM_Setup\Server\DNS\etc\ 디렉터리로
이동시킨 후 다음 형식과 같은 명령을 입력합니다.
형식 : named-checkzone {zonename} {filename}
예) named-checkzone jobdahan.dnip.net jobdahan.dnip.net.zone
아래와 같이 에러 메시지가 없이 표시되면 모든 설정이 잘 되었음을 나타냅니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats>cd\APM_Setup\Server\DNS\etc[Enter]
C:\APM_Setup\Server\DNS\etc>named-checkzone jobdahan.dnip.net jobdahan.dnip.net.zone[Enter]
zone jobdahan.dnip.net/IN: loaded serial 2007042710
OK
C:\APM_Setup\Server\DNS\etc>
다음은 에러 메시지의 예입니다. 참고하시기 바랍니다.
에러 메시지 [예 1]
C:\APM_Setup\Server\DNS\etc>named-checkzone jobdahan.dnip.net jobdahan.dnip.net.zone
zone jobdahan.dnip.net/IN: NS 'ns.jobdahan.dnip.net.jobdahan.dnip.net' has no address records (A or
AAAA)
zone jobdahan.dnip.net/IN: loaded serial 2007042710
OK[설명] IN NS ns.jobdahan.dnip.net 구문에서 끝부분에 점(.)이 없기 때문에 표시되는 메시지
에러 메시지 [예 2]
C:\APM_Setup\Server\DNS\etc>named-checkzone jobdahan.dnip.net jobdahan.dnip.net.zone
zone jobdahan.dnip.net/IN: NS 'ns.jobdahan.dnip.net' has no address records (A or AAAA)
zone jobdahan.dnip.net/IN: loaded serial 2007042710
OK[설명] ns IN A 210.95.205.15 ; 라는 구문이 없기 때문에 표시되는 메시지
에러 메시지 [예 3]
C:\APM_Setup\Server\DNS\etc>named-checkzone jobdahan.dnip.net jobdahan.dnip.net.zone
jobdahan.dnip.net.zone:20: pc_book.jobdahan.dnip.net: bad owner name (check-names)
zone jobdahan.dnip.net/IN: loaded serial 2007042710
OK[설명] zone 파일의 20번 행에서 pc_book IN A 210.95.205.15 ;이라 설정하여 서브 도메인 이름으로 사용할 수 없는 언더바(underbar, “_”)를 사용했기 때문에 표시되는 메시지. 하이픈(hyphen, "-")은 사용 가능함
이제 마지막 설정 파일인 jobdahan.dnip.net.zone 파일이 추가 되었습니다.
C:\APM_Setup\Server\DNS\etc\ 디렉터리에 모두 7개의 설정 파일들이 있을 것입니다.
수고 많이 하셨습니다...!
07) BIND9의 named 데몬을 서비스에 등록하기 (0) | 2010.03.19 |
---|---|
06) BIND9 동작 테스트 (0) | 2010.03.19 |
04) named.ca, localhost.zone, named.local 파일 만들기 (0) | 2010.03.19 |
03) named.conf 파일 만들기 (0) | 2010.03.19 |
02) [DNS for XP] BIND9에서 named.conf, zone 파일 설정 (0) | 2010.03.19 |
a) named.ca 파일 만들기
강좌 첫 부분 DNS 개념에서 설명했듯이 모든 네임서버는 반드시 최상위 도메인인 루트도메인에 대한 정보를
가지고 있어야 하는데 바로 named.ca 파일에 루트도메인에 대한 정보가 들어가 있어야 합니다.
아래 링크된 INTERNIC 사이트에 접속해 보면 여러 개의 파일들이 보이는데, 그 중에서 루트도메인에 대한 정보가
들어가 있는 named.root 파일만을 다운로드하여 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 저장 한 뒤에
파일명을 named.ca로 바꾸어주면 됩니다.(클릭한 뒤 쪼께 기다리셔야 창이 열립니다...-.-;)
루트도메인파일 다운로드 링크 : ftp://ftp.rs.internic.net/domain/
루트도메인 파일(named.root => named.ca)은 1년에 2번 정도 위의 URL에서 다운받아 업그레이드 해주는 것이 좋습니다.
b) localhost.zone 파일 생성
localhost라는 도메인의 IP 주소는 127.0.0.1임을 설정한 파일로써
이 주소는 외부가 아닌 내부 즉, 자기 자신을 가리키는 것으로써 루프 백(loop-back)을 의미합니다.
각 지시자들과 항목들에 대한 자세한 설명은 리눅스 전문서적의 도메인네임서버 항목을 참고하시기 바랍니다.
어느 네임서버에서나 localhost는 127.0.0.1이라는 IP 주소를 가리켜야 하므로 아래의 내용과 똑같이 입력하여
localhost.zone 파일을 작성하면 됩니다.
작성을 마친 다음 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 localhost.zone 이라는 파일명으로 저장합니다.
C:\APM_Setup\Server\DNS\etc\localhost.zone 파일의 내용
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
[ localhost.zone 파일의 유효성 확인 ]
파일 내용 입력 과정에서 실수하지 않았는지 named-checkzone.exe 유틸리티를 이용하여
내용의 유효성을 검사해 보기로 합니다.
cmd 창을 열고 cd 명령으로 현재 디렉터리를 유효성 검사 대상 파일 localhost.zone이 있는
C:\APM_Setup\Server\DNS\etc로 이동시킨 후 아래와 같은 명령으로 localhost.zone 파일의 유효성을 검사합니다.
현재 디렉터리를 \etc 디렉터리로 이동시키는 명령 cd C:\APM_Setup\Server\DNS\etc(Enter)
( 현재 디렉터리를 \etc 디렉터리로 이동시키지 않으면 localhost.zone 파일이 존재하고 있는 경로를 다음과 같이 명령에
포함시켜 입력해야 되겠지요?
C:\Documents and Settings\hats>named-checkzone localhost C:\APM_Setup\Server\DNS\etc\localhost.zone )
다른 에러 메시지가 나오지 않고 아래와 같이 표시되면 정상적으로 잘 작성되었음을 나타냅니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats>cd C:\APM_Setup\Server\DNS\etc
C:\APM_Setup\Server\DNS\etc>named-checkzone localhost localhost.zone
zone localhost/IN: loaded serial 42
OK
c) named.local 파일 생성
localhost 도메인의 Inverse Domain에 대한 정보를 설정한 파일로써
IP 127.0.0.1은 localhost 도메인을 가리키게 설정하고 있습니다.
각 지시자들과 항목들에 대한 자세한 설명은 리눅스 전문서적의 도메인네임서버 항목을 참고하시기 바랍니다.
이 파일 역시 별도로 수정할 필요가 없으며, 이 내용 그대로 입력하여 작성한 뒤
C:\APM_Setup\Server\DNS\etc\ 디렉터리에 named.local 이라는 파일명으로 저장합니다.
(주의 : localhost 뒤에 있는 “.”을 반드시 넣도록 하십시오.)
C:\APM_Setup\Server\DNS\etc\named.local 파일의 내용
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
1 IN PTR localhost.
[ named.local 파일의 유효성 확인 ]
cmd 창을 열고 cd 명령으로 현재 디렉터리를 C:\APM_Setup\Server\DNS\etc로 이동시킨 후
다음과 같은 명령으로 named.local 파일의 유효성을 검사합니다.
아래와 같이 표시되면 정상적으로 잘 작성되었음을 나타냅니다.
명령 프롬프트(cmd) 창
이제 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 named.ca, localhost.zone, named.local 파일 3개가 추가되어
6개가 되었을 것입니다.
앞으로 개별 도메인 설정 zone 파일(예 : jobdahan.dnip.net.zone) 1개만 더 만들면 됩니다.
06) BIND9 동작 테스트 (0) | 2010.03.19 |
---|---|
05) 개별 도메인 zone 파일 만들기 (1) | 2010.03.19 |
03) named.conf 파일 만들기 (0) | 2010.03.19 |
02) [DNS for XP] BIND9에서 named.conf, zone 파일 설정 (0) | 2010.03.19 |
01) XP에 DNS 설치 (0) | 2010.03.19 |
named.conf 파일은 DNS 서버 데몬인 named의 기본 설정 파일입니다.
즉, 각종 설정 파일들이 어디에 있는지,
rndc로 named 제어를 허용 할 것인지 여부와 key 값은 어떻게 되는지,
루트도메인(.)들을 지정하고 있는 파일은 무엇인지,
localhost의 IP 주소를 지정한 파일은 무엇인지,
또 127.0.0.1이 가리키는 도메인을 설정한 파일은 무엇인지,
하부 도메인(서브 도메인)들이 가리키고 있는 IP 주소를 지정한 파일은 무엇인지를
기록해둔 파일입니다.
이 파일은 rndc.key, rndc.conf 파일과 같이 자동 생성되는 것이 아니라
여러분이 사용하고자 하는 네임서버의 용도에 맞게 메모장이나 텍스트 에디터를 이용하여 직접 만들어 주어야 합니다.
아래의 named.conf 파일 샘플을 참고하여 메모장이나 텍스트 에디터(Edit Plus, Ultra Edit 등)로
자신의 컴퓨터 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 named.conf 파일을 만들기 바랍니다.
이 때 유의할 점은 공백 한 자만을 제외하고 두 자 이상은 탭(Tab) 키를 이용하여 입력하시기 바라며 주석문은 // 입니다.
한글로 설명된 주석 부분(청색 글자)은 모두 입력하지 마시고, 주홍색 글자만 자신의 환경에 맞게 수정하고
나머지는 그대로 입력하시면 됩니다.
.(dot), ;(semicolon) 하나라도 잘못 입력하면 에러가 발생하게 되니 유의해서 작성하시기 바랍니다.
C:\APM_Setup\Server\DNS\etc\named.conf 파일의 내용
options {
directory "C:\APM_Setup\Server\DNS\etc"; // 네임서버의 zone 파일들이 위치한 경로
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndc-key; }; // 로컬(localhost, 127.0.0.1)에서 인증키(rncd-key)를 이용해
}; // named 데몬 제어를 허용한다는 설정
zone "." IN {
type hint;
file "named.ca"; // 이 네임서버의 루트도메인(.)에 대한 정보는 named.ca라는 파일에 있다는 설정
}; // 그러므로 위의 directory에서 지정한 경로에 named.ca 파일이 존재해야 됨
zone "localhost" IN {
type master;
file "localhost.zone"; // 이 네임서버의 localhost 도메인에 대한 정보는 localhost.zone 파일에 있다는 설정
allow-update { none; }; // etc 디렉터리에 localhost.zone 파일이 존재해야 됨
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local"; // localhost의 Inverse Domain에 대한 정보는 named.local 파일에 있다는 설정
allow-update { none; }; // named.local 파일 역시 /etc 디렉터리에 존재해야 됨
};
include "C:\APM_Setup\Server\DNS\etc\rndc.key";
// rndc.key 파일이 존재하고 있는 경로와 파일명
zone "jobdahan.dnip.net" IN { // 여기에서 jobdahan.dnip.net은 zone Name 에 해당하며, zone Name은
type master; // www.dnip.net 사이트에서 무료 서비스 받은 도메인에서 ns를 제외한 도메인 명
file "jobdahan.dnip.net.zone";
// 서비스 받고 있는 도메인에서 ns를 제외하고 확장자로 .zone을 붙인 명칭 사용이 일반적임
// jobdahan.dnip.net.zone 파일을 zone 파일로 하여 네임서비스를 하겠다는 설정
allow-update { key "rndc-key"; };
}; //rndc-key 값으로jobdahan.dnip.net.zone 파일의 업데이트를 허용하겠다는 설정
[ named.conf 파일의 문법 확인 ]
자, 이제 named.conf 파일을 다 작성하였으니 문법에 틀림이 없는지 검사해 봅시다.
이 문법이 틀리면 DNS 서버가 아예 동작하지 않게 됩니다. 그 만큼 중요한 것이므로 문법 검사하는 툴(tool)까지 있는 것
아니겠습니까?
named.conf 내용의 문법을 검사해주는 유틸리티는 C:\APM_Setup\Server\DNS\bin\named-checkconf.exe 파일
입니다. 검사하는 방법은 아래와 같으며, 이상이 있을 때만 잘못된 곳을 알려주는 메시지가 표시되고 이상이 없을 때는
아무런 표시가 되지 않습니다.
명령 프롬프트(cmd) 창
C:\Documents and Settings\hats>named-checkconf C:\APM_Setup\Server\DNS\etc\named.conf
C:\Documents and Settings\hats>_
(named.conf 파일의 문법이 틀리지 않았을 경우 임)
에러 메시지가 표시되면 그 내용에 따라 named.conf 파일을 수정하고, 아무런 표시가 없을 때까지 검사합니다.
[ 에러 메시지 예 ]
named.conf 파일의 35행 문장 끝에 ';'이 없다는 메시지입니다.
즉,
allow-update { key "rndc-key"; };
}
으로 되어 있다는 내용이므로 }를 }; 로 수정하고 다시 검사해 봅니다.
named.conf 파일의 7행에 입력되어 있는 rndckey 키를 알 수 없다는 메시지입니다.
rndc.key 파일의 내용을 확인해 보면 key 이름이 key "rndc-key"로 정의되어 있음을 알 수 있습니다.
named.conf의 7행 inet 127.0.0.1 allow { localhost; } keys { rndckey; };의 rndckey를 rndc-key로 수정하고
다시 검사해 봅니다.
이제 C:\APM_Setup\Server\DNS\etc\ 디렉터리에 rndc.key, rndc.conf, named.conf 파일 3개가 되었을 것입니다.
앞으로 4개의 파일이 더 있어야 합니다.
05) 개별 도메인 zone 파일 만들기 (1) | 2010.03.19 |
---|---|
04) named.ca, localhost.zone, named.local 파일 만들기 (0) | 2010.03.19 |
02) [DNS for XP] BIND9에서 named.conf, zone 파일 설정 (0) | 2010.03.19 |
01) XP에 DNS 설치 (0) | 2010.03.19 |
IIS, FTP 설치 (0) | 2010.03.19 |
named.ca
========================================================
ftp://ftp.rs.internic.net/domain으로 접속한다.
named.cache 파일을 받아서 확장자를 named.ca로 바꿔준다.
접속이 잘 되지 않으면 첨부 파일을 사용한다.
named.zip - Last update : 2004년 01월 28일 ← 첨부파일========================================================
☆ named.conf
- 빨간색 부분을 변경하여 저장
========================================================
options {
directory "c:\dns\etc"; <- 설치 경로명
};
04) named.ca, localhost.zone, named.local 파일 만들기 (0) | 2010.03.19 |
---|---|
03) named.conf 파일 만들기 (0) | 2010.03.19 |
01) XP에 DNS 설치 (0) | 2010.03.19 |
IIS, FTP 설치 (0) | 2010.03.19 |
VS2008로 작성한 프로젝트를 VS2005열기 (0) | 2010.03.18 |
☆ 1. 다운로드(http://www.isc.org)
- 아래 그림처럼 윈도용 최신버전을 다운받는다.
[rndc.key생성 rndc.conf설정]
- rndc.key 생성
- 시작 -> 실행 -> cmd 도스창을 띄운후 아래와 같이 실행한다.
03) named.conf 파일 만들기 (0) | 2010.03.19 |
---|---|
02) [DNS for XP] BIND9에서 named.conf, zone 파일 설정 (0) | 2010.03.19 |
IIS, FTP 설치 (0) | 2010.03.19 |
VS2008로 작성한 프로젝트를 VS2005열기 (0) | 2010.03.18 |
Visual Studio 2008 설정 (0) | 2010.03.18 |
여기에서는 내 PC가 아닌 다른 PC에서 작업을 하는 경우에 파일 복사 같은 것이 아니라 ftp를 이용하여 간단하게 파일을 전송해서 사용을 하는 방식으로 사용을 한다. 그럼 하나 하나 설정을 하면서 살펴보기로 한다.
먼저 [제어판]->[프로그램 추가 삭제]->[windows 구성 요소 추가 삭제]->[인터넷 정보 서비스[IIS]]을 선택을 한다. 그럼 아래 그림과 같은 화면이 된다.
[그림 2] IIS 선택 이미지
그 후에 자세히를 누르면 아래 그림과 같은 이미지가 나타난다.
[그림 3] IIS 자세히 선택 화면
[ 그림 3]에서와 같이 File Transfer Protocol(FTP) 서비스와 World Wide Web 서비스를 선택을 한다. 그러면 아마 Windows XP CD 넣으라는 화면이 나오는데 CD넣고 설치를 하면 된다. 일단 설치를 한 후에 IP로 http를 해본다 되는지 확인을 하기 위해서 그러면 아마 방화벽 이런게 없다면 작업중이라는 화면이 보일 것이다. 만약 방화벽이 설치되어 있어서 연결이 안된다면 다음과 같은 방법으로 해결을 하면 된다.
[제어판] -> [방화벽] ->[일반 탭] 에서 사용 안함을 선택을 한다. 또한 하나의 Tip이 있는데 이건 네이버 블로그 나도 HD영상을 갖고 싶다에서 찾은 방식인데 [제어판]->[방화벽]-[고급]-[네트워크 설정]-[설정] 선택을 해서 아래 그림과 같이 선택을 해주는 방법도 있다.
[그림 4] 방화벽 고급 탭의 고급 설정
일단 여기까지가 기본 설정이다. 그 다음에 설정을 해주어야 하는게 바로 FTP 설정인데 이거 상당히 귀찮코 빡세다. 젠장이다.
먼저 [제어판] – [관리 도구] – [인터넷 정보 서비스] – [FTP 사이트] –[기본 FTP 사이트] 에서 속성을 누른 후에 보안 계정 탭에서 익명 연결 허용을 선택 해제를 한 뒤 적용을 누른 후 확인을 누른다. 그림은 아래와 같다
.
[그림 5] 익명 연결 허용 삭제
이제 폴더 옵션에서 모든 사용자에세 동일한 폴더 공유 지정을 해제를 해 준다. 이제 ftp를 기본으로 사용할 폴더로 이동을 하여 속성을 누른 후에 공유 폴더를 설정을 하면 된다. 그림은 아래와 같다.
[그림 6] 사용자 권한
위의 그림에서 만약 계정을 추가하고 싶으면 추가를 해주면 된다. 또 한가지 파일 전송 오류가 나는 경우에는 용량 제한이 걸려있는지 확인을 해 보고 또한 FTP 서버 폴더로 사용할 폴더의 권한을 확인을 해 볼 필요가 있다.
02) [DNS for XP] BIND9에서 named.conf, zone 파일 설정 (0) | 2010.03.19 |
---|---|
01) XP에 DNS 설치 (0) | 2010.03.19 |
VS2008로 작성한 프로젝트를 VS2005열기 (0) | 2010.03.18 |
Visual Studio 2008 설정 (0) | 2010.03.18 |
NSIS 값 읽어오기 (0) | 2010.03.18 |
프로젝트명.sln 파일을 텍스트 에디터로 연후.
------------------------------------------------------------------------------------
Microsoft Visual Studio Solution File, Format Version 10.00 <- Microsoft Visual Studio Solution File, Format Version 9.00 으로 변경
# Visual Studio 2008 <- # Visual Studio 2005 으로 변경
------------------------------------------------------------------------------------
프로젝트명.csproj 파일을 동일하게 텍스트 에디터로 연후
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
삭제
하단에 Project="$(MSBuildToolsPath) -> Project="$(MSBuildBinPath) 으로 변경
------------------------------------------------------------------------------------
01) XP에 DNS 설치 (0) | 2010.03.19 |
---|---|
IIS, FTP 설치 (0) | 2010.03.19 |
Visual Studio 2008 설정 (0) | 2010.03.18 |
NSIS 값 읽어오기 (0) | 2010.03.18 |
NSIS 기초지식 (0) | 2010.03.18 |
헐... 예전에 설정 더 해놨었는디..... 어디 간겨ㅠㅠㅠㅠ
이것밖에 없어....ㅋㅋㅋㅋㅋㅋㅋ;;;;;;;;;
1. download the Professor Irvine's assembly source file
2. project.sln open in the \Irvine\Examples\Project_sample
3. 'F7' push compile to Irvine's assembly sourcve
syntax highlighting
1. download the "usertype.dat"
2. copy to "\Program Files\Microsoft Visual Studio 9.0\Common7\IDE"
3. visual studio restart
reference
http://kipirvine.com/asm/gettingStarted/index.htm
IIS, FTP 설치 (0) | 2010.03.19 |
---|---|
VS2008로 작성한 프로젝트를 VS2005열기 (0) | 2010.03.18 |
NSIS 값 읽어오기 (0) | 2010.03.18 |
NSIS 기초지식 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
InstallOptions 는 지정한 값을 읽을때 READ 매크로와 WRITE 매크로를 제공합니다.
문법 -
!insertmacro MUI_INSTALLOPTIONS_READ $VAR "ioFile.ini" "Field #" "Name" !insertmacro MUI_INSTALLOPTIONS_WRITE "ioFile.ini" "Field #" "Name" "Value"
아래의 스크립트는 ffdshow.ini 에서 Field 1 값의 state 값을 읽어옵니다. state 값에는 Field 1 컨트롤의 여러 상태가 저장됩니다(컨트롤이 선택되었는지 여부등). 이 값을 1(선택됨) 과 비교하여 같으면 레지스트리를 입력하고 다르면 2번째 명령으로 내려가 레지스트리 쓰기를 건너뛰게 합니다.
!insertmacro MUI_INSTALLOPTIONS_READ $R0 "ffdshow.ini" "Field 1" "State" ; XviD
StrCmp $R0 "1" 0 +2
WriteRegDWORD HKCU SoftwareGNUffdshow xvid 0x00000001
이정도면 InstallOptions 를 이용해 페이지를 추가하는데 별 문제가 없을 듯 합니다.
더 궁금한 사항이 있으시면 글 남겨주세요.
Function .onInstSuccess
!insertmacro MUI_INSTALLOPTIONS_READ $R0 "test01.ini" "Field 3" "State"
WriteRegStr HKLM "${PRODUCT_PRIMARY_KEY}" "text" "$R0"
FunctionEnd
VS2008로 작성한 프로젝트를 VS2005열기 (0) | 2010.03.18 |
---|---|
Visual Studio 2008 설정 (0) | 2010.03.18 |
NSIS 기초지식 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
라디오버튼 컴포넌트 선택 기능 구현 (0) | 2010.03.18 |
NSIS의 장점 :
파일크기가 작다.
거의대부분의 윈도와 호환된다.
특수한 압축방식으로 최소한의 오버헤드와 따로 자동압축풀림 기능을 사용할 필요가 없습니다.
스크립트 방식으로 인스톨러의 모든 동작을 직접 제어할 수 있습니다.
다국어를 지원합니다.
인터페이스나 대화상자를 편집할 수 있습니다.
필요한 기능은 플러그인으로 추가할 수 있습니다.
웹을 통한 설치, 패치를 지원합니다.
NSIS는 쉽게 하나의 설치마법사에 여러 프로젝트를 통합하거나 라이트, 풀 버전등을 만듭니다.
간단한 NSIS 문법:
NSIS는 기본적으로 간단한 텍스트 파일입니다.
주석 :
";", "#" 이후의 문장은 주석입니다.
/* 와 */ 사이의 문장은 주석입니다.
명령:
명령 (인자)입니다.
예) File "myfile.exe"
플러그인 : 플러그인 이름::명령 (인자)
숫자 :
10진수 - 일반적인 수
16진수 - 앞에0x를 붙입니다.
8진수 - 앞에 0를 붙입니다.
색표현 - HTML 표현방식을 따르지만 앞에 #를 붙이지 않습니다.
문자열 :
'' 와 " 를 모두 사용할 수 있습니다.
"Hi There" -> Hi There
"I''ll be happy" -> I''ll be happy
`And he said to me "I''ll be fucked!"` -> And he said to "I''ll be fucked"
NSIS는 제어문자로 $ 를 사용합니다.
변수 : 변수명 앞에 $를 붙입니다.
- 명령이 긴 경우 명령의 끝에 를 붙인 후 다음 줄에 이어서 적으면 됩니다.
NSIS - Section 이란?
NSIS에 있어서 섹션이란 매우 중요합니다.
섹션은 보통, 다른 설치마법사 제작기에서 다른 이름으로 많이 있습니다.
컴포넌트, 기능(Feature), 구성요소 등으로 말이죠.
이름만 다르고 이들과 하는 일은 같습니다.
즉, 제작자가 어떤 프로그램을 설치하려고 할때 그 프로그램을 구성하는 하나의 구성요소 라고 할 수 있습니다.
파일이 모여서 섹션이 되고 섹션이 모여서 프로그램이 되는거죠.
NSIS - Page 에 대해서...
NSIS로 만들 수 있는 설치마법사 중 대개는 화면에 뭔가 보여주면서 선택을 하게 됩니다. 당연한가요? Page에 관련된 일련의 명령들은 바로 이러한 화면을 제어합니다. 순서, 보여지는 형태, 언어, 동작 등 많은 것들을 제어합니다. 또한, NSIS에서는 NSIS에서 내장해서 자체적으로 제공하는 화면 말고 CustomPage 라고 하여 사용자가 원하는 화면을 만들어서 보여줄 수 있습니다. (InstallOptions 라는 플러그인이 있고, Codec xPack에서 ffdshow 옵션을 설정하는 화면에서 쓰였습니다.)
페이지를 다룰때는 일단 기본적으로 Page, UninstPage(설치제거용) 두가지 명령을 쓰며 Page나 UninstPage의 확장판으로 PageEx라는 명령이 있습니다.
일단 페이지를 만든다고 치면 각 페이지들의 순서를 정해야 할 것입니다. 여기서 NSIS스크립트만의 편리성이 드러납니다. NSIS 스크립트는 위에서 아래로 차례로 순차적으로 실행된다고 언급한 적이 있습니다. 즉, 배열하려는 Page 순서대로 스크립트에서 한줄씩 차례대로 적어주기만 하면 됩니다.
ex) Page license;
Page components
이렇게 적으면 NSIS는 라이센스 화면을 보여주고 다음에 컴포넌트 선택 화면을 보여줍니다.
NSIS에서 자체적으로 제공하는 페이지들.. (license, components, directory, instfiles, uninstConfirm) 입니다. instfiles는 설치/제거 모두에 쓰입니다.
또한 이렇게 순서만 정하면 재미가 없을겁니다. NSIS에서는 이렇게 순서를 정하면서 동시에 간단한 동작이나 형태를 지정해 줄 수 있습니다. 물론, 이렇게 하기위해서는 NSIS의 함수에 대해서 알아야합니다. 또한, Page, UninstPage 의 인자에 대해서도 알아야겠죠.
Page
custom [creator_function] [leave_function] [caption]OR (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
UninstPage
custom [creator_function] [leave_function] [caption]OR (license|components|directory|instfiles|uninstConfirm) [pre_function] [show_function] [leave_function]
입니다.~
질문은 밑에 적어주세요~
Sections
섹션이란 앞에서도 언급했듯이 NSIS란 설치관리자의 핵심을 이루는 것입니다. NSIS는 반드시 하나 이상의 섹션을 포함해야하며 이 섹션들은 아래와 같은 규칙하에 그 밑의 명령들로 관리됩니다.
. 각 섹션은 0개 이상의 명령을 포함합니다. (하나도 없을 수도 있습니다).
. 섹션은 설치마법사에의해 순서대로 실행되며 ComponentText 가 설정되어 있다면 사용자는 각 보이는 섹션을 선택하거나 해제할 수 있습니다.
. 만약 섹션의 이름이 ''Uninstall'' 이거나 섹션 이름앞에 ''un.'' 이라는 접두어를 붙이면 이것은 설치제거때에만 쓰입니다.
- Section Commands
AddSize size_kb
설치관리자에게 현재 섹션이 추가로 ''size_kb'' 키로바이트 만큼 필요하다고 알려줍니다. 이 명령은 오직 섹션에서만 유효합니다.
Section AddSize 500 SectionEnd
Section
[/o] [([!]|[-])section_name] [section index output]
새로운 섹션을 시작합니다. 만약 섹션이름이 빈공간이거나 - 로 시작하면 이 섹션은 숨김 속성을 가져서 사용자에게 보이지 않습니다. 만약 섹션이름이 ''Uninstall'' 이거나 ''un.''으로 시작하면 설치제거 섹션으로 사용됩니다. 섹션 인덱스 출력 변수가 설정되면 이 매개변수는 !defined 매크로에 의해 섹션 인덱스 값이 설정되고 SectionSetText 등의 관리명령에서 사용됩니다. 섹션이름이 !로 시작하면 굵은 글씨로 보이고 /o 를 설정하면 기본적으로 선택해제된 상태가 됩니다.
Section "-hidden section"
SectionEnd
Section # hidden section
SectionEnd
Section "!bold section"
SectionEnd
Section /o "optional"
SectionEnd
Section "install something" SEC_IDX
SectionEnd
SectionEnd
현재 열린 섹션을 닫습니다.
SectionIn
insttype_index [insttype_index] [RO]
이 명령은 현재 섹션이 기본적으로 속하게 될 설치유형을 설정합니다.복합적인 SectionIn 명령은 모두 합해져서 나타납니다. 만약 RO 매개변수를 지정하면 이 섹션은 읽기전용으로 사용자는 상태를 변경할 수 없습니다. 최로 설치 유형은 InstType 명령에 의해 최초 1부터 차례대로 붙어나갑니다.
InstType "full"
InstType "minimal"
Section "a section"
SectionIn 1 2
SectionEnd
Section "another section"
SectionIn 1
SectionEnd
SectionGroup
[/e] Caption [section_group_name index output]
섹셕 그룹이란 섹션들을 포함하는 섹션으로 섹션들을 보기좋게 모아서 나타날 때 사용합니다.섹션 그룹을 설정하며 반드시 SectionGroupEnd 명령으로 닫아야 합니다. 또한 반드시 하나 이상의 섹션을 포함해야 합니다. !로 이름이 시작하면 굵은 글씨체로 나타납니다. /e 를 설정하면 섹션그룹은 펼쳐져서 나타납니다. 만약 섹션이름이 ''un.''으로 시작하면 설치제거 섹션으로 사용됩니다. 섹션 인덱스 출력 변수가 설정되면 이 매개변수는 !defined 매크로에 의해 섹션 인덱스 값이 설정되고 SectionSetText 등의 관리명령에서 사용됩니다.
SectionGroup "some stuff"
Section "a section"
SectionEnd
Section "another section"
SectionEnd
SectionGroupEnd
SectionGroupEnd
섹션그룹을 닫습니다.
Uninstall Section
''Uninstall'' 이라는 특별한 섹션은 설치제거마법사를 생성하기 위해 반드시 만들어야합니다. 이 섹션에서 설치했던 파일, 레지스트리 등을 삭제합니다.
Section "Uninstall"Delete $INSTDIRUninst.exe ; delete self (see explanation below why this works)Delete $INSTDIRmyApp.exeRMDir $INSTDIRDeleteRegKey HKLM SOFTWAREmyApp SectionEnd
제일먼저 Delete 명령으로 설치제거마법사를 삭제합니다. 왜냐하면 설치제거마법사는 윈도 임시 디렉토리로 복사되어 그곳에서 실행되기 때문입니다.설치제거때 $INSTDIR 값은 설치제거마법사가 있는 곳입니다. 반드시 설치마법사가 있는 곳과 같지는 않습니다.
Visual Studio 2008 설정 (0) | 2010.03.18 |
---|---|
NSIS 값 읽어오기 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
라디오버튼 컴포넌트 선택 기능 구현 (0) | 2010.03.18 |
사용자 페이지 추가하기 (0) | 2010.03.18 |
ps. 같은 페이지에 계속 머무르기
이러한페이지체제는기본적으로지정한 함수에 진입해서 MUI_INSTALLOPTIONS_DISPLAY 를 호출하는 순간 화면에 페이지가 나타나고 그 함수안에서 MUI_INSTALLOPTIONS_DISPLAY 다음에 있는 명령들이 끝나면 다음 페이지로 넘어갑니다. 즉 어떤 조건이 되었을때 다시 MUI_INSTALLTOPTIONS_DISPLAY를 호출해주면 됩니다.
예)
${Do}
MUI_INSTALLOPTIONS_DISPLAY_RETURN
pop $R0
${While} $R0 != "success"
이런식으로 하면 $R0 의 값이 "success" 가 아닌동안 게속 돕니다
원본 위치 <http://jgh0721.tistory.com/entry/InstallOptions-2-를-이용하여-사용자-페이지-추가하기>
NSIS 값 읽어오기 (0) | 2010.03.18 |
---|---|
NSIS 기초지식 (0) | 2010.03.18 |
라디오버튼 컴포넌트 선택 기능 구현 (0) | 2010.03.18 |
사용자 페이지 추가하기 (0) | 2010.03.18 |
실행순서 (0) | 2010.03.18 |
NSIS - Section을 선택할 때 라디오버튼 기능을 넣자!
라디오 버튼 기능을 하려면 몇 가지 순서가 있습니다.
1. Sections.nsh 라는 NSIS에서 제공하는 섹션 관리 헤더파일 참조.
2. 섹션에 섹션인덱스 값을 부여한다.
3. .onInit 함수에 섹션의 선택값을 특정 변수에 저장한다. (주로 $1같은 변수..)
4. .selOnChange 에서 매크로를 이용하여 구현한다.
1.일단 기본적으로 Section 관련 내용을 선언해둔 파일을 집어넣어야 합니다.
!include "Sections.nsh"
이걸로 자신의 스크립트안에 섹션 관리 헤더파일을 집어넣습니다.
2.이제 섹션에 섹션 인덱스 값을 부여해야죠
예) Section "fsfds" abc
이렇게 하면 fsfds라는 섹션에 abc라는 섹션인덱스 변수를 설정한 것 입니다.
NSIS는 abc라는 섹션인덱스 변수를 통해 fsfds에 접근하는거죠
abc는 NSIS에서 쓸때는 ${abc}라고 적습니다.
3. 이제 .onInit 함수를 만듭니다.
예)
Function .onInit
StrCpy $1 ${g1o1}
FunctionEnd
만약, Section "fsfds" abc
Section "qwrqweq" qew
이렇게 두 개의 섹션을 라디오 버튼으로 만들려고 하고 이중에 abc를 기본선택으로 두려면 위와 같이 함수를 만들면 됩니다.
4. .onSelChange 함수를 만듭니다.
Function .onSelChange
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${abc}
!insertmacro RadioButton ${qew}
!insertmacro EndRadioButtons
FunctionEnd
abc와 qew라는 섹션 인덱스가 어디에 쓰였는지만 보면 쉽게 적용가능합니다.
NSIS 값 읽어오기 (0) | 2010.03.18 |
---|---|
NSIS 기초지식 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
사용자 페이지 추가하기 (0) | 2010.03.18 |
실행순서 (0) | 2010.03.18 |
이번엔 InstallOptions 플러그인을 사용해 인스톨러에 사용자 페이지를 추가하는 법을 알아보겠습니다.
준비물 : NSIS, HM NIS Edit
NSIS는 당연히 필요하겠구요, HM NIS Edit는 추가할 사용자 페이지를 쉽게 만들어줍니다. 그렇지 않으면 일일이 ini 파일을 직접 수정해서 좌표값 입력해 가며 만들어야합니다. OTL... 굉장한 노가다 입니다.
제가 만든 NSIS 한글 배포본에 HM Nis Edit 가 포함되어 있으니 이걸 사용하시면 됩니다.
일단 추가할 사용자 페이지를 만들어야하니 HM Nis Edit를 실행합니다.
그리고 파일 메뉴에서 인스톨옵션 파일 만들기를 선택하면 아래와 같은 화면이 나타납니다.
이제 위 화면에서 추가할 페이지의 컨트롤등을 넣어주면 됩니다.
작성하면 이제 ini 파일을 저장하고 스크립트에 페이지를 추가하는 명령을 넣으면 됩니다.
페이지를 추가하려면 세가지 과정이 필요합니다.
일단 인스톨러 초기화 콜백함수인 .onInit 함수 에서 ini파일을 임시디렉토리에 풀어줍니다.
두번째로 page 명령으로 페이지를 추가합니다.
세번째로 사용자페이지에서 사용할 함수를 작성합니다.
여기서는 예제로 저의 코덱팩 스크립트를 발췌했습니다.
1) 아래처럼 .onInit 함수에서 ini 파일을 풀어주는 매크로를 추가합니다.
(첫번째 매개변수) ${Codec}ffdshow.ini 파일은 ini파일이 있는 디렉토리이고 (두번째 매개변수) ffdshow.ini 파일은 임시디렉토리에 풀때 사용할 파일명 입니다.
Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT_AS "${Codec}ffdshow.ini" "ffdshow.ini"
FunctionEnd
2) Page 명령으로 추가합니다.
아래와 같이 Page custom 명령으로 추가할 페이지를 삽입합니다. 페이지는 순서대로 나타납니다.
여기서는 ffdshow 디코더 설정화면이 컴포넌트 선택화면 다음에 나타나게 됩니다.
custom - 사용자 페이지를 추가한다는 뜻
ffdshow - 사용자 페이지를 나타내는 등의 역할을 하는 함수 이름. 다음에 작성합니다.
!insertmacro MUI_PAGE_COMPONENTS
Page custom ffdshow ; ffdshow 디코더 설정 화면
!insertmacro MUI_PAGE_INSTFILES
3) 이제 마지막으로 ffdshow 함수를 작성합니다.
아래와 같은 형식으로 함수를 작성합니다. 함수이름은 물론 page 명령에서 지정한 이름으로 만들어야합니다. 아래 스크립트에서는 ffdshow 디코더 설정화면이기때문에 ffdshow를 설치할 때만 나타나야 합니다. 그래서 앞의 세개의 명령이 섹션 정보를 얻고 ffdshow 섹션이 선택되었을때만 페이지를 보여줍니다.
매크로 - MUI_HEADER_TEXT - 사용자 페이지의 제목입니다. 자세한 설명은 한글화한 도움말을 참조하세요.
매크로 - MUI_INSTALLOPTIONS_DISPLAY - 이 매크로를 넣지 않으면 ffdshow 함수가 호출되어도 페이지는 보여지지 않습니다. 즉, 보여줄려고 메모리상에 페이지만 만들어놓고 끝나게 되어버리지요. 이때 보여줄 페이지는 아까 MUI_INSTALLTOPTIONS_EXTRACT_AS 매크로에서 두번째 매개변수로 지정한 이름을 적습니다.
Function ffdshow
SectionGetFlags ${ffdshow} $2
IntCmp $2 ${SF_SELECTED} start end end
start:
!insertmacro MUI_HEADER_TEXT 'ffdshow decoder' 'ffdshow decoder 를 사용할 확장자를 선택하세요'
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "ffdshow.ini"
end:
FunctionEnd
이렇게 하면 페이지 추가가 끝납니다.
이제 컴파일하면 페이지가 나타납니다.
이후 페이지에서 지정한 값을 받는 법등은 도움말에 나타나있습니다.
예) 위에서 사용한 ffdshow 에서 사용자 선택한 값을 읽어오는 스크립트 입니다.
NSIS 값 읽어오기 (0) | 2010.03.18 |
---|---|
NSIS 기초지식 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
라디오버튼 컴포넌트 선택 기능 구현 (0) | 2010.03.18 |
실행순서 (0) | 2010.03.18 |
NSIS 스크립트는 기본적으로 위에서 아래로 순서대로 실행이 된다지만 약간 헷갈리기도 합니다.
컴파일타임명령과 특히 이곳저곳에 섞이는 인스톨러 속성 명령때문이 아닌가 합니다.
--------------
컴파일 타임 명령 - 컴파일되면서 그때 그때 실행되면서 실행 인스톨러에는 영향을 미치지 않습니다.
예로 (현재 디렉토리 c: est est 이고 압축할 파일은 C: est est.exe일때)
Section -PrePare
!cd ..
File 'test.exe'
SectionEnd
이렇게 하면 컴파일러가 컴파일하면서 디렉토리를 한번 상위 디렉으로 이동해서 test.exe 를 압축합니다.
Section -PrePare
File '.. est.exe'
SectionEnd
과 같은 결과입니다. 사실상 거의 쓸일이 없습니다만...
컴파일 타임 명령은 주로 !define 명령이 사용됩니다. 컴파일 타임 명령은 인스톨 속성 명령과 달리 실행 순서가 되야 실행됩니다.
인스톨러 속성 명령
인스톨러를 초기화합니다. 컴파일러는 인스톨 속성 명령을 스크립트 전체를 분석해서 한번에 모아서 적용시킵니다. 즉, 섹션등에 포함되거나 하지만 않으면 스크립트 위치에 상관이 없습니다.
즉, 스크립트 맨위에 Name 명령있거나 맨 뒤에 Name 명령이 있거나 전혀 상관없습니다.
콜백 함수
Function .onInit
인스톨러가 실행되어 초기화가 막 끝난 시점. 보통 인스톨러가 시작되기 전 조건 검사 등을 여기서 검사합니다. (특정 프로그램을 종료시킨다거나. 등등..)
Function .onGUIInit
인스톨러 화면을 메모리에 불러들이고 보여주기 직전
섹션 또는 사용자 함수
섹션이 순서대로 진행되며 섹션에서 함수들을 호출합니다.
Function .onInstSuccess
설치가 끝나고 윈도가 닫히기 직전에 호출
대개 위와 같은 순서를 거칩니다. 중간 중간에 이벤트에 따라 아래와 같은 콜백 함수가 호출되기도 합니다.
-----------
Function .onInstFailed
인스톨 과정 중 언제든지 실패하면 호출됨
Function .GUIEnd
설치화면이 닫힌 직후에 호출됩니다. 설치 성공여부등에 전혀 상관 없습니다. 즉, 컴포넌트 페이지에서 컴포넌트 선택하다가 그냥 취소 눌러서 종료시켜도 화면이 사라질때 호출됩니다.
Function .onMouseOverSection
컴포넌트 선택화면에서 마우스 커서가 섹션위에 위치할 때 호출됩니다.
Function .onRebootFailed
인스톨 중에 Reboot 명령으로 재부팅을 시도했지만 실패하면 호출됩니다.
Function .onSelChange
컴포넌트 페이지에서 선택한 섹션이 변경되면 호출됩니다.
... 등등의 콜백함수가 있습니다. (^^)
NSIS 값 읽어오기 (0) | 2010.03.18 |
---|---|
NSIS 기초지식 (0) | 2010.03.18 |
같은 페이지에 계속 머무르기 (0) | 2010.03.18 |
라디오버튼 컴포넌트 선택 기능 구현 (0) | 2010.03.18 |
사용자 페이지 추가하기 (0) | 2010.03.18 |