[리눅스] 아파치, mysql, php 소스 설치 절차 컴퓨터 팁

*** 아파치 웹 서버 설치***
-아파치 웹서버 프로그램은 RPM 패키지를 이용하여 설치할 수 있겠지만, RPM패키지 설치보다는 소스 설치위주로 하겠다.
 아파치 소스를 컴파일하여 설치한 후 PHP와 MySQL를 연동하여 설치하는 방법을 알아보겠다.

1.rpm -qa | grep httpd 를 실행하여 httpd RPM 패키지가 설치되어 있는지 확인하여 패키지 정보가 나타난다면
  'rpm -e 패키지 명'을 실행하여 rpm 패키지를 반드시 제거한다.

2.아파치 안정 버전을 다운받는다. 다운 받는 폴더는 임시폴더  /tmp 로 다운 받는다.

3.압축을 푼다.
# tar xvfz httpd-2.2.4.tar.gz -C /tmp (-C /tmp 부분은 생략해도 됨)

4./tmp/httpd-2.2.4 디렉토리로 이동하여 ./configure 명령으로 다음과 같이 컴파일 환경을 설정한다.
 #cd /tmp/httpd-2.2.4
 #./configure --prefix=/usr/local/apache2 --enable-mods-shared=all \
                    --with-mpm=worker --enable-ssl --with-ssl --enable-so 
                             (mpm은 다중처리로서 cpu2개 이상시 설정, ssl은 SecureLayer)
(간단하게,  ./configure --prefix=/usr/local/apache2 --enable-rewrite --enable-so 라고 해도 무방)

5.make명령으로 컴파일 한다. 오류 없이 컴파일이 끝나면 make install 명령을 실행하여 컴파일 환경 설정 시
 --prefix= 옵션으로 지정한 위치로 컴파일 파일들이 설치되도록 한다.
 #make  <=소스를 바이너리로 컴파일
 #make install

6. /etc/ld.so.conf 파일에 /usr/local/apache2/lib 과 /usr/local/apache2/modules 경로를 다음과 같이 추가한 후 ldconfig 명령을 실행한다.
 #cat >> /etc/ld.so.conf
/usr/local/apache2/lib
/usr/local/apache2/modules
crtl-d 키를 누름
 #ldconfig (모듈 업데이트)

 

 


***MySQL과 PHP설치***
-PHP는 리눅스 상에서 작동하는 강력한 웹 스크립트 언어로 웹 프로그래밍에 많이 사용되는 언이이다.
MySQL은 공개 프로그램이면서 개인 서버로 많이 운영되고 있는 중소형 데이터베이스로, 오라클이나 DB2,MS-SQL 과 같은
대형 데이터베이스에 못지 않는 강력한 성능을 제공하고 있어 리눅스 웹 서버의 일반적인 DB로 많이 사용되어지고 있다.
요즘에 게시판이나 자료실들이 PHP와 MySQL을 연동하여 만들어지고 있으므로, 이러한 것을 사용하기 위해서는 아파치
웹 서버에 이러한 프로그램들을 함께 컴파일하여 설정해야 한다.
(참고) DSO(Dynamic Shared Object : 동적 공유 개체-필요에 따라서 아파치 웹서버에 모듈이나 라이브러리를 언제든지
적재할 수 있는 것을 말함. 아파치에 추가하고자 하는 모듈이 있을 때 재 컴파일 하지 않고서도 사용할 수 있어서 설치 관리
측면에 이점이 있으며, 모듈이 필요할 때마다 적재할 수 있으므로,시스템 리소스를 효율적으로 사용할 수 있는 이점이 있다.

 

 


***MySQL 설치***
MySQL을 다운로드할 때에는 주의할 것이 있는데, '바이너리 소스'인지 '소스'인지를 명확히 구별하여야 한다.
여기서는 타볼 소스 파일로 설치를 시행한다.

1.MySQL RPM 패키지가 설치되어 있는지 rpm -qa | grep mysql 를 실행하여 패키지 정보가 나온다면 제거한다.
   의존성으로 삭제가 안되면 "# rpm -e --nodeps mysql-5.0.22-2.1 " 이렇게 한다.

2.mysql-5.x.x 타볼 소스 파일을 /tmp 임시디렉토리에 압축을 풀어 놓는다.
 #tar xvfz mysql-5.x.x.tar.gz. -C /tmp

3./tmp/mysql-5.x.x 디렉토리로 이동하여 ./configure  명령을 실행하여 컴파일 환경을 설정한다. 이때 컴파일 환경
옵션으로는 다음과 같은 옵션을 지정한다.
--prefix=설치경로 ex) --prefix=/usr/local/mysql
--localstatedir=data경로 ex) --localstatedir=/usr/local/mysql/data
--with-charset=euckr
--with-mysql-user=mysql
--sysconfdir=/etc
 기타 옵션에 관한 것은 ./configure --help 명령을 실행하여 참고한다.
(간단하게,# ./configure --prefix=/usr/local/mysql --with-charset=euckr 해도 무방)
*termcap에러가 날 경우 libtermcap-devel-2.0.x-xx.i386.rpm 을 설치 한 후 재시도할 것.)
4. make 명령을 실행하여 MySQL를 컴파일 한다.
 # make

5.컴파일이 완료되면 make install 명령을 실행하며 /usr/local/mysql 디렉토리로 컴파일된 파일들이 설치되도록 한다.
 # make install

<중요> RPM 패키지가 아닌 타볼 소스를 컴파일 하여 사용할 때에는 반드시 RPM 패키지가 설치되어 있는지 확인한다.
  특히 httpd 나 MySQL은 RPM 패키지를 반드시 삭제한 후 소스를 컴파일 하여 사용해야 한다.

6.MySQL 데이터 베이스 디렉토리 생성
-MySQL을 컴파일 설치 후 MySQL의 데이터베이스인 data 디렉터리는 자동으로 생성되지 않으므로 이를 수동으로 생성해 주어야 한다. 그러면 /usr/local/mysql/bin 디렉터리로 이동하여
 “. /mysql_install_db” 명령을 실행하여 /usr/local/mysql/data 디렉터리가 생성되도록 한다.

mysql_install_db  명령은 /usr/local/mysql/data DB 디렉터리를 생성해 주고, 그 디렉터리 안에
mysql DB하위 디렉터리와 파일들을 생성해 주는 것이다.
#cd ../data
#ls

7.MySQL 라이브러리 위치 지정
-MySQL 데몬이 구동될 때 mysql 라이브러리를 이용하므로 이것을 포함하는 /usr/local/mysql/lib 디렉터리를 /etc/ld.so.conf 파일에 추가하여 ldconfig 명령을 실행한다.
#cat >>/etc/ld.so.conf
/usr/local/mysql/lib
ctrl+D를 누름.
#ldconfig

8.MySQL 설정 파일 (my.cnf) 복사
/usr/local/mysql/share/mysql 디렉터리에 있는 my-medium.cnf  파일을 /etc/my.cnf  파일로 복사한다.
 #cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

9.MySQL 게정 생성 및 MySQL 경로 소유권 변경
-MySQL 데몬은  mysql 계정 소유로 띄우는 것이 안전하므로, /etc/passwd 파일에 mysql 계정이 존재하는지
체크하여(cat /etc/passwd | grep mysql 명령 사용) 존재하지 않는다면 다음과 같이 이 계정을 생성한다.
 #groupadd mysql
 #adduser -M -c Mysql_server -d /usr/local/mysql -g mysql -s /bin/nologin mysql
(-c, --comment COMMENT  Any text string. It is generally a short description of the login, and is currently used as the field
          for the user’s full name.
-M The user’s home directory will not be created, even if the system wide settings from /etc/login.defs is
          to create home dirs.)

mysql 계정을 추가한 후 다음과 같이  MySQL 디렉터리의 소유권을 변경한다.
 #chown root.mysql -R /usr/local/mysql    (-R, --recursive  경로와 그 하위 파일들 모두를 바꾼다.)
 #chown mysql.mysql -R /usr/local/mysql/data

10.MySQL데몬 띄우기
 /usr/local/mysql/bin/mysqld_safe 명령으로 MySQL 데몬을 띄운다. 그러면 --user-mysql 옵션을 지정하여
다음과 같이 백그라운드 모드로 MySQL 데몬이 작동하도록 mysqld_safe 명령을 실행한다.
# /usr/local/mysql/bin/mysqld_safe --user=mysql &
[1] 31233
Starting mysqld daemon with databases from /usr/local/mysql/data
#

11. MySQL 데몬이 제대로 작동되고 있는지 ps ax 명령으로 확인해 본다.
# ps ax | grep mysqld
-부팅시 자동으로 MySQL 데몬이 작동되도록 하려면 /usr/local/mysql/share/mysql 디렉터리에 존재하는
mysql.server 파일을 /etc/init.d 디렉터리에 mysqld 파일로 복사하고 chkconfig 명령으로 실행레벨 3(콘솔)과
실행레벨 5(x-window) 에서 자동으로 실행되게끔 처리하면 된다.
# cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
# chkconfig --level 3 mysqld on
# chkconfig --level 5 mysqld on

 

 


***MySQL DB 설정***
 mysql 서버에 접속하여 데이터베이스와 사용자를 생성하는 간단한 방법을 알아보겠다. 여기서 생성하는 데이터베이스(db)와
사용자는 나중에 살펴보게 될 제로보드 설치에 사용하게 될 것이다. 제로보드 설치에서도 이 과정을 다시 한 번 복습하게 될
것이다.

1. /usr/local/mysql/bin/mysql 에서 mysql 명령을 실행하여 MySQL 서버에 접속한다.
# /usr/local/mysql/bin/mysql -p mysql
 -p 옵션은 열쇠글 옵션이다. 처음 설치 시에는 루트 열쇠글이 지정되어 있지 않으므로, 열쇠글을 묻게 되면
그냥 엔터키를 치면 된다. 그러나 step 2에서 루트 열쇠글을 지정한 이후부터는 루트 열쇠글을 입력하여
mysql db에 접속하게 된다.

2. mysql> 프롬프트에서 다음과 같이 update 명령으로 MySQL root 열쇠글을 생성한다.
mysql> update user set password=password('baboo') where user='root';
mysql> flush privileges;

3.데이터 베이스를 생성한다. (DB명: adam)
mysql> create database adam;

4.사용자 계정을 생성한다. (계정명: adam 열쇠글:sagan)
mysql> insert into user (host,user,password) values
    -> ('localhost','adam',password('sagan'));

5.생성한 데이터베이스를 등록한다.
mysql> insert into db values
    -> ('%','adam','adam','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
첫 번째 adam은 DB를 의미하고, 두 번째 adam은 계정을 의미한다. Y는 MySQL버전마다 틀리다. 위의 경우는
17개의 Y이므로 갯수에 주의한다.

6. exit 를 입력하여 MySQL DB 접속을 종료한 후 mysqladmin -p reload 명령을 실행하고, 열쇠글은
 mysql db root 의 암호를 입력한다. 이 명령을 실행한 이후로는 MySQL db에 접속할 때는 반드시 -p옵션을 사용하여
열쇠글을 입력해야 한다.
mysql> exit
# /usr/local/mysql/bin/mysqladmin -p reload
Enter password:
#

 

 


*** PHP 설치 ***
1. php-5.2.3.tar.tar 파일을 압축해제한다.
# tar xvfz php-5.2.3.tar.tar

2. ./configure 명령으로 다음과 같이 컴파일 환경을 설정한다.
--with-apxs2=아파치의 apxs 경로
--with-mysql= mysql 설치 경로
--with-config-file-path= php.ini경로
--with-exec-dir= 아파치 데몬 실행경로
(다음과 같이 설정해서 실행)
# ./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \
> --with-config-file-path=/usr/local/apache2/conf --with-exec-dir=/usr/local/apache2/bin --enable-track-vars \
> [--with-gd=shared --enable-gd-native-ttf] --with-openssl --with-xml --enable-trans-sid --with-zlib
 [ ] 이 부분은 에러가 발생할 시 추가 하지 말 것. --enable-sockets 는 추가.
(아주 간소하게,
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql \
--enable-socketr 라고만 해도 됨. PHP버전과 시스템의 설정에 따라서)

3. make 명령으로 컴파일을 진행한다. 컴파일이 성공적으로 완료되면 make install 명령을 실행하여 php 모듈을 아파치
경로의 모듈 디렉터리로 설치되게 끔 한다.(./configure에서 설정되어짐.)
 # make
 # make install

4. php.ini-recommended 파일을 /usr/local/apache2/conf 디렉터리로 복사한다.
 # cp php.ini-recommended /usr/local/apache2/conf/php.ini

5. 아파치 모듈 경로 ( /usr/local/apache2/modules)로 이동하여 libphp4.so 모듈 파일이 존재하는지 확인한다.
 만일 이 파일이 설치되지 않았다면 php 컴파일 상에 문제가 있는 것이므로, 새 php 소스를 이용하여 다시 컴파일 한다.
 #cd /usr/local/apache2/modules
 #ls -l libphp4.so
 #

6. 잠시 후에 살펴보게 될 /usr/local/apache2/conf/httpd.conf 파일 설정 가운데 DSO support 항목을 찾아 다음 설정
라인이 추가 되어 있는지 확인하여, 만일 설정되어 있지 않다면 추가한다.
 # Dynamic Share Object (DSO) Support
LoadModule php4_module modules/libphp4.so
(PHP의 버전에 따라 위의 라인에서 숫자가 달라진다.)

7. /usr/local/apache2/conf/httpd.conf 파일을 vi 에디터로 열어 #ServerName www.example.com:80으로 설정된 부분을 찾아 다음과 같이 수정한다.
ServerName localhost:80
(참고:ip로도 해본다.)

8. httpd.conf 파일 중간의 알맞은 곳 또는 마지막 줄에 다음을 추가한다.
 AddType application/x-httpd-php .php .php3 .php4 .php5 .html .htm

9.httpd.conf 파일을 저장한 뒤에 /usr/local/apache2/bin/httpd 또는
  /usr/local/apache2/bin/apachectl restart 명령을 실행하여 아파치 데몬을 다시 띄운다.
 # /usr/local/apache2/bin/httpd 또는
 # /usr/local/apache2/bin/apachectl restart

10.작동 여부확인
http://localhost 또는 http://ip주소


덧글

댓글 입력 영역