본문 바로가기

Linux

[Linux] APM 소스 설치

APM Source Install



설치하기 전 

1. 이유 : 

소스설치를 하는 이유는 yum으로 설치 시 불필요하게 설치되는 파일들이 시스템의 필요없는 자원을 사용하게 되고, 관리적으로도 문제가 발생할 수 있습니다. 그렇기 때문에 배제하고, 정말 필요한 기능만 넣어서 저사양의 서버에서 최대의 효율을 내기위해서 소스설치를 하는 것 입니다.


2. 설치순서 : 

apache - mysql - php 혹은 mysql - apache - php 순서로, php가 가장 마지막에 와야한다는 것만 주의해야 한다. 이유는 php 설치시 apache, mysql 관련 설정이 들어가기 때문입니다.


3. 의존성 패키지 확인 : 

서버 설치 시 (minimal, webserver, desktop, minimal destop 등등) 어떤것으로 설치하느냐에 따라 다르지만, 보통은 minimal 설치 후 customize 할 때에도, admin tool, development tool 등 기본적인것만 설치하므로 apm 설치 시 의존성 에러가 발생하여 설치 하는데 문제가 생길 수 있으므로, 관련 패키지들을 확인하고 설치하여야 한다.


참고 : 의존성이란

A라는 패키지가 정상적으로 동작하기 위해서는 A-1, A-2 등등의 A를 받쳐주는 개념의 라이브러리 등이 필요하므로, 설치 시 A라는 패키지는 설치하면서 의존성 검사를 하면서 A-1, A-2가 있는지를 확인하는데 이것들이 없으면 의존성 오류를 출력하게 됩니다. 그러므로 에러로그 확인 후 설치해 주거나 --nodeps 옵션으로 강제설치도 가능합니다. 다만 때에 따라서 정상적으로 동작하지 않을 수 도 있습니다.



APACHE 설치

# cd /usr/local/src

# wget http://xxxxx.xxxx.com/httpd-2.2.4.tar.gz 

 - apache 다운로드 사이트의 경우 최신버전은 apache 홈페이지에서 받을 수 있고, 구 버전은 http://archive.apache.org/dist/httpd/ 안에서 다운


# tar xvzf httpd-2.2.4.tar.gz

# cd httpd-2.2.4

# yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel

 - 의존성 설치, 설치중에 사용하는 모듈에 따라서 의존성 프로그램이 다르므로 상황에 맞춰서 설치하여 주면 된다


# vi /httpd-2.2.14/server/mpm/prefork/prefork.c

define DEFAULT_SERVER_LIMIT 256

->

define DEFAULT_SERVER_LIMIT 2048

 - prefork.c를 컴파일 하기전에 변경하는 이유는 사용량이 많을 경우를 대비하여 MaxClient 값을 늘려주기 위해서 입니다

 - 설치 하시기 전 prefork, worker 방식 중 선택하실수 있고 각각의 장단점 및 설명은 여기를 눌러서 확인하시기 바랍니다 http://itbest.tistory.com/xxxxx


# ./configure --prefix=/usr/local/apache --with-mpm=prefork --enable-ssl --enable-mods-shared=all 2> config_error

 - prefix=/설치할/경로를/의미 with의 경우 apache 버전별로 지원하는 모듈을 확인해서 configure 시 명시하면 됩니다


# make 2> make_error

# make install 2> install_error

 - configure 뒤에 2> config_error 의 의미는 1은 std_out 즉 일반출력을 의미하여 2는 std_err을 의미하기 때문에 명령어 실행 중 발생되는 에러로그를 따로 파일로 만들어서 보겠다는 의미 입니다. warning, error 등등 이 해당파일에 남게 됩니다.


여기까지 에러없이 오셨다면, 우선 설치는 완료되었습니다. 이 글에서는 기본설정만 다룰 것 이고 아래 링크에서 apache 세부설정 관련하여 다시 포스팅 할 예정 입니다.


기본설정

# vi /usr/local/apache/conf/httpd.conf

User daemon

Group daemon

->

User nobody

Group nobody

 - 이렇게 변경하는 이유는 일반사용자의 웹 접속을 처리하기 위하여 apache 프로세스가 사용하는 계정이 필요하기 때문이고, 보통을 nobody로 사용하며 말 그대로 프로세스를 처리하기 위한 계정의 역활 그 이상 그 이하가 되어서도 안됩니다. 다른계정을 사용하고 싶다면 로그인, 쉘 사용여부, 권한을 잘 살펴보고 설정하기 바랍니다. /etc/passwd 파일을 살펴보면 알 수 있습니다

ex) nobody:x:99:99:Nobody:/:/sbin/nologin

     careco:x:1036:1036:careco.9393114.com:/home/careco:/bin/bash


# vi /usr/local/apache/bin/apachectl

...

가장 하단에 추가

#chkconfig: 35 90 90

#description: init file for Apache server daemon

#processname: /usr/local/apache/bin/apachectl

#config: /usr/local/apache/conf/httpd.conf

#pidfile: /usr/local/apache/logs/httpd.pid

 - apachectl을 리눅스 부팅시 자동으로 시작할 서비스에 등록해주기 위하여 설정을 추가합니다


# chkconfig --add apachectl

# chkconfig --level 35 apachectl on

 - chkconfig 명령어로 리눅스 부팅시 자동으로 시작할 서비스 데몬 목록에 추가합니다



MYSQL 설치

# pwd

/usr/local/src

# wget http://xxxxx.xxxx.com/mysql-5.0.44.tar.gz

# tar xvzf mysql-5.0.44.tar.gz

# cd mysql-5.0.44

# yum install -y gcc cpp gcc-c++ compat-gcc* flex* ncurses ncurses-devel cmake

 - 의존성 설치 부분이며, cmake 는 mysql-5.5.x 이상의 버전부터는 cmake를 사용하여 설치하므로 버전에 맞게 설치합니다


# ./configure --prefix=/usr/local/mysql --enable-thread-safe-client --localstatedir=/usr/local/mysql/data --with-charset=utf8 --with-mysql-user=mysql --with-extra-charsets=all


# make

# make install

 - 여기까지 설치가 끝난 후 다음부터는 사용자의 취향에 따라 여러가지로 커스터마이징 할 수 있습니다. ex) 로그위치, 데이터위치, 환경설정 등등


# groupadd mysql

# useradd -g mysql mysql

# mkdir /usr/local/mysql/data

 - mysql 데이터가 저장 될 폴더 생성


# /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

   or

# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

 - 위 명령어는 기본 DB를 설치하는 명령어이며, 버전별로 조금 상이 합니다

 - DB가 생성되지 않은 상황에서 mysqld 데몬을 실행하는 경우 pid 에러가 발생하게 됩니다


# cd /usr/local/mysql

# chown -R mysql:mysql data

 - data 폴더는 mysql 계정으로 소유권이 되어있지 않으면 계정이 데이터를 사용하지 못하여 에러가 발생합니다. -R옵션으로 하위폴더까지 모두 포함


# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

   or

# cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

 - chkconfig에 등록하기 위하여 실행파일을 init.d 안에 복사합니다. 버전별로 상이하긴 하지만 대부분 저 두개의 위치중에 있습니다


# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf

   or

# cp /usr/local/mysql/share/mysql/my-huge.cnf /etc/my.cnf

 - mysql의 설정파일을 복사합니다. 위치는 설정파일을 어떻게 바꾸느냐에 따라 다르고, 편의를 위해 /etc 아래에 두었습니다


# vi /etc/rc.d/init.d/mysqld

...

basedir, datadir 을 검색하여 basedir='뒷부분' 을 변경합니다

basedir='/usr/local/mysql'

datadir='/usr/local/mysql/data'


# /etc/init.d/mysqld start

 - 정상적으로 설치되었다면 start가 될 것이고 그렇지 않은 경우,  /usr/local/mysql/data/xxxx.error_log 를 참고하여 원인을 찾아서 해결하면 됩니다.


# chkconfig --add mysqld

# chkconfig --level 35 mysqld on

 - 리눅스 재 시작 시 자동으로 서비스를 시작하기 위하여 등록합니다


# chkconfig --list |grep mysqld

 - 정상적으로 등록 되었는지 확인 합니다. 되었다면 3, 5레벨에 on으로 표시되어 있게 됩니다


PHP 설치

# pwd

/usr/local/src

# wget http://xxxxx.xxxx.com/php-5.5.6.tar.gz

# tar xvzf php-5.5.6.tar.gz

# cd php-5.5.6


# yum install -y libjpeg libjpeg-devel libpng libpng-devel gmp-devel expat-devel freetype freetype-devel gd gd-devel curl curl-devel libtermcap libtermcap-devel libc-client libc-client-devel bison bzip2-devel libxml2 libxml2-devel gdbm gdbm-devel

 - 의존성 설치


# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/usr/local/apache/conf --with-mysql=/usr/local/mysql --enable-sysvsem=yes --enable-sysvshm=yes --enable-debug=no --enable-bcmath --enable-mod_charset --enable-gd-native-ttf --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-exif --enable-sockets --enable-wddx --enable-ftp --enable-calendar --with-zlib --with-png-dir=/usr --with-zlib-dir --with-jpeg-dir=/usr --with-gdbm=/usr --with-freetype-dir=usr --with-libxml-dir=/usr --with-gettext --with-gd --with-openssl=shared --with-curl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-sigchild

 - config 시 주의점은 각 옵션마다 사용자의 환경에 맞게 수정해주어야 하며, 필요한 옵션이 있으면 더 추가해 주어야 한다. 더불어 에러가 나는 경우는 에러문구를 구글링 하여 처리를 한다. ex) mhash 등등


# make

# make install


# cp /usr/local/php/php-5.5.6/php.ini-development /usr/local/apache/conf/php.ini

 - ini 파일 생성하고, 해당 파일의 위치는 위 config에서 설정해주는 곳에 지정할 수도 있고, 그렇지 않은 경우 php 기본 경로에 지정 되므로 위치에 맞게 파일을 복사 하여야 한다.


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

 - short_open_tag = Off → short_open_tag = On 등등 사용에 필요한 기본 값을 수정하고, 세부 설정에 관해서는 따로 다루어 보겠습니다.


# vi /usr/local/apache/conf/httpd.con

 - DirectoryIndex index.html index.htm index.php

   AddType application/x-compress .Z

   AddType application/x-gzip .gz .tgz

   AddType application/x-httpd-php .html .htm .php .php3 .php4 .php5 .cgi .inc

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


 - php 사용을 위하여 타입을 정의해 주어야 한다

# vi index.php
 - <?PHP phpinfo(); ?>
 - 테스트 하고자 하는 계정의 ROOT 디렉토리에 생성한다
 - 제대로 설정하지 않거나, 설치가 되지 않았을경우 소스 그대로 텍스트로 출력 될 것이고, 아니면 php 정보를 확인 할 수 있다.



번외.

예를들어 루트 홈 위치에서 mysqldump 명령어를 사용하고 싶은경우, /usr/local/mysql/bin/mysqldump -u root -p xzxxxxx > xxxxx.sql 이런식으로 명령어를 입력해야 하지만 환경변수를 등록하게 되면 앞의 위치 경로를 적어주지 않아도 됩니다.


단독계정만 설정하는 경우(root 권한을 가지고 있다는 전제하에 작성합니다)

# vi /home/user1/.bash_profile

...

export MYSQL_HOME=/usr/local/mysql

export PATH=$PATH:$MYSQL_HOME/bin:.


전체계정을 설정하는 경우
# vi /etc/profile
...
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin:.

 - bash_profile의 경우 계정의 홈 디렉터리에 있고, 해당 계정만 적용되며 /etc/profile의 경우 시스템 시작과 동시에 모든 계정에서 가져가는 기본 프로파일 이므로 전체에 적용되게 됩니다. 더 궁금한 부분은 구글 - 리눅스 환경변수 라고 입력하시면 찾으실 수 있습니다.

추가로 응용하면

export PHP_HOME=/usr/local/php

export PATH=$PATH:$PHP_HOME/bin:.

export APACHE_HOME=/usr/local/apache

export PATH=$PATH:$APACHE_HOME/bin:. 


여기까지 입니다, 고생하셨고, 중간중간 발생하는 에러에 대해서는 에러 메시지 자체를 구글에 검색하게 되면 많은 자료가 있기 때문에 비교적 쉽게 해결할 수 있습니다. 따로 궁금하신 점은 댓글이나, 메일로 문의주시기 바랍니다. 감사합니다.


문의 : ollllllloaa@icloud.com