1. drvconfig   명령을 내린다

2. disks      디스크 장비일 때
    tapes     테입장비일 때
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)

'프로그래밍Tips' 카테고리의 다른 글

informix tuning study 03.08.22  (0) 2003.08.22
tar를 이용한 화일옮기기  (0) 2003.08.06
OK 모드에서 할 수 있는 것  (0) 2003.07.07
1. 아래와 같은 방법은 tar 파일을 생성시키지 않고 stdin/stdout과 리다이렉션(|)을 이용하여 tar을 이용해서 데이터를 원하는 곳에 옮기는 방법이다.

가령..
- ex) /data1 밑의 data를 /data2로 옮길 경우
# cd /data1
# tar cvf - ./data | ( cd /data2 ; tar xvf - )

- /data2의 size가 /data1의 사이즈 의 두배가 되지 않을때...
- tar 파일을 만들고 싶지 않을때...
- 귀찮을때....

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
The Boot PROM
각 system은 monitor PROM chip를 가지고 있다 PROM은 시스템이 부팅되기이전에 사용되며 self-test 절차로 시스템과 hardware와의 무결성여부를 진단한다.   에러가 없다면 자동으로 boot process를 수행한다.

The PROM Prompt
  시스템이 중지(halt, shutdown)되었을 때나 시스템 인터럽트인 STOP - A key를 눌렀을 때PROM monitor prompt가 나온다.   하지만 시스템 운용중에 Stop-A를 누르면 ok 상태로 되긴하나 현제 작업중인 데이터를 잃어 버리기 때문에 누르지 말아야 한다. 만약 실수로 눌렀다면 ok 라고 나온 상태에서 다른 커맨드를 입력하기 전에 아래와 같이 go를 입력하면 Stop-A를 누르기 전상태로 돌아 갈수 있다. 하지만 윈도우를 사용 중이 었다면 화면은 조금 깨어 졌을 것이다.

ok go    

ok banner

ULTRA   (1 X 390Z167), Keyboard Present
ROM Rev 3.2  64MB memory installed, Serial #3159808
Ethernet address 8:0:20:1a:e5:3d, Host ID : 72303700

ok

PROM prompt 에서 할수 있는것
ok probe-scsi

시스템에 연결되어 있는 SCSI 장치가 정확히 연결되어 있는지 리스트를 볼수 있다. 하지만 이 커멘드에서는 확장 SCSI Port에 연결된 장치는 확인할 수 없다.

ok probe-scsi-all

시스템에 연결되어 있는 모든 Port의 SCSI장치 확인

예>

/iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000
Target 3
   Unit 0    Disk    SEAGATE     ST32150    SUN0435435435000
Target 6
   Unit 6    Removable Read Only device

<주의>
위의 커멘드 실행결과 리스트에 나오지 않는 SCSI장치는 시스템을 부팅후에도 사용할수 없다.


ok boot

PROM 환경에 설정된 값으로 부팅한다. boot-device에 설정된 값

ok boot disk1 , boot disk3 , boot cdrom

부팅할 장치를 지정하여 부팅할수 있다

ok boot -s , boot cdrom -s

single mode로 부팅한다.

ok boot -r

hardware 장치들의 디바이스 파일을 새로 만든다. 새로 추가한 장치들이 있을때 이 옵션으로 부팅을 한다.

ok boot -a

Interective mode로 부팅할때 부팅할때 과정마다 물어 본다.

ok printenv

PROM 상에 설정되어있는 기본 값을 알수 있고 또 수정할수 있다.   여기서는 부팅 디스크의 변경, 자동부팅 여부, Power on시 시스템 테스트 여부등을 설정하고 변경할수 있다.

ok printenv <parameter Name> <value>

PROM 변수 환경값들의 변경

Parameter
Parameter Default Description
auto-boot? true Power on시 자동으로 부팅할것인지의 여부
boot-device disk 부팅 할때 SCSI ID 0번으로 부팅한다. (OS 1.x 는 SCSI ID 3번)
diag-switch? false Power on때 점검 모드로 시작한다.
input-device keyboard Power on input device
keyboard-click? false keyboard click 음의 발생 여부
mfg-switch? false if true, STOP-A로 interupt 하기 전까지 test 한다.
screen-#columns 80 .....
screen-#rows 34 .....
security-#badlogins no default 부정확한 패스워드 잎력회수 지정
security-mode none Firmware security level (none, command, full)
security-password no default Firmware security password (No display)
sunmon-compat? false if true, 제한된 monitor prompt를 출력한다.(>)
testarea 0 One-byte scratch field, available for read/write test
ttya-mode 9600,8,n,1,- TTYA (baud rate, #bits, parity, #stoop, handshake)
ttyb-mode 9600,8,n,1,- TTYB (baud rate, #bits, parity, #stoop, handshake)
ttya-ignore-cd true if true TTYA 무시 (Carrier-Detect)
ttyb-ignore-cd true if true TTYB 무시 (Carrier-Detect)
ttya-rts-dtr-off false if true TTYA 무시 (DTR-RTS)
ttyb-rts-dtr-off false if true TTYB 무시 (DTR-RTS)

< 주의 > 위의 parameter 리스트에는 잘 사용되지 않는 것은 빼었지만 위의 리스트의 값들도 잘못 설정하면 시스템의 부팅이 안되는 수가 있으므로 주의 하여 사용하여 주세요..

ok set-default <parameter>

지정한 parameter값을 디폴트 값으로 변경한다.

ok set-defaults

모든 환경값을 디폴트 값으로 변경한다.

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
참고 1 : RPM 사용법


# rpm -ivh source.rpm // source.rpm을 설치

# rpm -Uvh source.rpm // source.rpm을 Upgrade

# rpm -q source // source를 설치여부 확인

# rpm -e source // source를 삭제


참고 2 : Mount/unmount 사용법

CD의 설치프로그램을 사용하기 위해서 CD 장치를 마운트 시켜야한다. 사용 후에 다시 자치를 해제하는 것이 unmount 하는 것이다. 마운트하기 위해서 장치의 형식( type )을 알아야한다. 하지만 우리가 흔히 사용하는 type은 다음과 같다.


CD-ROM : iso9660

A: : msdos 또는 vfat

Hard Disk : ext2


위의 3가지의 형식을 참조하여 다음과 같은 형식의 명령을 사용한다.


mount -t 형식 장치명 마운트위치


위에서 장치명은 일반적으로 다음과 같다.


3.5" 플로피 : /dev/fd0

IDE 하드디스크 : /dev/hda, /dev/hdb

CD-ROM : /dev/cdrom 또는 /dev/hdc


그리고 마운트 위치는 장치에 대해서 접근할 수 있는 디렉토리 명칭이다. CD-ROM 드라이브를 /ycson 디렉토리에 마운트 시켜보자.


# mkdir /ycson

# mount -t iso9660 /dev/hdc /ycson

# ls /ycson // CD-ROM의 정보가 확인된다.


또는 A: 드라이브를 /a:에 마운트하려면


# mkdir /a:

# mount -t msdos /dev/fd0 /a:

# ls /a: // A: 드라이브의 정보가 확인된다.


다음과 같이 마운트 장치를 해제하고 확인할 수 있다.


# umount /a: // A: 드라이브 언마운트

# umount /ycson // CD-ROM 드라이브 언마운트

# ls /ycson // 빈디렉토리


리눅스에서는 이러한 자주 접근하는 장치 목록과 부팅시 자동으로 마운트할 목록을 /etc/fstab에 기록하고 있다. CD-ROM, A: 드라이브 모두 저장매체의 형식을 기록하고 있으므로 일반적으로 다음과 같이 간략히 마운트/언마운트 할 수 있다.


# mount /mnt/cdrom

# mount /mnt/floppy

# ls /mnt/cdrom // CD-ROM 드라이브의 내용을 확인 할 수 있다.




참고 3 : 압축프로그램 사용법

Unix/Linux/DOS에서 자주 사용되는 압축파일의 확장명과 연결 프로그램의 사용법은 다음과 같다.


.Z // compress 를 사용하였다.

$compress src // src.Z이라는 파일을 만든다.

$uncompress src.Z // compress에 의해 압축된 프로그램을 푼다.


.zip // zip/unzip을 사용하였다.

$zip dest src // src를 압축하여 dest.zip이라는 파일을 만든다.

$unzip -t dest.zip // dest.zip에 의해 압축된 프로그램을 본다.

$unzip dest.zip // dest.zip에 의해 압축된 프로그램을 푼다.


.gz // gzip에 의해서 압축하였을 때 생성되는 확장명이다.

$gzip src // src.gz이라는 압축파일 생성

$gzip -d src.gz // gzip에 의해 압축된 파일을 푼다.

// gzip을 이용하면 원본 파일은 결과 파일만 남는다.


.tar // tar에 의해서 압축된 파일이다.

$tar cvf dest.tar source1 dir1 dir2 // source1 dir1 dir2을 묶어 dest.tar를 생성한다.

$tar tvf dest.tar // dest.tar에 압축된 파일목록을 본다.

$tar xvf dest.tar // dest.tar에 포함된 파일을 푼다.


.tar.gz // tar + gz의 형식이다.

$tar cvf dest.tar source1 dir1 dir2 // tar 파일 생성

$gzip dest.tar // dest.tar.gz 파일 생성

$gzip -d dest.tar.gz // dest.tar 생성

$tar xvf dest.tar // dest에 포함된 파일을 풀어냄


.tgz // tar + gz의 결합형

$tar cvfz dest.tgz source1 dir1 dir2 // tgz 파일 생성

$tar tvfz dest.tgz // dest.tgz에 포함된 내용물 보기

$tar xvfz dest.tgz // dest.tgz 파일d에 포함된 내용을 풀어냄

// tar.gz으로 압축된 경우는 tar [x|c|t]vfz에 의해 처리가 가능함

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
MySQL + Apache + PHP4 + Zend Optimizer + Perl + mod_perl 설치하기


설치환경


CPU : Intel 300Mhz

RAM: 32M

HDD: 3.6G

OS: 한글 Redhat Linux 6.2

Kernel: 2.2.16

gcc : 2.8.1.x 이상( C compiler ) - RedHat 6.0 이상권장




설치순서


1. 설치에 필요한 파일 다운받기

2. RPM으로 설치된 패키지 제거하기

3. MySQL, Apache, PHP4 바이너리 파일 압축풀기

4. MySQL 설치

5. Apache Configure(1)

6. PHP4설치

7. Apache Configure(2), 컴파일

8. Zend Optimizer 설치

9. 환경설정화일 편집

10. PHP 및 Apache 웹서버 구동 시험

11. 시스템 부팅시 자동으로 아파치 데몬과 MySQL데몬 실행하기



1. 설치에 필요한 파일 다운받기


mysql-3.22.32.tar.gz (http://www.mysql.com/downloads/mysql-3.22.html)

apache_1.3.27.tar.gz (http://www.apache.org/mirrors/)

php-4.0.1pl2.tar.gz (http://www.php.net/downloads.php)

ZendOptimizer-RC1-Linux-glibc2.1.tar.gz (http://www.zend.com/download.php)

ZendOptimizer-RC1-Linux-glibc2.1.tar.gz는 회원가입시 다운받을 수 있다.

회원ID - "ganzi00" 비밀번호 - "dino104"


해당 사이트 또는 미러사이트 등을 이용하여 파일을 다운로드받는다.



2. 이미 설치된 패키지(RPM) 제거하기


지금부터의 작업은 반드시 root의 권한으로 한다.


배포본 리눅스에 기본적으로 설치되어 있는 RPM 패키지를 제거한다.

또는 타인의 실습에 의해 이미 설치한 프로그램을 삭제한다.


2.1 RPM으로 아파치/MySQL등이 설치된 경우 RPM 삭제 과정


아파지의 설치 여부를 확인하고 설치된 경우에는 rpm을 이용하여 기 설치된 파일을 삭제한다. 주의할 점은 기존의 환경 설정 파일 등을 저장하도록 한다. rpm으로 설치되었다면 /etc/httpd/conf/ 디렉토리에 위치한다. 여기의 *.conf 파일을 저장하도록 한다.


-. apache/mysql rpm 설치 여부 확인

# rpm -qa | grep apache

# rpm -qa | grep mysql


-. 기존 RPM 환경 파일 저장

# cd // root 홈디렉토리에 파일 저장

# tar cvfz old_apache_conf.tgz /etc/httpd/conf


-. 아파치/MySQL 데몬 종료 및 확인

# ps -aex | grep apache

# ps -aex | grep mysql

# /etc/rc.d/init.d/httpd stop

# /etc/rc.d/init.d/mysql stop

# ps -aex | grep apache

# ps -aex | grep mysql


-. 아파치/MySQL 삭제

# rpm -q apache // 설치된 아파치 패키지를 검색한다.

apache-1.3.12.2

# rpm -e apache // 설치된 아파치 패키지 삭제한다.

error: removing these packages would break defendencies:

webserver is needed by mod_perl-1.21-10

webserver is needed by mod_php-3.0.15-2


위와 같이 에러메시지가 뜨는 것은 모듈의 의존성에 의한 것이므로 하위에 나타난 mod_perl mod_php 등을 삭제한 후 아파치를 제거한다. 의존 관계가 다 많은 경우는 모든 모듈을 삭제한다.


# rpm -e mod_perl

# rpm -e mod_php

# rpm -e apache


2.2 rpm이 아닌 소스버전으로 설치된 경우 삭제


-. 아파치/MySQL 데몬 종료 및 확인

# ps -aex | grep apache

# ps -aex | grep mysql

# /usr/local/apache/apachectl stop

# /usr/local/mysql/share/mysql/mysql.server stop

# ps -aex | grep apache

# ps -aex | grep mysql


-. 아파치/MySQL/PHP 등의 소스파일 삭제

/usr/local/mysql /usr/local/apache /usr/local/php4등을 삭제한다.


# cd /usr/local

# rm -rf mysql apache php4




3. MySQL, Apache, PHP4 바이너리 파일 압축풀기


root 계정으로 작업을 해야하며, 소스파일들이 /usr/local/src 디렉토리에 있다고 가정하고 설명한다.


-. 소스 파일 풀기

# tar zxvf mysql-3.22.32.tar.gz

# tar zxvf apache_1.3.27.tar.gz

# tar zxvf php-4.0.1pl2.tar.gz

# tar zvxf ZendOptimizer-RC1-Linux-glibc2.1.tar.gz


-. 설치할 디렉토리 생성

우리는 /usr/local 디렉토리에 apache, php4, mysql, Zend를 각각 설치할 것이다.

# cd /usr/local

# mkdir mysql apache php4 Zend



4. MySQL 설치


-. 설치

# cd /tpm/mysql-3.22.32

# ./configure --prefix=/usr/local/mysql \

>--with-unix-socket-path=/usr/local/mysql/tmp \

>--localstatedir=/usr/local/mysql/data \

>--with-charset=euc_kr

....

....

....

Thank you for choosing MySQL!

#


\(역슬래시) 표시는 입력할 내용이 많을 경우 다음 줄에서 명령어를 입력하도록 한다. 이때 반드시 \(역슬래시) 앞에 공백이 추가되어야 한다. 그리고 옵션과 옵션 사이에도 공백을 위치시킨다.


[option] 설명

--prefix=/usr/local/mysql // MySQL이 설치될 디렉토리 경로

--with-unix-socket-path=/usr/local/mysql/tmp // MySQL 소켓 디렉토리 경로

--localstatedir=/usr/local/mysql/data // 생성된 DB/Table이 기록되는 디렉토리 경로

--with-charset=euc_kr // 한글로 메시지를 출력하도록 한다.


- 환경설정을 다시 해야할 경우

혹시 설치진행 중에 잘못된 명령이나 옵션설정 등으로 하여 문제가 발생했을 때, 기존 설정 내용을 가지고 있는 config.cache을 지우지 않고 진행하면 수정된 내용이 반영되지 않으므로 아래의 명령을 수행 후 환경 설정을 새로이 하고 재 설치하도록 한다.


# rm config.cache

# make clean


또는


# make distclean // 위의 두 명령과 동일하다


-. 컴파일 및 설치

# make // 컴파일을 한다. 시스템 사양에 따라 10-20분 소요

# make install // MySQL을 설치한다.


-. MySQL 관리 테이블 생성

# cd /usr/local/mysql/bin // mysql 실행 파일이 위치해 있다.

# ./mysql_install_db // MySQL의 데이터를 관리할 기초 테이블 생성


!주의할 점은 mysql_install_db은 반드시 한번만 실행시켜야 한다.


-.기본설정하기
# chown -R root  /usr/local/mysql
#  chown -R mysql /usr/local/mysql/data
#  chgrp -R mysql /usr/local/mysql
#  chown -R root /usr/local/mysql/bin




-. mysql 시작 스크립트 수정

# cd /usr/local/mysql/share/mysql

# vi mysql.server


편집기로 열어서 safe_mysql이 실행되는 라인에 --language=korean 옵션을 추가한다.


$bindir/safe_mysqld --user=$mysql_daemon_user --pid-file=$pid_file \

--datadir=$datadir --language=korean &


# chmod 755 mysql.server // 실행모드로 전환한다.


-. mysql 데몬의 시작과 종료

mysql 데몬의 시작과 종료를 시스템 관리자 PATH가 설정된 디렉토리에 복사해두고 사용하면 어느 위치에서나 명령을 인식 가능하게 한다.


# cp -p ./mysql.server /usr/bin // 관리자 실행 디렉토리에 복사

# mysql.server start // mysql 데몬 시작하기

# ps -ef | grep mysql // 프로세스 확인하기.

# mysql.server stop // 데몬 종료하기.


-. test

# /usr/local/mysql/share/mysql/mysql.server start

// /usr/bin에 복사했다면

# mysql.server start

# mysql


Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL ....


Type 'help' for help.

mysql>


-. root 암호 변경하기

mysql>use mysql

mysql>update user set password=password("your_password") where user='root';

mysql> quit // 종료하기


-. 암호 변경 후 mysql 시작하기

# mysql -uroot -p

Password : your_password

mysql>


**** 설치 순서를 지키세요 *****

** ApacheJserv를 같이 설치하고자 할 경우 다음 부분을 참고한다**

설치전 gcc 및 gcc-make 가 설치되어 있어야 되고, path가 연결되어 있어야 한다.
Jserv 소스의 압축을 푼다.

#> gzip  –d  ApacheJServ-1.1.tar.gz
#> tar  xvf  ApacheJServ-1.1.tar

그 다음 Jserv 설치 소스 디렉토리로 이동한 뒤 환경을 설정하여 make 파일을 생성한다.

#> ./configure \
[blank]--prefix=/usr/local/jserv \ (Jserv 가 설치될 위치)
[blank]--with-apache-src=/usr/local/Apache_Install/apache-1.3 \ (아파치 설치소스)
[blank]--with-jdk-home=/usr/j2se \
[blank]--with-java=/usr/j2se/bin/java \
[blank]--with-jar=/usr/j2se/bin/jar \
[blank]--with-JSDK=/usr/local/jsdk/lib/jsdk.jar \ (jsdk.jar 파일이 있는 위치)
[blank]--disable-debugging

위와 같은 명령을 실행하면 make파일이 생성된다. 그리고 나서 인스톨하면 된다.

#> make
#> make install
************************************


5. Apache Configure(1)

  **** 보안이나 mod_perl등을 위해서라도 2.0.44 버전 이상을 구해 설치하는 것이 좋다 *****

1차적인 웹 설정 구성을 먼저 수행한다.


# cd /usr/local/src/apache_1.3.27

# ./configure --prefix=/usr/local/apache


 

6. PHP4 설치


-. 환경 구성

# cd /usr/local/src/php-4.0.1pl2

# ./configure --prefix=/usr/local/php4  --enable-track-vars \

>--with-mysql=/usr/local/mysql \

>--with-apache=/usr/local/src/apache_1.3.27 \  (이 옵션은 Apache 2.x 대에서는 빼야함)

>--with-config-file-path=/usr/local/apache/conf \

>--with-mod-charset --with-language=korean \

>--with-charset=euc_kr --disable-debug \

>--with-xml --enable-magic-quotes


옵션에 대한 설명은 PHP 메뉴얼을 참고하기 바랍니다. 만약 PostgeSQL이나 mSQL을 사용한다면 --with-pgsql='디렉토리경로' --with-msql='디렉토리경로'와 같이 옵션을 사용한다.

--enable-track-vars 옵션은 HTTP_GET_VARS, HTTP_POST_VARS, HTTP_COOKIE_VARS 배열에 들어 있는 GET, POST, Cookie 변수들의 출처를 기억한다. 반드시 설정한다.


-. 컴파일 & 설치

# make

# make install


7. Perl 설치하기

일반적으로 리눅스일 경우 defalt로 설치하는 것을 권장한다.

# tar -xzvf stable.tar.gz

# cd perl-5.6.0

# rm -f config.sh Policy.sh <------ 이전에 생성된 설정파일을 삭제함.

# sh Configure -Uuselargefiles -de

# make

# make test

# make install


make test를 실행해서 "All tests successful"이라는 메세지가 나오지 않으면 다음을 실행하라.

# make test-notty

실제로 필자는 make test에서 여러번 에러가 발생해서 make test-notty로 설치를 했다.

test-notty의 역활은 백그운드작업이 불가능할 경우 강제적으로 작업이 이루어지게 한다.

그러나 이 경우에 tty가 필요한 test부분에는 이를 무시할 수 있다.

그리고 또한 더 자세한 test환경을 얻기위해서는 다음을 실행하는 것을 권장한다.

# cd t

# ./perl harness

설치 확인하기
Perl이 설치가 제대로 되었는지 버전을 확인해보자.

# perl -version

This is perl, v5.6.0 built for i686-linux
.



8. mod_perl 설치하기

  $ cd mod_perl-1.26    

  $ perl Makefile.PL APACHE_SRC=../apache_1.3.27/src \

      NO_HTTPD=1  USE_APACI=1  PREP_HTTPD=1  EVERYTHING=1


  $ make

  $ make install





9. Apache Configure(2), 컴파일


PHP 설치 후 아파치 설치를 마무리한다.


-. 환경 구성

# cd /usr/local/src/apache_1.3.27

# ./configure --prefix=/usr/local/apache --enable-shared=max --activate-module=src/modules/php4/libphp4.a

*** ApacheJserv를 설치할 경우 위의 문장에 --activate-module=src/modules/jserv/libjserv.a  추가한다 ***

*** Apache 1.3.x 에서 mod_perl을 추가할 경우 위에 --activate-module=src/modules/perl/libperl.a 추가한다 ***



-. 컴파일 & 설치

make를 하기전에 Makefile을 수정해서 다음의 부분을 적당곳에 추가한다.

# vi Makefile

>> CFLAGS = "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BIT=64"


# make

# make install



8. Zend Optimizer 설치

# cp /usr/local/php4/php.ini-dist /usr/local/apache/conf/php.ini

# cd /usr/local/src

# mv ZendOptimizer-RC1-Linux-glibc2.1 /usr/local/Zend/lib

또는 ZendOptimizer 소스디렉토리에 있는 install 명령을 실행한다

나타나는 설명에 따라 진행하면서 조정한다.


-. 환경 설정 파일 복사 및 수정


# cp /usr/local/php4/php.ini-dist /usr/local/apache/conf/php.ini

# vi /usr/local/apache/conf/php.ini


zend_optimizer.optimization_level=7

zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"



11. 환경설정 파일 편집

-. 환경 설정 파일 복사 및 수정

# vi /usr/local/apache/conf/httpd.conf // 아파치 환경설정 파일


<IfModule mod_dir.c>

DirectoryIndex index.php index.php3 index.html index.htm

</IfModule>

...

...

AddType application/x-httpd-php .php .php3 .ph

AddType application/x-httpd-php-source .phps

AddType application/x-httpd-php .php

AddType application/x-httpd-php .phtml

AddType application/x-httpd-php .php4  


*** ApacheJserv를 설치할 경우 맨 마지막에    Include "/usr/local/jserv/etc/jserv.conf" 문장 삽입 후 저장 ****

*** mod_perl 기능을 사용하기 위해서는 다음 추가 ***


AddHandler cgi-script .cgi .pl


Alias /perl/ /home/apache/perl/

  PerlModule Apache::Registry


  <Location /perl>

    SetHandler perl-script

    PerlHandler Apache::Registry

    Options ExecCGI

    allow from all

    PerlSendHeader On

  </Location>



12. PHP 및 Apache 웹서버 구동 시험


테스트 파일(phpinfo.php)을 만들어 웹서버의 홈디렉토리(/usr/local/apache/htdocs)에 만들고 웹브라우저에서 확인한다.


# cat > /usr/local/apache/htdocs/phpinfo.php

<?

phpinfo();

?>

^D

# netscape http://localhost/phpinfo.php



또는 http://해당URL/phpinfo.php ( http://IP/phpinfo.php )를 입력하여 출력내용 확인.



13. 시스템 부팅시 자동으로 아파치 데몬과 MySQL 데몬 실행하기


두 가지 방법 중 하나를 택한다.


-. 방법 1 : 권장

/etc/rc.d/rc.local 파일을 열어서 마지막 줄에 다음 명령을 입력한다.

또는 /etc/rc.d/rc.local.mine 파일이 있을 경우 rc.local.mine 파일에 입력해도 된다.


if [ -x /usr/local/apache/bin/apachectl ] then

echo "Apache Web Server Starting..."

/usr/local/apache/bin/apachectl start

fi


if [ -x /usr/local/mysql/share/mysql/mysql.server ] then

echo "MySQL Server Starting..."

/usr/local/mysql/share/mysql/mysql.server &

fi


-. 방법 2

# cp -p /usr/bin/apachectl /etc/rc.d/init.d/httpd

# cp -p /usr/bin/mysql.server /etc/rc.d/init.d/mysql


// 실행모드( run level ) 3일 경우

# cd /etc/rc.d/rc3.d

# ln -s /etc/rc.d/init.d/httpd S85httpd

# ln -s /etc/rc.d/init.d/mysql S90mysql


// 실행모드( run level ) 5일 경우

# cd /etc/rc.d/rc5.d

# ln -s /etc/rc.d/init.d/httpd S85httpd

# ln -s /etc/rc.d/init.d/mysql S90mysql


* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
//보고서 제출여부 확인
//select * from 'kone'.bbsreport where writer = '20331056';

//주별 강의안 수강 확인
//select * from 'kone'.attend where user_id = '20380184';

//학사디비 view table 정보 확인
//select * from chung.view_student where user_id='20380052';
//select * from chung.view_sugang where user_id='20323097';
//select * from chung.view_student where user_name='김종선';
//select * from chung.view_class where jojik_cd='78';
//select count(*) from chung.view_sugang
//where year='2003' and term='1' and lecture_cd='103642' and (user_id like '203_____') ;
//select count(*) from chung.view_student;


//학생정보 확인
//select * from 'kone'.member where user_id='20380065';
//select * from 'kone'.member where user_name='강선미';

//시험응시 여부 확인 및 정답 확인
//select * from 'kone'.evalapplyanswer where student_id='20307083';
//select * from 'kone'.evaltest where student_id='20380272';
//select * from 'kone'.evalquest_list where lec_cd='103642200654';

//select lec_cd, user_id, sum(attnd_cnt) sum1 from 'kone'.attend
//where lec_cd='103642202567' group by lec_cd, user_id order by user_id;

//select a.user_id, b.user_name, a.lec_cd from 'kone'.attend a, 'kone'.member b
//where a.user_id=b.user_id and b.user_name='정찬교';


//학생들의 핸드폰 번호 뽑아내기
//select user_id, user_name, mobile from member
//where c_usercode = 'S' and user_id in (select user_id from cmember where lec_cd like '103642%')
//order by user_id;

//학과별, 학생들의 핸드폰 번호,이메일 뽑아내기
select c.cd_name, a.user_id, a.user_name, a.mobile, a.email from member a,schoolreg b, codemaster c
where a.c_usercode = 'S' and
user_id in (select user_id from cmember where lec_cd like '103800%' and org_sect='nep01' and year='2003' and term='2' and reg_type='s' )
and a.org_sect=b.org_sect and a.user_id=b.student_id and b.FACULTY_DEPARTMENT_CD=c.minor_cd and c.major_cd='HJ98'
order by c.cd_name, a.user_id;

//장기결석자(3월29일 이후로 수업을 드지 않은 학생 리스트)
//select user_id from cmember
//where org_sect='nep01' and year='2003' and term='1' and reg_type='s' and lec_cd='103642200654'
//and user_id not in (select user_id from attend where org_sect='nep01' and year='2003' and term='1'
//and lec_cd='103642200654' and modify_dt>to_date('20030329','%Y%m%d')  );

//lec_cd='????????' ??????? 부분에 해당 강좌 코드 입력
//장기결석자에 학과, 이름 표시하기  (3월29일 이후로 수업을 듣지 않은 학생 리스트)
//select a.user_id,b.kor_name,c.cd_name from cmember a, schoolreg b, codemaster c
//where a.org_sect='nep01' and a.year='2003' and a.term='1' and a.reg_type='s' and a.lec_cd='103642200654'
//and a.user_id not in (select user_id from attend where org_sect='nep01' and year='2003' and term='1'
//and lec_cd='103642200654' and modify_dt>to_date('20030329','%Y%m%d')  )
//and a.org_sect=b.org_sect and a.user_id=b.student_id and b.FACULTY_DEPARTMENT_CD=c.minor_cd
//and c.major_cd='HJ98' order by c.cd_name,b.kor_name;

//2003.2학기 결석자 뽑아내기
select c.cd_name,a.user_id,b.kor_name from cmember a, schoolreg b, codemaster c
where a.org_sect='nep01' and a.year='2003' and a.term='2' and a.reg_type='s' and a.lec_cd='103800202627'
and a.user_id not in (select user_id from attend where org_sect='nep01' and year='2003' and term='2'
and lec_cd='103800202627' and modify_dt>to_date('20030825','%Y%m%d')  )
and a.org_sect=b.org_sect and a.user_id=b.student_id and b.FACULTY_DEPARTMENT_CD=c.minor_cd
and c.major_cd='HJ98' order by c.cd_name,b.kor_name;

// 100016, 200063, 200177, 200795, 200954, 202095, 202120, 202322, 202626, 202627

// schoolreg는 학적대장 테이블, codemaster는 코드가 정의되어 있는 테이블


//특정 날짜 사이에 쓰여진  전체 게시물 수
//select count(*) from bbswritecnt
//where year='2003' and term='1' and lec_cd like '103642%'
//and room_type != 'D' //토론형
////and room_type != 'P'  //자료실형
//and ( written_dt between to_date('20030609','%Y%m%d') and to_date('20030615','%Y%m%d'));
//

//특정 날짜 사이에 쓰여진  공지사항  게시물 수
select count(*) from lecannoun
where year='2003' and term='1' and lec_cd like '103642%'
and ( modify_dt between to_date('20030609','%Y%m%d') and to_date('20030615','%Y%m%d'));

//해당 학번의 학생이 해당 게시판에 쓴 글 목록 출력
//select * from commonbbs where Lec_Cd='103642100127' and Bbs_Id='96' and User_Id like '%20380089%';

//해당 학점자 수 출력
//select count(*) from testscore where af='B+';

//해당 학생의 학사에 입력된 최종 성적 확인
//select * from testscore where user_id='20305051';

//각 강좌별 성적 확인
//select * from grading where year='2003' and term='1' and lec_cd='103642100127'
//order by user_id;

//각 강좌별 성적리스트 출력
select c.cd_name,a.user_id,b.kor_name,a.attend_conv,a.task_conv,a.midterm_conv,a.final_conv,a.conv_sum,a.rank,a.e_mark
from grading a, schoolreg b, codemaster c
where a.org_sect='nep01' and a.year='2003' and a.term='1' and a.lec_cd='103642100127'
and a.org_sect=b.org_sect and a.user_id=b.student_id and b.FACULTY_DEPARTMENT_CD=c.minor_cd and c.major_cd='HJ98'
order by c.cd_name,a.user_id;

//학사 디비 수강정보 중 학과별 인원수 확인
select a.lecture_jojik_cd,b.jojik_name, count(a.user_id)  from chung.view_sugang a, chung.view_class b
where a.lecture_jojik_cd=b.jojik_cd and a.year='2003' and a.term='2' and a.lecture_cd='103800'
group by a.lecture_jojik_cd, b.jojik_name;
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:11)
   1. /etc/hosts  - 대부분 이 화일만 맞게 설정해주면 됨.

   2. Apache 서버를 운영할 경우 아파치 서버의 httpd.conf 화일도 수정

   3. 위와 같이 변경후 시스템을 재부팅하지 않고 적용시키는 방법

        1) ifconfig -a   명령으로 네트웍 연결인터페이스 확인
           보통 아래와 같이 나옴
               lo0: flags=849<UP,LOOPBACK,RUNNING,MULTICAST> mtu 8232
                              inet 127.0.0.1 netmask ff000000
               hme0: flags=863<UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST> mtu 1500
                                  inet 211.225.xxx.xxx netmask ffffff00 broadcast 211.225.xxx.255
                                  ether ---        
        
        2) IP가 설정된 인터페이스에 대해 설정 변경
               #ifconfig  "network-interface-name"  "변경된 IP"  netmask  "netmask 값"

             예) 위의 예를 적용하면
                  # ifconfig  hme0  123.456.789.123  netmask 0xffffff00
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)

'프로그래밍Tips' 카테고리의 다른 글

informix - k1 - sql  (0) 2003.06.13
FTP전송후 생기는 문장 끝의 ^M 제거  (0) 2003.05.07
침입 탐지 방법 및 로그 분석 요약  (0) 2003.05.06
문장 끝의  ^M 제거  

제거하는 방법은 두가지가 있습니다. 저는 개인적으로 밑의 두번째 방법을 권해드리고 싶군요.

(첫번째)
OLD : oldfile ( 문장 끝에 ^M 포함 )
NEW : convfile ( 문장 끝에 ^M 제거 )

# /usr/bin/dos2unix oldfile  convfile [enter]
확인...^^


(두번째)
# vi  oldfile [enter]
:%s/ctrl+v+m/ /g [enter]

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
주로 사용되는 백도어들의 디렉토리

   /dev/cub , /dev/cuc , /dev/ptyr , /dev/ptyp , /dev/ptyq , /dev/ptyxx
   /usr/src/.puta

ls, ps, login , netstat 등의 변조 유무 확인 ( 프로그램 콜
확인)

   truss  -t  open  [명령어]     :   truss -t open ls    주로 유닉스에서

   strace  -e  trace=open [명령어]    주로 리눅스에서


SUID , SGID 설정된 화일 찾기

   find  /  -type  f  -perm  -04000  -ls    #SUID 찾기
   find  /  -type  f  -perm  -02000  -ls    #SGID 찾기


nmap 등을 이용하여 열려진 포트를 확인할 것.
  
   nmap  -sT  -p  1-65535  xxx.xxx.xxx.xxx


Crontab 확인

   /var/spool/cron/crontabs/root  화일내용 확인


무결성 검사

  솔리리스  : http://sunsolve.Sun.COM/pub-cgi/show.pl?target=content/content7
              md5 프로그램 이용
  Redhat    : rpm  -V  -a             :   모든 패키지 검사
              rpm  -V  패키지 명      :   특정 패키지 검사
                       fileutils, util-linux, passwd, procps, net-tools


변조된 ps, netstat 대신 사용할 수 있는 "lsof" 이용

   ftp://vic.cc.purdue.edu/pub/tools/unix/lsof
   ftp://ftp.sunet.se/pub/unix/admin/lsof



화일의 시간변경 확인

   find  /  -mtime  -10  -ls   :  현재부터 10일전으로 변경된 화일 찾기
   find  /  -ctime  -10  -ls   :  현재부터 10일전으로 inode 시간이 변경된 화일 찾기


MAC time 분석

   tct 같은 MAC time 분석 도구를 이용한다
   MAC time 은 find 만 돌려도 변경되는 정보이므로 피해를 입은 것이
   분명한 상황이라면 시스템에서 다른 명령을 실행하지 말고 먼저 MAC
   time 정보부터 확보해 놓고 분석에 들어가는 것이 좋다.


strings를 이용한 해킹프로그램 내부 분석

   strings [프로그램 명] : 프로그램 내의 문자string을 뽑아내줌            


현재 실행중인 프로세스의 시스템콜 추적

   truss  -f  -p  PID   :  -f 자식프로세스 추적  -p 실행중인 프로세스 추적
   truss  -f  -p  PID >&1 |egrep "read|recv|write"
                  출력결과 중에서 "read|recv|write"가 들어간 부분 검색
   truss  -rall  -wall  -f  -o log  -p  PID
                  출력결과를 log라는 화일로 저장

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
1. ufsdump   -- 주로 파티션별로 백업할 때 사용
                   mt -f /dev/rmt/0 rew
                   ufsdump 0uf /dev/rmt/0 user1
                   sleep 2400
                   mt -f /dev/rmt/0 rew
                   mt -f /dev/rmt/0n fsf 1    <---  DDS Tape에 여러 파티션을 넣을 때 사용. fsf 1  부분의  1 을 늘려가면됨
                   ufsdump 0uf /dev/rmt/0 user2

2. dd  -- 주로 O/S 백업할 때 사용
             dd  if=/dev/rdsk/c0t0d0s0  of=/dev/rmt/0    : 백업할 때
             dd  of=/dev/rmt/0  if=/dev/rdsk/c0t0d0s0    : 풀 때

3. tar  -- 주로 화일 단위로 백업할 때 사용
              tar  cvf  /dev/rmt/0n  /user

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)
Apache가 설치된 디렉토리에서

< conf/httpd.conf > 편집
::::
::::
#
#ServerName cyber.chch.ac.kr    <-- 중간 쯤에서 서버네임 설정을 막을 것
::::
::::
::::      

# If you want to use name-based virtual hosts you need to define at
# least one IP address (and port number) for them.
#
NameVirtualHost  *:80               // IP 지정을 해서 사용해도 됨 203.232.xxx.xxx         <--- 그 서버의 IP번호


#              마지막 부분에 다음을 설정

<VirtualHost cyber.chch.ac.kr>            <--  맨먼저 그 서버자체에 대한 설정을 한다.
  ServerAdmin webmaster@cyber.chch.ac.kr    
  DocumentRoot /usr/local/apache/htdocs
  ServerName cyber.chch.ac.kr
  ErrorLog /usr/local/apache/logs/error_log
  CustomLog /usr/local/apache/logs/access_log combined
</VirtualHost>  

<VirtualHost mdc.chch.ac.kr>              <--- 가상 서버를 설정한다. 다른 가상서버도 이와 같은 방식으로 한다.
  ServerAdmin webmaster@mdc.chch.ac.kr
  DocumentRoot /user1/home/mdc/public_html
  ServerName mdc.chch.ac.kr
  ErrorLog /user1/home/mdc/public_html/error_log
  CustomLog /user1/home/mdc/public_html/access_log combined
</VirtualHost>

<VirtualHost _default_:*>                  <-- 맨 끝에 Default 가상서버를 설정한다
  ServerAdmin webmaster@cyber.chch.ac.kr
  DocumentRoot /usr/local/apache/htdocs
  ServerName cyber.chch.ac.kr
  ErrorLog /usr/local/apache/logs/error_log
  CustomLog /usr/local/apache/logs/access_log combined
</VirtualHost>                          
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:18)

'프로그래밍Tips' 카테고리의 다른 글

ufsdump, dd, tar 사용한 백업  (0) 2003.05.06
secure CRT Reg Code /winrar key file  (0) 2003.02.21
apache에서 jserv 사용  (0) 2003.02.13
Secure CRT 4.0 (build 358) License Data:                 Checksum
Name:          David Pyke                                 [398D]
Company:                                                  [0000]
Serial Number: 03-40-082914                               [728C]
License Key:
  ACFRAP Q4W1M1 YGUU5A 4AV9DH AAG78U Y6K7SR 7JBW97 MP9P4M [67FB]
Issue Date:    10-10-2002                                 [089E]


SindroM
* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:11)

'프로그래밍Tips' 카테고리의 다른 글

ufsdump, dd, tar 사용한 백업  (0) 2003.05.06
Apache 서버에서 가상서버 사용하기  (1) 2003.05.06
apache에서 jserv 사용  (0) 2003.02.13
JServ 설치
이 설치 방법은 아파치 1.3.1과 JServ 0.9.11로 테스트해 보았습니다.  

소개
JServ는 아파치 웹서버에서 자바 써블릿을 사용할 수 있게 해 준다. 써블릿은 `서버에서 실행되는 애플릿'으로 생각하면 된다. 써블릿은 웹서버에서 바로 실행되므로 새로운 프로세스를 만들어 실행하는 CGI에 비해 효율면에서 월등히 우수하다.

필요한 것
JDK(1.1 이상) (자바 홈페이지)
아파치 웹서버(1.3.0 이상) 소스 (다운로드)
JServ 소스 (JServ 홈페이지)
JServ 설치 및 컴파일
설치에 앞서 JDK가 먼저 설치되어 있어야 한다. 리눅스를 사용한다면 `리눅스에서 JDK 설치하기'에 설치 방법이 나와 있다.

먼저 JServ를 설치할 디렉토리를 정하고 그 곳에서 소스의 압축을 풀고, 그 디렉토리로 이동한다. 만일 /usr/local/jserv에 설치하고 싶다면 다음과 같이 한다. (JServ의 압축 파일이 /my/dir에 있다고 가정한다.)

    # cd /usr/local
    # tar xvzf /my/dir/jserv0.9.11.tar.gz
    # mv jserv0.9.11 jserv
    # cd jserv

그리고 디렉토리 안에 있는 Makefile의 앞부분을 수정한다. 대개는 첫 줄만 고쳐주는 것으로 충분하다. 첫 줄의 PREFIX 값을 자신이 JServ를 설치한 디렉토리로 바꾸어 준다. 위와 같이 압축을 풀었다면 `PREFIX=/usr/local/jserv'로 해 주어야 한다.

이제 컴파일을 할 차례이다. 만일 자바를 위한 환경변수 CLASSPATH가 설정되어 있지 않다면 이 값을 먼저 설정해 주어야 한다. JDK가 설치되어 있는 곳이 /usr/local/jdk라면 다음과 같이 하면 된다.

    # export CLASSPATH=/usr/local/jdk/lib/classes.zip

이제 make 명령으로 컴파일을 하면 된다. (주의: make의 종류에 따라서는 JServ를 컴파일하지 못할 수도 있다. GNU make를 사용하면 아무 문제가 없으므로, make에서 문제 발생 시에는 GNU make를 쓰도록 한다.) 만일 API에 대한 html 문서가 필요하다면 make doc 으로 생성할 수 있다.

mod_jserv의 설치
mod_jserv는 아파치에서 써블릿을 실행시킬 때 사용되는 모듈이다. 이 모듈의 소스는 JServ 디렉토리에 있는 mod_jserv.c이다. 이 소스를 아파치 컴파일 환경 설정 시에 불러들여 아파치와 함께 컴파일되도록 만들어 주어야 한다. 이는 --add-module 옵션을 쓰면 가능하다.

    # ./configure [다른 옵션들] --add-module=/usr/local/jserv/mod_jserv.c

이제 아파치를 컴파일하고 설치하면 이 모듈도 함께 설치된다. configure 명령을 어디서 어떻게 사용하는지는 `아파치 웹서버 설치'에 나와 있다.

환경 설정
써블릿을 실행하려면 아파치 서버 환경 설정 파일에 몇 가지를 덧붙여 주어야 한다. 다음은 그 한 예를 보인 것이다. 위와 같이 설치했다면 아래 파일을 그대로 httpd.conf에 덧붙이는 것만으로 써블릿의 사용이 가능하다.

# mod_jserv: Java servlet module configuration
<IfModule mod_jserv.c>
  ServletProperties     conf/jserv.properties
  ServletPort           8007
  ServletBinary         /usr/local/jdk/bin/java
  ServletClassPath      /usr/local/jdk/lib/classes.zip
  ServletClassPath      /usr/local/jserv/servclasses.zip
  ServletClassPath      /usr/local/jserv/classes
  ServletAlias          /servlets /usr/local/jserv/servlets
  AddHandler            jhtml-parser .jhtml
  Action                jhtml-parser /servlets/org.apache.jserv.JServSSI
</IfModule>

이제 하나씩 자세히 살펴보기로 하자.

ServletBinary
java 실행파일이 있는 곳을 가리킨다. JDK를 인스톨한 곳 밑의 bin 디렉토리를 써주면 된다.

ServletBinaryArgument
java 명령 실행시에 추가로 주어야 할 인자를 명시해 준다. java 명령 뒤에 주고 싶은 옵션들을 써 주면 된다.

ServletClassPath
자바 클래스들이 있는 곳을 가리킨다. 써블릿에서 사용할 클래스가 들어 있는 디렉토리나 zip, jar 파일을 써 주면 된다. 한 줄에 하나씩만 써야 하므로 아파치에서 써블릿을 사용하기 위해서는 최소한 세 줄이 있어야 한다. 즉, JDK, JSDK, JServ의 클래스를 각각 명시해 주어야 한다. 앞의 예에 있는 세 줄이 바로 그것이다. 이 외에도 필요한 클래스(예: JDBC 등)가 있으면 모두 써 준다. 물론 JDK 1.2를 사용한다면 JSDK가 이미 포함되어 있으므로 servclasses.zip은 쓸 필요가 없다.

ServletEnvironment
아파치에서 java로 환경변수를 넘겨주고 싶을 때 사용한다. 변수 이름만 써 주면 아파치의 값이 그대로 java로 넘어가며, 새로운 값을 정해주고 싶으면 변수 이름과 값을 공백으로 구분해서 함께 적어 주면 된다.

ServletErrorLog
써블릿에서 발생하는 에러를 기록할 파일 이름을 써 준다. 이 때 파일 이름은 ServerRoot에 대한 상대 경로이다. 만일 이 값을 주지 않으면 아파치의 에러와 같은 곳에 기록된다.

ServletPort
써블릿이 사용할 TCP 포트 번호이다.

ServletAuthExport
이 값을 On으로 하면 다른 모듈이 써블릿에 액세스를 할 수 있다. 그러나 이는 보안상 허점이 될 수도 있다. 기본값은 Off이다.

ServletProperties
JServ의 여러 속성값들을 담고 있는 파일을 가리킨다.

ServletAlias
써블릿들이 들어갈 디렉토리를 써 준다. 앞에 URI를, 뒤에 실제 경로를 써 주면 된다.

<SERVLET> 태그 사용
HTML 문서 중간에 써블릿을 사용하고 싶다면 <SERVLET> 태그를 사용한다. 이를 사용하기 위해서 먼저 해 주어야 하는 것이 있는데, 이것이 다음 두 설정이다.

  AddHandler            jhtml-parser .jhtml
  Action                jhtml-parser /servlets/org.apache.jserv.JServSSI

이 설정에 의해 확장자가 jhtml인 파일은 JServSSI라는 써블릿에 의해 처리된다. JServSSI는 <SERVLET> 태그를 찾아 거기에 명시된 써블릿을 실행시킨다.

* itislord님에 의해서 게시물 복사되었습니다 (2005-04-24 14:11)

+ Recent posts