CentOS4 – yum 사용이 안될때.

yum 의 base repo 주소가 변경되면서 그냥 설치후에는 yum 을 사용할 수 없다.

 

/etc/yum.repos.d/CentOS-Base.repo  파일을 아래와 같이 수정 해주면 사용할수 있다. 🙂

 

 

MS-SQL 인젝션 침해코드 삭제.

ASP 의 경우 인젝션 침해가 자주 발생한다.

문제는 백업 스케쥴링에 의한 백업 데이터가 없거나.

혹은 최근 업데이트된 자료가 소중하여 복원을 할수 없을때 생긴다 ‘ㅅ’a

 

아래는 인젝션 침해된 소스 코드를 NULL 로 치환해 주는 ms-sql 용 쿼리문이다.

원래대로라면 IIS 의 선언된 사이트를 중지 시키고 해야 겠지만 아래와 같은 쿼리문으로

진행 할경우 현재 sql connect 된 접속을 끊고 진행하기 때문에 편하다 =3=a

하이라이트 부분인 1, 13, 27번째줄을 수정 하면 된다.

특히 13번째줄 “아이디 혹은 dbo” 부분은 번갈아 바꿔가면서 하면 된다 ‘ㅅ’a

한번에 안되면 번갈아 가며 하다보면 된다 ‘ㅅ’a

옵션 을 적용하여 마운트 ‘ㅅ’a

기존의 글에서 DISK 의 IO 성능을 올리기 위해 /etc/fstab 수정하는 법에 대해서 설명했다.

 

작은 웹서버 ( 사이트 10개 미만 정도) 는 fstab 을 수정하는것으로도 충분 하지만.

대량의 웹서버 에서는 계정용 디스크를 별도 로 붙여 사용을 한다.

문제는 계정용 디스크가 커질경우 linux 에서 일정 기간동안 disk 사용시간이 넘어가는경우 부팅할때 disk 검사를 한다.

물론 디스크 검사를 해주는것도 중요하지만

원하지 않는 스케쥴링에 포람된 디스크 검사 때문에 서비스를 늦게 살리는건 말이 되지 않는다.

 

때문에 대형 웹서버 의 경우(사이트 100개 이상 서비스용도) 웹 디스크를 별도로 마운트 해서 사용한다.

부팅을 시켜두고 커널이 올라온 뒤에 root로 로그인을 해서 마운트 를 하고 서비스를 시작하기는 매우 귀찬다 ‘ㅅ’a

 

그래서 /etc/rc.d/rc.local 이란곳에 미리 등록해서 윈도우의 “시작프로그램” 처럼 부팅 후

마운트를 자동으로 하도록 설정한다.

 

1. 먼저 /etc/fstab 에 아래와 같이 웹용 디스크를 주석처리를 한다.

 

2. 이후에 /etc/rc.d/rc.local  에 아래와 같이 추가 하여 주석을 읽어들여 마운트 하는 부분을 추가한다.

주의사항 ## 마운트 체크할 디바이스를 지정한다. ( / 가 들어갈경우 \/ 와 같이 특수문자 처리를 한다. )

 

3. 마운트 이후에 httpd 를 시작해야 겠다.

근데 httpd 는 chkconfig 로 부팅 후 실행할 데몬에 추가하지 못한다. 그래서 마판가지로 /etc/rc.d/rc.local  추가한다.

이때 서버가 갑자기 다운된 경우 httpd.pid 파일이 남아 start 명령이 들어가지 않을수 있다.

pid 파일이 있는 상태에서 apache 를 시작 하면 존재 하던 pid 파일을 자동으로 지운다는 점에서 착안

아파치를 두번 시작한다. ‘ㅅ’a

(물론 두번째 시작은 ps 목록을 체크하고 이미 잘  실행중일경우  재실행 안되도록 했다.)

 

xcache 설치

모든 컴퓨터의 병목현상은 IO가 주원인이다.

발전속도가 가장 더디고. cpu / gpu / ram 의 속도는 나날이 높아져 가지만 IO의 성능은 거의

제자리 이다.(용량만 늘고 있다. hdd -> ssd 의 진화는 혁명적이긴 했다.)

또한 쉽게 dirty 상태에 빠지는게 IO 이기 때문에 IO 튜닝은 서버의 전반적인 속도향상에 크게 기여한다.

 

APM 서버에서 IO사용을 비약적으로 줄이기 위해서는 캐슁을 하면 되겠다.

xcache , APC 혹은 php 5.5 이상 포함된 opcache 가 대안이라고 볼수 있는데 일반적으로 zend 와의 충돌 때문에

xcache 를 사용하는편이 좋다. APC 역시 충분히 좋았지만.

APC의 경우 메모리 사용량이 xcache 보다 높았다.

그리고 APC 의 경우 문제시 되는 웹프로그램 좀더 많았다.(cake, moodle, kims-board 등)

 

공식 홈페이지 http://xcache.lighttpd.net

1. 설치방법.

–with-php-config 는 php-config 파일의 위치를 지정한다  일반적어도 안넣어도 되는 옵션 ‘ㅅ’a 혹은 버전에 따라 위치 변경이 되어야 하겠다.

여기서 /usr/local 에 직접 설치를 한이유는 xcache 의 관리자 페이지인 Cacher 를 사용하시 위해서이다.

 

2. php.ini 설정추가.

추가 항목중 xcache.size, xcache.count 은 적절히 수정해 주어야 한다.

일반적으로 xcache.count 는 cpu 코어 갯수로 지정한다. xcache.size 는 캐셔 관리자에서 사용량을 체크하여 변경한다.

메모리는 일반적이면 32~64MB 정도면 충분하나 한개의 사이트를 위한 설정이 아니기 때문에 넉넉히 잡았다.

단하나의 사이트를 위해서라면 64M ~ 128M 으로 xcache.gc_interval, xcache.ttl 을 0으로 해서 쓰면 성능이 가장 좋겠다.

 

관리자 설정을 할때(xcache.admin.user, xcache.admin.pass) 패스워드 생성은 간단한 php 코드로 생성할 수 있다.

 

3. 그리고 마지막으로 웹에서 관리자 페이지 접속을 위해 httpd.conf 파일에 아래 코드를 추가 했다.

 

4. 트러블슈팅

1) xcache 는 apache prefork 에서만 동작한다.

 

2) xcache 모듈 로드후 정상적으로 로드가 되지 않는다면 ( 메세지 // xcache.so: cannot open shared object file: No such file or directory )

php.ini 에서 extension_dir=”./” 부분을 주석 처리하거나 php API 에 따른 디렉토리 를 지정해주면 된다.

php API 에 따른 익스텐션 디렉토리는 make install 를 하면 어디에 복사했는지 보여준다 ‘ㅅ’a

 

3) php 5.2 대버전은 php 컴파일시 버그로 NTS 모드로 설치가 되지 않으며 TS 모드로만 설치가 된다.

NTS모드가 아닐경우 php 5.2 에서 에러메세지 표현이 되지 않으나 설치 후 모듈로드를 했을때 아파치가

프로세스는 떠있어 도 웹서버 기능을 제대로 수행하지 못했다.

아래 링크 글로 php 5.2 의 NTS 모드 설치를 진행후 해야 한다.

http://www.enteroa.com/2014/09/24/php-5-2-17-nts모드로-설치

 

4) xcache 는 기본적으로 최신버전이 하위버전의 모든 것을 대응하도록 포함 되므로 최신버전을 쓰는게 좋겠다.

다만 예외사항으로 php 4 는 1.2.2 대의 버전을 써야 하며 extension=xcache.so 가 아닌 zend_extension=xcache.so 으로 불러와야 한다.

아울러서 zend optimizer 보다 먼저 모듈로드가 되어야 하니 주의 하자.

또한 구버전의 관리자 디렉토리는 htdocs 안에 캐셔가 아닌 admin 폴더로 제공된다. httpd.conf 를 아래와 같이 수정하자.

php4 용 xcache 는 파일변경 여부 체크가 존재 하지 않기 때문에 캐쉬된 데이터가 지워지는 시간 동안

웹에서 호출시 신규로 올린 부분의 갱신이 늦어질수도 있다.

(이말은 완성된 홈페이지 가속 용도로만 쓰라는 소리이다 =ㅅ=a 수정된 파일의 즉시반영이 안됨)

 

php 5.4 paser error

php 5.4 이후부터는 php.ini 에서 E_ALL 을 설정하더라도 paser fatal 오류를 표기 하지 않는다.

보안적인 측면이라고 생각된다. 다만 이부분은 php 개발자를 괴롭힐 것이다 ‘ㅅ’a

 

이때 php.ini 를 수정하거나 php 문안에 ini_set 을 넣어도 동작하지 않는다.
(php.ini 직접 설정은 기본적으로 표시하지 않도록 되었고,
php문서에서의 ini_set 설정은 fatal 에러시 입력한 ini_set역시 무시되기 때문.)

아래와 같은 내용을 .htaccess 파일에 넣으면 fatal 오류를 볼수 있다.

모든 에러표시는 위와 같이 설정한다.

E_ALL  (32767)

 

일반적인 서비스제공용 설정의 설정값은 22519이다.

E_ALL & ~E_STRICT & ~E_NOTICE & ~E_DEPRECATED
E_ALL  (32767) – E_STRICT (2048) – E_NOTICE (8) – E_DEPRECATED(8120) = 22519

 

아래는 Error Level Constants 별 번호 이다.
E_WARNING(2)
E_NOTICE(8)
E_STRICT(2048)
E_DEPRECATED(8192)
E_ERROR(1)

E_PARSE(4)
E_CORE_ERROR(16)
E_CORE_WARNING(32)
E_COMPILE_ERROR(64)
E_COMPILE_WARNING(128)
E_USER_ERROR(256)
E_USER_WARNING(512)
E_USER_NOTICE(1024)
E_RECOVERABLE_ERROR(4096)
E_USER_DEPRECATED(16384)
계산기 : http://www.bx.com.au/tools/ultimate-php-error-reporting-wizard