리눅스 특강 & 리눅스

리눅스 웹서버-APM(Apache Mysql php) 소스코드로 구축

gandus 2011. 5. 16. 09:55

일단 APM이 설치 되었는지 확인합니다.
 ->rpm -qa httpd php mysql 

 

  여기서부터  rpm -qa httpd php mysql   이쪽으로

 

앞에서부터 뒤로  드래그 하고   ->  글자가 모두 드래그 되는지 확인하고

오른쪽 마우스 - 복사를 합니다.

 

터미널에서 - 오른쪽 - 붙여넣기를 클릭합니다.

 

 

자 이제 시작합시다.

 

 

 

일단 APM이 설치 되었는지 확인합니다.
 ->rpm -qa httpd php mysql 


아무것도 깔려있지 않았다면 아무것도 뜨지 않는다
혹시 깔려있다면, 새롭게 설치하기 위해서 지워줍니다.
->rpm -e --nodeps 패키지명 ( 위에 명령어 입력시 나온 패키명을 그대로입력한다 )


모두 삭제해 줍니다.
자 이제 모두 삭제 한후에 다시한번 확인해보자
-> rpm -qa httpd php mysql

이제 아무 것도 나타나지 않는 걸 알 수 있다.

 

이제 apm을 설치할 폴더를 생성한다.
-> mkdir /usr/local/src/APM
그리고 해당 폴더로 들어갑니다.
-> cd /usr/local/src/APM


이제 apache를 다운로드 해보자
->wget http://apache.mirrors.pair.com//httpd/httpd-2.2.17.tar.gz
다운로드 상태창이 뜨고 100%완료까지 기다린다.

 

이제는 php를 다운받는다.
->wget http://kr2.php.net/get/php-5.2.17.tar.gz/from/kr.php.net/mirror
역시 완료까지 기다린다.

 

이제 mysql을 다운한다.
wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.11.tar.gz/from/
http://mirror.khlug.org/mysql/
이하 동문이다.


_______________________________________________  >  여기까지 APM 다운로드 이다.

 

APM소스코드를 컴파일 하기 위해서는 gcc와 gcc-c++ 등 컴파일러가 설치되어야한다.
기존에 설치 된 거라도 업데이트를 해 주기 때문에 다 실행한다.

->yum -y install gcc gcc-c++ cpp compat-gcc-34-g77 flex readline-devel zlib curl \
g++ openssl openssl-devel ncurses-devel bzip2-devel bison


시간이 꽤 많이 소모된다.
마지막에 complete 가 뜨면 완료된 것이다.

 

 

컴파일러가 제대로 설치 되었다면 이제 apm에 필요한 라이브러리들을 설치합니다.
역시 업데이트를 위해서 적어준다.

->yum -y install libjpeg libpng freetype gd libtermcap-devel libc-client-devel \
libjpeg-devel libpng-devel freetype-devel gd-devel libxml2 libxml2-devel


----------------------------------------- 여기까지 라이브러리와 컴파일러 설치

 

이제 mysql을 설치합니다.


기존 mysql 에서는 ./configure 로 설정을 했지만
mysql 5.5버젼 부터는 cmake 로 설정해야합니다.

그래서 Cmake를 설치합니다.

->cd /usr/local/src/APM
->wget http://www.cmake.org/files/v2.6/cmake-2.6.4.tar.gz

 

->tar -zxvf cmake*

->cd cmake*

 

->./bootstrap

->make

->make install

 

 


설치를 진행하기 전에 mysql을 실행할 계정을 생성합니다.
->groupadd mysql
->useradd -g mysql mysql

 

 

이제 mysql을 설치해보자. 
mysql 소스파일을 압축해제 합니다.

->cd /usr/local/src/APM
->tar -zxvf mysql-5.5.11.tar.gz
->cd mysql-5.5.11

 


cmake를 이용하여 설정을 합니다. 대소문자 반드시 지켜 주세요
명령어가 길기 때문에 '\' 를 이용해서 줄을 바꾸며 적어준다.

'-'  빼기도 빠짐없이 적어주어야 한ㄷ.

 

->cmake -DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql \
-DWITH_EXTRA_CHARSETS=all \
-DMYSQL_DATADIR=/usr/local/server/mysql/data \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DSYSCONFDIR=/etc \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306

 

이제 설치를 실행합니다.
->make 
->make install

 

설정파일 복사한다
자신이 리눅스 설치할때 선택한 램 용량에 따라 설정이 달라진다.


자신의 메모리 용량이 1G - 2G 사이일때  my-huge.cnf
512 일때는                             my-large.cnf
64~ 256 일때는                         my-medium.cnf
64보다 작을때는          my-small.cnf

->cp support-files/my-huge.cnf  /etc/my.cnf

 

 

서버 부팅시 mysql 실행을 위한 서비스 등록
->cp support-files/mysql.server /etc/init.d/mysqld


그리고 열어서 수정한다.
->vi /etc/init.d/mysqld

basedir=
datadir=  두개가 있는데  datadir 뒤에 넣어준다.

 

datadir=/usr/local/server/mysql/data  

 


mysql 설치 디렉토리에 대한 mysql 권한 부여
->chown -R mysql:mysql /usr/local/server/mysql

데몬실행 권한을 부여한다.
->chmod 755 /etc/init.d/mysqld

 

기본 DB 생성 설치,  디렉토리로 이동하여서 실행하여야 합니다
->/usr/local/server/mysql/scripts/mysql_install_db --user=mysql \

--basedir=/usr/local/server/mysql --datadir=/usr/local/server/mysql/data

 


mysql을 실행한다.
->/etc/init.d/mysqld start


Starting Mysql............ ok  가 되면 정상 실행이다.


////////////////////////////////
만약 실행이 되지 않는다면..

일단 -> killall mysqld

/usr/local/server/mysql 밑에 support-files 에 있는 mysql.server 파일을
/etc/rc.d/init.d/mysqld 에 복사한다.

->cp -p mysql.server /etc/rc.d/init.d/mysqld 명령으로 복사후

아래 명령으로 실행을 한다.

->/etc/rc.d/init.d/mysqld start
/////////////////////////////

 


잘 실행된다면 여기서부터


루트 비번을 설정한다.
->/usr/local/server/mysql/bin/mysqladmin -u root password cpc1234


mysql을 쉽게 사용 할 수 있도록 링크를 걸어준다.
  엘 엔 이다.     in 아님

#ln -s /usr/local/server/mysql/bin/mysql /usr/bin/    
#ln -s /usr/local/server/mysql/bin/mysqldump /usr/bin/


#mysql -u root -p                 <---mysql 접속

 


_______________________________________________________>  여기까지 mysql 설치

 

이제 apache를 설치해 봅니다.
->cd /usr/local/src/APM 


압축을 풉니다.
->tar -zxvf httpd*

압축을 푼 폴더로 들어간다.
->cd httpd*


아파치는 기본적으로 최대 256개의 httpd프로세스를 포크할 수 있다.
접속자가 많은 경우 최대 프로세스 수를 늘려줘야 한다.

/server/mpm/prefork/   이 위치로 들어와서
->vi prefork.c

#define DEFAULT_SERVER_LIMIT 256을  1024로 바꿔준다.

 

 

수정후 옵션을 변경한다.
->cd /usr/local/src/APM/httpd*


->./configure --prefix=/usr/local/server/apache --enable-mods-shared=all \
--enable-so --enable-rewrite

_______________________________________________________
--prefix=/usr/local/server/apache  설치 디렉토리
--enable-mods-shared=all    모든 모듈을 DSO모드로
--enable-so                  DSO모드를 활성화
--enable-rewrite             URL 재작성 모듈을 활성화
________________________________________________________


________________________________________________________________________________________
DSO (dynamic shared object)

아파치 설치 방식에는 dso와 static이 있다. dso 방식은 아파치를 먼저 컴파일하고 다른 모듈들을
추가로 설치할 때 아파치를 다시 컴파일 하지 않고 모듈을 추가 할 수 있다.
static방식은 사용하는 모듈을 모두 적재한 다음 사용자의 요청이 있으면 바로 응답해 속도는 빠르
지만 아파치가 실행할때 모든 모듈을 로드하므로 시스템 자원을 많이 소모한다.
dso방식은 사용자의 요청이 있을 때만 모듈을 로드하므로 static보다 조금 느리지만 시스템 자원을
적게 소모하고, 최근 하드웨어 발전으로 실행속도 크게 차이나지 않아서 dso방식을 사용
_______________________________________________________________________________________

 

그리고 설치를 한다.
->make 
->make install


제대로 설치 되었는지 확인합니다.  LL  (엘엘이다.)
->ll /usr/local/server/apache


자동 실행을 설정한다.
apache의 실행 스크립트 apachectl을 /etc/init.d에 httpd라는 이름으로 복사한다.
->cp /usr/local/server/apache/bin/apachectl /etc/init.d/httpd

 

수정을 해야한다.
->vi /etc/init.d/httpd

 

파일을 열어서 해당 파일에 3번째 줄에서 부터 추가한다.

#!/bin/sh......  이건 기본으로 있는것
#
#chkconfig: 2345 90 90
#description: init file for Apache server daemon
#processname: /usr/local/server/apache/bin/apachectl
#config: /usr/local/server/apache/conf/httpd.conf
#pidfile: /usr/local/server/apache/logs/httpd.pid
#
#Licensed.........  이것도 기본으로   이 둘 사이에 적어준다.

 


그리고 chkconfig를 이용해 등록한다. 부팅시 자동으로 켜지게 하는 것이다.
->chkconfig --add httpd


이제 apache 실행환경 설정을 한다.
->vi /usr/local/server/apache/conf/httpd.conf

User daemon   -> 이 두가지 daemon을 nobody 로 변경한다.
Group daemon   -> 이 두가지 daemon을 nobody 로 변경한다.

=> root권한으로 실행된 아파치의 하위 프로세스를 이곳에서 지정한 사용자로
실행한다는 의미입니다.

 

그리고 밑에 
#ServerName www.example.com:80

앞에 주석을 지우고 자신의 ip주소를 적어준다.
ifconfig 명령어로 보면 자신의 ip를 볼 수 있다.

192.168.174.128 -> 이건 자신의 ip로 바꾸어야한다.

=>ServerName 192.168.174.128:80

 

 

이제 apache가 실행되는지 테스트 해보자

/etc/init.d/httpd start 로 실행하고


웹 브라우저를 실행시키고
http://192.168.174.128(ip주소) 으로 들어가면

it' works 라고 나타난다.

 


혹시 나타나지 않는다면 방화벽에서 80포트를 열어준다.
vi /etc/sysconfig/iptables

다음 문장을 추가한다.
->-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

갱신된 정보를 다시 서비스함.
#/etc/rc.d/init.d/iptables restart

다시 위로 웹 브라우저로 접속해보자.


apache 설치는 이걸로 끝이다.

 

--------------------------------------------------------> 여기까지 apahe 설치

 

이제 php를 설치해보자.

cd /usr/local/src/APM


압축을 풀고 해당 폴더로 들어갑니다.

->tar -zxvf php-5.2.17.tar.gz
->cd php*


이제 설정을 한다. 양이 꽤 많다.
\ 후에 엔터를 치면 보기 쉽게 입력 할 수 있다

 

./configure \
--prefix=/usr/local/server/php \
--with-apxs2=/usr/local/server/apache/bin/apxs \
--with-mysql=/usr/local/server/mysql \
--with-config-file-path=/usr/local/server/apache/conf \
--disable-debug \
--enable-safe-mode \
--enable-sockets \
--enable-mod-charset \
--enable-sysvsem=yes \
--enable-sysvshm=yes \
--enable-ftp \
--enable-magic-quotes \ 
--enable-gd-native-ttf \
--enable-inline-optimization \
--enable-bcmath \
--with-zlib \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 \
--with-libxml-dir=/usr/lib \
--enable-exif \
--with-gd \
--with-ttf \
--with-gettext \
--enable-sigchild \
--enable-mbstring


thank you for us.... 뜨면 완료된 것이다.


설정이 완료되면 설치를 한다.
make 
make install


설치를 확인합니다.
ll 역시 엘엘 이다.
ll /usr/local/server/php/


php는 샘플파일을 제공하므로 이것을 이용해 php환경설정 파일을 생성한다.
샘플 파일은 소스압축을 해제한 디렉토리에 php.ini-dist라는 파일로 제공

이것을 ./configure 실행시 환경설정 파일의 경로 --with-config-files-path= 로
지정한 /usr/local/server/apache/conf 디렉토리에 php.ini라는 이름으로 복사한다.

->cp php.ini-dist /usr/local/server/apache/conf/php.ini


이제 아파치와 연동을 위해 httpd.conf 파일을 수정한다.

->vi /usr/local/server/apache/conf/httpd.conf

여기서

<IfModule dir_module>
    DirectoryIndex index.html 여기 뒤에 index.php 추가한다.
</IfModule>


그리고 밑에
<IfModuel mine_module>

여기서 
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz  밑줄에

아래 두줄을 추가한다.

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

 

테스트를 위해서  아파치를 재시작한다.
/etc/init.d/httpd restart


아마 에러가 발생 할 것이다.
이는 SELinux의 보안설정 때문이다


아래 명령을 수행해서 libphp5.so의 context를 변경하여 해결해야한다.
하지만 SELinux가 아니라면 아래 명령으로 사용 가능하다.

이것은 실시간으로 변경하는 것이다.
->setenforce 0

 

원인을 해결하려면 
->vi /etc/sysconfig/selinux  에 들어가서

SELIUNX=forcing 을  permissive  로 바꾼다.


그리고

->sync  

->init 6

해서 재시작한다.

 


테스트를 위해서  아파치를 재시작한다.
/etc/init.d/httpd restart

 

테스트 페이지를 만들어보자 phpinfo.php는 php정보를 보여주는 함수이다.
->vi /usr/local/server/apache/htdocs/phpinfo.php

여기서 <? phpinfo(); ?> 를 추가한다.


그 후 http://192.168.174.128/phpinfo.php 로 웹으로 접속한다.
정상적으로 접속한다면 php 버젼 정보가 보이게된다.

하지만

<? phpinfo(); ?>  이 코드가 보인다면 아까 httpd.conf에서 AddType 를 다시 확인하자


이제 mysql 연동 확인을 하자
->vi /usr/local/server/apache/htdocs/phpinfo.php

여기서

<?
 mysql_connect("","","");
 echo("mysql Success!!!");
?>

 

 

mysql Success!!! 가 나온다면
APM 연동 끝~~!~!~!

하아......

 

끝이 아니군....

 


httpd에서 alias를 지정한다.
일단 별명을 지정할 폴더를 생성한다.


->mkdir /usr/local/src/alias
->cd /usr/local/src/alias

이렇게 alias 폴더를 생성하고 들어간다

 


여기서 일단 php 파일을 하나 생성한다.
여기서 파일 이름은


반드시 index.php로 생성해야한다.


다른 이름으로 하면 적용되지 않는다.


->vi index.php  

파일을 생성해서  아래와 같이 명령어를 친다.


<?
 mysql_connect("","","");
 echo("mysql Success!!!");
?>

 

이제 해당 폴더를 별명으로 지정하기 위해서
httpd.conf 파일을 수정해줘야 한다.


->vi /usr/local/server/apache/conf/httpd.conf


여기에 들어가서...

 

좀 많이 내려가다가 보면


<IfModule alias_module>  이 존재한다.  
여기서 주욱 내려가면
#
#
# 이렇게 주석을 내려가다

ScriptAlias /cgi....... 라고 있는데 이 명령어 밑에 아래 명령을 추가한다.


Alias /alias "/usr/local/src/alias"
 <Directory "/usr/local/src/alias">
  Options MultiViews
  AllowOverride None
  Order allow,deny
  Allow from all
 </Directory>

11 이 명령어를 추가하면된다.   

 

마지막으로 apache 서버를 재 가동한다.
/etc/init.d/httpd restart

 

그리고 확인을 한다.


http://자신의ip/alias

이렇게 접속을 하면 정상적으로  /usr/local/src/alias 에 있는
index.php 로 접속을 하게된다


여기까지 레알 끝이다.


--------------------------------------------------------> 여기까지 php설치