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
번외.
예를들어 루트 홈 위치에서 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:.
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
'Linux' 카테고리의 다른 글
[Linux] httpd.conf 옵션 설정 한글설명 (0) | 2019.09.23 |
---|---|
[Linux] OpenSSL 업데이트 Update 0.9.8e - 1.0.1e (0) | 2019.09.19 |
[Linux] CentOS 5 yum error (0) | 2019.09.18 |
[etc] POP3 vs IMAP 차이 (0) | 2019.01.14 |
[Linux] 파일 비교 스크립트 및 파일목록 추출(파일내용 비교, 폴더파일목록 추출) (0) | 2016.10.18 |