1. lighttpd를 설치하기 전에 pcre, zlib 라는 개발 패키지를 먼저 설치해야 한다.

[root@localhost ~]# rpm -qa | grep pcre

pcre-7.8-7.el6.x86_64

pcre-devel-7.8-7.el6.x86_64

[root@localhost ~]# rpm -qa | grep zlib

zlib-1.2.3-29.el6.x86_64

zlib-devel-1.2.3-29.el6.x86_64


* pcre(Perl Compatible Regular Expressions)
 Perl 호환 정규 표현식들 이라고 해석된다. Perl 5의 사용법과 유사하게 만들어 졌고, 자체 API도 있으며 POSIX과의 호환성도 좋고 소유권을 주장할 수 있는 SW 개발에도 무료로 사용이 가능하다. 원래는 메일 전송에이전트 용으로 만들었는데 오픈 소스 프로젝트에서 두루두루 활용되고 있다.

* zlib
 zlib는 C로 작성된 데이터 압축 라이브러리의 일종이다.

2. lighttpd 설치

[root@localhost ~]# wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.39.tar.gz
--2016-05-08 16:57:38--  http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.39.tar.gz
Resolving download.lighttpd.net... 188.40.103.19, 2a01:4f8:100:8082::2
Connecting to download.lighttpd.net|188.40.103.19|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 874931 (854K) [application/x-gtar-compressed]
Saving to: `lighttpd-1.4.39.tar.gz'

100%[======================================>] 874,931      290K/s   in 3.0s

2016-05-08 16:57:42 (290 KB/s) - `lighttpd-1.4.39.tar.gz' saved [874931/874931]

[root@localhost local]# tar xvzf lighttpd-1.4.39.tar.gz

[root@localhost local]# cd lighttpd-1.4.39

[root@localhost lighttpd-1.4.39]# ./configure

2. ./configure 오류
[root@localhost lighttpd-1.4.39]# ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether UID '0' is supported by ustar format... yes
checking whether GID '0' is supported by ustar format... yes
checking how to create a ustar tar archive... gnutar
checking whether make supports nested variables... (cached) yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/lighttpd-1.4.39':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

C compiler가 없단다 설치해주자

[root@localhost lighttpd-1.4.39]# rpm -qa | grep gcc
libgcc-4.4.7-4.el6.x86_64
[root@localhost lighttpd-1.4.39]# yum -y install gcc
[root@localhost lighttpd-1.4.39]# rpm -qa | grep gcc
libgcc-4.4.7-16.el6.x86_64
gcc-4.4.7-16.el6.x86_64

gcc 까지 설치가 완료되었다. 다시 ./configure을 실행한다.

3. 에러의 연속~~

configure: error: bzip2-headers and/or libs where not found, install them or build with --without-bzip2

bzip2-header 가 없다고하니 bzip 뒤에 *을 때려박아서 관련 패키지를 몽땅 설치하기로 했다.

[root@localhost lighttpd-1.4.39]# yum -y install bzip*

[root@localhost lighttpd-1.4.39]# yum -y install gamin*

* gamin 이란?
 Gamin is a file and directory monitoring system defined to be a subset of the FAM (File Alteration Monitor) system. It is a service provided by a library which allows for the detection of modification to a file or directory. - 출처 archlinux -

FAM 시스템으로 정의되어 있는 파일과 디렉토리 모니터링 시스템이다. 파일과 디렉토리의 정확성을 탐지하기 위하여 library에 의해 제공되는 서비스이다. 대략 이런 뜻같다. 

4. make, make install 을 진행하여 설치해준다. 과정은 너무 길어서 패스

5. 설치 후 세팅 
 

make install 실행한 위치에서 init script를 생성.

1. sed -e 's/FOO/lighttpd/g' /usr/local/lighttpd-1.4.39/doc/initscripts/rc.lighttpd.redhat > /etc/init.d/lighttpd


필요한 환경설정을 한다

 1. mkdir /etc/lighttpd

 2. cp ./lighttpd.conf /etc/lighttpd/


6. /etc/lighttpd/lighttpd.conf 설정


var.log_root    = "/var/log/lighttpd" var로 시작하는 5가지 항목은 변수로 저장이 되서 아래에 활용된다.

var.server_root = "/srv/www"

var.state_dir   = "/var/run"

var.home_dir    = "/var/lib/lighttpd"

var.conf_dir    = "/etc/lighttpd"


server.port = 80

 -lighttpd 포트번호

server.document-root = server_root + "/htdocs"

 -document 저장 위치

server.errorlog         = log_root + "/error.log"

 -errorlog의 위치

server.username  = "lighttpd"


server.groupname = "lighttpd"


server.event-handler = "linux-sysepoll"

 

-- 미완성 --



 

















 


'리눅스 초급 > WEB' 카테고리의 다른 글

[lighttpd] (1)lighttpd란?  (0) 2016.05.08
Posted by 알 수 없는 사용자
,

1. '라이트피디'라고 읽고 짧게는 '라이티(lighty)' 라고도 읽는다. 

 - lighttpd는 적은 자원을 사용하여 높은 성능을 내는 오픈 소스 웹 서버 어플리케이션이다. 아파치보다 적은 메모리를 사용하면서도 일반적으로 아파치보다 속도가 빠르다. ( 아파치에서 자주 사용하지 않는 기능들은 빠져있다고 합니다. )

 - lighttpd는 non-blocking I/O 로 단일 프로세스에서 실행되어 가볍고 빠르다.

 - YouTube, Wikipedia, Sourceforge, Meebo 등 많은 사이트에서 사용하고 있다. 

2. lighttpd와 Apache 성능 차이
 사건은 최근 Ruby on Rails를 전폭 지원하는 웹호스팅으로 인기를 끌고 있는 호스팅 업체인 TextDrive에 입주해 있는 한 블로그의 글이 Slashdot에 올라가면서 터졌습니다.
Apache를 쓰고 있는 해당 서버의 로드가 400이 넘도록 치솟고 메모리를 2GB이상 먹어버리는 사태가 발생한 것입니다. 사태가 벌어지자마자 TextDrive의 관리자들(이 사람들은 잠도 안자고 서버 관리 및 고객 응대에만 전념하는 걸로 유명합니다.  이 웹서버를 Apache에서 lighttpd로 교체해버렸습니다. 

1.png 

그 결과 그래프에 나온 것처럼 로드는 4로, 메모리 사용량은 0.5GB로 떨어졌습니다. 웹서버로 들어오는 접속 숫자는 비슷했는데도 말이죠. TextDrive는 이제 Apache proxy와 lighttpd의 조합으로 설정을 완전히 변경하는 모양입니다. 부하가 많이 걸리는 웹서버를 관리하고 계시다면 lighttpd에 관심을 가져 보는 것도 좋을 듯 합니다. 


'리눅스 초급 > WEB' 카테고리의 다른 글

[lighttpd] (2)lighttpd의 설치  (0) 2016.05.08
Posted by 알 수 없는 사용자
,

1. dhcpd stop 되어 있는 경우

 처음 부팅 화면에서 dhcp 모래시계가 돌아가면서 진행이 안된다.

이후에 dhcp로 대역을 받아오질 못해서 OS 시스템을 받아오지 못한다는 메세지가 출력된다.




2. xinetd stop 되어 있는 경우

 tftp가 작동이 안되기 때문에 부팅에 필요한 파일을 전송 받을 수 없다.

tftp 타임아웃 메세지 출력




3. menu.c32의 권한을 000으로 설정할 경우

 커널이미지를 불러올 수 없다는 메세지가 출력된다.



4. pxelinux.0의 권한을 000으로 설정할 경우

 허가 거부 메세지와 tftp 서버에서 받아오는 것이 에러가 난다는 메세지가 출력된다.


5. default의 권한을 000으로 설정할 경우

 Boot failed 메세지가 출력된다.


6. vmlinuz의 파일 버젼은 꼭 맞춰준다.

 Host OS가 centos6.5일 경우는 6.5 이미지 파일의 vmlinuz를 사용한다. 6.5에서 7.0 버전을 설치하려는 경우에 설정 파일의 내용들이 다르기 때문에 'dracut 에러' 가 발생한다.


7. initrd.img 경로가 다를 경우

 메뉴는 불러오는데 이미지 파일을 못 찾아서 7초후 화면이 기본 설정으로 부팅이 되어야 하는데

계속 1초에서 머문다.( 화면이 진행안된다)


8.  anaconda.cfg 경로가 다를 경우

 Alt+Ctrl+ F1 ~ F6 까지 가상 콘솔로 설치 과정을 확인할 수 있다 .

F1이 GUI 모드고 F3 텍스트 모드에서 nfs가 잘못된 경로에서 anaconda 파일을 가져오려고 노력하는 것을 볼 수 있다. 경로 잘못 적어주면 nfs가 삽질한다.ㅜㅜ


9. nfs 파일을 찾아오라는 에러가 나올 경우

 anaconda.cfg 의 --dir 경로를 확인하고, /etc/exports의 설정을 확인한다.

/data/cfg/

/mnt/CentOS/

뒤에 / 꼭 붙여야된다. 중요하니 빨간색


10. 추가로 구동 중인 rpc 데몬을 확인하고 싶을 때는 rpcinfo 명령어를 사용한다. 꿀팁! 



 

 




  



'리눅스 초급 > Kic_Start' 카테고리의 다른 글

[Kick_Start] (1)KickStart  (0) 2016.05.03
Posted by 알 수 없는 사용자
,

6장. CentOS 리눅스 디렉토리 관리

6.1 pwd

6.2 cd

6.3 ls

6.4 mkdir

6.5 rmdir


6장은 디렉토리에 들어가고, 속성, 만들기, 삭제를 알아 보도록 하겠다.

 

 

pwd 명령어를 쓰면서 현제 디렉토리를 알수 있다.

cd 는 내가 디렉토리에 찾아 갈수 있게 change dirtory입니다.

ls는 디렉토리의 정보를 보다 정확하게 볼수 있는 명령어로 기본 ls를 하게 되면 기본 디렉토리, 파일만 볼 수 있습니다.

ls의 명령어 종류는 아래와 같다.

-a .file을 포함한 전 entry를 출력 

-A -a option과 유사하지만 .또는 ..을 포함하는 화일은 출력 억제 

-c 마지막 변경된 i-node의 시간을 출력 

-C 멀티칼럼으로 출력하며 디폴트로는 CRT에 출력 

-d directory명만 출력하며 내용은 출력하지 않는다 

-D directory만 출력 

-f 인수를 directory로 해석하며 각각의 슬롯에 있는 directory 및 file 

명을 출력 

-F system에 있는 화일이 directory면 /를 실행가능한 화일이면 *를 붙 

인다 

-g 옵션 -l과 같으나 소유자명이 출력되지 않는다 

-i 첫 칼럼에 i-number를 출력 

-l 화일 및 directory 상태 정보를 long 문법으로 출력 

-m 스트림 문법의 출력 

-n 소유자명과 그룹명 대신에 UID 번호와 GID 번호가 출력되는 것을 제 

하고는 옵션 -l과 같다 

-g 비도형문자를 ?문자로 출력 

-r 화일명이나 수정시간을 알파벳 또는 오래된 역순으로 출력 

-R 발견되는 sub-directory의 내용을 순환적으로 출력 

-s 간접블럭을 내포하는 블럭수를 출력 

-t 화일명 대신에 수정된 시간으로 분류 

-u -t 또는 -l option으로 분류하는 중에서 최종접근 시간을 사용 

mkdir은 디렉토리를 생성 하는 명령어이고

rmdir은 생성한 디렉토리를 삭제하는 명령어이다.

위의 그림을 보면 실제 테스트한 화면을 볼수 있다.


요약 : 간단하게 디렉토리 생성, 삭제, 위치 정보를 볼수 있는 명령어를 다루어 보았다.

Posted by 알 수 없는 사용자
,

5.1 사용자 추가 

5.2 사용자 비밀번호 설정 

5.3 사용자 삭제 

5.4 그룹 추가 삭제 

5.5 유저 정보 조회 

5.6 사용자 정보 수정 

5.7 사용자 전환 


5.1 사용자 추가, 비번설정, 사용자 삭제 

 


 
testid 를 추가 하였으며, 비번 설정 그리고 삭제 하면서 testid정보가 삭제 된것을 알수있다. home에 testid 폴더가 있는것은 정보는 삭제 되었지만 폴더 삭제 옵션까지도 추가 하지 않았기 때문이다.

5.4 그룹 추가 삭제

 

 

5.5 유저 정보 조회

 

 


 
5.6 사용자 정보 수정 
usermod 옵션 계정명
옵션
-u UID: 새로운 UID로 지정한다.
-g GID:새로운 GID로 지정한다.
-G group : 새로운 보조 그룹을 지정한다.
-d 홈 디렉토리 : 새로운 홈디렉토리를 지정한다.
-s 쉘 : 새로운 쉘을 지정한다.
-c 주석 : 새로운 주석을 지정한다.
-l ID : 로그인 ID를 바꾼다.

 
5.7 사용자 전환
 

 

 


요약
리눅스를 다루다 보면 사용자 관리가 중요하다는 것을 알수가 있다. 본 내용에서는 새로운 사용자 추가, 비번 설정, 그리고 필요 하지 않은 사용자 삭제, 그리고 그룹으로 사용자 관리를 할 수 있는 방법을 알수 있었고, 사용자 정보를 보다 정확하게 알 수 있는 명령어를 통해 직접 실습을 해보았다. 그리고 일반 유저에서 루트로 루트에서 사용자로 전환을 통해 관리자와 이용자 둘다의 경계를 알수 있었다.



 

Posted by 알 수 없는 사용자
,
4장. CentOS 리눅스 시작과 종료 4.1 리눅스 부팅 과정 4.2 리눅스 로그인 4.3 시스템 종료와 재부팅 4.1 리눅스 부팅 과정 1단계 : 메인보드의 ROM-BIOS 실행 - BIOS프로그램은 전원이 들어오는 즉시 메모리 특정번지로 load 후 적재. CPU는 시스템 전원공급 즉시 메모리 특정주소의 BIOS 명령어를 실행. * BIOS : 컴퓨터에서 전원을 켜면 맨 처음 컴퓨터의 제어를 맡는 프로그램. ( 하드웨어와 소프트웨어 사이의 연결과 번역 기능을 담당하는 인터페이스 ) 바이오스를 구성하는 루틴으로는 스타트업(start-up) 루틴과 서비스 처리 루틴, 하드웨어 인터럽트 처리 부분이 대표적. 2단계. 부트로더 실행 - 부팅가능한 GRUB(LILO)중 선택된 Kernel 이미지를 메모리로 로딩. ( 압축된 커널이미지는 메모리에 올라간 다음 압축 해제 ) - Root 파티션을 마운트. ( read-only ) * Bootloader : 부트로더는 OS의 커널을 로드하고 몇몇 커널 파라메터를 커널에 넘겨주는 일을 한다. * LILO(LInux LOader), GRUB : 3장 참고 3단계. Swapper 프로세스 실행 - PID가 0번인 스와퍼는 각 장치 드라이브 초기화 장치 드라이브가 초기화 되면 PID 1번인 init 실행. - 디스크 검사(init)후, 검사가 끝나면 다시 read-write 모드로 remount. 그 후, /sbin/init 프로그램을 실행. 4단계. init 프로세스 실행 - /etc/inittab 파일중 가장 먼저 실행되는것은 /etc/rc.d/rc.sysinit 스크립트 (시스템초기화 : /etc/inittab에 사용자가 설정한 실행 내용에 따라 달라짐) - /etc/rc.d/rcN.d(실행 레벨 설정된 프로세스) 실행. - K는 해당 스크립트 종료. S는 스크립트 실행. - /etc/rc.d/rc.local 각 사용자들이 부팅시 자동으로 실행하고자하는 프로그램을 설정하거나 스크립트 설정파일. 표 1. /etc/rc.d/rc.local 스크립트 파일 /etc/inittab init의 설정파일 /etc/rc.d/rc.sysconfig init스크립트에서 제일 먼저 실행되는 것 /etc/rc.d/rc.local init스크립트에서 제일 마지막에 실행되는 것 /etc/rc.d/init.d/* 데몬을 실행시키기 위한 스크립트들 /etc/rc.d/rc[0-6].d/* 각 런레벨에 정의된 데몬들을 실행시키기 위한 것 실제 내용은 /etc/rc.d/init.d의 스크립트로의 링크 /etc/rc.d/rc 각 런레벨에 해당되는 스크립트를 실행시키는 스크립트 /var/lock/subsys/* 현재 실행되고 있는 데몬들의 lock파일들 /var/run/*.pid 현재 실행되고 있는 데몬들의 PID가 적힌 파일들 5단계. 계정 프로세스 실행 - login을 위해 /sbin/mingetty 실행(Console Login 실행) * Runlevel : init는 /etc/inittab이란 파일을 읽는다. 표2. /sbin/inittab # # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author:Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # : 시스템종료 # 1 - Single user mode # : 싱글유저모드 (root계정만 존재) # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # : 다중 사용자 모드. NFS를 지원하지 않음. # 3 - Full multiuser mode # : 완전한 다중 사용자 모드. 모든 네트워크 지원. # 4 - unused # : 특별히 정해진 의미없음. # 5 - X11 # : X-Window에서 로그인 가능. # 6 - reboot (Do NOT set initdefault to this) # : 재부팅. # id:3:initdefault: # : 이 줄에서 기본 런레벨을 지정함. # System initialization. si::sysinit:/etc/rc.d/rc.sysinit # : init은 제일 먼저/etc/rc.d/rc.sysinit에 적어 놓은 명령들을 실행 # 루트파티션 이외의 파티션을 검사해서 마운트시키는 등의 과정. l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 : : # : runlevel 3번에 해당하는 스크립트들을 실행. # 이 스크립트들은 /etc/rc.d/rc3.d 디렉토리에 위치. # 주로 데몬 프로세스를 시작하거나 종료시키는(죽이는, kill)역할. # 순서에 따라서 마지막에 S99local이 실행. (/etc/rc.d/rc.local 에 링크.) # 일반적으로 부팅과정에 어떤 작업을 추가시키려면 이 파일에 추가. 요약 전원 스위치를 켜면 BIOS프로그램들의 실행내용들이 실행이되고 부트로더(GRUB)의 실행이 되고, 커널의 로딩이 된후 init프로세스의 실행이 된다. init에서 부팅모드를 정할 수 있고, 필요에 따라 사용자가 선정할 수 있다. 리눅스 부팅 과정을 다 알지는 못하였지만 전반적인 부트로더의 흐름을 간략하게 알 수 있었던것 같다.
Posted by 알 수 없는 사용자
,
3장. CentOS 리눅스 부트로더 GRUB 3.1 GRUB란? 3.2 GRUB 둘러보기 3.3 GRUB 장치명 3.4 GRUB 설정 파일 3.5 GRUB 명령어 3.1 GRUB(Grand Unified Boot loader)란? 부트로더란 간단히 말해서 컴퓨터를 켰을 때 가장 먼저 실행되는 프로그램이다. 부트로더는 OS의 커널을 로드하고 몇몇 커널 파라메터를 커널에 넘겨주는 일을 한다. GNU GRUB은 원래 처음에는 GNU Hurd를 위해 개발되었지만 그 막강한 기능 때문에 리눅스에서도 점차 LILO* 대신 GRUB을 사용하는 사람들이 늘고 있다. GRUB은 현재 리눅스를 비롯하여 많은 공개 운영체제와 chain-loading을 사용하는 상용 운영체제를 로드할 수 있다. GRUB의 가장 큰 특징은 파일시스템과 커널 포맷을 이해한다는 점이다. 따라서 디스크상에서 커널의 물리적인 위치를 알 필요 없이 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 커널을 로드할 수 있다. LILO의 경우 부트로더가 커널의 하드디스크상의 물리적인 위치를 알고 있어야 한다. 따라서 커널을 다시 설치할 때마다 ‘lilo’를 실행해 부트로더를 다시 심어 주어야 하지만, GRUB의 경우 파일명만 알면 되기 때문에 파일명이 바뀌지 않는 한 다시 실행해 줄 필요가 없다. 현재 GRUB은 다음과 같은 기능들을 제공한다. 1. a.out 포맷과 ELF 포맷의 커널을 읽어들일 수 있다. 2. Linux, FreeBSD, NetBSD, OpenBSD등 비-멀티부트 커널을 지원한다. 3. 멀티플 모듈을 로드할 수 있다. 4. 텍스트 형식의 설정 파일을 제공한다. 5. 메뉴 인터페이스를 제공한다. 6. 유연한 커맨드라인 인터페이스를 제공한다. 7. BSD FFS, FAT16, FAT32, Minix, ext2 그리고 ReiserFS 파일시스템을 지원한다. 8. gzip으로 압축된 파일을 다룰 수 있다. 9. BIOS에서 인식되는 모든 장치에 엑세스할 수 있다. * LILO (LInux LOader, 리눅스 로더) 리눅스를 위한 부트 로더이다. LILO는 처음에 Werner Almesberger가 개발하였으나, 현재의 개발자는 존 코프먼(John Coffman)이다. LILO는 특정한 파일 시스템에 의지하지 않으며, 플로피 디스크와 하드 디스크(이를테면 리눅스 커널)로부터 운영 체제를 시동할 수 있다. 최대 16개의 다른 이미지를 시동 메뉴 안에서 고를 수 있다. 루트 장치와 같은 여러 변수는 각 커널에 독립적으로 설정할 수 있다. LILO는 마스터 부트 레코드 (MBR)이나 파티션의 시동 섹터 안에 위치한다. 후자의 경우 다른 무언가가 LILO를 불러오기 위해 MBR 안에 위치해야 한다. 시스템이 시작할 때, LILO가 하드 드라이브에 접근하도록 하기 위해 바이오스 드라이버만 사용할 수 있다. 이러한 까닭에, 매우 오래된 바이오스들의 경우, 접근할 수 있는 영역이 처음 두 개의 하드 디스크의 실린더 0부터 1023까지 한정되어 있다. 나중에 나온 바이오스들의 경우, LILO는 32비트 논리 주소 어드레싱 (LBA)을 사용하여 바이오스가 접근하는 모든 하드 디스크의 자료를 실용적으로 접근한다. LILO는 loadlin이 대중화된 뒤 여러 해 동안 대부분의 리눅스 배포판을 위한 기본 부트로더였다. 오늘날 대부분의 배포판들은 GRUB을 기본 부트로더로 사용한다. 요약 : 실제 리눅스 부팅을 할때 여러가지 모드로 할 수 있게 해주는 부트로더 이다. 윈도우에서는 일반적으로 F8키를 누르면 안전모드, 네트워크 모드, CMD모드 같은 것을 사용자의 필요에 따라 사용할 수 있는 기능이 있다. 리눅스도 마찬가지로 GRUB OR LILO(현재 많이 사용 중이지 않지만) GUI나 CMD형으로 부팅을 할 수 있게 한다.
Posted by 알 수 없는 사용자
,
1장. 리눅스란 무엇인가? 1.1 리눅스 소개 1.2 CentOS 리눅스의 특징 1.3 리눅스 배포판의 역사와 배포판의 종류 1.1 리눅스 란? - 1991년 11월에 리누스 토르발즈(Linus Torvalds)가 버전 0.02을 공개한 유닉스 기반 개인컴퓨터용 공개 운영체제이다. 유닉스와 거의 유사한 환경을 제공하면서 무료라는 장점 때문에 프로그램 개발자 및 학교 등을 중심으로 급속히 사용이 확대되고 있다. [네이버 지식백과] 리눅스 [Linux] (두산백과) 1.2 Centos 장점 현재 V : 리눅스의 배포판 중 하나. Community Enterprise Operating System의 약자이다. 2016년 2월 3일 기준 최신 버전은 7.2.1511. 릴리즈 노트 페도라 대항마 : 페도라가 선구적인 기술을 너무 도입하다 못해 RHEL을 제대로 반영하지 못하게 되자[1], RHEL를 완벽에 가까운 반영을 목적으로 만드는 배포판. 장점 : 서버 리눅스 시장의 1인자인 레드햇 리눅스를 저렴한 가격(무료)로 체험, 또는 사용할 수 있다는 점이다. 사실 RHEL을 철저하게 반영하기 때문에 이걸 그냥 서버로 써도 되며, 실제로 많은 서버(대학 등)가 CentOS로 운영되고 있고, 대기업인 네이버나 카카오에서도 사용한다. 한국의 수많은 웹호스팅 업체도 이걸로 리눅스 서버 운영하는 경우가 대단히 많다. 충분한 자체 유지보수 인력이 있고 책임을 자신들이 진다면 이만한 서버 운영체제가 없다. 대형 서점에 가보면 센트OS를 활용한 실무라든가 그런 책도 있다(...). 거기다가 Super 500권에도 RHEL보다 더 많다(...) 그래서 2014년 1월 Distrowatch 항목에서 13위권을 차지하고 있다. 요약 : 많은 고객 사 및 커뮤니티가 있다. 단점: RHEL에 비해 빈약한 사후 지원인데 이건 기업(RedHat)이 아닌 커뮤니티 차원에서 제공되기 때문이다. 1.3 리눅스 배포판 그림 1 참고 리눅스 데비안 계열 데비안 GNU/리눅스 ‧ 우분투 ‧ 리눅스 민트 ‧ 백트랙 ‧ 칼리 리눅스 ‧ 크런치뱅 ‧ 하모니카 ‧ Damn Small Linux ‧ elementary OS ‧ 우분투 마테 레드햇 계열 레드햇 엔터프라이즈 리눅스 ‧ 페도라 ‧ 미고 ‧ 붉은별 ‧ 센트OS ‧ 아시아눅스 ‧ 타이젠 슬랙웨어 계열 슬랙웨어 리눅스 ‧ 오픈수세 ‧ Slax 맨드리바 계열 Mandriva ‧ Open Mandriva Lx ‧ 마제야 ‧ PCLinuxOS ‧ no.1Linux 기타 아치 리눅스 ‧ Manjaro Linux ‧ 젠투 리눅스 ‧ 안드로이드 *NIX UNIX 솔라리스 (SmartOS) BSD FreeBSD ‧ NetBSD ‧ OpenBSD ‧ OS X (NeXTSTEP ‧ iOS) 참고 사이트 : https://namu.wiki/w/%EC%84%BC%ED%8A%B8OS
Posted by 알 수 없는 사용자
,

KickStart

 

리눅스 설치 자동화

PXE 부팅을 이용하여 원격에서 자동으로 부팅하고 설치는 Kickstart 와 네트워크 설치를 이용하여 자동화

kickstart를 이용하여 설치 후 필요한 작업까지 넣어두면 좀더 편리한 서버작업이 가능함

 

KickStart에 필요한 파일 내용 정리

 

1. DHCP ( Dynamic Host Configuration Protocol )

-> PXE 부팅 시 kickstart 서버와 연결되기 위해 동적으로 IP 할당

-> IP 할당 후 인터넷이되어야지 kickstart서버에서 Image 를 받아 올수 있음

 

2. tftp-server ( Trival File Transfer Protocol )

-> PXE 부팅 후 리눅스 커널 이미지를 전송할 때 사용

-> pxelinux.0, menu.c32, vmlinuz, initrd.img

 

3. nfs ( Network File System ) & httpd ( HyperText Transfer Protocol Daemon ) & vsftpd ( Very Secure FTP Daemon

-> 네트워크로 파일 시스템 공유

-> kickstart.cfg 이나 OS 이미지(ISO) 설치 파일을 전송할 때 사용

 

4. nfs lock

-> 네트워크로 파일 시스템 공유 중일 때 다른 사람이 사용하지 못하도록 함

 

5. syslinux 파일

-> 리눅스 부트 메뉴 구성을 위한 파일을 제공 ( pxelinux 0, menu.c.32 )

 

※ syslinux는 리눅스 시스템 부팅을 위한 부트로더이며 isolinux, extlinux, memdisk 들이 포함됨

 

syslinux - MS-DOS, FAT, FAT32 파일시스템으로 포멧된 디스크 파티션에서 리눅스를 로드

extlinux - ext2/ext3/ext4 파일시스템으로 포멧된 디스크 파티션에서 리눅스를 로드

isolinux - ISO9600 파일시스템으로 포멧된 디스크 파티션이나, 시디롬으로 부터 리눅스를 로드

memdisk - 램드라이브로 부터 리눅스를 로드 하며 이것은 주로 플로피디스크 이미지를 램디스크로 로드하여 부팅

               할때도 많이 사용되기 때문에 GRUB에서도 이모듈을 사용

 

6. pxelinux.0 파일

-> syslinux 패키지에 포함되어 있는 파일로 대부분의 시스템에는 기본적으로 설치가 되어 있음

    pxelinux.0는 네트워크 부트 로더로 리눅스의 grub / lilo 와 같은 역활을 함

 

7. menu.c32 파일

-> pxe 설치 시 메뉴선택 할 수 있게 하는 파일

 

8. vmlinuz 파일

-> 리눅스 커널을 컴파일한 결과인 바이너리 파일

   bzimage를 사용하여 gzip으로 압축해 놓고 리눅스 부팅시 압축을 해제하여 메모리에 로딩되어 리눅스의 운영이 시작

 

9. initrd.img 파일

-> 커널 모듈을 모아놓은 이미지로 커널이 로딩되기전에 메모리에 미리 로딩되어 짐 ( 마우스 드라이버,그래픽 카드 등 )

 

10. anaconda.cfg 파일

-> pxe 설치 시 리눅스 설정 파일

   설치방법 ( 언어 / 키보드 / 마우스 / 이더넷 / 보안설정 / 시간 / 부트로드 / 파티션 / 패키지 / 설치 후 작업 )

 

 

KickStart 순서

 

1) DHCP 서버를 찾는다.

2) TFTP 서버를 통해 pxelinux.0 / menu.c32 파일을 받는다

3) 네트워크 부팅이 이루어지며 menu.c32 파일에 해당되는 anaconda.cfg 파일의 메뉴들이 나타난다.

4) 메뉴 목록 중 하나를 선택하면 설정되어 있는 vmlinuz 커널을 메모리에 로딩하며 초기 설치 화면이 나타난다

    (initrd.img는 하드웨어 설정시 필요 모듈을 로드할때 쓰임)

5) anaconda.cfg 파일에 리눅스 설정이 제대로 들어가 있으면 자동으로 설치,  설정이 제대로 들어가지 않을 경우 일일이 선택항목을 선택하면서 진행

 

Kickstart 테스트

 

※ 서버 OS : REHL6.6

 

 

1) DHCP 설정

 

[root@localhost ~]# rpm -qa | grep dhcp
dhcp-libs-4.2.5-27.el7.x86_64
dhcp-common-4.2.5-27.el7.x86_64

 

[root@localhost ~]# yum install dhcp

 

Installed:
  dhcp.x86_64 12:4.2.5-27.el7                                                                                                                                                                                                 

Complete!

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf

 

allow bootp;
allow booting;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.0.164;
filename "pxelinux.0";
}

max-lease-time 60;
default-lease-time 60;
option subnet-mask 255.255.255.0;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.2;
option subnet-mask 255.255.255.0;
range dynamic-bootp 192.168.0.100 192.168.0.150;
}

2) TFTP 설정

 

[root@localhost ~]# yum install xinetd

 

Installed:
  xinetd.x86_64 2:2.3.15-12.el7                                                                                                                                                                                               

Complete!

[root@localhost ~]# yum install tftp*

 

Installed:
  tftp.x86_64 0:5.2-11.el7                                                                                                                                                                                                    

Complete!

Installed:
  tftp-server.x86_64 0:5.2-11.el7                                                                                                                                                                                             

Complete!

 

[root@localhost xinetd.d]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol.  The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
 socket_type  = dgram
 protocol  = udp
 wait   = yes
 user   = root
 server   = /usr/sbin/in.tftpd
 server_args  = -s /data/install
 disable   = no
 per_source  = 11
 cps   = 100 2
 flags   = IPv4
}

3) PXE boot 설정

 

1. 폴더 생성

 

[root@localhost xinetd.d]# mkdir /data
[root@localhost xinetd.d]# mkdir /data/install
[root@localhost xinetd.d]# mkdir /data/install/redhat
[root@localhost xinetd.d]# mkdir /data/install/pxelinux.cfg
[root@localhost xinetd.d]# mkdir /data/cfg

 

2. syslinux 설치

 

[root@localhost xinetd.d]# yum install syslinux

 

Installed:
  syslinux.x86_64 0:4.05-8.el7                                                                              

Complete!

 

3. pxelinux.0 복사

 

[root@localhost xinetd.d]# cp /usr/share/syslinux/pxelinux.0 /data/install/

4. menu.c32 복사

 

[root@localhost xinetd.d]# cp /usr/share/syslinux/menu.c32 /data/install

5. vmlinuz 복사

 

[root@localhost xinetd.d]# cp /iso/rhel7/images/pxeboot/vmlinuz /data/install/redhat/

6. initrd.img 복사

 

[root@localhost xinetd.d]# cp /iso/rhel7/images/pxeboot/initrd.img /data/install/redhat/

 

7. anaconda.cfg 복사

 

[root@localhost xinetd.d]# cp /root/anaconda-ks.cfg /data/cfg/anaconda-ks.cfg

8. pxelinux.0 파일을 읽어드릴 config 파일 생성

 

[root@localhost xinetd.d]# cat /data/install/pxelinux.cfg/default

 

default menu.c32
timeout 100

menu background splash.jpg
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu color cmdline 0 #ffffffff #00000000
menu tabmsg Press ENTER to Install or TAB to edit a menu entry

 
menu title #### OS Installer Boot Menu ####


label 0
menu label rhel6.6
kernel redhat/vmlinuz
append ksdevice=eth0 initrd=redhat/initrd.img network ks=nfs:192.168.0.164:/data/cfg/anaconda-ks.cfg

 

- timemout : 100초 동안 부트 메뉴를 띄어주고 메뉴 선택이 없으면 label 0 메뉴로 자동으로 부팅

- menu label : 메뉴 선택 라벨명

- kernel : /data/install 폴더에서 절대경로 vmlinuz 파일 위치 ( TFTP server_args 위치)

- ksdevice=eth0 : kickstart 부팅할 때 사용할 eth 장치명

- ksdevice link : kickstart 부팅할 때 link 잡히는 eth으로 설치

- initrd=intird.img : /data/install 폴더에서 절대경로 initrd.img 파일 위치

- network ks=nfs:192.168.0.130:/data/cfg/anaconda-ks.cfg : NFS서버 아이피 : anaconda.cfg 절대 경로

 

※ vmlinuz와 initrd.img 파일은 같은 버전 파일 이어야 함

 

4) NFS 설정

 

[root@localhost xinetd.d]# cat /etc/exports
/iso/rhel66 *(ro)        //리눅스 설치 ISO 파일 절대 경로
/data/cfg/ *(ro)        // anaconda.cfg 파일 절대 경로

 

# exportfs -v        //nfs공유 설정 확인

 

5) anaconda.cfg 설정

 

[root@localhost xinetd.d]# chmod -R 777 /data/cfg/
[root@localhost xinetd.d]# cat /data/cfg/anaconda-ks.cfg

[root@localhost iso]# cat /data/cfg/anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
lang en_US.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$eI.Cksf02xWX.Emx$W3PchU7zWye8hAXyYm/jXKTzBrKnmnqb6rwT9DeanbfEKHsONsIBICoOoKlspxCwJd31II.nteQVD4hEMf9YQ/
nfs --server=192.168.0.164 --dir=/iso/rhel66
#firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Seoul
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work

#clearpart --all --drives=sda
clearpart --all --initlabel --linux
#volgroup VolGroup --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=VolGroup --grow --size=1024 --maxsize=51200
#logvol swap --name=lv_swap --vgname=VolGroup --grow --size=2048 --maxsize=2048


part / --fstype=ext4 --size=4096 --ondisk=sda
part /boot --fstype=ext4 --size=500
part swap --size=4096 --ondisk=sda


#part pv.008002 --grow --size=1

 


%packages
@base
@client-mgmt-tools
@compat-libraries
@core
@basic-desktop
@desktop-debugging
@desktop-platform
@development
@ftp-server
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@internet-browser
@legacy-x
@remote-desktop-clients
@server-platform
@server-platform-devel
@server-policy
@system-management
@x11
mtools
pax
python-dmidecode
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
jpackage-utils
libXmu
%end

reboot
%post
mkdir test
chkconfig NetworkManager off
chkconfig iptables off

 

 

6) 서비스 데몬 실행 순서

1.xinetd (tftpd)

2.dhcpd

3.nfs

 

2016-05-03 14:00 1차 수정//

 

'리눅스 초급 > Kic_Start' 카테고리의 다른 글

[Kick_Start] (2)KickStart 단계별 트러블 슈팅  (0) 2016.05.08
Posted by 알 수 없는 사용자
,

1. yum으로 설치

[root@localhost ~]# yum -y install dhcp*


[root@localhost ~]# rpm -qa | grep dhcp*

dhcp-devel-4.1.1-49.P1.el6.centos.x86_64

dhcp-common-4.1.1-49.P1.el6.centos.x86_64

dhclient-4.1.1-49.P1.el6.centos.x86_64

dhcp-4.1.1-49.P1.el6.centos.x86_64


2. 처음에 /etc/dhcp/dhcpd.conf 에 내용이 없기 때문에 sample 파일을 복사해온다.

[root@localhost ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf


3. vi /etc/dhcp/dhcpd.conf 편집

#

# DHCP Server Configuration file.

#   see /usr/share/doc/dhcp*/dhcpd.conf.sample

#   see 'man 5 dhcpd.conf'

#

default-lease-time 600; // 기본 연결 시간입니다.

max-lease-time 7200; // 최대 연결 시간입니다.

option domain-name-servers 168.126.63.1; // 도메인 네임 서버의 IP 주소

subnet 220.116.179.0 netmask 255.255.255.0 { // IP 주소 대역과 서브넷마스크 

        option routers 220.116.179.254; // Gateway 주소

        option broadcast-address 220.116.179.255; // Broad cast 주소

        range 220.116.179.100 220.116.179.250; // 동적으로 할당할 IP 주소 

}








'리눅스 초급 > DHCP' 카테고리의 다른 글

[DHCP](1) DHCP의 이해  (0) 2016.05.03
Posted by 알 수 없는 사용자
,