서버를 설치하면서 우분투 최신버전인 11.10과 APM패키지를 설치하였다.

어느 정도 정상적으로 작동하다가, 알수없는 fuser 프로세스가 급격히 증가하면서 좀비프로세스가 되는 현상이 있었다.

DDOS나 DB처리 과정에서 발생하는 것이 아닐까 생각하여 로그도 봐보고, Apache Timout 등 설정도 바꿔봤지만 아무런 효과도 볼 수 없었다.

재부팅 후 10~20분만 지나면 이런 현상이 발생했는데, 관련 자료를 찾아도 없던 중 자료 하나를 발견하여 우선 테스트 중이다.

설정 후 2시간 정도 작동해 보니 현재까지는 양호하게 작동하고 있다.


/etc/cron.d/php5 파일 내용이 11.04와 달라졌는데, 우선 11.04 내용으로 변경하여 적용했다. 

11.10 버전은 아래의 내용이다.

09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete


이 것을 아래처럼 11.04의 것으로 바꾼다. ( ! -execdir fuser -s {} 2>/dev/null \; 삭제)

09,39 *     * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete


현재까지는 이상이 없지만 모니터링을 해봐야겠습니다.

30분 이상된 세션을 정리해 주는 cron인 것 같네요. 

이 때문에 30분마다 엄청난 fuser프로세스가 생긴 것 같은데요. 위 부분을 지웠다고 어떤 문제가 생길지는 모르겠습니다.

우선은 지켜봐야 할 듯 합니다.







최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

 

1. chkconfig 설치

이미 설치되어 있다면, 설치하지 않아도 됨

# apt-get install chkconfig

 

2. MySQL 자동실행 설정

실행 스크립트 /etc/init.d 로 복사

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

chkconfig으로 등록

# chkconfig --add mysqld

 

3. Apache 자동실행 설정

실행 스크립트 /etc/init.d 로 복사

# cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd

스크립트 수정

# vi /etc/init.d/httpd

다음 내용을 #!/bin/sh 하단에 추가

# Comments to support chkconfig on ReaHat Linux
# chkconfig: 2345 90 90
# descrption: A very fast and reliable WebServer engine.

chkconfig으로 등록

# chkconfig --add httpd

 

4. 등록 여부 확인

# chkconfig --list

결과 아래와 같은 항목이 있어야 함

httpd                     0:off  1:off  2:on   3:on   4:on   5:on   6:off

mysqld                    0:off  1:off  2:on   3:on   4:on   5:on   6:off

 

httpd가 없거나 전부 off 일때

mysql은 잘되지만 httpd는 안될 때가 있다.

# chkconfig --edit httpd

실행 후, httpd off 라고 된 부분을 on으로 변경 후 저장

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

주의1)  -기호 2개가 연속으로 있을 때 조금 긴 -기호로 바뀌어 버리네요. 수정이 잘 안되니, 참고 바랍니다. ^^;;

 

 

1. MySQL

# wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67.tar.gz/from/http://mysql.byngsoo.net/
# tar xvzf mysql-5.0.67.tar.gz
# cd mysql-5.0.67
# ./configure --prefix=/usr/local/mysql --without-readline --enable-thread-safe-client --with-charset=utf8 --with-extra-charsets=ucs2,euckr CFLAGS="-I/usr/local/include" CXXFLAGS="-I/usr/local/include"
# make
# make install

 

2. Apache

# wget http://apache.tt.co.kr/httpd/httpd-2.2.9.tar.gz
# tar xvzf httpd-2.2.9.tar.gz
# cd httpd-2.2.9
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-auth-digest --enable-dav --enable-dav-fs --with-mpm=worker --enable-rewrite --enable-deflate --enable-headers --enable-expires --enable-log-forensic --enable-dbd --enable-authn-dbm --enable-authn-dbd --enable-authz-dbm
# make
# make install

--with-mpm=worker 설명

Apache2에는 worker와 prefork가 있다. 일반적으로 worker가 메모리를 적게 사용하지만, prefork에 비해서 불안정하다고 알려져 있다.

해당 옵션을 삭제하면 기본으로 prefork가 된다.

서버의 수용 최대 접속 컴파일 단계에서 늘리기

Apache1.3.x에서는 httpd.h 파일의 HARD_SERVER_LIMIT 값을 변경해 컴파일 해야 하지만, Apache2에서는 조금 다르다.

컴파일 전에 아래 값을 변경해 줘야 한다.

server/mpm/prefork/prefork.c
DEFAULT_SERVER_LIMIT 을 256에서 2048로 변경

server/mpm/worker/worker.c
DEFAULT_SERVER_LIMIT 을 16에서 256으로 변경

 

3. PHP

# wget http://kr2.php.net/get/php-5.2.8.tar.gz/from/this/mirror
# tar xvzf php-5.2.8.tar.gz
# cd php-5.2.8
# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-iconv=/usr/local --with-libxml-dir=/usr/local/xml --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-zlib-dir=/usr/local --with-freetype-dir=/usr/local --with-curl --enable-mbstring --enable-mbregex --enable-dbase --enable-sigchild --enable-gd-native-ttf --enable-wddx --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-sockets --enable-soap --enable-ftp --enable-safe-mode --enable-exif --enable-bcmath
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

configure 중 libiconv.so.2 문제

아래와 같은 에러가 발생할 수 있다.

Sorry, I cannot run apxs.  Possible reasons follow:

1. Perl is not installed
2. apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
3. Apache was not built using --enable-so (the apxs usage page is displayed)

The output of /opt/modules/apache2/bin/apxs follows:
/opt/modules/apache2/bin/httpd: error while loading shared libraries:libiconv.so.2: cannot open shared object file: No such file or directory
apxs:Error: Sorry, no shared object support for Apache.
apxs:Error: available under your platform. Make sure.
apxs:Error: the Apache module mod_so is compiled into.
apxs:Error: your server binary `/opt/modules/apache2/bin/httpd'..
configure: error: Aborting

해결방법

# ln -s  /usr/local/lib/libiconv.so.2 /usr/lib/

다시 configure 실행

 

4. ZendOptimizer

http://www.zend.com 에서 다운로드

# tar xvzf ZendOptimizer-3.2.8-linux-glibc21-i386.tar.gz
# cd ZendOptimizer-3.2.8-linux-glibc21-i386
# ./install

install스크립트

- 자동으로 설치함
- 설치 중 php.ini 경로 입력 : /usr/local/php/lib
- 설치 중 Apache Control Utility 경로 입력 : /usr/local/apache2/bin/apachectl

ZendOptimizer 제거

- /usr/local/php/lib/php.ini-zend_optimizer.bak 을 php.ini로 바꿈

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

 

 

1. PATH 설정

/etc/profile 에 아래 내용 추가

# form Apache located at /usr/local/apache2
if [ –d /usr/local/apache2 ]
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apache2/lib; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/apache2/bin; export PATH;
fi

# from MySQL located at /usr/local/mysql
if [ –d /usr/local/mysql ]
  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib/mysql; export LD_LIBRARY_PATH
  PATH=$PATH:/usr/local/mysql/bin; export PATH;
fi

 

2. MySQL 설정

mysql 사용자 추가

# groupadd mysql
# useradd -d /home/mysql -g mysql –s /bin/false mysql

환경파일 복사

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

DB파일 생성

# /usr/local/mysql/bin/mysql_install_db
# chown -R mysql:mysql /usr/local/mysql/var

root 비밀번호 변경

# /usr/local/mysql/share/mysql/mysql.server start
# /usr/local/mysql/bin/mysqladmin –u root password ‘new-password’

 

3. Apache 설정

/usr/local/apache2/conf/httpd.conf 파일 수정

# Dynamic Shared Object (DSO) Support
LoadModule php5_module modules/libphp5.so
AddType application/x-httpd-php .php .htm .html
AddType application/x-httpd-php-source .phps

ServerName 수정

ServerName 192.168.0.1 처럼 IP를 지정하거나 도메인 지정

Include 주석 해제

가장 하단부에 각 설정이 구분된 Include 설정이 있다. 필요한 설정 부분 주석을 해제한다.

# Server-pool management (MPM specific)
Include conf/extra/httpd-mpm.conf

# Multi-language error messages
Include conf/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include conf/extra/httpd-autoindex.conf

# Language settings
Include conf/extra/httpd-languages.conf

# User home directories
Include conf/extra/httpd-userdir.conf

# Real-time info on requests and configuration
Include conf/extra/httpd-info.conf

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
Include conf/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
Include conf/extra/httpd-dav.conf

# Various default settings
Include conf/extra/httpd-default.conf

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

주의1)  -기호 2개가 연속으로 있을 때 조금 긴 -기호로 바뀌어 버리네요. 수정이 잘 안되니, 참고 바랍니다. ^^;; 

 

1. readline

# wget ftp://ftp.cwru.edu/pub/bash/readline-5.2.tar.gz
# tar xvzf readline-5.2.tar.gz
# cd readline-5.2
# .configure –enable-multibyte
# make
# make install

 

2. libxml2

# wget ftp://xmlsoft.org/libxml2/libxml2-2.7.3.tar.gz
# tar xvzf libxml2-2.7.3.tar.gz
# cd libxml2-2.7.3
# ./configure --prefix=/usr/local/xml
# make
# make install

 

3. zlib

# wget http://www.zlib.net/zlib-1.2.3.tar.gz
# tar xvzf zlib-1.2.3.tar.gz
# cd zlib-1.2.3
# ./configure –s
# make
# make install

 

4. libiconv

# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.12.tar.gz
# tar xvzf libiconv-1.12.tar.gz
# cd libiconv-1.12
# ./configure --prefix=/usr/local
# make
# make install

 

5. FreeType

# wget http://nchc.dl.sourceforge.net/sourceforge/freetype/freetype-2.3.8.tar.gz
# tar xvzf freetype-2.3.8.tar.gz
# cd freetype-2.3.8
# ./configure
# make
# make install

 

6. GD

# wget http://www.libgd.org/releases/gd-2.0.35.tar.gz
# tar xvzf gd-2.0.35.tar.gz
# cd gd-2.0.35
# ./configure
# make
# make install

 

7. curl

# wget http://curl.haxx.se/download/curl-7.19.4.tar.gz
# tar xvzf curl-7.19.4.tar.gz
# cd curl-7.19.4
# ./configure
# make
# make install

 

8. jpeg

# wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
# tar xvzf jpegsrc.v6b.tar.gz
# cd jpegsrc.v6b.tar.gz
# ./configure
# make
# make install

 

9. libpng

# wget http://jaist.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.35.tar.gz
# tar xvzf libpng-1.2.35.tar.gz
# cd libpng-1.2.35
# ./configure
# make
# make install

최근에는 패키지로 배포되는 APM이 여러면에서 상당히 편리하므로 컴파일해서 설치할 필요가 없는 편입니다.

이 문서는 개인적인 차원에서 정리하는 것임을 밝혀 둡니다.

주의1) mysql과 apache2 데몬을 반드시 중지 후 제거한다.

주의2) 아래 제거는 상황에 따라 달라질 수도 있으며, 다른 방법이 있을 수 있다. (의존성 검사 후 제거해 주는 거라 이렇게 나열하지 않아도 가능하지 않을까?)

주의3)  -기호 2개가 연속으로 있을 때 조금 긴 -기호로 바뀌어 버리네요. 수정이 잘 안되니, 참고 바랍니다. ^^;;

1. mysqld 제거

# /etc/init.d/mysql stop
# apt-get --purge autoremove mysql-server mysql-client libmysqlclient15-dev

 

2. Apache 제거

# /etc/init.d/apache2 stop
# apt-get --purege autoremove apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert

 

3. PHP 제거

# apt-get --purge autoremove libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

useradd -m 계정명 -G 그룹명
-m 옵션을 사용하면, 사용자 디렉토리를 생성시킴.


제로보드XE를 설치하다가 mod_rewrite가 기본으로는 활성화 되지 않는 점을 발견 했다.

이때는

sudo a2enmod rewrite

명령어를 사용하면 mod_rewrite가 설치된다.

apache2 force-reload

명령어를 사용하여 활성화하면 된다.

앗!! 그런데 안된다... 쩝

/etc/apache2/sites-enabled/000-default 파일을 열어서 아랫부분처럼 수정해 준다.
(apache2.conf 파일이 분리되어 있구나...)

<Directory "/var/www">
  Options FollowSymLinks
  AllowOverride FileInfo
</Directory>

그리곤

apache2 -k restart

명령어로 아파치 재시작!!

그럼 성공!!!

usr/share/fonts/truetype: failed to write cache
/usr/share/fonts/truetype/alee: failed to write cache
/usr/share/fonts/truetype/unfonts: failed to write cache
/var/lib/defoma/fontconfig.d: failed to write cache
/var/lib/defoma/fontconfig.d/B: failed to write cache
/var/lib/defoma/fontconfig.d/E: failed to write cache
/var/lib/defoma/fontconfig.d/G: failed to write cache
/var/lib/defoma/fontconfig.d/J: failed to write cache
/var/lib/defoma/fontconfig.d/P: failed to write cache
/var/lib/defoma/fontconfig.d/S: failed to write cache
/var/lib/defoma/fontconfig.d/T: failed to write cache
/var/lib/defoma/fontconfig.d/Y: failed to write cache
......

처럼 우분투에서 업데이트시 에러가 난다면 다음과 같이 하면 된다.
에러 메시지 중 위에 나타난 부분 (failed to write cache가 있는 부분)을 복사해서 아무 파일에나 저장한다.

# vi temp

을 실행하여 뒤에 붙어 있는 에러메시지를 삭제하고 저장한다.

/usr/share/fonts/truetype
/usr/share/fonts/truetype/alee
/usr/share/fonts/truetype/unfonts
/var/lib/defoma/fontconfig.d
/var/lib/defoma/fontconfig.d/B
/var/lib/defoma/fontconfig.d/E
/var/lib/defoma/fontconfig.d/G
/var/lib/defoma/fontconfig.d/J
/var/lib/defoma/fontconfig.d/P
/var/lib/defoma/fontconfig.d/S
/var/lib/defoma/fontconfig.d/T
/var/lib/defoma/fontconfig.d/Y

아래처럼 명령어를 실행한다.

cat /home/user/temp | xargs touch

다시 업데이트를 시도해 보면 정상적으로 될 것이다.

이 부분은 간단해서 좋다.

일단 설치시, 우분투 설치CD를 넣었을 때 나오는 첫 화면에서 바로 설치하기로 들어가지 말고, F2를 누르면 Language를 선택할 수 있다. 이 때 한국어를 선택하면, 설치화면부터 한글 설정으로 모두 설치해 준다.

만약, 기본값으로 설치를 해버렸더라도 어렵지 않다.
System > Administrator > Language 로 들어가서 Korean을 찾아서 Apply를 눌러주면 자동으로 한국어가 설치된다. (단, 인터넷이 연결되어 있어야 한다.) 그리고 나서  Default Language 를 Korean으로 설정해 주면 끝이 난다.

리눅스 배포판 중에서 이 부분만큼은 가장 쉽다.

pppoeconf

를 실행하면, username과 password를 물어보는데, 자신의 dsl계정을 입력하고 엔터 몇 번을 쳐주면 끝 난다.

+ Recent posts