2016. 7. 6. 23:59

# 이중화(High Availability)

시스템의 장애피해 등으로 부터 가동률이 높이기 위하여 장비를 다중화 시키는 방법

 

# 이중화의 종류

1) Active-Active

개념

다중화 장비가 두대 모두 활성화 되어 동작하는 구성이다. 두대가 모두 처리를 하기 때문에 Active-Standby에 비하여 처리률이 높지만, 보통 설정 및 구성이 복잡해지며 한대가 죽었을 경우, 두대의 처리량을 한대로 처리하기 때문에 리소스가 높아져 리소스에 대한 계획도 필요하다.

 

 2) Active-Standby

개념

 기본적인 HA 방법이며 두대 중 하나는 활성화 되어 동작하고 하나는 장애 등 의 경우를 대비하여 대기 시키는 구성이다. 장애발생을 감지하여 Active장비가 죽게되면 Standby 장비가 failover가 일어나 Active로 변경된다. 단 failover 되는 시간동안은 서비스가 불가능하다.

 

종류

- Hot Standby : Standby 쪽 장비 기동 후 즉시 사용이 가능. failover 소요시간

- Warm Standby : Standby 쪽 장비 기동 후 이용하기 위하여 어느정도 설정 및 준비가 필요함

- Cold Standby : Standby 측을 평소 정지시켜두며 필요에 따라 직접 켜서 구성

일반적인 경우 Hot - Warm - Cold 순으로 failover 소요시간이 짧음.(Hot이 제일 짧고, Cold가 가장 김)

 

# 이중화의 활용

장애

장비에 장애가 발생하여 1대의 장비가 죽을시, 준비된 장비를 서비스에 투입함으로써 짧은시간내에 서비스복구가 가능하다.

 

웹서비스의 배포

두대의 서버가 LB에 의하여 Active-Active로 운영되고 있는 경우, 한대를 LB에서 제거 한 뒤 배포 및 미들웨어 재기동 후 LB에 붙히고 다시 나머지 한대도 똑같이 작업하는 경우 서비스의 다운타임 없이 온라인 배포가 가능하다.

 

장비의 점검

서버 혹은 네트워크장비를 운영시 OS나 Software Stack등을 보안이나 기능추가 등의 이유로 업데이트 및 설정 변경의 상황을 마주할 수 밖에 없다. 이런 불가피한 시스템다운시 이중화를 이용하면 번갈아 가며 점검 하는경우 서비스의 다운타임 없이 점검이 가능하다.

 

Posted by 배주혁

Linux console based monitoring tool - vmstat


시스템의 CPU, MEMORY, PROCESS, IO 정보들을 모니터링 할 수 는 툴이다.



각행 설명


procs

r : CPU에서 실행을 위하여 대기중인 프로세스의 수

b : I/O 자원을 받지 못하여 수면상태에 있는 프로세스의 수.

momory

swpd : swap의 샤용량. 이 값이 높으면 물리 메모리의 용량이 부족한지 확인해 봐야함

free : 미사용인 메모리의 용량.

buffer : 버퍼로 사용되고 있는 메모리의 양.

cache : 캐쉬로 사용되고 있는 메모리의 양.

swap

si : swapped in된 메모리의 양

(swap out된 내용이 다시 필요하게 되어 불러 오는 작업을 말한다.)

so : swapped out된 메모리의 양

(물리적 메모리가 부족할 경우, 사용하고 있는 물리적 메모리를 해제 시키는 작업을 swap out이라고 한다.)

io

bi : 1초당 block device에 보낸 block양

bo : 1초당 block device로 부터 받은 block양

'OPS > Monitoring' 카테고리의 다른 글

Linux console based monitoring tool - top  (0) 2015.04.29
Posted by 배주혁

Linux console based monitoring tool - top


아마도 제일 널리 알려진 콘솔기반 모니터링 툴이 아닌가 싶다.

시스템 CPU, Memory, process 등 종합적인 정보를 보여준다.

일반 명령어처럼 값을 콘솔에 출력후 shell로 돌아 오는게 아니라, 계속해서 시스템정보를 보여준다.

화면을 빠저나오려면 Ctrl+c를 누르면 shell로 빠저나온다.

top을 실행한 화면이다.

첫벗재행은 uptime 명령어의 실행결과를 그대로 가져온 것이다.

왼쪽부터 현재시간(10:04:41), 시스템 가동시간(7 min), 현재 로그인된 유저수(3 users), 1분(0.01), 5분(0.19), 15분(0.17) load 평균치를 뜻한다.


두번째행은 왼쪽부터 전체 process수(318), 현재 실행중인 process(3), sleep 상태의 process(315), 정지상태의 process(0), 좀비프로세스수(0)을 뜻한다.


세번째행은 cpu에 대한 상태를 나타낸다.

왼쪽부터 사용자가 사용하는 cpu 사용률(0.0 us), 시스템 커널이 cpu 사용률(0.3 sy), NICE 기본값 이하 사용률(0.0 ni), CPU 미사용률(99.0 id), 입출력 대기상태의 사용률(0.3 wa), 하드웨어 인터럽트 사용률(0.0 hi), 소프트웨어 인터럽트 사용률(0.0 si)을 뜻한다.


네번째행은 memory에 대한 상태를 나타낸다.

왼쪽부터 총 메모리 용량(1010860), 현재 사용중인 용량(937608), 남은 용량(73242) , buffer된 메모리 용량(180)을 나타낸다.


다섯번째행은 swap에 대한 상태를 나타낸다.

왼쪽부터 전체 swap 용량(2097148) 사용중인 용량(0) 미사용중인 용량(2097148) 캐싱메모리 용량(243021)을 나타낸다.


그 아래행 부터는 현재 실행중인 프로세스에 대한 정보를 나타낸다.

PID : process ID 
USER : 프로세스를 실행한 사용자 ID
PR : 프로세스의 우선순위 (priority)
NI : NICE 값, 마이너스가 우선순위가 높다.
VIRT : 가상 메모리 사용량 swap과 res를 합한 값이다.
RES : 현재 페이지가 상주하고 있는 크기(Resident Size)
SHR : 프로세스가 사용한 메모리를 나눈 메모리의 합.
S : 프로세스의 상태  S = sleep R = running, W = swapped out process, Z = zombie
%CPU : 프로세스의 CPU 사용률
%MEM : 프로세스의 메모리 사용율
TIME+: 프로세스가 CPU를 사용한 시간
COMMAND : 실행된 명령어


'OPS > Monitoring' 카테고리의 다른 글

Linux console based monitoring tool - vmstat  (0) 2015.04.30
Posted by 배주혁

Passive interface는 해당 Routing Protocol에 대한 정보를 아무것도 주지 않는 것



RIP같은 경우 저런 구성이 있다면 R1에서 R2에 연결 되있는 인터페이스를 Passive interface로 설정하는 경우 R1에서는 R2의 라우팅 테이블이 올라 오지만 R2에서는 R2에서는 R1의 라우팅테이블이 올라오지 않는다.

그럼 OSPF는 어떨가? R1에서 R2에 연결 되있는 인터페이스를 Passive interface로 설정하는 경우 R1과 R2둘다 라우팅 테이블이 올라 오지 않는다.

이유인 즉 RIP같은 경우는 자신의 장비의 인터페이스로 아무 조건 없이 계속 업데이트 정보를 상대로 전달한다.(물론 거기서 passive interface가 설정된 곳은 보내지 않겟지만) 그래서 자기 자신의 인터페이스에 passive itnerface를 걸어 놓으면 자신의 정보를 상대에게 보내지 않으니 R2는 R1의 라우팅 테이블을 받지 못한다. 하지만 R2쪽은 passive interface를 설정 하지 않았으니 당연히 정보를 계속 보냄으로 R1의 라우팅 테이블에는 R2의 라우팅 테이블이 올라온다.

허나 OSPF같은 경우는 다르다. OSPF는 Neighbor관계가 맺힌 라우터에만 라우팅 테이블 정보를 전달한다. 그런데 위 구성도 에서는 R2가 neighbor관계를 형성 하기위해 hello패킷을 보내지만 R1은 hello패킷을 받았지만 인터페이스에는 Passive interface가 걸려있기 때문에 hello패킷을 다시 보내지 못한다. 그러므로 둘 사이에는 neighbor관계가 형성되지 않음으로 라우팅 정보를 한쪽이라도 받을 수가 없는 것이다.

'OPS > Network' 카테고리의 다른 글

cisco 2811 | Lock and Key  (0) 2015.04.26
cisco 2811 | booting from ftp  (0) 2015.04.26
cisco 2811 | ipsec site-to-site VPN  (0) 2015.04.26
Posted by 배주혁

Lock and Key(dynamic acl)


동적인 access-list로 필요시 규칙이 활성화 되고 필요 없을시 비활성화 되게 설정할 수 있다.

- 커맨드

router(config)#access-list <acl_number> dynamic <규칙 이름> <permit|deny> <protocol> <source> <destination>

- 실습

클라이언트에서 서버로의 다른 접속은 가능하지만 ftp는 불가능 하게 설정을 하고 ssh인증을 통과할시 ftp가 가능하도록 설정



router(config)#access-list 100 dynamic FTP permit tcp any host 10.0.0.1 eq ftp

router(config)#access-list 100 deny tcp any host 10.0.0.1 eq ftp

router(config)#access-list 100 permit ip any any

router(config)#int fa 0/0

router(config-if)#ip access-group 100 in

router(config-if)#line vty 0 4

router(config-line)#autocommand access-enable host timeout 10

'OPS > Network' 카테고리의 다른 글

cisco | passive interface  (1) 2015.04.26
cisco 2811 | booting from ftp  (0) 2015.04.26
cisco 2811 | ipsec site-to-site VPN  (0) 2015.04.26
Posted by 배주혁

ftp서버는 192.168.0.2

유저이름:user01 패스워드:user01@pass

IOS파일이름 c2800nm-advipservicesk9-mz.124-15.T10.bin


라우터 측 셋팅

(config)#ip ftp username user01

(config)#ip ftp password user01@pass

(config)#boot system ftp c2800nm-advipservicesk9-mz.124-15.T10.bin 192.168.0.2

확인

#show version

....

System image file is "ftp://192.168.0.2/c2800nm-advipservicesk9-mz.124-15.T10.bin"

...

위 와 같은 줄이 있다면 성공 System image file을 ftp://192.168.0.2/c2800nm-advipservicesk9-mz.124-15.T10.bin로부터 불러 왔다는 뜻

'OPS > Network' 카테고리의 다른 글

cisco | passive interface  (1) 2015.04.26
cisco 2811 | Lock and Key  (0) 2015.04.26
cisco 2811 | ipsec site-to-site VPN  (0) 2015.04.26
Posted by 배주혁

IPSec VPN


사설망끼리 통신하는 경우만 VPN터널을 타고 통신되도록 설정 터널구간은 20.0.0.0/30 네트워크를 사용 하며 IPSec를 이용한 VPN를 구성



R1(config)#int tunnel 0

R1(config)#ip address 20.0.0.1 255.255.255.252

R1(config-if)#tunnel source 10.0.0.1

R1(config-if)#tunnel destination 10.0.0.2

R1(config-if)#exit

R1(config)#crypto isakmp policy 1

R1(config-isakmp)#encryption 3des

R1(config-isakmp)#hash sha

R1(config-isakmp)#group 2

R1(config-isakmp)#exit

R1(config)#crypto isakmp key 0 cisco address 10.0.0.2

R1(config)#crypto ipsec transform-set IPSEC esp-3des ah-sha-hmac

R1(cfg-crypto-trans)#exit

R1(config)#crypto map VPN 1 ipsec-isakmp

R1(config-crypto-map)#set peer 10.0.0.2

R1(config-crypto-map)#set transform-set IPSEC

R1(config-crypto-map)#match address 100

R1(config)#access-list 100 permit ip 192.168.0.0 0.0.0.255 172.16.0.0 0.0.0.255

R1(config)#route-map SKILL permit 1

R1(config-route-map)#match ip address 100

R1(config-route-map)#set ip next-hop 20.0.0.2

R1(config)#int tunnel 0

R1(config-if)#crypto map VPN

R1(config-if)#int fa 0/0.10

R1(config-if)#ip policy route-map SKILL

R1(config-if)#int fa 0/0.20

R1(config-if)#ip policy route-map SKILL

R2(config)#int tunnel 0

R2(config)#ip address 20.0.0.2 255.255.255.252

R2(config-if)#tunnel source 10.0.0.2

R2(config-if)#tunnel destination 10.0.0.1

R2(config-if)#exit

R2(config)#crypto isakmp policy 1

R2(config-isakmp)#encryption 3des

R2(config-isakmp)#hash sha

R2(config-isakmp)#group 2

R2(config-isakmp)#exit

R2(config)#crypto isakmp key 0 cisco address 10.0.0.1

R2(config)#crypto ipsec transform-set IPSEC esp-3des ah-sha-hmac

R2(cfg-crypto-trans)#exit

R2(config)#crypto map VPN 1 ipsec-isakmp

R2(config-crypto-map)#set peer 10.0.0.1

R2(config-crypto-map)#set transform-set IPSEC

R2(config-crypto-map)#match address 100

R2(config)#access-list 100 permit ip 172.16.0.0 0.0.0.255 192.168.0.0 0.0.0.255

R2(config)#route-map SKILL permit 1

R2(config-route-map)#match ip address 100

R2(config-route-map)#set ip next-hop 20.0.0.1

R2(config)#int tunnel 0

R2(config-if)#crypto map VPN

R2(config-if)#int fa 0/0

R2(config-if)#ip policy route-map SKILL

- 해설

crypto isakmp key 0 cisco address 10.0.0.1// cisco는 서로간의 인증암호 이며 10.0.0.1은 암호를 교환하며 터널링을 맺을 라우터의 실제 인터페이스 주소

crypto ipsec transform-set IPSEC esp-3des ah-sha-hmac// ipsec를 구성하기 위한 문장이며 IPSEC는 자신이 만들 정책이름을 뜻함

crypto map VPN 1 ipsec-isakmp// ipsec를 인터페이스에 씌우기 위해 정책을 만드는 것이며 VPN은 자신이 만들 정책이름

set peer 10.0.0.1// ipsec VPN을 맺을 라우터의 실제 인터페이스 주소

set transform-set IPSEC// ipsec VPN을 맺을때 사용하는 transform으로 IPSEC정책을 이용

match address 100// ipsec VPN은 이 주소에 정의된 주소규칙만 허용

route-map SKILL permit 1// 강제로 통신경로를 지정하기위해 사용

match ip address 100// 통신시킬 주소를 정의

set ip next-hop 20.0.0.1// 위의 acl이 움직일 때 반드시 이 주소로 통신하게 설정, 그러니 쉽게 풀자면 acl100이 192.168.0.0 0.0.0.255 172.16.0.0 0.0.0.255 이렇게 되어있다면 192.168.0.0/24 네트워크가 172.16.0.0/24로 통신하는 경우는 상대편 라우터의 20.0.0.1 주소로 패킷전송

crypto map VPN// 정의한 인터페이스에 VPN정책을 적용

ip policy route-map SKILL// 정의한 인터페이스에 강재라우팅 정책을 적용

'OPS > Network' 카테고리의 다른 글

cisco | passive interface  (1) 2015.04.26
cisco 2811 | Lock and Key  (0) 2015.04.26
cisco 2811 | booting from ftp  (0) 2015.04.26
Posted by 배주혁

사용자계정


●유저 생성

데비안 에서는 adduser와 useradd가 같지 않다.

adduser는 여러 질의를 통해 유저를 생성하고, useradd는 명령어 한 줄에 여러 옵션들을 적용해 유저 생성

그리고 newusers라는 게 있는데 파일하나를 만들어 유저정보를 입력하고(형식은 /etc/passwd파일과 똑같이 해야 함) newusers <파일이름>을 치면 유저정보가 있는 파일에 있는 내용이 passwd파일에 그대로 올라간다.

ex)

- adduser 만들기 예제

# adduser sample

Adding user 'sample'...

Adding new group 'sample' (1004)

Adding new user 'sample" (1004) with grouop 'hey; ...

Creating home directory '/home/sample' ...

Copying files from 'etc/skel' ...

Enter new Unix password:

Retype new UNIX password:

.

.- useradd 만들기 예제

# useradd sample

#

참고로 useradd는 -m 옵션을 넣지 않으면 홈 디렉터리를 만들지 않는다.

useradd 옵션

-u : uid 지정

-g : 메인 그룹 지정(gid나 그룹이름이나 상관없음)

-m : 홈 디렉토리 생성 명령어

-d : 기본 홈디렉토리 경로로 하고 싶지 않을때 홈 디렉토리 경로 따로 설정

-s : 사용하고 싶은 쉘 선택

-G : 보조 그룹 지정

-e : 계정 사용 기간 설정(2009-11-01)

-o : 이미 존재하는 uid나 gid를 지정 하게 해 줄수 있는 옵션

옵션을 지정하지 않으면 /etc/default/useradd에 있는 옵션을 적용

- newusers 만들기 예제

# vim userfile// 유저정보파일을 먼저 만들어 놔야함

--------------------------------------------------------------------

sample1:123:501:501::/home/sample1:/bin/bash

sample2:123:502:502::/home/sample2:/bin/bash

--------------------------------------------------------------------

sample2:123:502:502::/home/sample2:/bin/bash 해석하면

-> ID=sample2 비번=123 uid=502 gid=502 홈 디렉토리=/home/sample2 쉘 bin/bash

# newusers userfile

# vim /etc/passwd

--------------------------------------------------------------------

root:x:0:0:root:/root:/bin/bash

.

.

.

sample1:x:501:501::/home/sample1:/bin/bash

sample2:x:502:502::/home/sample2:/bin/bash

--------------------------------------------------------------------

이제 sample1으로 로그인 해보면 로그인이 된다.

● /etc/passwd 파일

# vim /etc/passwd

--------------------------------------------------------------------

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

.

.

gold:x:1000:1000:gold,,,:/home/gold:/bin/bash

--------------------------------------------------------------------

사용자이름:패스워드:UID:메인GID:사용자 진짜 이름:홈 디렉토리:

● /etc/shadow 파일

# vim /etc/shadow

--------------------------------------------------------------------

root:$ad45aIDIIadj$:14534:0:99999:7:::

.

.

gold:$6123dfsas:14534:0:99999:7:::

--------------------------------------------------------------------

사용자이름:패스워드:마지막 패스워드변경일로부터 지난 날:몇 일이 지나야 바꿀 수 있는지:패스워드를 반드시 바꿔야 하는 날로부터 며칠이 지나 갔는지:패스워드가 만기 되었음을 몇일동안 건지:패스워드가 만기되어 계정 사용불가가 된지 며칠이나 지났는지:계정 사용불가가 된 것이 1970-1-1일부터 계산하여 며칠째 됫는지:차 후 확장을 위해 남겨둔 항목

● /etc/default/useradd 파일

- useradd 명령어를 주면 이 파일에서 설정된 옵션들이 적용해 생성한다.

# vim /etc/default/useradd

--------------------------------------------------------------------

SHELL=/bin/bash// 쉘 방식 선택

GROUP=100// 기본 소속 보조그룹(우분투9.04버전에선 무시)

HOME=/home// 홈 디렉토리 선택

INACTIVE=-1// 패스워드 종료일 이후 유효 기간 (-1 사용안함)

EXPIRE=// 계정 종료일

SKEL=/etc/skel// 이 폴더안에 있는 파일이 홈 디렉토리 안에 생성됨

CREATE_MAIL_SPOOL=yes// 메일 스풀 파일 만들건지 말건지

--------------------------------------------------------------------

※ 지시문 앞에 빈칸이 있으면 인식이 안 된다.

● /etc/adduser.conf

- adduser 명령어를 주면 이 파일에서 설정된 옵션들이 적용해 생성한다.

# vim /etc/adduser.conf

--------------------------------------------------------------------

DSHELL=/bin/bash// 쉘 방식 결정

DHOME=/home// 홈 디렉토리 설정

GROUPHOMES=no// 메인 GID안에 홈폴더를 만들건지(유저 아이디 sample 이고 메인 그룹이 stu라면 경로가 /home/stu/sample)

LETTERHOMES=no// 유저의 첫글자를 딴 폴더안에 홈폴더를 만들건지(유저 아이디 xuser 경로 /home/x/xuser)

SKEL=/etc/skel// 이 폴더안에 있는 파일이 홈 디렉토리 안에 생성됨

FIRST_SYSTEM_UID=// system uid의 첫 번째 uid 범위

LAST_SYSTEM_UID=// system uid의 마지막 uid 범위

FIRST_SYSTEM_GID=// system gid의 첫 번째 gid 범위

LAST_SYSTEM_GID=// system gid의 마지막 gid 범위

FIRST_UID=// adduser명령어로 만들어진 유저의 첫번째 UID범위

LAST_UID=// adduser명령어로 만들어진 유저의 마지막 UID범위

FIRST_GID=// 기본 소속메인 그룹의 첫 번째 GID범위

LAST_GID=// 기본 소속메인 그룹의 마지막 GID범위

USERGROUPS=yes// 유저 생성시 사용자 이름(UID)과 같은 그룹(GID)을 만 들어 메인 GID로 적용할건지(sample:x:1000:1000)

USERS_GID=1000// 위 값이 no일시 모든 사용자의 메인 GID를 설정

DIR_MODE=0755// 홈 디렉토리 퍼미션 설정

SETGID_HOME=

QUOTAUSER=""

SKEL_IGNORE_REGEX=

'OPS > LInux' 카테고리의 다른 글

grub  (0) 2015.04.26
apache on debian  (0) 2015.04.26
bind9  (0) 2015.04.26
dhcp  (0) 2015.04.26
fdisk  (0) 2015.04.26
Posted by 배주혁
2015. 4. 26. 01:15

GRUB

리눅스에서 사용하는 부트로더중 하나이다. OS의 커널을 로드 하고 커널파라메터를 커널에 넘겨주는 역할을 한다.

# vim /boot/grub/menu.lst

--------------------------------------------------------------------

# menu.lst - See: grub(8) ...

.

.

default0

timeout5

color cyan/blue white/blue

.

.

titleDebian GNU/Linux, kernel 2.6.26-2-686

root(hd0,0)

kernel/boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet

initrd/boot/initrd.img-2.6.26-2-686

titleDebian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)

root(hd0,0)

kernel/boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro single

initrd/boot/initrd.img-2.6.26-2-686

titleWindows NT/2000/XP

root(hd0,2)

savedefault

makeactive

chainloader+1

--------------------------------------------------------------------

default0

-> timeout이 끝낫을때 몇 번째 title로 부팅할지

timeout5

-> 몇 초 뒤에 기본 title로 부팅할지

hiddenmenu

-> 부팅시 GRUB 메뉴를 보여주지않음 (데비안에는 기본옵션으로 없음 추가해줘야함)

color cyan/blue white/blue

-> color 글자색/배경색 선택된글자색/선택된배경색

글자 색과 배경색에 모두 사용 가능한 색깔은 black, blue, green, cyan, red, magenta, brown, light-gray 이고, dark-gray, light-blue, light-green, light-cyan, light-red, light-magenta, yellow, white는 글자 색에만 사용

hid

titleDebian GNU/Linux, kernel 2.6.26-2-686

-> 부팅시 GRUB 메뉴에서 표시될 이름

root(hd0,0)

-> 부트파티션이 있는 파티션 번호 (hd0,0)은 sda1이랑 같음

kernel/boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro quiet

-> 커널 이미지 경로 root파티션 장치명(경로) 커널파라미터

initrd/boot/initrc.img-2.6.26-2-686

-> initrc 이미지(리눅스 부팅 과정에서 루트 파티션을 사용하기 전 준비 작업 으로서 실행되어야 할 프로그램을 압출해서 담아 놓은 초기화 루트파일) 경로

root(hd0,2)

-> 윈도우가 깔려있는 파티션

rootnoverify(hd0,2)

-> rootnoverify는 root와 비슷하지만 해당 파티션을 마운트하지 않는다. NTFS 파티션처럼 GRUB이 인식할 수 없는 파티션을 루트 장치로 지정할 때 사용(기본으로 없는 옵션)

makeactive

-> GRUB의 루트 디바이스를 부팅 가능한 파티션으로 지정

chainloader+1

-> makeactive 명령으로 부팅 가능하도록 지정된 파티션의 첫 번째 섹터부터 읽어들이기 시작해 부팅을 시작하도록 하라는 뜻

· 커널 파라미터 종류

quite : 커널 메시지를 화면상에 출력되지 않게 하는 옵션

vga : 화면 해상도 설정

ro : read only로 마운트

single : single유저 모드로 부팅

grub비밀번호

방법1.

# grub

grub> md5crypt

Password: <비밀번호입력>

Encrypted: $nafqew/fd33lsdfaksd,/afsd.

컨트롤 + C로 빠저나옴

# vim /boot/grub/menu.lst

.

.

password --md5 $nafqew/fd33lsdfaksd,/afsd.

-> timeout 밑부분쯤에 password입력하고 나온 문자를 password --md5 다음에 적어줌

방법2.

# grub-md5-crypt

Password: <비밀번호입력>

Retype password: <확인차재입력>

$nafqew/fd33lsdfaksd,/afsd.

# vim /boot/grub/menu.lst

.

.

password --md5 $nafqew/fd33lsdfaksd,/afsd.

-> timeout 밑 부분쯤에 password입력하고 나온 문자를 password --md5 다음에 적어줌

방법3.

# grub-md5-crypt > grubpass

<비밀번호입력>후엔터// 출력을 grubpass파일로 해놔서 모니터 상에서 안 보인다.

<비밀번호재입력> 후엔터

# cat grubpass// 파일에 재대로 기록 되었는지 확인

Password:

Retype password:

$nafqew/fd33lsdfaksd,/afsd.

# vim /boot/grub/menu.lst

파일이 열리면 아무것도 건들지말고 컨트롤 +w n을 눌러준다. 그러면 창이하나 더생기는데 :e grubpass를 입력해서 새창에 grubpass파일을 불러온다 그러면 윗 창에 생기는 암호가 생기는데 yy로 복사한뒤 컨트롤 + w w로 grub파일로 이동한 뒤 p를 눌러 옴겨놓고

timeout 밑쯤에

password --md5 $nafqew/fd33lsdfaksd,/afsd. 를 추가해준다.

'OPS > LInux' 카테고리의 다른 글

user management on debian  (0) 2015.04.26
apache on debian  (0) 2015.04.26
bind9  (0) 2015.04.26
dhcp  (0) 2015.04.26
fdisk  (0) 2015.04.26
Posted by 배주혁
2015. 4. 26. 01:12

Apache


- 아파치 파일구조

· conf.d/아파치 전역에서 사용되는 잡다한 설정들

· apache2.conf기존 httpd.conf의 내용 및 sites-enabled, mods-enabled 파일들을 include하도록 하는 부분이 들어있다.

· httpd.conf아파치 1.x 버전 대와의 호환성 때문에 남아있다.

· sites-available/virtual host 설정을 보관한다.

· sites-enabled/sites-available로 symbolic link를 걸어 실제 사용하는 사이트들만 활성화한다. (여기에 링크가 존재해야만 아파치가 인식한다)

· mods-available/ 확장 모듈들 불러오기(*.load) 및 관련 설정(*.conf)들이 들어있다.

· mods-enabled/ sites-enabled와 마찬가지로 여기에 symbolic link가 걸려있어야 실제로 모듈이 로딩된다.

· ports.conf웹서버의 포트를 설정한다.

- 아파치 설정파일

# vim /etc/apache2/apache2.conf

--------------------------------------------------------------------

### Section 1: Global Environment// 아파치 전체적인 영향을 미치는 설정 부분

#

ServerRoot "/etc/apache2"// 아파치 루트 디렉토리 설정파일 로그파일 등이 존재

하는 곳 경로 마지막에 /를 붙혀서는 안됨

PidFile ${APACHE_PID_FILE}// 아파치 프로세서가 시작될 때 자신의 프로세서번호 (PID)를 기록하는 파일

Timeout 300// 클라이언트와 서버와 연결 후 둘 사이에 요청 이나

메시지가 발생 하지 않을 때 접속을 끊을 시간설정

KeepAlive On// 아파치 특정 프로세서가 특정 사용자의 지속적인 요청 을 계속 해서 처리 할 것인가 설정

MaxKeepAliveRequests 100// 한 프로세서가 이 옵션에 적힌 요청의 횟수만큼 지속 적인 요청을 처리(0으로 설정해두면 무한)

KeepAliveTimeout 15// 특정 클라이언트와 특정 프로세서가 처리 중 일 때 프로세서가 클라이언트의 다음 요청을 기다리는 시간

<IfModule mpm_prefork_module>

StartServers5// 기본 자식프로세스 개수(시작 시 띄울 프로세스 개수)

MinSpareServers5// 프로세스가 옵션보다 작으면 옵션 만큼 될 때 까지 프 로세스 생성

MaxSpareServers10// 프로세스가 옵션보다 많으면 옵션 만큼 될 때 까지 프 로세스 삭제

MaxClients150// 서버 접근 가능한 클라이언트 최대 개수

MaxRequestsPerChild0// 자식 프로세스가 처리 가능한 요청 개수 이 값 만큼 요청 받으면 자식 프로세스 죽음

</IfModule>

<IfModule mpm_worker_module>

StartServers2// 처음에 실행될 프로세스의 개수

Maxclients150// 동시 연결 가능한 클라이언트의 최대 개수

MinSpareThreads25// 새로운 클라이언트를 바로 처리하기 위해 대기하고 있 는 최소한의 스레드 수

MaxSpareThreads75// 새로운 클라이언트를 바로 처리하기 위해 대기하고 있 는 최대한의 스레드 수

ThreadsPerChild25// 하나의 자식프로세서가 계속 가질 수 있는 스레드 수

MaxRequestsPerchild0// 자식프로세서가 서비스할 수 있는 최대 요청 개수

</IfModule>

User apache// 요청을 대답하기 위하여 서버에 의해 사용되는 사용자 아이디를 지정

Group apache// 서버가 요청을 대답하는 그룹을 지정

AccessFileName .htaccess//

<Files ~ "^\.ht">// ht로 시작하는 모든 파일을 접근을 금지 시킴

Order allow,deny

Deny from all

</Files>

DefaultType text/plain// 파일 확장자를 통해 MIME형식을 알 수 없을 때 기본 적으로 쓸 MIME타입 지정

HostnameLookups Off// 클라이언트의 IP,이름을 기록할건지 off 경우 IP 저장 on 의 경우 이름으로 저장

ErrorLog /var/log/apache2/error.log

LogLevel warn// 로그파일의 저장 형식지정 그 종류로는 warn, debug, info, notice, crit, alert

Include /etc/apache2/mods-enabled/*.load

Include /etc/apache2/mods-enabled/*.conf

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

LogFormat “%v:%p...” vhost_combined// CustomLog에서 사용할 형식에 대한 지정

LogFormat "%h %l..." combined

LogFormat "%h %l..." common

LogFormat "%{Re...." referer

LogFormat "%{Use.." agent

CustomLog /var/log.. vhost_combined// 로그파일의 위치와 형식 앞의 /var....가 파일 위치고 한 칸 띄우고 vhost_com...가 형식임

Include /etc/apache2/conf.d/

Include /etc/apache2/sites-enabled/

--------------------------------------------------------------------

# vim /etc/apache2/conf.d/charset

--------------------------------------------------------------------

AddDefaultCharset UTF-8// 웹서버 로케일 설정

--------------------------------------------------------------------

# vim /etc/apache2/conf.d/security

--------------------------------------------------------------------

ServerTokens Full// 아파치의 HTTP로서 응답할 헤드를 설정 종류로는

Prod : Product Only의 약어로 웹서버의 종류만 출력

Min : 웹서버의 종류와 버전을 출력

OS : 웹서버의 종류와 버전, 운영체제의 종류를 출력

Full : 웹서버의 종류,버전,운영체제,설치된 모듈 출력

ServerSignature On// On설정시 웹서버의 에러문서에서 추가적 정보를 출력

TraceEnable On// Trace메소드(client가 송신한 리퀘스트를 그대로 반환 하는 것)의 온・오프를 설정하는 옵션

--------------------------------------------------------------------

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost *:80>

ServerAdmin webmaster@localhost// 웹서버 관리자 e-mail 주소

DocumentRoot /var/www// 웹페이지 파일 들이 존재할 디렉토리

<Directory />

Options FollowsymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/// 가상 디렉토리를 설정 가상도메인이 skill.com 이라면 skill.com/doc/cgi-bin/lin 을 입력하면 /usr/lib/cgi-bin/lin 스크립트를 실행

.

.

ErrorLog /var/log/apache2/error.log// 웹 에러 로그 파일 위치

LogLevel warn// 로그 레벨 설정

CustomLog /var/log/apache2/access.log combined// 웹 로그 파일 위치

Alias /doc/ "/usr/share/doc/"// 가상 디렉토리를 설정 가상도메인이 skill.com 이라면 skill.com/doc을 /usr/share/doc 으로 연결되게 하는 옵션 skill.com/doc/sea.jpg를 입력하면 /usr/share/doc/sea.jpg를 실행

</VirtualHost>

--------------------------------------------------------------------

- 아파치 가상호스트 실습

※ 전제 : 서버 IP는 192.168.0.1이고 이 서버에서 skill.com, www.skill.com order.skill.com의 DNS가 설정되어 있으며 192.168.0.1로 매핑되어 있음, 그리고 서버에는 /web, /www, /order 디렉토리가 생성되어 있고 각 폴더의 웹문서가 작성되어 있음

· skill.com, www.skill.com, order.skill.com 웹 사이트 만들기 실습

# vim /etc/apache2/apache2.conf

--------------------------------------------------------------------

ServerRoot "/etc/apache2"

LockFile /var/lock/apache2/accept.lock

PidFile ${APACHE_PID_FILE}

Timeout 300

KeepAlive On

MaxKeepAliveRequests 100

KeepAliveTimeout 15

<IfModule mpm_prefo가_module>

StartServers5

MinSpareServers5

MaxSpareServers10

MaxClients150

MaxRequestsPerChild0

</IfModule>

<IfModule mpm_worker_module>

StartsServers2

MaxClients150

MinSpareThreads25

MaxSpareThreads75

ThreadsPerChild25

MaxRequestsPerChild0

User ${APACHE_RUN_USER}

Group ${APACHE_RUN_GROUP}

AccessFileName .htaccess

<Files ~"^\.ht">

Order allow,deny

Deny from all

</Files>

DefaultType text/plain

HostnameLookups Off

ErrorLog /var/log/apache2/error.log

LogLevel warn

Include /etc/apache2/httpd.conf

Include /etc/apache2/ports.conf

LogFormat “%v:%p...” vhost_combined

LogFormat "%h %l..." combined

LogFormat "%h %l..." common

LogFormat "%{Re...." referer

LogFormat "%{Use.." agent

CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

Include /etc/apache2/conf.d/

Include /etc/apache2/sites-enabled/

DocumentRoot /web// 웹 파일들이 위치한 디렉토리 설정

DirectoryIndex index.html// 웹에 보여줄 웹 파일이름

ServerName skill.com// 기본 서버 네임 설정

NameVirtualHost 192.168.0.1:80// 네임기반 가상호스트 운영

--------------------------------------------------------------------

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

※ 이 파일의 기본값 세팅 되어 있는 것 모두 삭제

<VirtualHost 192.168.0.1:80>

ServerName skill.com

</VirtualHost>

<VirtualHost 192.168.0.1:80>// 192.168.0.1:80에 대해 가상 호스트 설정 시작

ServerAdmin root@skill.com// 관리자 메일 주소

ServerName www.skill.com// 서버 이름

DocumentRoot /www// 웹 파일들이 위치한 디렉토리 설정

DirectoryIndex www.html// 웹에 보여줄 웹 파일이름

Errorlog log/wwwe_log// 에러 로그 파일 위치

Customlog log/wwwc_log common// 커스텀로그 파일 위치

</VirtualHost>// 가상호스트 설정 끝

<Virtualhost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName order.skill.com

Documentroot /order

ServerAlias ad.skill.com// order.skill.com을 ad.skill.com으로도 접속하게 설정

DirectoryIndex order.html

ErrorLog ordere_log

CustomLog orderc_log common

</VirtualHost>

--------------------------------------------------------------------

# vim /etc/apache2/ports.conf

--------------------------------------------------------------------

NameVirtualHost *:80// 이 행 삭제

--------------------------------------------------------------------

# /etc/init.d/apache2 restart

- 아파치 한글 설정

※보통은 기본으로 한글설

정이 자동으로 되나, 만약 안 되는 경우

한글로 만든 웹 파일을 DocumentRoot로 지정된 디렉토리에 옴겨 주고, 웹파일 이름을 DirectoryIndex에 적어준다.

# Vim /etc/apache2/conf.d/charset

--------------------------------------------------------------------

AddDefaultCharset EUC-KR// 이렇게 바꿔줌

--------------------------------------------------------------------

# /etc/init.d/apache2 restart

- 리다이렉트 설정

· ad.skill.com/v2.html을 www.skill.com으로 리다이렉트 할 때

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

.

.

<Virtualhost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName ad.skill.com

Redirect /v2.html http://www.skill.com

</Virtualhost>

--------------------------------------------------------------------

· ad.skill.com을 www.skill.com으로 리다이렉트 할 때

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

.

.

<Virtualhost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName ad.skill.com

Redirect / http://www.skill.com

</Virtualhost>

--------------------------------------------------------------------

- php 연동

php 설치를 함

# ln -s /etc/apache2/mods-available/php5.* /etc/apache2/mods-enabled/

-> php모듈 적재

# vim /etc/apache2/apache2.conf

--------------------------------------------------------------------

.

.

DocumentRoot /web// 웹 문서가 위치할 디렉터리 설정

DirectoryIndex index.php// php로 작성한 웹 문서 적어줌

--------------------------------------------------------------------

# vim /web/index.php

--------------------------------------------------------------------

<?// php언어로 문서를 작성

echo "phptest";

phpinfo();

?>

--------------------------------------------------------------------

- 인증을 통한 접속

·.htaccess 파일을 사용한 사용자 인증

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName www.skill.com

DocumentRoot /www

<Directory /www>// 해당도메인으로 접속될때 /www 디렉토리로 접속하는 것이기 때문에 /www에 대한 권한을 제한

AllowOverride Authconfig// .htaccess파일을 사용할건지 말건지

</Directory>

DirectoryIndex www.html

Errorlog /log/wwwe_log

Customlog /log/wwwc_log common

</VirtualHost>

--------------------------------------------------------------------

# vim /www/.htaccess

--------------------------------------------------------------------

AuthName "access deny login// 인증창에 뜰 메시지

AuthType Basic// 인증 방법

AuthUserFile /www/.htpasswd// 인증을 허가할 유저가 담겨있는 파일

AuthGroupFile /dev/null// 사용자인증이니 사용하지 않음, 보기 같이 설정해야함

<Limit GET POST>

require valid-user// 파일에 지정된 사용자들만 접근 허용

#require user kim// 지정된 유저만 접근허용(kim만 접근가능)

</Limit>

--------------------------------------------------------------------

# htpasswd -c /www/.htpasswdlee// .htpasswd파일을 생성하며 lee사용자를 인증 허가에 등록시킴

# htpasswd /www/.htpasswd kim// 파일은 생성하지 않고 사용자만 추가

# /etc/init.d/apache2 restart

·.htaccess 파일을 사용한 그룹 인증

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName www.skill.com

DocumentRoot /www

<Directory /www>// 해당도메인으로 접속될때 /www 디렉토리로 접속하는 것이기 때문에 /www에 대한 권한을 제한

AllowOverride Authconfig// .htaccess파일을 사용할건지 말건지

</Directory>

DirectoryIndex www.html

Errorlog /log/wwwe_log

Customlog /log/wwwc_log common

</VirtualHost>

--------------------------------------------------------------------

# vim /www/.htaccess

--------------------------------------------------------------------

AuthName "access deny login// 인증창에 뜰 메시지

AuthType Basic// 인증 방법

AuthUserFile /www/.htpasswd// 유저 목록파일

AuthGroupFile /www/.htgroup// 그룹 정보가 담겨 있는 파일

<Limit GET POST>

require group school// 지정된 그룹만 접근 허용

</Limit>

--------------------------------------------------------------------

# vim /www/.htgroup

--------------------------------------------------------------------

<그룹이름>: <사용자> <사용자> 형식으로 적어줌

school: lee kim// 여기 명시된 사용자는 .htpasswd파일에 있어야 함

--------------------------------------------------------------------

# htpasswd -c /www/.htpasswd lee

# htpasswd /www/.htpasswd kim

# /etc/init.d/apache2 restart

·.htaccess 파일을 사용하지 않은 사용자 인증

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName www.skill.com

DocumentRoot /www

<Directory /www>

AllowOverride none// .htaccess파일을 사용할건지 말건지

AuthType basic

AuthName 'login access failed'

AuthUserFile /www/.htpasswd

AuthGroupFile /dev/null

require valid-user

</Directory>

DirectoryIndex www.html

Errorlog /log/wwwe_log

Customlog /log/wwwc_log common

</VirtualHost>

--------------------------------------------------------------------

# htpasswd -c /www/.htpasswd lee

# htpasswd /www/.htpasswd kim

# /etc/init.d/apache2 restart

·.htaccess 파일을 사용하지 않은 그룹 인증

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName www.skill.com

DocumentRoot /www

<Directory /www>

AllowOverride none// .htaccess파일을 사용할건지 말건지

AuthType basic

AuthName 'login access failed'

AuthUserFile /www/.htpasswd

AuthGroupFile /www/.htgroup

require group absol

</Directory>

DirectoryIndex www.html

Errorlog /log/wwwe_log

Customlog /log/wwwc_log common

</VirtualHost>

--------------------------------------------------------------------

# vim /www/.htgroup

--------------------------------------------------------------------

absol: sin gun// 여기 나열된 사용자는 .htpasswd에 등록 되어 있어야함.

--------------------------------------------------------------------

# htpasswd -c /www/.htpasswd sin

# htpasswd /www/.htpasswd gun

# /etc/init.d/apache2 restart

- 아파치 모니터링

# vim /etc/apache2/sites-available/default

--------------------------------------------------------------------

<VirtualHost 192.168.0.1:80>

ServerAdmin root@skill.com

ServerName www.skill.com

DocumentRoot /www

DirectoryIndex www.html

ErrorLog /log/wwwe_log

CustomLog /log/wwwc_log common

<Location /sk-mo>// www.skill.com/sk-mo로 접속하면 모니터링이 보이게 설정

SetHandler server-status

Order deny,allow

Allow from all

</Location>

--------------------------------------------------------------------

'OPS > LInux' 카테고리의 다른 글

user management on debian  (0) 2015.04.26
grub  (0) 2015.04.26
bind9  (0) 2015.04.26
dhcp  (0) 2015.04.26
fdisk  (0) 2015.04.26
Posted by 배주혁
이전버튼 1 2 3 이전버튼