웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 APM 메뉴얼 (1 of 4)
2002.12.18 00:50
초보자도 쉽게 이해할수있도록 주석을 자세히 달아놓은 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#######################
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#######################
댓글 3
-
Dopesoul
2002.12.18 01:52
몇몇 오타가 있는것같습니다. 하다가 안되면 코멘트남겨주세요 -
pandix
2002.12.18 11:19
흠..source RPM을 이용한 방법도 괜찮은거 같습니다..
생각외로 퍼포먼스 차이도 크지 않구요..
그 방법 강좌 해주실수 있습니까? -
Dopesoul
2002.12.18 15:00
SRPM 을이용한 방법도 테스트하는데로 게시하도록하겠습니다.
그런데 소스컴파일이 아무래도 퍼포먼스가 더 낳고, SRPM 이나 소스컴파일이나
걸리는시간도 비슷하고..
기회가된다면 게시하도록 하지요.
감사합니다.