[리눅스] 아파치 프로세스 개수 및 사용 메모리 확인 방법

아파치 메모리 사용량과 프로세스 개수를 확인 할때 사용하면 쉘 명령어입니다.

현재 아파치 총 메모리 사용량(단위 : MB)

 

현재 실행 중인 아파치 프로세스 개수

 

위 명령들과 함께 $ free -m 명령을 통해 현재 시스템에서 사용 중인 메모리를 비교해보면서 점검할 수 있습니다.

리눅스 버전과 각 환경에 따라 프로세스 이름은 다를 수 있습니다. httpd, apache, apache2 등

[Linux] 디렉토리 사용 용량 확인 방법

* 데비안(Ubuntu), 레드햇(CentOS) 계열에 상관없이 사용 할 수 있습니다.

1. 루트 하위 디렉토리 사용 용량 확인

 

2. 디렉토리 지정 용량 이상 사용 중인 파일 검색

위 예시는 /home 디렉토리 내 100MB 이상의 파일 리스트 출력

 

불필요하거나 사용하지 않는 파일을 정리하는데 유용하게 사용됩니다.

[Linux] CentOS(Redhat)와 Ubuntu(Debian)의 useradd 차이점

리눅스에서 사용자 계정을 추가할때 useradd 명령을 사용합니다. 하지만 레드햇 계열과 데비안 계열에서 동일한 명령임에도 조금 다른 기능을 수행합니다.

이 때문에 조금 혼란이 있을 수 있어 포스팅 합니다.

레드햇(CentOS) 계열에서의 useradd : 사용자 계정을 추가하고 /home에 계정디렉토리를 생성합니다.

데비안(Debian) 계열에서의 useradd : 사용자 계정을 추가하고 /home에 계정디렉토리를 생성하지 않습니다. 즉, 계정만 생성합니다.

그렇다면 데비안 계열에서 레드햇 계열의 useradd와 동일하게 /home에 디렉토리를 생성하고 싶다면?

adduser 명령을 사용하시면 됩니다. 데비안 계열의 adduser는 레드햇 계열의 useradd 와 동일한 기능을 합니다.

또 하나.. 레드햇 계열에서는 adduser라는 명령은 존재하지 않습니다. adduser, useradd 이게 참 말장난 같은데요.. “아”다르고 “어”다르다는 표현의 대표적인 사례인듯(?) 합니다.

[Linux] 쉘에서 파일/내용 검색하는 방법

간단하게 정리하겠습니다. 자주 사용하는데 자주 잊어버리네요..

파일 검색 방법

파일 내용 검색 방법

 

여기서 주의할 점은 경로를 root(/)로 지정하는 경우 부하를 상당히 주기때문에 꼭 필요한 경우가 아니라면 사용하지 마시기 바랍니다.

[Linux] svn commit 시 vim으로 에디터 설정

svn ci 명령시 복수의 파일을 커밋시 편집창을 설정하는 방법입니다. 기본은 vi로 설정되어있으나 한글 입력에 문제가 있습니다. 또는 아예 설정이 되어있지 않은 경우도 있습니다.

우선 svn 에디터를 설정해줍니다. (cshrc 파일 편집)

cshrc 파일에서 아래 내용을 입력하고 저장합니다.

setenv  SVN_EDITOR vim

쉘을 다시 로그인하거나 아래 쉘 명령어를 이용해 바로 적용되도록 합니다.

그리고 svn ci 명령을 실행시키면 vim으로 에디터가 출력되게 됩니다.

[Linux] CVE-2015-0235(GHOST) 취약점 긴급 이슈

지난 1월 27일 CVE-2015-0235(GHOST) 취약점 이슈가 발견되었습니다. 이 취약점은 공격자가 ID, 패스워드 검증 없이 원격제어가 가능해지는 치명적인 문제를 가지고 있습니다. 이를 통해 공격자는 쉽게 악성코드를 삽입하거나 디도스 공격등으로 악용할 수 있기 때문에 필히 업데이트를 해주셔야 합니다.

발표일자 : 2015/01/27
분류코드 : CVE-2015-0235
대상 OS
– Ubuntu 12.04 LTS, Ubuntu 10.04 LTS
– CentOS 5/6/7, 데비안7, 레드햇 엔터프라이즈 리눅스(RHEL) 5/6/7
(말은 이렇게 하지만 거의 대부분의 리눅스 기반 OS에 해당합니다. 난 아니겠지 NO)

업데이트(해결) 방법
– glibc 패키지 업데이트
– 레드햇 계열

– 우분투 계열

업데이트 후에는 재부팅이 필요합니다.

 

관련 링크
– 레드햇 : https://access.redhat.com/articles/1332213
– 우분투 : http://www.ubuntu.com/usn/usn-2485-1
– 데비안 : https://security-tracker.debian.org/tracker/CVE-2015-0235

[Linux] GNU Bash 취약점 보안 패치 방법

이 컨텐츠는 CentOS 6.x 기준으로 작성되었습니다.
지난 9월 24일 Stephane Chazelas에 의해 GNU Bash 취약점이 발견되어 KISA에서도 이를 9월 26일에 보안 권고 사항으로 배포하였습니다.

이 보안 취약점은 Bash 4.3 이하 버전에 해당하는 내용입니다. 아래 명령어로 버전을 확인하신 후 해당 버전인 경우 패치를 권장합니다.

 

패치 방법 (패키지 방식 업데이트)

 

패치 후 보안 취약점 검증 테스트 방법 (총 5가지 테스트)

패치와  테스트 방법은 터미널에 접속해 위 명령어들을 실행해주시면 됩니다.

 

[참조 링크]
http://lists.centos.org/pipermail/centos/2014-September/146099.html
– http://lists.centos.org/pipermail/centos/2014-September/146154.html

저사양 서버 성능 최적화 하기 (#1 Apache)

이 블로그는 워드프레스로 제작되었습니다. 워드프레스는 많은 기능을 가지고 있지만 속도가 느리다는 단점을 가지고 있지요. 게다가 기반이 되고 있는 언어도 PHP이기 때문에.. PHP 역시 빠른 언어는 아닙니다. 설상가상으로 아주 저렴한 VPS 서버위에서 돌고 있습니다.

여기서 아주 저렴한 VPS (가상화서버)라 함은.. cpu는 1개의 단일 코어, 512메가의 메모리, 30기가의 HDD 입니다. 웹서버는 메모리 상에 많은 데이터가 올라와있는 상태로 유지가 되어야하기 때문에 메모리는 무엇보다 중요한 요소입니다. 그런데 512메가 입니다.

요즘 저렴한 개인 PC도 메모리는 최소 4기가 이상이죠. 흐흐.. 아무튼 돈이 없으니 저사양 스펙으로 돌리고 있습니다. 그 동안 운영을 해오면서 워드프레스의 캐싱 플로그인인 WP-Super Cache도 설치해보고 간단하게 아파치 설정도 변경해보곤 했습니다. 하지만 어느 정도 페이지뷰가 올라가니 이 마저도 무리가 가더군요.

서버를 전체적으로 스펙에 맞게 튜닝할때가 온것같았습니다. 그렇다면 어디를 손봐야 할까요. 우선 순위를 따지자면 아래와 같습니다

– 아파치 (httpd.conf)

– PHP (php.ini)

– MySQL (my.cnf)

– 서버 캐싱 모듈 (apc.ini)

내용이 좀 깁니다. 때문에 이 포스팅에서는 아파치(httpd.conf) 설정 방법을 소개해드리겠습니다.

 

1. MPM (Prefork or Worker)

앞서 말씀드렸다시피 1 cpu, 512 메모리 스펙에서의 설정입니다. 상황에 맞게 조절하시면 좀더 좋은 퍼포먼스를 얻으실 수 있습니다.

우선 아파치 구동방식을 설정합니다. 기본값은 위 설정보다 높으며 prefork 설정 부분만 존재할겁니다. prefork 방식과 worker 방식은 간단히 말해 하나의 프로세스에 단일 쓰레드를 생성하느냐 여러개의 쓰레드를 생성하느냐의 차이입니다. 물론 하나의 프로세스에 하나의 쓰레드를 생성하는 prefork가 동접자 수 대비 서버의 부담이 더 갑니다. 대신 안정적이죠. 때문에 리소스 부담이 덜한 worker 방식을 선택할 수 밖에 없습니다. 위처럼 둘다 정의를 하더라도 나중에 정의된 방식으로 실행되게 됩니다.

 

2. LoadModule

아파치를 패키지로 설치하셨다면 불필요한 모듈을 불러오게 되어있습니다. 사용하지 않는 모듈을 불러와 메모리에 불필요한 부담을 주게 됩니다. 귀찮더라도 사용하지 않는 모듈을 지워주거나 주석처리를 해주는 것이 바람직합니다.

저는 워드프레스 + PHP 프레임워크인 CodeIgniter + nForge 가 함께 실행되고 있습니다. 이 들에게 종속적인 모듈을 정리해서 정의했습니다. 참고하시면 도움이 되실 겁니다.

 

3. 아파치 로그

아파치 로그는 패키지 설치 기준으로 /etc/httpd/logs 에 저장됩니다. 기본값은 warm(경고) 레벨부터 모두 저장됩니다. 시간이 지나면 이 로그 파일의 용량이 만만치 않게 됩니다. 주기적으로 관리해줘야하죠. 로그를 필요한 정보만 저장하도록 설정합니다.

 

일단 아파치는 여기서 어느정도 마무리 되었습니다.

변경한 설정내용은 service httpd restart로 하실 수 있습니다. 재시작 실패시 /etc/httpd/logs/error_log를 확인해보시기 바랍니다.

 

저사양 VPS 서버 성능 최적화 하기

(#2 MySQL/PHP)

[Linux] CentOS 6.x 에서 Mcrypt 모듈 설치하는 방법

* 본 내용은 CentOS 6.4 기준으로 작성되었습니다. OS 종류에 따라 방법이 다를 수 있으니 참고 바랍니다.

 

php에서 암호화 작업을 할 때 필요한 Mcrypt 모듈을 설치하는 방법을 간단하게 정리합니다.

설치방법은 yum을 이용한 패키지 방식입니다.

 

1. 우선 EPEL 저장소를 설치합니다.

여기서 HTTP request sent, awaiting response… 200 OK 메세지가 출력되지 않고 wget: unable to resolve host address.. 메세지가 나온다면 다시 명령을 시도해주세요.

 

2. yum을 업데이트 한 후 Mcrypt 모듈을 설치합니다.

yum update 명령은 현재 설치된 모든 패키지와 커널을 업데이트 하는 것이기 때문에 업데이트 하기 전에 문제될 것이 없는지 체크 한 후에 실행해주세요.

 

3. 설치가 완료되었다면 httpd 데몬을 재시작 시켜줍니다.