Memcached 는 데이터를 메모리에 저장하며 분산처리가 가능하고 매우 빠른 성능을 지닌 캐시 입니다.
- libevent 설치
Memcached 는 libevent 를 필요로 하므로 먼저 설치를 진행하겠습니다.
http://monkey.org/~provos/libevent/
[root@yongobk ~]# cd /usr/local/src
[root@yongobk ~]# wget http://monkey.org/~provos/libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# tar xzvf libevent-1.4.13-stable.tar.gz
[root@yongobk ~]# cd libevent-1.4.13-stable
[root@yongobk ~]# ./configure
[root@yongobk ~]# make ; make install
- Memcached 설치
아래 주소에서 최신버전을 다운로드 하고 설치를 진행합니다.
http://code.google.com/p/memcached/downloads/list
[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
[root@yongbok ~]# tar xzvf memcached-1.4.4.tar.gz
[root@yongbok ~]# cd memcached-1.4.4
[root@yongbok ~]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local
[root@yongbok ~]# make ; make install
- Memcached 실행
[root@yongbok ~]# /usr/local/memcached/bin/memcached -u nobody &
- Memcached PHP Extension 설치
http://pecl.php.net/package/memcache
[root@yongobk ~]# cd /usr/local/src
[root@yongbok ~]# wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@yongbok ~]# tar xzvf memcache-2.2.5.tgz
[root@yongbok ~]# cd memcache-2.2.5
[root@yongbok ~]# /usr/local/php5/bin/phpize
[root@yongbok ~]# ./configure --with-php-config=/etc/php/bin/php-config
[root@yongbok ~]# make ; make install
Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
php.ini 파일에 아래 내용 추가 합니다.
[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[memcache]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension=memcache.so
memcache.allow_failover=1
memcache.max_failover_attempts=100
memcache.chunk_size=32768
memcache.default_port=11211
- Apache 재시작
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart
- PHP 에 Memcached 가 적용 되어 있는지 확인
[root@yongbok ~]# echo '' > /var/www/phpinfo.php
참고
http://www.ibm.com/developerworks/kr/library/os-php-fastapps3/
[세션을 메모리캐싱을 사용할 경우 주의 사항 ]
memcache를 사용하는 중 세션 정보가 유지되지 않아 그것을 해결하는데
많은 시간을 소비하였습니다. 저의 경우 모델자체를 세션에 저장하였었는데 그것의 데이터가 많아지면 저절로 기존 데이터가 사라지는 것이었습니다. 그래서 필요한 데이터만 저장하니까 그러한 문제는 발생되지 않았습니다
memcached + Session Database
- memcached의 원래 목적이 데이터베이스나 파일 데이터를 캐시하는 것임
- 세션 데이터를 데이터베이스로 만들어 넣고, session handler 부분에서 memcached를 호출하게 만들면 될 듯.
- 데이터베이스를 사용하는 안정성 + 세션 공유 문제 해결 + memcached에 의한 성능 향상까지 기대할 수 있지 않을까?
- 이 부분은, 좀더 생각해보면서, 방법을 찾아봐야 할 듯...
<- 곰곰히 생각해보니, 약간 부정적. 세션 데이터는 read보다는 update가 압도적으로 많음. 따라서, 캐시 효과는 작음.
Memcache & MySQL PHP Session Handler PHP code for session db + memcached
http://www.softwareprojects.com/resources/programming/t-php-sessionsave_handler-and-database-sessions-debu-1797.html
http://www.softwareprojects.com/resources/programming/t-memcached-for-php-sessions-1654.html
Android, Oracle, MS-SQL, PHP, JAVA, XML, C#, php, memcache, linux, centos6, mysql, mongodb
[설치/설정] centos 5.0 apm source install
centos 5.0 apm source install
시간 맞추기
rdate -s time.bora.net
yum을 이용한 기본 설치 (기타 라이버러리는 알아서 설치하길)
yum install gcc
yum install gcc-c++
yum install termcap
yum install libtermcap
yum install libtermcap-devel
yum install gdbm-devel
yum install zlib*
yum install libxml*
yum install freetype*
yum install libpng*
yum install libjpeg*
mysql5.1.22 설치
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --enable-assembler --with-thread-safe-client --with-mysqld-user="root" --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-readline --without-debug --without-docs --without-bench --with-charset=euckr --sysconfdir=/etc
make
make install
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysql_install_db
APACHE2.2.6 설치
./configure --prefix=/usr/local/apache --enable-modules=so --enable-so --enable-rewrite
make
make install
PHP5.2.5 설치
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --with-ttf --with-png-dir --with-zlib-dir --with-jpeg-dir --with-gdbm --enable-ftp --enable-mbstring --enable-sockets --enable-wddx --with-freetype-dir --enable-bcmath --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --enable-calendar --with-openssl
make test
make install
cp php.ini-dist /usr/local/php/lib/php.ini
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
apache 실행한다.
httpd.conf 설정
vi /usr/local/apache/conf/httpd.conf
있는지 확인후 없으면 추가
LoadModule php5_module modules/libphp5.so
/usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
그럼 졸 당황한다. 왜냐 CentOs 3-4버전에선 없던거다..ㅡㅡ; 졸 신기하다..
이유는 SELinux를 사용하는 일부 Linux 배포판에서는 IDL이나 ENVI를 실행시키려고 할때 다음과 같은 오류를 보이는 경우가 있다.
NSA가 주관하는 SELinux 프로젝트는 커널 보안에 강력한 위력을 발휘하기도 하지만 다른 소프트웨어들이 실행되는 것도 막을 경우가 있으므로 혹시 위와 같은 에러메시지를 만난다면 다음의 두 가지 중 하나를 수행하여 IDL이나 ENVI를 사용할 수 있도록 해 주자.
1. cat /etc/sysconfig/selinux 변경
cat /etc/sysconfig/selinux 을 보면 가운데에 SELINUX=enforcing 부분을 disabled 시켜버리고 리붓
2. selinux 보안정책을 적용
/sbin/restorecon -R -v /usr/local/apache/modules/libphp5.so
/usr/bin/chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
ZEND3.3.0 설치
./install.sh (설치시 php.ini 경로는 /usr/local/php/lib 로 지정)
APACHE 실행
/usr/local/apache/bin/apachectl start
MYSQL 실행
/usr/local/mysql/bin/mysqld_safe --user=root &
httpd.conf 설정
vi /usr/local/apache/conf/httpd.conf
php파일을 웹서버에서 인식하기 위해 아래두줄 추가
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps
처음페이지로 인식할 파일명설정
DirectoryIndex index.html index.htm index.php
MySQL5 BIN 링크
ln -s /usr/local/mysql/bin/mysql /usr/bin/
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/
rc.local 설정
vi /etc/rc.d/rc.local
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=root &
==============================================
#/etc/profile.d/mysql.sh
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
source /etc/profile
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
==============================================
php 옵션을 보면 그다지 특별한 것이 없어 보이는듯 하고,
MySQL 은 바이너리 배포자의 각종 튜닝이 모조리 생략된듯 한데,
무슨 기능이 필요해서 소스설치를 하셨나요?
혹시 아직도 rpm 의 아파치 limit 가 256 임
시간 맞추기
rdate -s time.bora.net
yum을 이용한 기본 설치 (기타 라이버러리는 알아서 설치하길)
yum install gcc
yum install gcc-c++
yum install termcap
yum install libtermcap
yum install libtermcap-devel
yum install gdbm-devel
yum install zlib*
yum install libxml*
yum install freetype*
yum install libpng*
yum install libjpeg*
mysql5.1.22 설치
./configure --prefix=/usr/local/mysql --localstatedir=/usr/local/mysql/data --enable-assembler --with-thread-safe-client --with-mysqld-user="root" --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-readline --without-debug --without-docs --without-bench --with-charset=euckr --sysconfdir=/etc
make
make install
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysql_install_db
APACHE2.2.6 설치
./configure --prefix=/usr/local/apache --enable-modules=so --enable-so --enable-rewrite
make
make install
PHP5.2.5 설치
./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-apxs2=/usr/local/apache/bin/apxs --enable-sysvshm=yes --enable-sysvsem=yes --enable-debug=no --with-ttf --with-png-dir --with-zlib-dir --with-jpeg-dir --with-gdbm --enable-ftp --enable-mbstring --enable-sockets --enable-wddx --with-freetype-dir --enable-bcmath --enable-mbregex --enable-exif --with-gd --enable-gd-native-ttf --enable-calendar --with-openssl
make test
make install
cp php.ini-dist /usr/local/php/lib/php.ini
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
apache 실행한다.
httpd.conf 설정
vi /usr/local/apache/conf/httpd.conf
있는지 확인후 없으면 추가
LoadModule php5_module modules/libphp5.so
/usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied
그럼 졸 당황한다. 왜냐 CentOs 3-4버전에선 없던거다..ㅡㅡ; 졸 신기하다..
이유는 SELinux를 사용하는 일부 Linux 배포판에서는 IDL이나 ENVI를 실행시키려고 할때 다음과 같은 오류를 보이는 경우가 있다.
NSA가 주관하는 SELinux 프로젝트는 커널 보안에 강력한 위력을 발휘하기도 하지만 다른 소프트웨어들이 실행되는 것도 막을 경우가 있으므로 혹시 위와 같은 에러메시지를 만난다면 다음의 두 가지 중 하나를 수행하여 IDL이나 ENVI를 사용할 수 있도록 해 주자.
1. cat /etc/sysconfig/selinux 변경
cat /etc/sysconfig/selinux 을 보면 가운데에 SELINUX=enforcing 부분을 disabled 시켜버리고 리붓
2. selinux 보안정책을 적용
/sbin/restorecon -R -v /usr/local/apache/modules/libphp5.so
/usr/bin/chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
ZEND3.3.0 설치
./install.sh (설치시 php.ini 경로는 /usr/local/php/lib 로 지정)
APACHE 실행
/usr/local/apache/bin/apachectl start
MYSQL 실행
/usr/local/mysql/bin/mysqld_safe --user=root &
httpd.conf 설정
vi /usr/local/apache/conf/httpd.conf
php파일을 웹서버에서 인식하기 위해 아래두줄 추가
AddType application/x-httpd-php .php .html .htm .inc
AddType application/x-httpd-php-source .phps
처음페이지로 인식할 파일명설정
DirectoryIndex index.html index.htm index.php
MySQL5 BIN 링크
ln -s /usr/local/mysql/bin/mysql /usr/bin/
ln -s /usr/local/mysql/bin/mysqldump /usr/bin/
rc.local 설정
vi /etc/rc.d/rc.local
/usr/local/apache2/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=root &
==============================================
#/etc/profile.d/mysql.sh
MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
source /etc/profile
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start
==============================================
php 옵션을 보면 그다지 특별한 것이 없어 보이는듯 하고,
MySQL 은 바이너리 배포자의 각종 튜닝이 모조리 생략된듯 한데,
무슨 기능이 필요해서 소스설치를 하셨나요?
혹시 아직도 rpm 의 아파치 limit 가 256 임
피드 구독하기:
글 (Atom)