[김성민]님이 남기신 글:
>안녕하세요.
>
>[질문1]
>/usr/local/apache -> root.root 701
>/usr/local/apache/conf -> ??
>/usr/local/apache/conf/htpd.conf -> root.root 600
>/usr/local/apache/logs -> ??
>
>요 두개(?? 표 친것) 퍼미션을 일반 계정에서 읽지 못하도록 제한하고자 하는데 최소한의 퍼미션이 얼마나 되어야 하는지요?
>throttle 사용중입니다.
>
701 정도면 됩니다.
>[질문2]
>
>Apache : 1.3.31 (/usr/local/apache)
>PHP : 4.3.10 (/usr/local/lib/php), (/usr/local/lib/php.ini)
>ZendOptimizer : 2.5.7 (/usr/local/Zend)
>MySQL : 3.23.58 (/usr/local/mysql)
>
>현재 설치되어 있는 APM 입니다. 소스설치구요.
>
>Apache -> 1.3.33 또는 2.x 대 최신버전 (2.x.x 은 말이 제각기인 것 같음)
>PHP -> 4.x 대 최신버전
>ZendOptimizer -> 최신버전
>MySQL : 4.x 대 최신버전
>
>APM 을 최신버전으로 업그레이드 하고자 하는데,
>문제는,
>Apache 의 경우 2.xx 대가 좋다고도 하고 특별한 거 없다고도 하고, 업그레이드 필요성이 있는지 여부와,
>
>PHP의 경우 버전에 민감하다 들어서 현재 4.3.10 이면 안올려도 될것 같다는 생각이 있구요. 웹서핑 해보면 PHP 버전 올렸다가 이리저리 변수 안먹고 한다고 하더군요.
>4.3.10 이전까지가 웹해킹 때문에 문제된다고 하니까...
>
>MySQL 은 4.xx 대로 올리고자 하는데, MySQL 만 설치하면 되는지, Apache, PHP와 같이 해야 하는지가 모호합니다.
PHP의 mysql 모듈 때문에, mysql이 같은 버전대가 아니면
php 도 다 같이 재설치해야 합니다.
아마 php 를 다시 설치하지 않으면 fail 날 확률이 높습니다.
확인하는 방법)
shell> ldd /usr/local/apache/libexec/libphp4.so
...
libmysqlclient.so.12 => /usr/local/mysql/lib/libmysqlclient.so.12
...
>제일 걸리는 것이 MySQL 업그레이드 인데요..
>산이님 책보면 MySQL 2개 같이 띄우는 방법에 대한것이 있죠.
>혹, 3.23.58 지금거는 그냥 두고, /usr/local/mysql4 와 같이 4.xx 대를 새로 설치해서 정상구동 시키고,
>3.23.58 에서 user, db 테이블을 sql 로 덤프하여 수동으로 4.xx 와 컬럼수 맞추어주고 4.xx 에 sql 복구를 시켜주는 방법?? 을 생각해 보았는데 맞는 방법인지도 모르겠습니다.
같은 서버에서 작업하지 마시고 다른 장비에 mysql을 설치하고,
user,db 테이블을 마이그레이션을 미리해 놓아야 합니다.
정상작동하면 mysql DB 디렉토리를 압축해 나중에 본장비에서
적용시 그곳에 풀면 됩니다.
>
>아니면, APM 모두 /usr/local/apache_new, /usr/local/lib/php_new,
>/usr/local/mysql_new 와 같이 기존 이름과 다르게 모두 새로 설치하고,
>기존거 **_old 로 바꿔놓고 새로 설치한거 _new 자 빼버리고...
>이러면 문제될라나요?
>
좋은 방법은 아닙니다. prefix 자체가 변경되기 때문에 거의 에러날
확률이 높습니다.
상용서비스중이라면 작업시간 공지 올리고 기존의 것을 old 로 바꾸어
놓고 작업 진행하시길 바랍니다.
>예전에 한번 해보다가 이리저리 error 생기시는 바람에 고생좀 했습니다.
>
>순서에 입각해서 작업할 수 있는 방법좀 자세히 일러 주시면 대단히 감사하겠습니다.
>웹상에 떠도는 문서들은 순서들이 제각기라 뭐가 맞는건지 모르겠습니다...
========================================
대대적인 업그레이들 할 경우라면 작업시간을 1~3시간 정도 잡아놓고
진행하실 바랍니다.
상용서비스중이라면 반드시 미리 공지 내보시고요.
또한 작업중 돌발상황이 생기면 작업시간이 터무니없이 길어지기 때문에
충분히 테스트및 꼼꼼한 일정 또는 미리 작업을 할 수 있는 것들은
미리 해 두는 것이 좋습니다.
또하나 최악의 상황에서는 예전으로 롤백해야하기 때문에 현재의 설정 및
소스를 미리 다른 서버로 백업해 두는 것도 잊지 말아야 합니다.
그런데
정말로 업그레이드가 필요한지 다시한번 검토해 봐야 합니다.
현재 서비스에서 퍼포먼스라든지 큰 문제가 없다면 현재 상태를
유지하는 것도 괜찮습니다.
...
우선 작업 순서는 다음과 같습니다.(반드시 백업해 두세요)
0-1. 기존 설치 디렉토리 문제
예를 들어 /usr/local/apache 에 설치했다면
/usr/local/apache.old 로 바꾸면 새 버전을 /usr/local/apache 에
설치하면 됩니다.
/usr/local/apache_new 와 같은 디렉토리는 별로 권장하질 않습니다.
그외 mysql, php 도 마찬가지입니다.
0-2. 사전 테스트 및 시간을 벌기 위한 전략(?)
같은 배포판, 같은 장비가 또 하나 있다면 그 장비에서 미리 설치까지
해보고 최종적으로 본 장비에서 적용하는 것이 좋습니다.
그러나 여력이 없다면, 본장비에서
mysql, apache, php 모두 빌드과정까지 해 놓으시길 바랍니다.
즉 make install 이전까지. 또한 설정 파일도 미리 수정해 놓은
것도 잊지 마시길...
실제 이 작업이 시간을 제일 많이 걸리고 어려운 작업입니다.
컴파일하고 설치하는 작업는 누구나 문서 보고 따라하면 쉽게할 수
있는 작업들입니다.
그러나 버전차이에서 오는 각종 설정 파일을 수정하는 작업은
상당히 고난이도를 요구하고 시간도 많이 걸립니다(테스트 및 정보수집해야하기 때문에).
1. mysql
4.1.x 부터 큰변화가 있기 때문에 3.23.x 에서 마이그레이션 하려면
4.0.x 를 권장합니다.
설치는 mysql AB 에서 배포한 바이너리를 사용하십시오.
주의할 점은 바이너리 버전은 공유라이브러기 없기 때문에 한번 mysql 소스를 가지고 컴파일해야합니다. 이때는 클라이언트만 설치하면 됩니다.
즉,
소스 -> 클라이언트만 설치(공유라이브러리를 php 에서 사용하기 위함)
바이너리 -> 설치(서버 및 클라이언트 포함됨)
제 경험담으로는 3.23.x 에서 4.0.x 로 업그레이드 하는데,
딱 3초 걸렸습니다.(컴파일 시간 아님)
즉,
순전히 mysql 를 종료하고 start 하는 시간입니다.
즉 사전이 미리 컴파일해 놓고, db 또한 미리 마이그레이션 해 놓은
상태에서 적용을 3초만에 끝냈다는 의미입니다.
결과는 큰 무리 없이 성공적입니다.
2. apache
아파치 역시 2.0 은 큰 변화가 있기 때문에 현재 버전 1.3 버전을
유지하면 됩니다. 그러나 2.0 에 대한 많은 정보를 알고 있고
충분한 테스트를 거쳐 이상이 없다고 판단되면 2.0 도 상관없습니다.
(개인적으로 현 1.3 사용을 권장)
그러나 현재 1.3 대이고, throttle 을 사용하고 있으므로 1.3 대의
현 마지막 버전이 좋을 듯 합니다.
아파치 설치는 쉽기 때문에 생략합니다.
3. php
역시 쉽기 때문에 생략합니다. 다만, php 를 아파치에 정적으로
붙이면 나중에 업그레이드하기가
불편하므로 DSO 모듈로 올리는 것이 좋을 듯 합니다.
혹자는 정적으로 붙이면 성능이 좋다고는 하지만, 그 차이는 매우 미미하기 때문에 DSO 도 상관없습니다.
요즘은 H/W 성능이 좋기 때문에...
버전은 4.4 의 최신 버전이 좋을 듯 하나, PHP의 경우 많은 차이가
있을 수 있기 때문에 일단 4.3의 마지막 버전을 사용해 보세요.
제일 좋은 방법은 현재 PHP 프로그램 소스를 4.4 에서 실제 테스트해
보는 것입니다(물론 상당히 어려운 작업이겠지만요). |