Solaris Bind 자동 스크립

Posted 2010. 10. 11. 12:09

요즘은 편리하게 할려고 자동 스크립을 자주 찾게 되네요 -_-;  이러다가 명령어 다 까먹겠네요

OS : Solaris
Bind 실행 파일 : /usr/local/sbin/named
pid 위치 : /var/run/named.pid


# cd /var/named                <- 자동 스크립 파일 저장 위치

# cat >> Bind_named.sh          <- 자동 스크립 파일 생성

---------------------------------------------------------------------------------------
#!/bin/sh
#

# Control the Internet name servic

PATH=/sbin:/usr/sbin:/usr/bin:/bin
export PATH

[ -f /etc/named.conf ] || exit 0
case "$1" in
     'start')
           if [ -x /usr/local/sbin/named ];
           then
                /usr/local/sbin/named;
                echo "Internet name service started"
           fi
           ;;
    'stop')
           if [ -r /var/run/named.pid ];
           then
               Pid=`cat /var/run/named.pid`
               kill -9 $Pid
               sleep 2
               echo "Internet name service stopped"
           fi
           ;;
   'restart')
          if [ -r /var/run/named.pid ];
          then
              Pid=`cat /var/run/named.pid`
              kill -1 $Pid
              sleep 5
              echo "Internet name service restarted"
          fi
          ;;
  *)
          echo "usage: $0 {start|stop|restart}"
          exit 1
esac

exit 0


Ctrl + C                      
---------------------------------------------------------------------------------------




# chmod 744 Bind_named.sh              <- 자동 스크립 권한

# cd /etc/rc2.d                                 <- 자동 스크립 파일을 링크로 걸 위치

# ln -s /var/namd/Bind_named.sh S10named              <- 자동 스크립 파일을 링크 거는 명령어


이렇게 하면 Server 재부팅시 자동으로 실행이 진행됨












[스크랩] 시스템 shutdown 명령어

Posted 2010. 6. 1. 10:26


* 시스템 shutdown 명령어

 솔라리스에서는 시스템의 런 레벨을 변 경하는 다양한 명령어를 제공한다. 하지만 여러 명령어중 가장 많이 사용되며 안전한 명령어는 shutdown 명령어이다.

 

참고) 솔라리스 런 레벨(http://cafe.naver.com/secuacademy)

런레벨

설명

0

솔라리스가 전혀 가동하지 않는 레벨.

시스템 다운 (SPARC 에서는 Boot PROM단계 / 인텔 시스템에서는 BIOS상태)

* Boot PROM : 일반 PC의 BIOS에 해당하는 부분으로 Boot PROM의 가장 기본 기능은 시스템에 장착된 하드웨어를 점검하고 부팅 장치에서 솔라리스를 읽는 역할이다. Boot PROM이 실행되면 시스템의 기본적인 하드웨어인 CPU, 메모리 시스템 버스등의 이상유무를 점검 하며 기본적인 하드웨어에 이상이 없으면 시스템에 장착된 하드웨어를 초기화하여 시스템을 제어할 수 있는 상태로 전환한다.

 시스템에 장착된 목록을 만들고 그 하드웨어에 관한 기본적인 드라이버를 적재하며, Boot PROM 변수에서 정의된 부팅 장치에서 솔라리스 부트 프록램을 읽어서 메모리에 적재한 후 부트 프로그램에 제어권을 넘기면 Boot PROM의 역할은 끝난다.

1

관리상태

싱글유저(단일 사용자) 상태, 멀디유저 화일시스템이 언마운드 되고 데몬도정지

2

멀티유저(다중 사용자) 상태. 화일시스템이 마운트되고 정규 사용자 서비스가 시작 된다

3

솔 라리스의 기본 런 레벨

솔 라리스에서 제공하는 모든 서비스를 제공

NFS(Network File System)상태. 다중사용자가 네트웍을 통해 화일시스템을 서비스 받을 수 있다.

4

사용자 정의. 현재 거의 사용하지 않음

5

정지(halt) 및 전원 차단

6

기본수행단계로 리부팅

S,s

솔라리스에서 가장 기본적인 서비스만 제공되는 런 레벨

부팅시 런 레벨 S,s로 설정되어 작업 → 런 레벨 3 으로 설정됨

단일사용자(싱글유저) 상태. "root"사용자만이 시스템에 접근가능하며 최소한의 루트 파일시스템만 사용가능한 상태

시스템의 잘못된 설정 파일수정 / 파일시스템 복구 / 백업용도로 사용

 

  현재 사용중인 런 레벨은 현재 시스템에 로그인한 사용자 목록과 로그인에 관련된 정보를 출력해주는 who 명령어에 -r 옵션을 함께 사용하면 알 수 있다.(# who -r)

 

/sbin/init 명령어
 init 명령어는 솔라리스가 부팅할 때 가장 마지막 단계인 init 단계(/etc/inittab파일에 따라 init 프로그램의 행동이 결정되며, 부팅 단계 중 init 프로그램 실행 과정이 가장 많은 시간을 요하고 작업량도 가장 많다. init 과정에서는 현재 시스템에 필요한 파일시스템을 마운트하거나 서비스를 제공하는 프로세스를 생성한다)에서 실행되는 명령이다.

init 명령어가 실행되면 /etc/inittab 파일에 명시된 대로 시스템에 필요한 서비스를 제공하거나 시스템을 종료하기 위해 여러 스크립트를 실행한다. init 명령어는 시스템이 시작할 때뿐만 아니라 솔라리스가 동작 중에도 사용할 수있으며, 반드시 root 사용자 권한을 필요로 한다.

 init 명령어의 실행 형식은 다음과 같다.

# init 런 레벨(012356Ss)

 init 명령어 다음에 가고자 하는 런 레벨을 입력하면 해당하는 런 레벨로 즉시 변경한다. init 명령어는 런 레벨을 실행하기 위해서 /etc/inittab 파일에 명시된 대로 동작한다.

 참고로 위에서 알아본 런 레벨과 init 명령어를 이용해 종료 / 재부팅을 하려면 아래와 같이 조합해서 사용하면 된다.(http://blog.naver.com/schmeckcrono)

1) init 5 : 셧다운 후에 파워오프(썬장비에서는 가능, x86에서는 안됨)
2) init 6 : 셧다운 후에 리부팅
3) init 0 : 셧다운 후에 PROM Mode 진입

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

참고 : sync(Synchronizing Data)

 위 에서 사용한 init와 잠시후 살펴볼 shutdown, reboot(=init 6, 시스템 재시작) 명령과는 달리  halt(=init 0), poweroff(=init 5) 에서는  해당 명령을 수행하기전에 sync 명령어를 이용해  디스크에 아직 기록 되지 않는 메모리상의 데이터를 저장해 주어야 한다.

 다 중 사용자 환경이니 저장되지 않고 메모리 상에만 남는 데이터가 생기는데 이를 위해 sync 명령어를 이용하여 메모리 상에 존재하는 데이터를 디스크에 저장하게 된다. sync 명령은 한번이 아닌 여러번(3번 정도) 입력하는데 이유는 한번의 sync time에 기록되지 않는 누락된 데이터를 저장하기 위해 여러번 하는 것이다.

 예) # sync, sync, sync (, 혹은 ; 으로 구분해도 되고 sync를 따로 입력후 엔터)
      # halt

* init, shutdown, reboot 등의 명령어는 sync 명령을 자동으로 수행해 준다. 단, -n 옵션을 이용하면 sync 작업을 생략한다.

 

참고할 곳 : http://serings.tistory.com/71 
              
http://blog.naver.com/dalmagru?Redirect=Log&logNo=70002584442
               http://blog.naver.com/schmeckcrono?Redirect=Log&logNo=90015496136
---------------------------------------------------------------------

/usr/sbin/shutdown 명령어
shutdown 명령어는 시스템의 상태를 바꾸거나 시스템을 종료할때 가장 많이 사용하고 가장 안전한 명령어이다. shutdown 명령어는 init 명령어처럼 런 레벨을 변경하게 되면 /etc/inittab 파일에 명시된 대로 스크립트를 실행하고, root 사용자의 권한을 필요로 한다.

형식 shutdown [-g grace-period] [-i 0156Ss] [-y] [messages]

 -g : g 옵션 다음에 지연 시간을 초 단위로 명시할 수 있으며, -g옵션을 사용하지 않으면 60초 
       
동안 지연된다.
 -y : y 옵션을 사용하면 지연시간이 다 되었을때 런 레벨을 바꿀 것인지 확인하는 기능에
       무조건 y를 선택하게 된다.
 -i : i 다음에는 원하는 런 레벨을 입력한다. init 명령에서는 모든 런 레벨로 변경이 가능하지만
      shutdown 명령어는 0156Ss로만 변경가능하고, 2 혹은 3 레벨로는 변경이 불가능 하다.
      -i 옵션을 생략하면 런 레벨 S로 전환된다.
 messages : 메시지를 적으면 로그인된 사용자에게 메시지를 뿌려준다. 아무런 메시지 없이
                  시스템을 끄거나 재부팅 하면 아마도 굉장한 원망을 들을 것이다.
                   System shutdown for repair hardware와 같은 메시지라도 적는 것이 기본.

예) shutdown -y -g 600 -i 5 "System shutdown for repair hardware." 
   600초 후에 런 레벨 5(셧다운 후 파워 오프) 마지막에 자동으로 대답하고 뒤의
   메세지를 로그인한 모든 유저에게 뿌려주면서 빨리 나가라고 경고 한다.
   (http://blog.naver.com/schmeckcrono?Redirect=Log&logNo=90015496136)

/usr/ucb/shutdown 명령어
 솔라리스에는 shutdown 명령어가 두 개 있다. 두 shutdown 명령어 모두 기능은 유사하지만 /usr/sbin/shutdown 명령어는 System V 계열의 명령어로서 솔라리스 2.X 버전에 처음 도입되었고, /usr/ucb/shutdown 명령어는 BSD 계열의 shutdown 명령어로서 솔라리스 1.X 버전에도 존재한다.

 

형식 shutdown [-h | -p | -r] [+minutes | now] [messages]

 

 - h : h(halt) 옵션을 사용하면 Boot PROM 상태로 전환된다
 - p : p(power off) 옵션을 사용하면 시스템 전원을 끈다
 - r : r(reboot) 옵션을 사용하면 시스템을 재부팅 한다

 +minute : + 다음에 지연 시간을 분 단위로 입력 가능하다. 설정하지 않으면 기본은 5분 이다
 now : 지연시간 없이 바로 실행

 h, p, r 옵션중 아무것도 입력하지 않을 경우 -h 옵션이 기본으로 설정된다.

 

/usr/sbin/halt, /usr/sbin/poweroff, /usr/sbin/reboot

 - halt : 시스템을 Boot PROM 상태로 전환
 - poweroff : 시스템의 전원을 끔
 - reboot : 시스템을 재부팅

 

☆ init / shutdown / halt / poweroff /reboot 명령의 특징.

init / shutdown의 경우는 셧다운 과정에서 현재 실행중인 데몬들과 프로세스들을 종료하고 파일시스템도 정상적으로 언마운트 하는 과정(/etc/inittab 파일의 내용을 참조하여 rc0 script 실행)을 거치는데 halt, poweroff, reboot는 그런 과정을 거치지 않고 모든것이 강제 종료되어 시스템에 악영향을 끼칠 수 있다. 

 

 따라서 init 혹은 shutdown 명령을 이용하는 것이 좋다.

 

 참고로 reboot 명령어는 다른 명령어와 달리 특별한 기능이 있다. reboot 명령어를 실행할 때 특별한 형식에 따라 옵션을 명시하면 Boot PROM 상태의 boot 명령어에 아규먼트나 옵션을 전달할 수 있다. 이 기능을 사용하기 위해서는 reboot 명령어를 다음의 형식에 따라 입력해야 한다.

 

 reboot -- boot_options

 

 - 기호 다음에 옵션 혹은 아규먼트를  명시하면 그 내용이 그대로 Boot PROM 상태의 boot 명령어에 전달된다.

 

예) reboot -- -r

    하드웨어가 추가로 장착되거나 제거 되었을 때 -r 옵션을 사용하면, 장착된 
    하드웨어에 관련된 파일들을 갱신하여 재구성 한다.

     ( /reconfigure 파일을 만들어 부팅한 것과 동일한 기능을 제공한다. 즉 /devices
       디렉토리에 존재하는 물리적인 장치 파일과 /dev 디렉토리에 존재하는 논리적인 
       장치 파일을 모두 새롭게 생성하며 /etc/path_to_inst 파일의 내용도 새롭게 갱신
       한다.)

 

* 전체적인 내용들은 한빛 Solaris Bible을 참조 할 것.



Solaris DiskSuite (SVM) RAID 구성 및 제거

회사에서  굴러다니는 Ultra 10(SPARC-II 440MHz) 로 RAID 구성을 해보았습니다. (작성일자 : 2010.04.12)

환경 : Solaris 8, SPARC


1. RAID 구성 계획 (RAID 1)


1.1. Disk 구성 확인

format 을 이용하여 Disk  구성을 확인해야합니다.

# format
Searching for disks...done


AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <ST39120A cyl 17660 alt 2 hd 16 sec 63>
          /pci@1f,0/pci@1,1/ide@3/dad@0,0
       1. c0t1d0 <Maxtor 5T020H2 cyl 38790 alt 2 hd 16 sec 63>
          /pci@1f,0/pci@1,1/ide@3/dad@1,0
Specify disk (enter its number): 0

selecting c0t0d0
[disk formatted, no defect list found]


FORMAT MENU:
        disk       - select a disk
        type       - select (define) a disk type
        partition  - select (define) a partition table
        current    - describe the current disk
        format     - format and analyze the disk
        repair     - repair a defective sector
        show       - translate a disk address
        label      - write label to the disk
        analyze    - surface analysis
        defect     - defect list management
        backup     - search for backup labels
        verify     - read and display labels
        save       - save new disk/partition definitions
        volname    - set 8-character volume name
        !<cmd>     - execute <cmd>, then return
        quit
format> p             <- p 입력


PARTITION MENU:
        0      - change `0' partition
        1      - change `1' partition
        2      - change `2' partition
        3      - change `3' partition
        4      - change `4' partition
        5      - change `5' partition
        6      - change `6' partition
        7      - change `7' partition
        select - select a predefined table
        modify - modify a predefined partition table
        name   - name the current table
        print  - display the current table
        label  - write partition map and label to the disk
        !<cmd> - execute <cmd>, then return
        quit
partition>  p             <- p 입력

Current partition table (original):
Total disk cylinders available: 17660 + 2 (reserved cylinders)

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 -  9406        4.52GB    (9407/0/0)   9482256
  1       swap    wu    9407 -  9657      123.54MB    (251/0/0)     253008
  2     backup    wu       0 - 17659        8.49GB    (17660/0/0) 17801280
  3       swap    wm    9658 -  9707       24.61MB    (50/0/0)       50400
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7       home    wm    9708 - 17658        3.82GB    (7951/0/0)   8014608

partition>

위의 내용을 보시면 총 용량은 8.49GB  / 4.52GB  swap 123.54MB   swap 24.61MB   home 3.82GB 로 나오네요.

여기선 제가 미리 metadb 를 사용할 공간을 만들어 놓았습니다.
처음에 swap(metadb) 를 사용할 부분을 만들지 않았다면 2번 슬라이스 swap 를 쪼개서 3번 슬라이스에 넣을수 있습니다.


1.2. Swap(볼륨데이버베이스) 공간 확보하기(c0t0d0s3 을 불륨데이터베이스로 구성)

밑의 내용을 미리 만들지 못한 metadb 용량을 swap 을 이용하여 만드는 방법입니다.

# mkfile 200m /swap1                      <--- 500MB 의 swap1 파일을 만드는 방법입니다.

# swap -l
swapfile             dev  swaplo 블록   사용 가능
/dev/dsk/c0t0d0s1      85,2      16 252992 252992

# swap -a /swap1                 <-- swap 에 임시적으로 500MB 만든 파일을 추가합니다.
              
# swap -l
swapfile             dev  swaplo 블록   사용 가능
/dev/dsk/c0t0d0s1      85,2      16 252992 252992
/swap                 -       16 1023984 1023984                           <-- 추가되었는지 확인

# swap -d /dev/dsk/c0t0d0s1               <-- swap 에서 c0t0d0s1 제거


이제 1.1. Disk 구성하기를 다시 한번 보시고 제가 만든것 처럼 슬라이스 2번 swap의 용량을 줄여서 슬라이스 3번에 조그만하게 만들어 놓으시면 됩니다.

제가 구성한것을 참고 하시고 swap 을 재구성 하신다음 밑의 내용을 보시면 됩니다.

# swap -a /dev/dsk/c0t0d0s1           <-- swap 에서 c0t0d0s1 을 원래대로 추가

# swap -d /swap                            <-- swap 에서 /swap 제거(용량이 많으시면 제거 안하셔도 됩니다. ^^:)



1.3. Disk RAID 구성

Part      Tag    Flag     Cylinders         Size            Blocks
  0       root    wm       0 -  9406        4.52GB    (9407/0/0)   9482256
  1       swap    wu    9407 -  9657      123.54MB    (251/0/0)     253008
  2     backup    wu       0 - 17659        8.49GB    (17660/0/0) 17801280
  3       swap    wm    9658 -  9707       24.61MB    (50/0/0)       50400
  4 unassigned    wm       0                0         (0/0/0)            0
  5 unassigned    wm       0                0         (0/0/0)            0
  6 unassigned    wm       0                0         (0/0/0)            0
  7       home    wm    9708 - 17658        3.82GB    (7951/0/0)   8014608


d1          c0t0d0s0, c0t1d0s0
d11         c0t0d0s0 
d12         c0t1d0s0

d2          c0t0d0s7, c0t1d0s7
d21         c0t0d0s7
d22         c0t1d0s7

d3          c0t0d0s1, c0t1d0s1
d31         c0t0d0s1
d32         c0t1d0s1

이렇게 미리 구성 계획을 잡고 하시면 편합니다~



2. RAID 1 구성하기


이제부터는 간단간단 하게 작업 하도록 하겠습니다.


# metadb -f -a c3 c0t0d0s3 c0t1d0s03
or
# prtvtoc /dev/rdsk/c0t0d0s0 | fmthard -s - /dev/rdsk/c0t1d0s0

# metainit -f d11 1 1 d0t0d0s0 (원본)

# metainit d12 1 1 c0t1d0s0

# metainit d1 -m d11 (원본)

# metaroot d1                       <-- /etc/vfstab 에서 root 부분이 c0t0d0s0 에서 d1 로 변경됩니다.


# metainit -f d21 1 1 d0t0d0s0 (원본)

# metainit d22 1 1 c0t1d0s0

# metainit d2 -m d21 (원본)


# metainit -f d31 1 1 d0t0d0s0 (원본)

# metainit d32 1 1 c0t1d0s0

# metainit d3 -m d31 (원본)

# cp /etc/vfstab /etc/vfstab_old                 <-- 백업본으로 복사
# vi /etc/vfstab

/dev/dsk/c0t0d0s7 부분들을 /dev/md/dsk/d2  으로 모두 상황에 맞게 수정해 주세요!

# cp /etc/system /etc/system_old             <-- 백업본으로 복사   
# vi /etc/system

set md:mirrored_root_flag=1           <--   맨 밑에 부분에 추가

# sync;sync;sync;
# reboot -- -r

부팅시 에러 상황 체크 하시길 바랍니다.



# lockfs -fa                        <-- Server 에서 많은 I/O 발생이 있다면 하셔야 합니다.

# metattach d1 d12                    <-- 동기화 작업, d1이 원본 입니다.

# metattach d2 d22                    <-- 동기화 작업, d2이 원본 입니다.

# metattach d3 d32                    <-- 동기화 작업, d3이 원본 입니다.


# metastat          <-- 동기화 진행 상황 체크하세요~


동기화가 끝이 나면 밑의 내용도 보시고 추가 및 수정 하세요!



# ls -l /dev/dsk/c0t0d0s0
lrwxrwxrwx   1 root     root          46 2008년 11월  5일 /dev/dsk/c0t0d0s0 -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:a

# ls -l /dev/dsk/c0t0d0s1
lrwxrwxrwx   1 root     root          46 2008년 11월  5일 /dev/dsk/c0t0d0s1 -> ../../devices/pci@1f,0/pci@1,1/ide@3/dad@0,0:b

# eeprom "nvramrc=devalias rootdisk /pci@1f,0/pci@1,1/ide@3/disk@0,0 devalias rootmirror @1f,0/pci@1,1/ide@3/disk@1,0"

# eeprom "use-nvramrc?=true"

# eeprom boot-device="rootdisk rootmirror net"


이렇게 하시면 끝이 납니다.



3. RAID 제거 방법


# metadetach d1 d12

# metadetach d2 d22

# metadetach d3 d23

# metaroot /dev/dsk/c0t0d0s0    <--  다른 부분들은 /etc/vfstab 에서 수동으로 수정하세요)

# reboot -- -r


# metaclear -r d1 ; metaclear d11
# metaclear -r d2 ; metaclear d21
# metaclear -r d3 ; metaclear d31



4. RAID 복구(Disk Fail) 방법

문제 발생한 Disk 의 metadb 삭제 (예, c0t1d0s0)

# metadb -d -f /dev/dsk/c0t1d0s0

새로운 Disk 추가

# devfsadm or disks             <-- Solaris 8 이상
# devconfig or disks             <-- Solaris 7 이하

추가된 Disk가 format 명령어에서 나타나면 Disk 를 사용할 수 있도록 정리합니다. (newfs 아시죠?)

# metareplace -e d1 c0t1d0s0

복구도 이제 끝~


RAID 구성, 제거, 복구 방법을 대충 대충 해놓았는지라 설명이 부족할 수 있지만 어느정도 Solaris를 만졌다고 하시는 분들은 대충 아실테니 양해 바래요~


Solaris 설치 후 기본 설정

Posted 2010. 4. 12. 17:10

Solaris 설치 후 기본 설정

한번씩 나오는 건망증으로 인해 서버 설치 후 기본적인 설정을 적어 놓습니다.  (작성일자 : 2010년 04월 12일)



1. 네트워크 설정

# vi /etc/hosts

127.0.0.1       localhost

192.168.1.200   test loghost

 
# vi /etc/hostname.hme0

test
 

# vi /etc/netmasks

192.168.1.0     255.255.255.0

 
# vi /etc/defaultrouter

192.168.1.254


    - 부팅시 Gateway 자동인식이 안돼면
  
     route add default 192.168.1.254
 

# vi /etc/resolv.conf

nameserver 168.126.63.1

 
# vi /etc/nsswitch.conf

hosts:    files dns



2. Solairs에서 /home 디렉토리 사용하기

# vi /etc/auto_master

+auto_master
/net            -hosts          -nosuid,nobrowse
/home           auto_home       -nobrowse
/xfn            -xfn

여기서 /home 부분을 주석(#) 처리 하면 됩니다.

#/home           auto_home       -nobrowse

적용을 위해서는 reboot 하셔야 합니다.



3. 시스템 시간 맞추기


3.1. rdate

수동으로 작업

# rdate time.bora.net


자동(스크립) 작업

# vi /etc/rc3

rdate time.bora.net           <-- 추가


3.2. XNTP

ntp 프로그램이 설치 되었는지 확인

# pkginfo | grep ntp  

설치 되어 있지 않다면   http://www.sunfreeware.com 에 방문하여 패키지를 다운 받으시길...

# cp /etc/inet/ntp.client /etc/inet/ntp.conf                 <--- 복사  작업

# vi ntp.conf

server time.bora.net
server time.nuri.net
server gps.bora.net
server ntp1.cs.pusan.ac.kr
server ntp.ewha.net
server ntp1.gngidc.net
server ntp2.gngidc.net
server time.kriss.re.kr

위의 내용을 추가

# /etc/init.d/xntpd start           <-- 시작

# ntpq -p        <-- ntp 서버에 접속하는지 확인~~




 

Solaris8 (SPARC) APM 과 보안서버(SSL)설치

 


현재 제가 직접 설치한것을 토대로 글을 작성합니다. (2009.09.30)


환경 : Solaris 8 SPARC


1.
필요한  APM 및 라이브러리  다운

 

http://sunfreeware.com  에서 접속하여 오른쪽에 있는 해당 하드웨어 사항들을 체크한 다음  클릭하여  아래에 적힌 목록들을 다운

apache-2.2.9-sol8-sparc-local.gz
mysql-5.0.67-sol8-sparc-local.gz
ncurses-5.6-sol8-sparc-local.gz
php-5.2.6-sol8-sparc-local.gz
expat-2.0.1-sol8-sparc-local.gz
openldap-2.4.11-sol8-sparc-local.gz
sasl-2.1.21-sol8-sparc-local.gz
gcc-3.4.6-sol26-sparc-local.gz
libgcc-3.4.6-sol26-sparc-local.gz
libiconv-1.11-sol26-sparc-local.gz
libintl-3.4.0-sol26-sparc-local.gz
libxml2-2.6.31-sol26-sparc-local.gz
openssl-0.9.8i-sol26-sparc-local.gz
zlib-1.2.3-sol26-sparc-local.gz
libidn-1.10-sol8-sparc-local.gz
libpng-1.2.33-sol8-sparc-local.gz
curl-7.19.1-sol8-sparc-local.gz
fontconfig-2.4.2-sol8-sparc-local.gz
freetype-2.3.1-sol8-sparc-local.gz
gd-2.0.35-sol8-sparc-local.gz
jpeg-6b-sol8-sparc-local.gz
xpm-3.4k-sol8-sparc-local.gz


새로 Server를 설치하였다면 위의 목록들을 모두 받아놓는게 정신건강상 좋습니다.


~ 필요한거에요.


~ 혹시 위에 버젼보다 높은 버젼이 나왔다면 그걸 받아서 설치하셔도 됩니다.


위의 파일들은 모두 패키지 형식이기 때문에 gzip으로 압축만 풀고 간단한 명령어가 치면 자동으로

설치 됩니다.


) #  gzip -d gcc-3.4.6-sol26-sparc-local.gz


이렇게 모두 압축을 풀어주세요

압축을 풀게 되면 gcc-3.4.6-sol26-sparc-local 이렇게만 남습니다.


그다음 패키지를 풀면됩니다.


) # pkgadd -d gcc-3.4.6-sol26-sparc-local

Select package(s) you wish to process (or 'all' to process
all packages). (default: all) [?,??,q]:  all

이렇게 모두 파일이름만 바꾸고 설치 하시면 됩니다.

 


2. PATH
설정


밑의 내용을 /etc/profile 에서 넣어주시면 됩니다.


# vi /etc/profile
# for Apache located at /usr/local/apache2
if [ -d /usr/local/apache2 ]
then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/apache2/bin; export PATH;
fi
# for MySQL located at /usr/local/mysql
if [ -d /usr/local/mysql/lib/mysql ]
then
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/mysql/bin; export PATH;
fi



밑의 내용을 PATH  에 대해 적용 방법등을 적어놓았습니다.


현재 자신의 PATH 값을 보려면 아래와 같이 하면 됩니다.

# echo $PATH

 
그리고 PATH에 새로운 값을 추가하려면 아래와 같이 하면 됩니다.

 
# PATH=$PATH:/usr/local/bin:/usr/ccs/bin
# export PATH


위에서 /usr/local/bin /usr/ccs/bin 디렉토리를 추가했습니다. 이제 /usr/local/bin에 있는 명령어를 아무곳에서나 경로명 없이 실행할 수 있습니다.


하지만 위의 방법은 로그아웃하기 전까지만 유효합니다. 다시 로그인하면 또 위와 같이 PATH를 설정해줘야합니다.

그래서 이걸 자동적으로 적용되는 방법이 있는데 그건 사용자의 profile에 위의 내용들을 추가하는 겁니다.


# vi $HOME/.profile
PATH=$PATH:/usr/local/bin:/usr/ccs/bin
export PATH

만약 csh을 사용한다면 아래와 같이 하세요.

# vi $HOME/.login
setenv PATH $PATH:/usr/local/bin:/usr/ccs/bin



3. APM  설정


1) Apache


밑의 내용처럼  httpd.conf 파일을 수정해 주세요~!


# vi /usr/local/apache2/conf/httpd.conf
User nobody
Group nobody
daemon
으로 되어 있는걸 nobody로 수정


DefaultType text/plain
<IfModule mime_module> 
이부분에

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
위 두 내용을 추가.


LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so   
이부분 추가.

ServerName  192.168.1.69:80
IP
대신 도메인을 사용할 수 있음. test를 위해서는 일단 ip로 해도 괜찮아요.


Include conf/extra/httpd-mpm.conf
Include conf/extra/httpd-multilang-errordoc.conf
Include conf/extra/httpd-autoindex.conf
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-userdir.conf
Include conf/extra/httpd-info.conf
Include conf/extra/httpd-vhosts.conf
Include conf/extra/httpd-manual.conf
Include conf/extra/httpd-dav.conf
Include conf/extra/httpd-default.conf
Include conf/extra/httpd-ssl.conf
위의 사항들을 사용하고 싶다면 # 주석을 없애면 됩니다.


# /usr/local/apache2/bin/apachectl start


혹시 에러가 생기다면 필요한 라이브러리를 설치하지 않아 생겼을 테니 꼭 라이브러리를 설치하시길 바랍니다.

 

부팅시 자동으로 Apache를 구동할 수 있도록 스크립을 작성하겠습니다.
위의 사항들을 제대로 구성하셨으면 /etc/init.d/apache  라는 파일이 만들어져 있을껍니다.
이건 그냥 무시하시고 저는 간단하게 하기 위해 짧게 할 예정이라 한줄 밖에 안됩니다.
          
#vi /etc/init.d/apache2

#!/sbin/sh
#
# apache starting script
#

/usr/local/apache2/bin/apachectl start

더 이상 없습니다.


# chown root:sys /etc/init.d/apache2
소유자와 그룹을 root : sys로 변경

# chmod 744 /etc/init.d/apache2
파일 권한은 744

# ln /etc/init.d/apache2 /etc/rc2.d/S99apache  
# ln /etc/init.d/apache2 /etc/rc1.d/K16apache
# ln /etc/init.d/apache2 /etc/rcS.d/K16apache
여기에 링크를 걸어주시면 부팅시 자동으로 Apache 데몬이 작동이 됩니다.

 


2) PHP

cp /usr/local/php/doc/php/php.ini-recommended /usr/local/php/lib/php.ini
/usr/local/php/doc/php/php.ini-recommended
/usr/local/php/lib/php.ini 복사합니다.


테스트를 위해 아래 내용을 새로 작성

# vi /usr/local/apache2/htdocs/index.php
<?
  phpinfo()
?>

확인방법은 http://192.168.1.69/index.php  (이건 저의 셋팅에 따라 만든거에요)
제대로 되었다면 밑의 그림이 나올껍니다. ~ 그리고 이 테스트는 APM 모두 설치 셋팅한다음 테스트를 하시길 바랍니다.





3) MySQL


# useradd -d /export/home/mysql -g staff -m -u 102 -s /bin/false mysql
MySQL
을 사용할 계정을 추가


# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
/usr/local/mysql/share/mysql
my-huge.cnf, my-large.cnf, my-medium.cnf, my-small.cnf 의 예제 설정 파일이 있다. 이를 /etc/my.cnf 으로 이름을 바꿔 복사하면 된다.


skip-networking
#log-bin
리플리케이션을 사용하지 않는다면 [log-bin]을 찾아 주석처리하고 외부에서 접속이 없다면 [skip-networking]의 주석을 푼다.


# /usr/local/mysql/bin/mysql_install_db
기본 MySQL DB를 생성


# chown -R mysql:staff /usr/local/mysql/var
기본 MySQL DB가 생성되는  /usr/local/mysql/var 의 디렉토리 및 파일들의 소유자를 mysql  그룹은 staff로 변경


# /usr/local/mysql/share/mysql/mysql.server start
MySQL
서버를 시작
종료는 /usr/local/mysql/share/mysql/mysql.server stop


# /usr/local/mysql/bin/mysqladmin -u root password 'PASSWORD'
MySQL
root 패스워드를 변경
기본값은 없기 때문에 보안을 위해서 반드시 수정


# /usr/local/mysql/bin/mysqladmin -u root -h test -p password 'NEW-PASSWORD'
Enter password: PASSWORD
위처럼 하시면 새로운 패스워드로 변경이 됩니다. 위에서  test host 이름입니다.

 

 

부팅시 자동으로 Mysql를 구동할 수 있도록 스크립을 작성하겠습니다.

# vi /etc/init.d/mysql

#!/sbin/sh
#
# mysql starting script
#
 
/usr/local/mysql/bin/mysqld_safe &


# chown root:sys /etc/init.d/mysql
소유자와 그룹을 root : sys로 변경

# chmod 744 /etc/init.d/mysql
파일 권한은 744

# ln /etc/init.d/mysql /etc/rc2.d/S99mysql  

이렇게 하면 mysql도 부팅시 자동으로 데몬이 올라오게 됩니다.

 

 

 


 

4. 보안서버(SSL) 설치 및 설정

 


1) openssl 을 이용하여 key 파일 생성 및 csr 코드 생성

 

일단 ssle 인증서 키와 파일들을 저장할 디렉토리를 만들어놓습니다.

# mkdir /usr/local/apache2/conf/ssl

# cd /usr/local/apache2/conf/ssl

 

Ps. 꼭 개인키와 csr 코드 등은 복사등을 해서 백업을 해주시길 바랍니다.

 

- 개인Key 파일 생성

# openssl genrsa -des3 1024 > m-sys_co_kr.key

 

Generating RSA private key, 1024 bit long modulus

.................................++++++

...............++++++

e is 65537 (0x10001)

Enter pass phrase:  <- 암호 필히 기억 (apache 실행시 사용함)

Verifying - Enter pass phrase:

 

만약 apache 실행시 암호를 사용하지 않고 사용하실려면 아래의 명령어를 통해 개인키를 생성하시길 바랍니다.

 

# openssl genrsa 1024 > m-sys_co_kr.key

 

 

 

- csr 코드 생성

# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr

 

Enter pass phrase for m-sys_co_kr.key:

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:KR

State or Province Name (full name) [Some-State]:Busan

Locality Name (eg, city) []:BusanJin

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Minerva Systems   <-회사명

Organizational Unit Name (eg, section) []:Technical Support Team   <-소속 부서

Common Name (eg, YOUR name) []:www.m-sys.co.kr    <-홈페이지 도메인

Email Address []:***@m-sys.co.kr

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:    <- 암호 필히 기억

An optional company name []:


 

 

- csr 코드 확인(보안상 *** 처리하였습니다)

# cat m-sys_co_kr.csr

 

-----BEGIN CERTIFICATE REQUEST-----

MIIB/jCCAWcCAQAwgagxCzAJBgNVBAYTAktSMQ4wDAYDVQQIEwVCdXNhbjERMA8G

A1UEBxMIQnVzYW5KaW4xGDAWBgNVBAoTD01pbmVydmEgU3lzdGVtczEfMB0GA1UE

***********************

934AJEaN5VPO3RJR6w4O2GwW/AM3iNuNr2IaBJmfKip9gA==

-----END CERTIFICATE REQUEST-----

 

공공기관이나 교육기관 등등에서 사용하기 위해서는 위에 생성된 csr 코드를 SSL 인증키 업체에게 메일이나 웹으로 이 파일을 보내서 인증키 발급을 신청해야합니다.

 

메일이나 웹으로 csr 내용을 SSL 인증키 업체에게 보내서 인증서 발급을 받으면 key csr 파일이 있는 경로(저의 경우는  /usr/local/apache2/conf/ssl) ftp를 이용하시던 다른 어떤수를 사용해서라도 넣어놓으세요.  ㅎㅎ

 

자체 인증서를 만들어서 테스트하는 방법은 뒤에서 설명하도록 하겠습니다.

 

 

2) SSL을 사용하기 위한 httpd.conf & httpd-ssl.conf 수정

 

어떤 파일 형식으로 인증서를 받으실지 모르겠지만 대충 m-sys_co_kr.pem 으로 받았다고 가정하고 시작하도록 하겠습니다.

 

저는 그냥 m-sys_co_kr.pem 파일을 복사해서 이름을 바꾸어서 사용하였습니다.

 

# cp m-sys_co_kr.pem  m-sys_co_kr.crt

 

 

먼저 위에서 Apache의 옵션 httpd.conf 파일안에 있는

Include conf/extra/httpd-vhosts.conf

Include conf/extra/httpd-ssl.conf  이 두 부분에서 주석처리를 없애버렸기 때문에 바로 httpd-ssl.conf 를 수정하겠습니다.

 

 

# vi /usr/local/apache2/conf/extra/httpd-ssl.conf

 

 

##

## SSL Virtual Host Context

##

 

<VirtualHost 210.*.223.*:443> <-이부분 수정 해당 IP (보안상 * 표시하였습니다만.. -_-;)

 

#   General setup for the virtual host

DocumentRoot "/home1/homepage/www"   <- 수정

ServerName www.m-sys.co.kr:443  <- 수정

ServerAdmin kwonbk@m-sys.co.kr  <- 수정

ErrorLog "/usr/local/apache2/logs/m-sys.co.kr_ssl_error_log"  <- 알아서 수정하세요 ^^

TransferLog "/usr/local/apache2/logs/m-sys.co.kr_ssl_access_log" <- 이것도 ..

 

#   SSL Engine Switch:

#   Enable/Disable SSL for this virtual host.

SSLEngine on

 

#   SSL Cipher Suite:

#   List the ciphers that the client is permitted to negotiate.

#   See the mod_ssl documentation for a complete list.

SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL

 

#   Server Certificate:

#   Point SSLCertificateFile at a PEM encoded certificate.  If

#   the certificate is encrypted, then you will be prompted for a

#   pass phrase.  Note that a kill -HUP will prompt again.  Keep

#   in mind that if you have both an RSA and a DSA certificate you

#   can configure both in parallel (to also allow the use of DSA

#   ciphers, etc.)

SSLCertificateFile "/usr/local/apache2/conf/ssl/m-sys_co_kr.crt"  <- 발급받은 인증서 경로

#SSLCertificateFile "/usr/local/apache2/conf/server-dsa.crt"

 

#   Server Private Key:

#   If the key is not combined with the certificate, use this

#   directive to point at the key file.  Keep in mind that if

#   you've both a RSA and a DSA private key you can configure

#   both in parallel (to also allow the use of DSA ciphers, etc.)

SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/m-sys_co_kr.key"  <- 개인키 경로

#SSLCertificateKeyFile "/usr/local/apache2/conf/server-dsa.key"

 

#   Server Certificate Chain:

#   Point SSLCertificateChainFile at a file containing the

#   concatenation of PEM encoded CA certificates which form the

#   certificate chain for the server certificate. Alternatively

 

#SSLCACertificateFile "/usr/local/apache2/conf/ssl.crt/ca-bundle.crt"  <- CA 있으면 추가~!

 

<FilesMatch "\.(cgi|shtml|phtml|php)$">

    SSLOptions +StdEnvVars

</FilesMatch>

<Directory "/usr/local/apache2/cgi-bin">

    SSLOptions +StdEnvVars

</Directory>

 

BrowserMatch ".*MSIE.*" \

         nokeepalive ssl-unclean-shutdown \

         downgrade-1.0 force-response-1.0

 

CustomLog "/usr/local/apache2/logs/ssl_request_log" \

          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

 

</VirtualHost>

 


 

3) SSL 적용한 Apache 실행하기

 

이제 httpd-ssl.conf 파일을 저장하고 apache를 실행하시면 됩니다.

일단 테스트를 해서 옵션등에 에러가 없는지 확인하겠습니다.

 

# /usr/local/apache2/bin/apachectl –t

Syntax OK

 

이렇게 정상적인 OK 가 나오면 실행하시면 됩니다. 간혹 인증서 때문에 테스트에서는 정상 작동이 된다고 하지만 실행해보면 실패가 되는 경우가 있는데 운영중인 서버라면 httpd.conf 에서 Include conf/extra/httpd-ssl.conf 부분을 주석처리하고 일단 상황을 보시고 실행하시길 바랍니다.

 

그리고 Solaris에서는 모르겠지만 Linux 에서는 apache 2.x.x 버전은 openssl, 이 자체 내장되어서 나옵니다. sunfreeware 사이트에서 설치시 받아야할 항목을 모두 받아서 설치한거니 헷갈리지 마세요 ^^;  아참 apache 1.3.x 버전의 경우 apache 실행시 apachectl startssl 을 해야 하지만 apache 2.x.x 의 경우 밑의 명령어 처럼 start 명령어만 해주면 됩니다.

 

 

# ./apachectl start

Apache/2.2.12 mod_ssl/2.2.12 (Pass Phrase Dialog)

Some of your private key files are encrypted for security reasons.

In order to read them you have to provide the pass phrases.

 

Server www.m-sys.co.kr:443 (RSA)

Enter pass phrase:

 

OK: Pass Phrase Dialog successful.

 

 

이렇게 하고 443 Port가 사용하고 있는지 확인하세요.

 

# netstat –an | grep 443

 

*.443                *.*                0      0 24576      0 LISTEN

      *.443                             *.*                             0      0 24576      0 LISTEN

 

 

443 Port 가 열려있다면 이제 익스플로러나 파폭등을 이용해서 https://m-sys.co.kr 주소로 들어가시면 SSL 보안이 실행되고 있는지 확인하실 수가 있습니다.

 


 

 

4) 자체 인증서 만들기

 

# openssl genrsa 1024 > m-sys_co_kr.key

 

# openssl req -new -key m-sys_co_kr.key -out m-sys_co_kr.csr

 

# openssl x509 -in m-sys.co.kr.csr -out m-sys.co.kr.crt -req -signkey m-sys.co.kr.key -days 3650

Signature ok

subject=/C=KR/ST=Busan/L=Busan/O=Minerva Systems/OU=Technical Support Team/CN=www.m-sys.co.kr/emailAddress=****@m-sys.co.kr

Getting Private key

 

이건 자체 테스트용으로 한것이기 때문에 기간은 10년으로ㅎㅎ

 

이렇게 하신다음 apache를 재시작 하시면 됩니다.

 

 

 

5) 각 운영체제 별 현재 설치된 apache, openssl 등을 확인 방법

 

- Linux

 

# rpm –qa | grep apache

# rpm –qa | grep ssl

 

# find / -name apache

# find / -name ssl

 

 

- Solaris

 

# pkginfo | grep apache

# pkginfo | grep ssl

 

# find / -name apache

# find / -name ssl

 

 



Solaris에서 DHCP를 이용시 hostname 변경 방법

고정IP를 사용하지 않는 사람들의 경우 대부분 DHCP를 이용해야지만 Solaris에서 인터넷을 사용할 수 있는걸로 알고 있습니다.
하지만 DHCP를 이용하게 되면 hostname이 unknown 로 되어 있어 수정을 할려고 하니 잘 되지 않더군요
그래서 제가 자료를 찾아서 unknown 를 test 성공한 내용을 적도록 하겠습니다.

일단 vi를 이용하여 수정하는 파일들을 열거하도록 하겠습니다.

/etc/nodename  <- 파일이 없다면 생성해서 만들어주세요!
/etc/hostname.hme0   <- hme0은 네트워크식별자 입니다.
/etc/inet/hosts
/etc/inet/ipnodes
/etc/net/ticlts/hosts
/etc/net/ticots/hosts
/etc/net/ticotsord/hosts
/etc/init.d/network
/etc/init.d/inetsvc


수정 방법

# vi /etc/nodename
test

# vi /etc/hostname.hme0
test

# vi /etc/inet/hosts

127.0.0.1       localhost       loghost test
192.168.1.70    test    # Added by DHCP    <- unknown를 test로 수정 후 저장


# vi /etc/inet/ipnodes

::1             localhost
127.0.0.1       localhost
192.168.1.70    test    #Added by DHCP  <- unknown를 test로 수정 후 저장


# vi /etc/net/ticlts/hosts

# RPC hosts
test test    <- unknown unknown 되어 있는걸 test test 로 수정 후 저장

# vi /etc/ent/ticots/hosts

# RPC hosts
test test    <- unknown unknown 되어 있는걸 test test 로 수정 후 저장


# vi /etc/net/ticotsord/hosts

# RPC hosts
test test    <- unknown unknown 되어 있는걸 test test 로 수정 후 저장


# vi /etc/init.d/network

#
# If the netstrategy was unsuccessful or we haven't got a locally configured
# name, default to "unknown"
#
if [ -z "$hostname" ]; then
        hostname="test"
fi

/sbin/uname -S $hostname

위의 부분을 찾아 hostname="unknown" 되어 있는걸 hostname="test"로 수정 후 저장


# vi /etc/init.d/inetsvc

 #
        # if DHCP doesn't return a hostname, use "unknown" so
        # client can resolve IP address into a local hostname.
        #
        hostname=`/sbin/dhcpinfo Hostname`
        if [ -z "$hostname" ]; then
                hostname="test"
        fi

위의 부분을 찾아 hostname="unknown" 되어 있는걸 hostname="test"로 수정 후 저장

이제 reboot 한후 hostname이 test 로 올라오는걸 확인하시면 됩니다.

 

SSH, FTP 접속 딜레이가 생길때...

Posted 2009. 5. 22. 16:36

처음 설치후 한동안 SSH, FTP 등 접속을 할때 빠르게 로그인창이 떳었는데 요즘은 계속 딜레이가 5초 이상이 발생하여
이에 대한 대처 방법을 적도록 하겠습니다.


1. SSH

SSH의 경우 대개 config 를 수정하면 해결이 되더군요
일단 sshd_config 를 수정해야하니 find 명령어로 찾도록 하겠습니다.

# find / -name sshd_config
/usr/local/etc/sshd_config

위의 디렉토리에 있네요.
그럼 수정을..
# vi /usr/local/etc/sshd_config

--------------------
#UseLogin no
#UsePrivilegeSeparation yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10
#PermitTunnel no
-----------------------------

맨밑으로 가시고 #UseDNS yes 부분이 있습니다.  이부분을 주석 제거하고 yes를 no로(DNS Server 일 경우 yes 그대로) 하시면 됩니다.

UseDNS no

이렇게 수정하고 저장한다음 SSHD를 재시작 해주시면 됩니다.


2. FTP

FTP의 경우는 대부분(?) resolv.conf 부분에서 딜레이가 발생합니다.

# vi /etc/resolv.conf

제일 첫번째줄에 nameserver 168.126.63.1 (KT DNS) 로 해 보세요.
순서를 바꾸는거죠. ^^;
그리고 /etc/hosts 여기에 접속할 ip 를 추가하면 딜레이 되는 부분이 어느정도 해결이 될겁니다.

« PREV : 1 : 2 : 3 : 4 : NEXT »