Apache2에서 필요한 모듈 컴파일하기.

MovableType은 perl스크립트로 만들어져 있다.
설치해보고 사용하는데는 많은(?) 시간이 걸렸다. 이유는 내가 예전에 컴파일했던 apache2에 펄스크립트나 cgi를 사용할 수 있는 모듈을 추가하지 않았기 때문이다.

때문에 프로그램을 바꾸거나 써보고 싶다는 생각이 들었지만, 실제로 바꾸기까지는 많은 시간이 걸렸다.
아마도 귀찮음 때문이었을 것이다.

지금부터, apxs를 이용해서 mod_perl을 컴파일했던 방법을 기록하려고 한다.(solaris 9)

먼저, 필요한 프로그램을 다운로드 받는다.(mod_perl)

CFLAG를 비롯해서 PATH, LDLIBRARYPATH등을 설정한다.

/var/tmp/에 mod_perl을 풀고, 디렉토리를 이동.

/usr/local/bin/perl Makefile.PL MP_INST_APACHE2=1 MP_APXS=/usr/local/apache2/bin/apxs

주의할점은 solaris에 들어있는 /usr/bin/perl을 사용하면 문제가 생긴다는것이다. gcc로 컴파일한 것이 아니므로.

make; make install;

이후 httpd.conf를 수정한다.

LoadModule perl_module modules/mod_perl.so

AddHandler cgi-script .cgi .pl

아래는 꼭 필요한것인지는 모르겠다.
perl스크립트에 관심이 없었으므로, 거의 초보나 마찬가지상태!
Alias /perl/ /export/home/apache2/cgi-bin/

SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI
이렇게하면 지정된 디렉토리(/export/home/apache2/cgi-bin/) 내에서 펄스크립트는 잘 작동된다.

문제는 일반 사용자들의 public_html디렉토리 내에서 perl스크립트 사용을 가능하게 해줘야하는 부분이다. 이 문제 해결에 많은 시간이 걸렸지만, 추가해주어야 할 내용은 몇줄 뿐이다.
AllowOverride None
Options ExecCGI
AddHandler cgi-script .pl .cgi
Order allow,deny
Allow from all
이것으로 apache2에서 perl스크립트를 사용할 수 있게 되었다.
마지막으로 해야할 것은 아파치데몬을 재실행 하는것뿐이다.

Sun Box의 호스트 아이디 바꾸기2

Solaris에서 동작하는 특정 소프트웨어들, 예를 들면 수호신같은 방화벽은 호스트 아이디를 가지고 라이센스 키를 생성한다. 그런데, PROM이 고장나서 교체하면 기존의 호스트 아이디가 바뀌어버리고, 당연히 프로그램도 작동되지 않는다. 라이센스키를 다시 받아서 설정하면 되겠지만 당연히 귀찮다.

이럴때 이전의 호스트 아이디를 알고 있으면 다음과 같은 방법으로 호스트아이디를 바꿀수 있다.

참 간단하지 않은가!

Let’s assume the MAC address you want to program is 8:0:20:aa:bb:cc and the hostid is 80aabbcc. Note: MAC and hostid don’t have to correspond.

at the ok prompt:

ok> 0 0 mkp
ok> 8 0 20 aa bb cc 80aabbcc mkpl
ok> ^d ^r (control+d, control+r)

(if 0 0 mkp fails, try 1 1 mkp, or 2 2 mkp)

Cracking?

오늘 아침 sun box에서 발생한 이상한 메시지

INIT: Command is respawing to rapidly, check possible errors
id: sv “/usr/bin/srload -D -q”

누군가가 /etc/inittab에 아래 두줄을 추가 시켜 놓았다.

SV:23:respawn:/usr/bin/srload -D -q
SV:23:respawn:/usr/bin/srload -D -q

음…

누가 무슨짓을 한건지 정말 궁금하다..

Continue reading

solaris8(9)에서 CD-image(iso format)를 마운트 하는 방법

gundal님의 글
solaris에서 iso이미지를 linux처럼 바로 mount 할 수 없다.
Linux)mount –t iso9660 –o loop iso_path mount_point

e.g.) # mount –t iso9660 –o loop /data/ora_920_1.iso /mnt/cdrom
(/data dir의 ora_920_1.iso 파일을 /mnt/cdrom에 cd-image로 mount)
Solaris)mount –F hsfs –o ro /data/ora_920_1.iso /mnt

오류: /data/ora_920_1.iso는 블록장치가 아닙니다.
즉, solaris에서는 device type이 블록장치가 아니면 자체로 mount 대상에 포함되지 않으므로 다음과 같은 선 조치가 필요.
#lofiadm –a /data/ora_920_1.iso /dev/lofi/1 (iso파일의 가상 블록장치명 생성)

생성된 블록장치로 mount

#mount –F hsfs –o ro /dev/lofi/1 /mnt
혹은

#mount –F hsfs –o ro `lofiadm –a /data/ora_920_1.iso` /mnt

Continue reading

NFS에 관해 혼자서 정리해 봤다….

gundal님의 글…

 

NFS Server/Client 요약

1. NFS Server 구성요소.

1) 설정파일 및 필요한 파일

– /etc/dfs/dfstab : NFS로 공유할 Directory 및 mount 될 option설정
(/etc/init.d/nfs.server 스크립트가 읽어서 이 내용대로 NFS 공유.)
-/etc/init.d/nfs.server : /etc/dfs/dfstab을 참조 /usr/lib/nfs/nfsd를 구동하는 start script
-/etc/dfs/sharetab : 현재 공유설정 해 놓은 file/directory 목록

– /etc/rmtab : 현재 원격으로 mount되어 있는 file/directory 및 client목록
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/etc/nfs/nfslog.conf : NFS log daemon 설정 파일
구성daemon 및 파일
-/usr/lib/nfs/nfsd : 실제 NFS 서버 데몬. Client의 mount요청을 주시하다가 요청이 발생하면 /etc/dfs/dfstab의 내용에 따라 파일시스템을 공유하도록 mount시켜줌.

– /usr/lib/nfs/mountd : NFS client의 공유(mount)요청에 대해 공유자원의 file handle을 넘겨주는 역할을 하는 데몬.( client에게 공유목록의 i-node 등을 전달.)
-/etc/default/nfslogd : NFS log 데몬.

* /usr/lib/nfs/statd : /etc/init.d/nfs.client script에 의해 구동되며
* /usr/lib/nfs/lockd : 서버와 클라이언트 양쪽모두 구동됨

2. NFS Client 구성요소.
1) 설정파일 및 필요한 파일
-/etc/vfstab : 원격으로 mount할 host:dir_path, mount point, fs type, option을 명시한다.
-/etc/init.d/nfs.client : /etc/vfstab을 참조하여 mountall (NFS resource mount)실행. 이 스크립트가 실행되면 /usr/lib/nfs/statd, /usr/lib/nfs/lockd 가 실행된다.
-/etc/mnttab : 현재 mount된 파일시스템정보를 담고있는 파일(local, remote)
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/usr/sbin/mount : local 혹은 remote 파일시스템을 mount(/etc/vfstab을 참조.)
2) 구성daemon 및 파일
-/etc/dfs/sharetab : 현재 공유설정 해 놓은 file/directory 목록
-/etc/rmtab : 현재 원격으로 mount되어 있는 file/directory 및 client목록
-/etc/dfs/fstypes : mount할 파일시스템의 type을 명시해 놓은 파일(default: nfs)
-/usr/lib/nfs/statd : 원격으로 mount할 파일시스템의 상태를 감지하는 daemon으로 원격NFS서버에 공유자원에 문제가 생기면 네트워크 연결을 재 시도함.
-/usr/lib/nfs/lockd : NFS서버가 client들에게 공유자원의 사용여부를 통보하는데 이 daemon은 서버가 주는 정보에 의거하여 원격공유자원에 읽기/쓰기를 관리한다.
3. NFS 사용 설명

1) Server side
/etc/dfs/dfstab 파일에 NFS 공유자원을 설정한다.

Ex) # vi /etc/dfs/dfstab

# share [-F fstype] [ -o options] [-d] [pathname] [resource]

# .e.g,

# share -F nfs -o rw=engineering -d “home dirs”‘ /export/home2

share -F nfs /work3/gundal

share -F nfs /work2

share -F nfs /work1

/work3/gundal, /work2, /work1 디렉토리를 원격에서 mount하도록 허용.

option을 지정할 수 있다. ( -o )

root=client : client로 지정된 시스템의 root user는 이 디렉토리에 대해 superuser권한을 갖는다.

rw=acces_list : read/write 옵션으로 access_list에 명시된 client들이 mount가능.

ro=access_list : read only 옵션으로 access_list에 명시된 client들이 mount가능.

access_list 구성 : client들을 구분자 ‘:’를 이용하여 명시한다.

Ex) share -F nfs -o rw=client1:client2:clinet3:… directory

IP주소로 client를 명시할 경우 ‘@’를 앞에 붙인다.

Ex) share -F nfs -o ro=@211.176.132.18:@211.176.132.20:…. directory

도메인으로 명시할 경우 앞에 ‘.’을 붙인다.

Ex) share -F nfs -o ro=.gfs.com:.boxcorea.com:…. Directory

/usr/sbin/share command로 확인해 본다.

# /usr/sbin/share -F nfs [ ?o option_list ] directory

에러 메시지가 없으면 설정에 문제가 없다.

공유가 되어 있는지 확인.

# /usr/sbin/share

– 공유되어 있는 항목을 보여준다.

공유를 제거한 후 /etc/init.d/nfs.server start 실행

# /usr/sbin/unshare directory

# /etc/init.d/nfs.server start

공유 및 서버데몬 확인

# ps ?e | grep nfs

/usr/lib/nfs/statd

/usr/lib/nfs/lockd

/usr/lib/nfs/mountd

/usr/lib/nfs/nfsd ?a 16

위 4개의 daemon이 실행 중이면 서버측 설정 및 작동은 정상임.

2) Client side

(1)서버의 공유자원을 확인.

# /usr/lib/nfs/dfshare [host-name]

-공유되어있는 directory 또는 자원들을 list한다.

(2)/usr/sbin/mount 명령으로 mount 해본다.

# /usr/sbin/mount ?F nfs [ -o option_list ] [host-name:/공유directory ]

– mount 되거나 mount를 기다리고 있으면 일단 정상적인 nfs공유 가능.

(3)booting시 자동으로 NFS mount하도록 하기 위해 /etc/vfstab을 수정
# vi /etc/vfstab

host-name:/directory – mount-point nfs – yes [bg,soft][fg,hard]

※ option 중 [bg|fg],[soft|hard],[intr|nointr]

booting시 첫번째 mount 실패시…

bg :background로 mount 계속 시도

fg : foreground로 mount 계속 시도.(default)

Soft : 에러 메시지를 출력하고 booting process 진행

Hard : timeo(timeout) 에 명시한 시간이 경과할 때까지 계속시도.(default)

intr : keyboard로 mount process를 중단 가능.(default)

nointr : keyboard로 mount process 중단 불가.

timeo=n : 1?10초 단위로 timeout 값을 지정.(default UDP:11, TCP:600)

retry=n : 재시도 횟수지정 (default:10,000)

(4) 수동으로 mount시 # /usr/sbin/mountall -r

-r : vfstab의 설정 중 remote resour만 mount

Sun box의 호스트아이디 바꾸기…

Let’s assume the MAC address you want to program is 8:0:20:aa:bb:cc and the hostid is 80aabbcc. Note: MAC and hostid don’t have to correspond.

at the ok prompt:

ok> 0 0 mkp
ok> 8 0 20 aa bb cc 80aabbcc mkpl
ok> ^d ^r (control+d, control+r)

(if 0 0 mkp fails, try 1 1 mkp, or 2 2 mkp)

오늘 아침에 해봤음..

솔라리스 2.5.1에서 FIFO 에러

>Quick question: we’ve got our first PCI-based Sun, a brand new Ultra 5, just
>put Solaris 2.5.1 HW 11/97 and pretty recent recommended patches on it. A
>couple of times during the installation, and lots of times once we start X, we
>notice the following message appear in the console:
>
>NOTICE: m64: fifo error, bus_reg=7b23a040

Several people have told me incredibly quickly that I need Sun patch 103792-18
or later on 2.5.1, or 105362-18 or later on 2.6. A couple of people wondered
if 2.5.1 ran properly on the Ultra 5 – yes it does. I’ve grabbed the absolute
latest 103792-20 and installed that. I rebooted the machine and the message
goes away.

솔라리스 낮은버젼에서 ultra10 440MHz CPU를 썼을때 FIFO에러가 나는 모양이다.

위에것은 구글에서 찾은것인데..
패치하면 해결된다는 내용인것 같네.

GF시스템에 문의 한 결과.
solaris7 environmentCD를 넣고 부팅한후, 설치할 OS를 선택하면 된다고..

실제로는 안해봐서 모르겠다.

15″ LCD를 Sun Ultra10에 붙이기…

ultra10에 woody를 설치해보려고 집에 가져갔다.
문제는 집에있는 모니터..
15″ LCD인데 화면이 안나오는게 문제.

기억을 더듬어서,
아무것도 안보이는 화면을 향해서

set-defaults
setenv output-device screen 1024×768 60
이렇게 쳐 넣고
reset

여전히 안보임…

결국 CRT붙여서 해봤더니..
기억을 제대로 못하고 있었던게 문제다.

올바른 방법은
setenv output-device screen:r1024x768 at 60

기억력의 한계…..

core 화일 관련 명령어…

core화일이 생겼을경우…

pstack core ==> core화일이 만들어질 당시 프로세스의 스택 정보 확인..

pflags core ==> core화일이 만들어질 당시 프로세스에 전달된 시그널 확인.

기타 coreadm 명령어를 참조..

=====================================
ex)
# pstack core
core ‘core’ of 11632: ./chklastlog -f /var/adm/wtmpx
ff3905e8 memcpy (3, ffbffec4, ffbffed4, 21db0, 0, 0) + 10c
000109b8 _start (0, 0, 0, 0, 0, 0) + 5c

# pflags core
core ‘core’ of 11632: ./chklastlog -f /var/adm/wtmpx
data model = _ILP32
/1: flags = PR_PCINVAL
sigmask = 0xffffbefc,0x00003fff cursig = SIGSEGV

솔라리스9에서 APM설치할때..

dk님의 글

솔라리스9에 APM설치하면서 궁금한게 생겼습니다.
예전에.. IpFilter 설치할때.. gcc는 32비트로 컴파일되기 때문에..
egcs라는 64비트 컴파일러로 했잖아요… (실제로 설치는 패키지로 했지만.. ㅋㅋ ^^;;)
MySQL이랑.. Apache, PHP도 보통 gcc로 컴파일하는데..
문제 없이 돌아가잖아요..
무슨 차이가 있을까요??
APM도 egcs로 컴파일 하는 게 맞는거 아닐까요??

그리고.. 솔라리스9에서 APM 설치하는거 깔끔하게 정리되면.. 올릴께용~~
아참.. 오늘 OpenBSD 3.3 i386 버전으로 방화벽 구축했습니다.. ㅋㅋ
룰셋은 IpFilter하고 똑 같네요.. ㅋㅋ
지금 셋팅하고 있는 솔라리스가 그 방화벽 안단에 있습니다.. ㅋㅋㅋ