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 서버에 접속하는지 확인~~





예전부터 봐 두었던 Synology NAS 를 이번에 좋은 기회로 구입을 하게 되어 이것저것 만지다가 MailStation 기능이 있어서 지금까지 Linux Server 에서 돌리던 Sendmail을 접고 1010+ 에 MailStation 패키지를 설치 후 설정을 해 보았습니다.

처음 접해보는  Mail App(PostFix)이라 여러가지 자료 수집 후 설정을 해 보았습니다. ^^;
밑의 내용은 제가 직접 설치한 부분이라 다른분들에게는 안 맞을 수가 있으니 이점 유의해 주시길 바랍니다.

환경 : Synology NAS 1010+, SecureCRT(telnet, ssh 사용) 혹은 Putty



1. MailStation 설치

일단 밑의 링크를 따라 가셔서 MailStation 패키지를 받으시길 바랍니다.

http://www.synology.com/support/download.php?lang=enu


제가 붉은색으로 체크한 부분에 해당 기기를 클릭하시면 됩니다.  저는 1010+ 이니 그대로 진행~
그리고 밑으로 쭉쭉 가시면 밑의 Packages 부분이 보일껍니다.



붉은색으로 체크한 부분을 클릭하여 다운을 받습니다. 다운받는 폴더를 알아서 하시길 바랍니다.
그리고 받은 파일을 압축 해제를 해주세요.

그다음 해당 NAS에 접속을 하셔야합니다. 저의 경우는 파이어폭스로 http://192.168.0.200:5000 로 연결합니다.



로그인하시면 위의 그림처럼 Management 를 클릭하세요.



패키지 관리를 클릭하시면 Mailstation 패키지가 없는 게 정상이겠죠?  아직 설치 안했으니...
이제 설치를 하도록 하겠습니다.



설치 클릭을 하세요.



다음을 클릭하세요.



찾아보기를 클릭하세요



다운 받은 패키지 파일을 압축 해제한 디렉토리로 가셔서 패키지 파일을 클릭하신다음 체크가 되어 있는 열기를 클릭하세요.



체크가 된 업로드 클릭하세요.



다음을 클릭하세요.



다음을 클릭하세요.




설치가 완료되면 체크된 종료를 클릭하세요.



패키지 관리에 가셔서 위의 그림처럼 MailStation 이 설치되었는지 확인하세요.



MailStation 을 클릭하신 후 실행을 클릭해 주세요.



상태에서 제가 체크 부분처럼 실행 되고 있는지 확인해 주세요.



2. 기본적인 설정


응용 프로그램에서 Mail Station 을 클릭하세요.



왼쪽 메뉴에서 Mail Station 을 클릭하시면 위의 그림처럼 화면 나타납니다.
기본적인 설정을 하겠습니다.  일단 도메인 이름에 메일서버 이름( 예, whitespace.kr ) 을 넣어주세요.
메일서버 설정에서 SMTP 활성화SMTP 인증은 꼭~ 체크해 주세요.  가능하다면 제가 체크한것 처럼 모두 체크를.. ^^;

이렇게 하시면 기본적인 설정은 끝이 납니다.



3. 다중 도메인 및 세부 설정

이부분은 기본적으로 SecureCRT, Putty, vi 을 사용할 수 있어야 합니다.



일단 SSH 로 NAS 접속합니다.



NAS_White> cd /usr/syno/mailstation/etc  로 디렉토리 이동을 하세요.



NAS_White> vi main.cf 

inet_interfaces = all                 (주석처리 # 되어 있다면 삭제해 주세요)
myhostname = mail.whitespace.kr      (Name Server에 등록된 MX 도메인입니다)
mydomain = whitespace.kr
mydestination = $myhostname, localhost.$mydomain, $mydomain, whitespace.co.kr, mail.whitespace.co.kr   ( 도메인이 여러개 있다면 여기서 추가 하시면 됩니다.

저장한다음 vi 종료해주세요.

이렇게 해 주시면 세부적인 설정이 마치게 됩니다.








설정 환경 : Linux

Apache에 SSL 을 적용하게 되면 대개 www.m-sys.co.kr 이나 회원 로그인 할때만 사용을 하는데 고객의 요청으로 서브 도메인까지 SSL 적용을 해야하는 경우가 있어서 제가 사용한 방법을 글로 남깁니다.


Apache 2.0.x 이하 버젼의 경우를 먼저 하도록 하겠습니다.

일단 ssl.conf 이 파일을 찾는게 중요합니다. 대부분의 설정을 여기서 하기 때문이죠

# cd /usr/local/apache/conf      <- 대부분 여기에 위치해요~

아차~ 제일 중요한 vhost.conf 에 있는 내용을 ssl.conf 로 넣어야 하니 이 작업을 먼저 하겠습니다.

# cat vhost.conf  >>  ssl.conf           <- 이렇게 하면 vhost.conf 의 내용이 ssl.conf 제일 밑 부분으로 연결되어 추가 됩니다.


그다음 vi 를 이용하여 수정~~

# vi ssl.conf

<IfDefine SSL>     <- cat 을 이용하여 vhost.conf 내용을 그냥 가져왔으니 여기와 끝을 잘 보시고 수정하셔야합니다. 맨 끝에는 </IfDefine> 이게 있어야겠죠?
.
.
.
Listen 443
NameVirtualHost 218.*.*.213:443         <-  대충 여기에 해당 서버 IP랑 Port 443 을 추가합니다.

그리고

SSLPassPhraseDialog  builtin   <- 수정을 하거나 주석(#) 처리해서 Server Reboot 시 패스워드를 자동으로 기입하도록 해야합니다.   아참 이부분은 Apache 시작시 패스워드를 묻지 않도록 인증서를 만들었으면 패스~~~~~~하셔도 됩니다.

요렇게... ^^

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh       <- 이부분은 저의 블로그에 보면 Apache 에서 자동 패스워드 적용이라는 타이틀로 되어 있는걸 참고 하시길 바랍니다.


그리고 밑의 내용처럼 수정 해 주시면 됩니다.

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>
.
.
.
.
</IfDefine>    <-꼭~ 확인하세요~



이제 Apache2.0.x 이상 버젼을 하도록 하겠습니다.
뭐~ 위에 꺼와 틀린점은 ssl.conf  파일 이름과 디렉토리 위치가 틀리다는거 빼고는 다 똑같습니다.

# cd /usr/local/apache/conf/extra      <- 대부분 여기에 위치해요~

아차~ 제일 중요한 httpd-vhosts.conf 에 있는 내용을 httpd-ssl.conf 로 넣어야 하니 이 작업을 먼저 하겠습니다.

# cat httpd-vhosts.conf  >>  httpd-ssl.conf           <- 이렇게 하면 httpd-vhosts.conf 의 내용이 httpd-ssl.conf 제일 밑 부분으로 연결되어 추가 됩니다.


그다음 vi 를 이용하여 수정~~

# vi httpd-ssl.conf

<IfDefine SSL>     <- cat 을 이용하여 httpd-vhosts.conf 내용을 그냥 가져왔으니 여기와 끝을 잘 보시고 수정하셔야합니다. 맨 끝에는 </IfDefine> 이게 있어야겠죠?
.
.
.
Listen 443
NameVirtualHost 218.*.*.213:443         <-  대충 여기에 해당 서버 IP랑 Port 443 을 추가합니다.

그리고

SSLPassPhraseDialog  builtin   <- 수정을 하거나 주석(#) 처리해서 Server Reboot 시 패스워드를 자동으로 기입하도록 해야합니다.       아참 이부분은 Apache 시작시 패스워드를 묻지 않도록 인증서를 만들었으면 패스~~~~~~하셔도 됩니다.

요렇게... ^^

#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh       <- 이부분은 저의 블로그에 보면 Apache 에서 자동 패스워드 적용이라는 타이틀로 되어 있는걸 참고 하시길 바랍니다.


그리고 밑의 내용처럼 수정 해 주시면 됩니다.

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>

<VirtualHost 218.*.*.213:443>
        ServerAdmin webmaster@test.co.kr
        DocumentRoot /usr/local/home/test
        ServerName test.co.kr:443
        ServerAlias test.co.kr:443
        ScriptAlias /cgi-bin/ "/home/WWW/test/cgi/"
        ErrorLog logs/test-error_log
        CustomLog logs/test-access_log combined
</VirtualHost>
.
.
.
.
</IfDefine>    <-꼭~ 확인하세요~



이상입니다.
저도 아직 수정해야 할 부분이 많이 있습니다. 혹시나 제가 적은 글에서 틀린 점이 있거나 의문사항이 있으면 댓글을 남겨주시길 바랍니다.


HP-UX 간단 점검 명령어

Posted 2010. 1. 22. 15:14


Backup

DAT Backup 확인 : /var/opt/ignite/recovery/latest/recover.log


System Log

Event Log : /var/opt/resmon/log/event.log
History Log : /var/adm/syslog/OLDSyslog.log
Current Log : /var/adm/syslog/syslog.log


성능 부분 체크

CPU, MEMORY, DISK usage : glance


Linux 에서 Apache2.0.47을 SSL 적용하여 설치를 해보니 실행시(startssl)  마다 패스워드를 넣어줘야만
실행이 되더군요.   이렇게 되니 Server 가 Reboot 될때 startssl로 자동실행하게 되면 패스워드 부분에서 걸려 apache가 실행이 되지 않으니 참고 하시길 바랍니다.  이 부분을 해결 하는 방법을  맨 밑에 제가 적어 놓도록 하겠습니다.

애초에 패스워드를 묻지 않도록 인증서를 만들면 될텐데... 일을 만들고 있네요  ㅠ.ㅠ  뭐 이것도 경험이니...... -_-;

일단 인증서가 있는 디렉토리로 이동하세요~ (예, /usr/local/apaceh/conf/ssl)
뭐 이부분은 그냥 패스워드를 넣을 파일을 만드는 작업이라 아무곳에 하셔도 되지만 인증서가 있는곳에 하시면 더 좋겠죠? 응?  퍽~~~

일단 디렉토리로 이동하셨다면 밑에 적을것 처럼 하시면 됩니다.

# cat > startssl_pw.sh
  #!/bin/sh
  echo 패스워드
Ctrl + C  <- 이 부분은 키보드에서 눌리는거에요. 혹시 이대로 적으시면 안되요~~
#

그다음은 이 파일이 사용할 수 있도록 권한을 설정하겠습니다.
# chmod 755 startssl_pw.sh


이제 한 고비는 넘겼네요. ㅎㅎ

이제 httpd.conf 혹은 ssl.conf 가 있는 곳으로 이동~~~~~~   (예, /usr/local/apache/conf)
둘중에 아무곳이나 마음에 드시는곳에 수정하시면 됩니다.

난 일단 httpd.conf 이쪽으로,,

# vi httpd.conf

그다음 밑의 부분을 찾으세요~~

<IfModule mod_ssl.c>
SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh   <- 여기에 추가 하시면 됩니다.   
</IfModule mod_ssl.c>


아참 ssl.conf 에서는 밑의 부분을 찾아서 주석(#) 처리를 하셔서 추가 하시거나 builtin 을 exec:/usr/local/apache/conf/ssl/startssl_pw.sh 로 수정해 주시면 됩니다.

# vi ssl.conf

SSLPassPhraseDialog builtin   ->     #SSLPassPhraseDialog builtin    주석처리하고 밑의 부분을 추가 혹은

SSLPassPhraseDialog exec:/usr/local/apache/conf/ssl/startssl_pw.sh    <-  이렇게 수정

이렇게 하시고 apache 를 실행해 보시면 패스워드를 묻지 않고 그냥 스스륵~~~ 실행이 됩니다.


이젠 Server Reboot 시 자동실행이 되도록 수정을 하도록 하겠습니다.

# vi /etc/rc.d/rc.local

/usr/local/apache/bin/apachectl startssl

이렇게 적어 주시면 Server Reboot 하더라도 자동으로 apache가 실행이 됩니다.

혹시나 의문점이 계시면 댓글~~~~~



 

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

 

 

« PREV : 1 : 2 : 3 : 4 : 5 : 6 : ··· : 18 : NEXT »