웹마스터 팁

초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼

ChangeLog : 본 문서는 리눅서들이 작성해놓은 문서를 종합하여 저의 개인적인 소견과
같이 기술하였습니다. 잘못된 내용은 메일이나 본 문서에 흔적을 남겨주세요.
자세히 주석을 달아놓은 이유는 외부적으로 저에게 가끔식 질문하시는분들의 질문들이 메뉴얼의
명령어만 복사해 넣다보니 시스템 환경과 맞지않아 발생하는 문제들이 더군요. 그래서
완벽한 이해를 도모하고자 주석을 달아보았습니다.
본문서를 이용한 컴파일 및 서버업그레이드시 발생하는 문제는 책임지지 않습니다.

게시순서는 mysql - apache - php - zend 순으로 하겠습니다.

mysql-3.23.52.tar.gz : http://www.mysql.com/downloads/mysql-3.23.html
apache_1.3.26.tar.gz : http://www.apache.org/dist/httpd
php-4.2.3.tar.gz : http://www.php.net/downloads.php
freetype-2.0.6.tar.gz : ftp://ftp.freetype.org/freetype/freetype2 (7.3버전에 기본 제공)
gd-2.0.1.tar.gz : http://www.boutell.com/gd (7.3버전에 기본제공)
ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz : https://www.zend.com/store/products/zend-optimizer.php

설치순서는 MAP 와 같이 외우도록 한다. 혼동됨이 없도록 하기위해서~

1. MYSQL 설치

본 장에서는 # 는 Rootshell 로 간주한다. 즉 # 가 앞에 붙은 명령어는 반드시 루트권한으로
실행시켜야함을 뜻한다. (사실 대부분의 APM 작업은 루트로 진행해야 한다)
명령어 각각에 자세한 해설을 붙이도록 하겠다. 이해가 부족한부분은

byulkorea@empal.com 으로 문의하거나 본 글에 흔적을 남김으로서 서포팅 받을수 있다.

[root@localhost]# tar xvfz mysql-3.23.52.tar.gz

tar 명령어로 패키지의 압축을 해제한다. xvfz 옵션은 압축해제시 기본적으로 붙이는 옵션들이다.

[root@localhost]# cd mysql-3.23.52

본 설치의 기본루트는 /usr/src 이므로 cd mysql-vername 명령어가 의미하는것은
/usr/src/mysql-vername 이다. 여기서 vername 이란 Version Name 을 필자나름대로
축약한 형태이다.

[root@localhost]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/home/mysql_db

--prefix 옵션은 설치경로를 의미한다. 대부분의 리눅스 데몬은 /usr/local 에 설치된다.
특별한것을 원한다면 다른곳에 설치해도 무방하다.

--with-charset=euc_kr 옵션은 데이터베이스를 Sort (정렬) 할때 한글에 대한 표준기준을
추가하기 위해서이다. 만약 이 옵션을 설정해 주지 않으면 한글데이터의 정렬은 엉망이
되어버리고 만다.

--localstatedir 은 DB(DataBase)파일을 저장할 경로이다. 지정하지  않으면 설치디렉토리
내에 저장이 된다. 리눅스는 파티션의 역할이 뚜렷하므로 대용량정보를 저장하고자하면
/home 디렉토리가 가장 적절할 것이다.(대두분의 서버는 home 의 용량이 가장 크므로)
대부분 이 강좌를 읽는 사람이 호스팅을 염두에 두고있으리라 보고 필자는 위와같이 설정하였다.

% 만약 당신이 configure 를 한후에도 추가하지 않은것이 있다면 make distclean 명령어를 통해서
처음 소스의 상태로 복귀할수 있다. 실수를 두려워 말라. 리눅스는 M$ 가 아니다. 언제든 원상태로
복구가 가능함을 염두에 둔다. (파티션을 날리거나 할 경우에는 이야기가 틀리다)

[root@localhost]# make; make install

기존의 메뉴얼들을보면 make 가 끝난후 make install 을 하라고 되어있다. 하지만  " ; " 를 이용
함으로써 작업종료후 바로 make install 을 할수있다. 단 이것은 에러가 없다는 가정하에
실행하는 명령어이다. 위 명령어를 실행하고난 독자가 커피한잔을 마시고 음악을 듣다온사이에
우리의 서버는 어떤 에러메시지를 출력했을지.. 모르는것이다.

# make 2> /dev/null 을 응용하면 쓸데없는 컴파일메시지대신에 오류메시지만 볼수 있을것이다.

리누스 토발즈가 쓰던 유머중에는 " /dev/null 로 보내시오 " 라는것이 있다한다. 리눅스에서
/dev/null 은 블랙홀과도 같다. 그냥 사라지고 마는것이다. 휴지통의 개념일수도 있지만..
복구할수가 없다. /dev/null 은 아무 쓰레기나 넣어도 괜찮다. :-)

[root@localhost]# cd /home/mysql_db

우리는 아까 localstatedir 에서 DB 의 저장경로를 /home/mysql_db 로 설정했다. 만약 위와
다르게 한 독자가 있다면 cd 다음의 인수를 바꿔야 할 것이다.

[root@localhost]# ./mysql_install_db

최초의 DB 를 생성한다. 최초 DB 는 test 라는 database 와 mysql 이라는 유저정보를 담고있다.

[root@localhost]# groupadd mysql

예전의 mysql 은 위와같은 작업을 할 필요가 없었다. 기본 설치만으로도 동작했지만 보안을위해서
mysql 의 데몬실행권한을 갖는 유저를 생성해줄 필요가 있다. groupadd 명령어는 그룹을
생성하는것이다. 그룹의 개념은 이글을 읽는 독자라면 알것이라 믿는다.

[root@localhost]# adduser -g mysql mysql

mysql 의 이름을 가진 user 를 생성한다. 그냥 위와같은 옵션으로 하면 /home/mysql 이라는
디렉토리가 생성되고 /etc/skel 에서 파일을 복사해올 것이다. 1Kb 의 하드공간도 아깝다는
유저는 다음과같이 실행하면 된다.
# adduser -M -g mysql mysql

[root@localhost]# vi /etc/passwd (mysql계정의 쉘을 false 로 수정)

텔넷의 접속을 원천적으로 해제하기 위한것이다. 보안을 위한작업이다.
bin:x:1:1:bin:/bin:/sbin/nologin 예제이다.

[root@localhost]# rm -rf /home/mysql(mysql계정의 홈디렉토리 삭제)

내가 설명한 -M 옵션을 사용했다면 이와같은 작업은 필요없을것이다.

[root@localhost]# cd /home

DB 저장소가있는 /home 으로 간다.

[root@localhost]# chown -R mysql.mysql mysql_db

DB 가 저장되는 디렉토리의 소유권과 소유그룹을 모두 mysql 로 바꾼다. -R 옵션은
하위 디렉토리나 파일에 모두 적용하라는 뜻이다.

[root@localhost]# cp /usr/local/src/mysql-3.23.52/support-files/my-medium.cnf /etc/my.cnf

mysql configuration 파일을 원본으로부터 /etc 디렉토리로 옮긴다.

[root@localhost]# vi /usr/local/mysql/share/mysql/mysql.server

시작시 실행되는 프로그램의 기본 예제이다.

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

$ ./safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean &

- 시스템 부팅시에 자동 실행되도록 설정

[root@localhost]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld

- 만일 Xwindows로 부팅할 경우를 위해 /etc/rc.d/rc5.d/ 디텍토리에도 링크를 만든다.

[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld

리눅스에는 런레벨이라는 개념이있어서 부팅시 적용된다. X-windows 는 런레벨 5 보통은 런레벨 3 이다.

- mysql데몬의 시작과 종료 및 관련 명령어를 사용하기 편하게 하기위해서 시스템 부팅환경에 PATH를 지정해 둔다.

[root@localhost]# vi /root/.bash_profile

PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"

[root@localhost]# /etc/rc.d/init.d/mysqld start
[root@localhost]# ps -ax | grep mysql MySQL 프로세스 확인하기
[root@localhost]# /etc/rc.d/init.d/mysqld stop MySQL 데몬 종료하기

- mysql설치후 꼭 root패스워드를 변경해준다.

############################################################
# 다음 mysql 관련 문서는 데이터베이스사랑넷 database.sarang.net 에서
# 인용한것임을 알린다.
############################################################

root암호변경설정
./mysqladmin -u root -p password 'new-password'

DB생성
mysql> create database DB명

DB삭제
mysql> drop database DB명

MySQL 연결
mysql -u 사용자 -p DB명

사용자 생성 &사용자에게 DB할당
shell> mysql --user=root -p mysql

mysql> INSERT INTO user VALUES('localhost','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO user VALUES('%','사용자',PASSWORD('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES ('localhost','DB명','사용자','Y','Y','Y','Y','Y','Y');
mysql> INSERT INTO db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES('%','DB명','사용자','Y','Y','Y','Y','Y','Y');

mysql> FLUSH PRIVILEGES; (or shell prompt: mysqladmin -u root -pxxxx reload)


DB, 테이블목록보기
mysql> show databases;
mysql> show tables;

사용 DB선택
mysql> use DB명

테이블구조
mysql> describe 테이블명

버전체크
mysql> select version();

백업 &복구
mysqldump {-h 호스트} -u 사용자 -p DB명 > 백업파일
mysql {-h 호스트} -u 사용자 -p DB명 < 백업파일

mysqldump -u root -p --opt db_dbakorea > dbakorea.sql
mysqldump -u root -p --opt db_board | mysql ---host=remote-host -C database (상이한 머쉰)
mysql -u dbakorea -p db_dbakorea < dbakorea.sql


mysqldump -u root -p --opt db_dbakorea | mysql ---host=ns.dbakorea.pe.kr -C db_dbakorea

테이블 검사
isamchk

###############-- end of mysql tutorial#######################
제목 글쓴이 날짜
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (3 of 3) [2] Dopesoul 2002.12.21
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (2 of 4) [4] Dopesoul 2002.12.18
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (1 of 4) [3] Dopesoul 2002.12.18
PHP 4.2.3 파워 설치 테크닉 (에러 0%에 도전) [2] 밍밍이 2002.12.17
리눅스 rpm 명령어 활용(1): MRTG 설치 정인배 2002.12.14
DeX 님의 시간 동기화 스크립트를 편하고 안정적으로 변경한 리눅스용! [4] Dopesoul 2002.12.13
SetEnvIf 와 SetEnvIfNocase 의 차이 [7] Dopesoul 2002.12.13
[re] 저의 최종의견 입니다. [5] Dopesoul 2002.12.17
누군가 우리서버를 공격하고 있을때 응급처치! [13] Dopesoul 2002.12.13
srpms, alpha, i386 , i686 이 의미하는 것은? [1] Dopesoul 2002.12.12
레드햇(redhat)리눅스에서 rpm 관리 명령어 정인배 2002.12.09
[FreeBSD] Proftp + MySQL 연동 설치하기 [2] file DeX™ 2002.12.09
apache2 + mod_jk 100번의 닭질 끝에 찾아가는 사이트 DukeEYS 2002.12.09
mod_gzip 적용시 php 인클루드를 실패해서 포기하신분 보세요 [2] DukeEYS 2002.12.08
Zend Optimizer Full Pass Setup [3] DukeEYS 2002.12.08
오래간만에 찾아뵙는군요^^ [2] Dopesoul 2002.12.08
계정 등록 스크립트 [8] 편리 2002.12.05
[FreeBSD] 자동으로 시간 맞추기.. [1] DeX™ 2002.12.04
[계정삭제 스크립터] 편리님이 만드신 계정추가랑 연동됩니다. [4] file 김동현 2002.12.04
FTP 를 이용한 원격 백업 받기 [5] 최종우 2002.12.04