[ -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
---------------------------------------------------------------------------------------
* 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와 잠시후 살펴볼 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 작업을 생략한다.
/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와 같은 메시지라도 적는 것이 기본.
/usr/ucb/shutdown 명령어
솔라리스에는 shutdown 명령어가 두 개
있다. 두 shutdown 명령어 모두 기능은 유사하지만 /usr/sbin/shutdown 명령어는 System V 계열의
명령어로서 솔라리스 2.X 버전에 처음 도입되었고, /usr/ucb/shutdown 명령어는 BSD 계열의 shutdown
명령어로서 솔라리스 1.X 버전에도 존재한다.
- 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 파일의 내용도
새롭게 갱신
한다.)
회사에서 굴러다니는 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)
설치 되어 있지 않다면 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
위의 파일들은 모두 패키지 형식이기 때문에 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
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로 변경
# 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 실행시 암호를 사용하지 않고 사용하실려면 아래의 명령어를 통해 개인키를 생성하시길 바랍니다.
이렇게 정상적인 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*.*00 245760 LISTEN
*.443*.*00 245760 LISTEN
443 Port 가 열려있다면 이제 익스플로러나 파폭등을 이용해서 https://m-sys.co.kr주소로 들어가시면 SSL 보안이 실행되고 있는지 확인하실 수가 있습니다.
고정IP를 사용하지 않는 사람들의 경우 대부분 DHCP를 이용해야지만 Solaris에서 인터넷을 사용할 수 있는걸로 알고 있습니다.
하지만 DHCP를 이용하게 되면 hostname이 unknown 로 되어 있어 수정을 할려고 하니 잘 되지 않더군요
그래서 제가 자료를 찾아서 unknown 를 test 성공한 내용을 적도록 하겠습니다.
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"로 수정 후 저장