본문 바로가기

리눅스

[리눅스] APM 설치(MySQL, Apache, PHP)

반응형

APM 설치(MySQL, Apache, PHP)

1. 필수 라이브러리 설치

$ yum -y install gd gd-devel libpng libpng-devel libjpeg libjpeg-devel freetype freetype-devel fontconfig fontconfig-devel libxml2 libxml2-devel openssl openssl-devel gmp gmp-devel mhash mhash-devel libmcrypt libmcrypt-devel ncurses-devel curl-devel gdbm-devel libtool libtool-ltdl-devel

2. MySQL 설치2.1 MySQL 계정 생성

$ useradd -m -c "MySQL Server" -d /usr/local/mysql -s /bin/false -u 27 mysql

2.2 MySQL config

$ ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-charset=euckr --with-extra-charsets=all

2.2 MySQL config(innodb 활성화)

$ ./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --with-plugins=innobase,innodb_plugin --with-charset=euckr --with-extra-charsets=all

[ERORR]

config.status: executing depfiles commands
config.status: executing libtool commands
/bin/rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
$ yum -y install libtool
$ autoreconf --force --install
Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL'
client/Makefile.am: installing `./compile'
$ aclocal
$ libtoolize --automake --force
$ automake --force --add-missing

2.3 MySQL make && make install

make && make install
MySQL 용도별
my-small.cnf : 64M
my-medium.cnf : 128-256M
my-large.cnf : 512M
my-huge.cnf : 1~2G
my-innodb-heavy-4G.cnf : innodb

2.4 MySQL 설정 파일 복사

$ cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf

MySQL config 변경-innodb 활성화(/etc/my.cnf)

vim /etc/my.cnf
[mysqld]
..
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /usr/local/mysql/data
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 16M
innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

2.5 MySQL 초기화

/usr/local/mysql/bin/mysql_install_db

2.6 data 디렉토 권한 변경

$ chown -R mysql.mysql /usr/local/mysql/data
$ ls -l /usr/local/mysql | grep data
drwxr-xr-x 2 mysql mysql 4096 Apr 23 12:05 data

2.7 MySQL 실행

$ /usr/local/mysql/bin/mysqld_safe &

innodb 활성화 확인

$ /usr/local/mysql/bin/mysql
> SHOW VARIABLES LIKE 'have_innodb';
mysql> SHOW VARIABLES LIKE 'have_innodb';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | YES |
+---------------+-------+
1 row in set (0.00 sec)

3. Apache 설치

3.1 Apache 계정 생성

useradd -c "Apache" -u 48 -s /sbin/nologin apache

3.2 Prefork 변경(256 -> 1024), worker 변경(16 -> 256)

vim server/mpm/prefork/prefork.c
$ vim server/mpm/prefork/prefork.c
...
#ifndef DEFAULT_SERVER_LIMIT
#define DEFAULT_SERVER_LIMIT 1024
#endif
...
vim server/mpm/worker/worker.c
$ vim server/mpm/worker/worker.c
...
#ifndef DEFAULT_SERVER_LIMIT
#define DEFAULT_SERVER_LIMIT 256
#endif
Apache MPM(Multi-Processing Module) : 다중 처리 모듈
> Apache가 받아들인 요청을 처리하기 위해 "자식 process"에게 분배하는 방식
 
Prefork (--with-mpm=profork)
Prefork 방식은 일반적으로 single CPU 또는 Dual CPU에서 성능이 좋음.
실행중인 프로세스 복제하여 실행( 메모리 영역까지 같이 복제) 프로세스가 소비하는 메모리가 많음.
응답프로세스를 미리 띄워놓고 클라이언트 요청시 자식 프로세스가 반응하게 되는 방식.
 
Worker (--with-mpm=worker)
Worker 방식은 일반적으로 멀티 CPU 시스템에서 성능이 좋음.
요청을 thread 단위로 처리( 최대 64개의 thread 처리 가능) 지정된 만큼의 프로세스와 각 스레드를 준비하여 클라이언트의 요청을 받아들이는 설정
 
Prefork 방식과 Worker 방식의 차이점 
1 Worker가 Prefork에 비해 적은 메모리 사용한다. 
2 Worker : 통신량이 많은 서버에 적절한 형태를 가진다.
3 Prefork : 안전하지 않은 제 3자가 만든 모듈을 사용할 수 있다. 
4 Prefork : 디버깅이 빈약한 플랫폼에서 쉽게 디버깅 할 수 있다.
5 Worker 와 Prefork의 속도는 비슷하다.
6 apache MaxClient : Prefork 방식일 경우 최대 256까지 변경 가능하다.
 
[출처] SYSTEM Engineer 깽애니네 (리눅스, 윈도우, 보안, DDOS, 네트워크, 프로그래밍) - http://www.chonnom.com/bbs/board.php?bo_table=B19&wr_id=91

3.3 Apache config

$ ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --enable-proxy --enable-modules=all

3.4 Apache make && make install

$ make && make install

3.5. Apache 실행

$ /usr/local/apache2/bin/apachectl start

Apache list compiled in modules

$ /usr/local/apache2/bin/apachectl -l | grep ssl
mod_ssl.c
$ /usr/local/apache2/bin/apachectl -l | grep rewrite
mod_rewrite.c

4 PHP 설치

4.1 PHP config

$ ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache2/bin/apxs --with-gdbm --with-png-dir=/usr --with-zlib --with-jpeg-dir=/usr/lib --with-freetype-dir=/usr --with-iconv --with-curl --with-mcrypt --with-gd --with-openssl --with-libxml-dir --with-xpm-dir --enable-xml --enable-bcmath --with-gettext --with-mhash --enable-sysvshm=yes --enable-sysvsem=yes --enable-magic-quotes --enable-debug=no --enable-inline-optimization --enable-mbregex --enable-exif --enable-gd-native-ttf --enable-calendar --enable-ftp --enable-mbstring --enable-sockets --enable-wddx

4.2 PHP make && make install

$ make && make install

4.3 PHP config 복사

$ cp /usr/local/src/php-5.3.6/php.ini-production /usr/local/php/lib/php.ini

4.4 HTTPD config 파일에 php 모듈이 적제되었는지 확인

$ vim httpd.conf
...
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php5_module modules/libphp5.so
...
AddType application/x-httpd-php .ph .php .php3 .inc .asp .html
AddType application/x-httpd-php-source .phps

# AddHandler allows you to map certain file extensions to "handlers":

<IfModule dir_module>
DirectoryIndex index.html index.htm index.php
</IfModule>

 

728x90
반응형