|
필요 패키지는.. 패키지 메뉴얼이 따로있는데.. 그건 각설하고.. =_=
제가 일하면서 기존 메뉴얼 변경/추가한 메뉴얼 올립니다.
메미넴님 참고하세요~ =_=
요게..리눅스라서 좀 다를 수도..
### 1. 필요 rpm 설치
* zziplib-devel-0.13.45-1.el5.rf (64비트용으로 설치)
* zziplib-0.13.45-1.el5.rf (64비트용으로 설치)
* libxml2-python-2.6.26-2.1.2.7 (OS설치시 설치됨)
* libxml2-2.6.26-2.1.2.7 (OS설치시 설치됨)
* libxml2-devel-2.6.26-2.1.2.7 (OS설치시 설치됨)
* bzip2-1.0.3-4.el5_2 (OS설치시 설치됨)
* bzip2-libs-1.0.3-4.el5_2 (OS설치시 설치됨)
* bzip2-devel-1.0.3-4.el5_2 (OS설치시 설치됨)
* gd-2.0.33-9.4.el5_1.1 (OS설치시 설치됨)
* gd-devel-2.0.33-9.4.el5_1.1 (OS설치시 설치됨)
### 2. libmcrypt Compile : CP(Naver)와 통신시 필요한 모듈
* libmcrypt-2.5.7.tar.gz
./configure
make
make install
### 3. Openssl 설치 (SSL 사용시)
* openssl-0.9.8c.tar.gz
최신 버전 : openssl-0.9.8c.tar.gz (Compile 설치)
구하는 곳 <a href="http://www.openssl.org/source/">http://www.openssl.org/source/</a>
* 컴파일시 perl 을 사용하므로 warning 메시지 귀찮아지니 미리 "export LC_ALL=C" 실행해 놓는게 편함
- ssl 설치방식에는 두가지(정적,동적) 방식이 있으며 방식에 따라 config 옵션을 다르게 주어야한다.
- 정적설치 ( statically linking module )
- ./config --prefix=/usr/local --openssldir=/usr/local/openssl
- make
- make test
- make install
- 동적설치 ( DSO (Dynamic Shared Objects) module )
- ./config --prefix=/usr/local --openssldir=/usr/local/openssl shared
- make
- make test
- make install
* /usr/local/lib 에 libssl.a libssl.so libssl.so.0.9.8 등 확인
### 4. 커널 모듈 확인
vi /etc/ld.so.conf : "/usr/local/lib" 가 없으면 추가
ldconfig -v : libmcrypt.so.4 -> libmcrypt.so.4.4.7 확인
libxml2.so.2 -> libxml2.so.2.6.26 확인
libssl.so.0.9.8 -> libssl.so.0.9.8 확인 (SSL 사용시)
### 5. apache2 Compile
* apache2 http://mirror.apache.or.kr/httpd/httpd-2.2.8.tar.gz
* 경로지정 ./configure --prefix=/MIRR
* 일반설치 ./configure --enable-so --enable-headers
* SSL 설치 ./configure --enable-so --enable-mods-shared=ssl --enable-headers --with-ssl=/usr/local
* Proxy설치 ./configure --enable-so --enable-headers --enable-proxy --enable-proxy-http --enable-vhost-alias
* SSL+Proxy 등 두 개 이상 모듈설치시는 --enable-mods-shared="ssl proxy" 이런식으로 추가
* 내가 설치한 옵션
./configure \
--enable-so \
--enable-headers \
--with-ssl=/usr/local/openssl \
--enable-modules=ssl \
--enable-ssl=shared \
--enable-mods-shared=ssl \
--enable-proxy \
--enable-proxy-http \
--enable-proxy-balancer \
--enable-vhost-alias \
--enable-expires \
--enable-lib64 \
--libdir=/usr/lib64
*64비트운영체제에서 아파치 2.x 설치시에
*/usr/lib/libexpat.so: could not read symbols: File in wrong format
*요런 에러가 나는데.....
*해결방안1
*Apache 2.X에서 configure시 아래 옵션 추가
* --enable-lib64 --libdir=/usr/lib64
*해결방안2
*/usr/libexpat.so 파일을 심볼릭 링크를 /usr/lib64/libexpat.so.0.5.0으로 건다
*=> ln -s /usr/lib64/libexpat.so.0.5.0 /usr/lib/libexpat.so
make
make install
* 컴파일시 --enable-expires 빼먹었을 경우 아래 작업 할 것
* /root/WORK/src/httpd-2.2.8/modules/metadata 로 이동하여
* /usr/local/apache2/bin/apxs -aic mod_expires.c 로 mod_expire 설치(이걸 confiure시에 넣는 문법은 아래)
* # 각종 이미지 cache 하루로 정하기
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/x-xxxxjavascript "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/jpg "access plus 1 days"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
</IfModule>
# ETag(브라우저에서 체크하는 파일정보) 에서 INode 빼버리기
FileETag MTime Size
*ssl 정상적으로 설치 되었는지 확인
*/usr/local/apache2/bin/httpd -l 리스트에 mod_ssl.c 또는 mod_so.c 확인
*/usr/local/apache2/modules/mod_ssl.so 확인
*/usr/local/apache2/bin/apachectl -M 리스트에서 ssl_module (shared) 확인
### 5. php5 Compile
* php-5.2.6.tar.gz
./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-oci8=instantclient,/usr/lib/oracle/10.2.0.4/client \
--enable-ftp \
--with-gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-iconv \
--with-freetype-dir \
--with-charset=euc_kr \
--with-zlib \
--with-config-file-path=/usr/local/lib \
--enable-sigchild \
--with-bz2 \
--with-libxml-dir=/usr/local \
--with-mcrypt=/usr/local \
--with-openssl=/usr/local \
--with-curl
* SSL 사용시에만 --with-openssl=/usr/local 추가
make
make test
make install
* php 설치 오류나는경우
** php 설치중에 mcrypt 포함 설치할경우 /usr/bin/ld: cannot find -lltdl 오류 대처법
오류메시지--------------------------------
/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
해결방법-----------------------------------
/root/WORK/src/libmcrypt-2.5.8/libltdl
./configure --enable-ltdl-install
make
make install
그 이후에 php make, make install 다 잘 되는데..
libtool --finish /root/WORK/src/php-5.2.6/libs 실행하라는 warning이 뜸
실행해주면 Libraries have been installed in: /root/WORK/src/php-5.2.6/libs 라면서 라이브러리 인스톨됨
** configure: error: Oracle-OCI8 needed libraries not found
php 가 참조하는 libclntsh.so.8.0 파일이 없기 때문에 발생함
10g 버젼에 있는 libclntsh.so.10.1 파일을 libclntsh.so.8.0로 소프트 링크시켜준다
cd $ORACLE_HOME/lib
ln -s libclntsh.so.10.1 libclntsh.so.8.0
※ OCI8 오류(20080109 강민구 추가)
:304:error 오류가 날 때 해결방법
php압축풀린 디렉토리에서
vi ext/oci8/oci8_lob.c 파일을 열고
다음 if문을 찾는다.
303 if (is_clob) {
304 PHP_OCI_CALL_RETURN(connection->errcode, OCINlsNumericInfoGet, (connection->env, connection->err, &bytes_per_char, OCI_NLS_CHARSET_MAXBYTESZ));
305
306 if (connection->errcode != OCI_SUCCESS) {
307 php_oci_error(connection->err, connection->errcode TSRMLS_CC);
308 PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
309 return 1;
310 }
311 } else {
312 /* BLOBs don't have encoding, so bytes_per_char == 1 */
313 }
314
315 ctx.alloc_len = (requested_len + 1) * bytes_per_char;
326 *data = ecalloc(bytes_per_char, requested_len + 1);
이걸 다음과같이 수정(304, 312, 313, 314라인 추가)
303 if (is_clob) {
304 #ifdef OCI_NLS_CHARSET_MAXBYTESZ
305 PHP_OCI_CALL_RETURN(connection->errcode, OCINlsNumericInfoGet, (connection->env, connection->err, &bytes_per_char, OCI_NLS_CHARSET_MAXBYTESZ));
306
307 if (connection->errcode != OCI_SUCCESS) {
308 php_oci_error(connection->err, connection->errcode TSRMLS_CC);
309 PHP_OCI_HANDLE_ERROR(connection, connection->errcode);
310 return 1;
311 }
312 #else
313 bytes_per_char = 4;
314 #endif
315 } else {
316 /* BLOBs don't have encoding, so bytes_per_char == 1 */
317 }
318
319 ctx.alloc_len = (requested_len + 1) * bytes_per_char;
320 *data = ecalloc(bytes_per_char, requested_len + 1);
### 6. php.ini 작성
* 소스디렉토리에 php.ini-recommended 를 /usr/local/lib/php.ini 로 복사 및 편집
* 확인 및 필요시 변경 사항
141: short_open_tag = On : <?php 대신 <? 허용
221: allow_call_time_pass_reference = On : call by reference 허용
295: expose_php = Off : 웹 헤더로 PHP 정보노출 금지
350: error_reporting = E_ALL & ~E_NOTICE : E_NOTICE 에러는 표시안함
357: display_errors = On : 에러 표시 허용
447: register_globals = On : GET/POST 곧바로 변수로 사용가능
452: register_long_arrays = Off : 구버전(4.X)와 호환을 원할 경우 ON
467: post_max_size = 200M : POST 크기
572: upload_max_filesize = 200M : 업로드 크기
584: allow_url_include = On : URL include
### 7. httpd.conf 설정
LoadModule ssl_module modules/mod_ssl.so
LoadModule php5_module modules/libphp5.so 확인
ServerTokens Prod : 아파치 정보노출 최소화
ServerSignature Off : 웹서버 정보노출 금지
* 각종 웜/로봇 금지
RedirectMatch ^/(MSADC|msadc|scripts|_mem_bin|_vti_bin|_vti_inf.html) http://www.stoptheviruscold.invalid
RedirectMatch (\.(ida|IDA)|(cmd|root)\.exe) http://stoptheviruscold.invalid
RedirectMatch (abcgi|robots\.txt)$ http://stoptheviruscold.invalid
* 로그양 줄이기
SetEnvIfNoCase Request_URI ^/(MSADC|msadc|scripts|_mem_bin|_vti_bin|_vti_inf.html) nolog
SetEnvIfNoCase Request_URI (\.(ida|IDA)|(cmd|root)\.exe) nolog
SetEnvIfNoCase Request_URI (abcgi|robots\.txt)$ nolog
SetEnvIfNoCase Request_URI \.(gif|jpg|jpeg|png)$ nolog
SetEnvIfNoCase Request_URI ^/banner !nolog
Header add P3P "CP='CAO PSA CONi OTR OUR DEM ONL'" : 개발팀 요청사항
# 각종 이미지 cache 하루로 정하기
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType application/x-xxxxjavascript "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/jpg "access plus 1 days"
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/png "access plus 1 days"
ExpiresByType application/x-shockwave-flash "access plus 1 days"
</IfModule>
### 8. Zend Optimizer 설치
* http://downloads.zend.com/optimizer/ 에서 다운로드
* ZendOptimizer-3.3.3-linux-glibc21-x86_64.tar.gz 설치
* 원래 3.3.3 받아야하는데 3.3.9밖에 못구함 -_-%
※ 20080109 강민구 추가
1. 아래 링크에서 Zend Optimizer 를 다운받는다.
wget http://ftp.superuser.co.kr/pub/ZendOptimizer/ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz
2. tar xvzf ZendOptimizer-3.3.3-linux-glibc23-i386.tar.gz -> 화일을 풀고
3. cd ZendOptimizer-3.0.1-linux-glibc21-i386 -> Zend Optimizer 폴더로 들어간다.
4. mkdir /usr/local/Zend -> Zend 폴더 생성
5. mkdir /usr/local/Zend/lib -> lib폴더생성
6. mv * /usr/local/Zend/lib/ -> 풀린 Zend Optimizer 화일들을 복사
7. cd /usr/local/Zend/lib -> 폴더 이동
8. ./install -> zend 설치
9. 엔터치고 넘어가다 php.ini 화일 경로 찾으면 /usr/local/lib/ 라고 써주고 다음에 apache 설정하는 물음에 no 선택 그리고 설치완료메세지까지 ok 진행
10. /usr/local/Zend/lib 폴더에 ZendExtensionManager.so 이런 화일이 생성되어야함 그럼 정상설치
11. /etc/rc.d/init.d/httpd restart
※ 20091126 강민구 추가
1. Zend 3.3.9 압축 푼다
2. /usr/local/Zend/lib 디렉토리 만든다.
3. 압축풀고 data디렉토리 들어가면 php버전별 디렉토리가 있는데
5_2_x_comp 디렉토리로 들어가서 ZendOptimizer.so 파일을 /usr/local/Zend/lib로 옮긴다.
4. php.ini 에 아래 두 줄 추가
zend_optimizer.optimization_level=15
zend_extension="/usr/local/Zend/lib/ZendOptimizer.so"
5. php -v 쳐보면 3.3.9 버전 표시
6. 아파치 restart
* 예전엔 /usr/local/Zend/etc/php.ini 파일이 들어갔는데 3.3.9버전에는 /usr/local/lib에 php.ini설정파일사용.
### 9. java6 설치
java_ee_sdk-5_05-linux.bin
1. ./java_ee_sdk-5_05-linux.bin
엔터치고 넘어가다 라이센스동의에서 yes쳐주고 home 디렉토리 설정
admin/Ki...로 관리자 아이디 만들고 나머지는 디폴트값으로 설정
2. 환경변수 등록
#vi /etc/bashrc
export JAVA_HOME=/usr/local/SDK/jdk
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/bin
3. 환경변수 적용
#source /etc/bashrc
### 10. tomcat 설치
apache-tomcat-6.0.16.tar.gz
1. 압축풀고
2. /usr/local/로 디렉토리 이동
3. ln -s /usr/local/apache-tomcat-6.0.16 tomcat 심볼릭 링크
4. 환경변수 등록
#vi /etc/bashrc
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/lib/
5. 환경변수 적용
#source /etc/bashrc
6. server.xml 파일 수정
# cd /www/tomcat/conf
# vi server.xml
아래 내용을 찾아서..
<Server port="8005" shutdown="SHUTDOWN" debug="0">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat6.config.ApacheConfig" />
아래 내용을 찾아서..
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
밑줄에 다음을 입력한다.
<Listener className="org.apache.ajp.tomcat6.config.ApacheConfig" append="true" />
# cd /www/tomcat/bin
# ./shutdown.sh
# ./startup.sh
(/www/tomcat/conf 디렉토리 밑에 auto와 jk디렉토리가 생기면 성공)
tomcat-connectors-1.2.26-src.tar.gz ----- 이거 다시한번 확인!! 잘 모르겠음-_-%
1. 압축풀고
2. tomcat-connectors-1.2.26-src/native/buildconf.sh 실행
3. ./configure --with-apxs=/usr/local/apache2/bin/apxs
4. make
5. make install
6. apache2/modules/mod_jk.so 있는지 확인
7. 설정파일을 작성.
**apache2/conf에 workers.properties 파일을 생성하고 아래와 같이 작성
workers.tomcat_home=/usr/local/tomcat
workers.java_home=$JAVA_HOME
ps=/
worker.list=default
worker.default.port=8009
worker.default.host=localhost
worker.default.type=ajp13
worker.default.lbfactor=1
**httpd.conf에 설정 추가
LoadModule에 추가
LoadModule jk_module modules/mod_jk.so
JkWorkersFile "/usr/local/tomcat4/conf/jk/workers.properties"
JkLogFile "/usr/local/tomcat4/logs/mod_jk.log"
JkLogLevel emerg
### 11. cronolog 설치
cronolog-1.6.2.tar.gz
./configure
make
make install
### [SSL] 1. security key 생성
* 공식 CA 기관의 인증을 받는 방법이 있고,
* 자체 인증(자신을 인증서버로) 쓰는 방법 있는데 후자만 설명
- /usr/local/bin/openssl genrsa -des3 -out filename(dsgenex).key 1024
Enter pass phrase for filename.key: <암호입력>
Verifying - Enter pass phrase for filename.key: <암호재입력>
* 키 생성, filename 은 임의로 (가능하면 서버/도메인 이름)
* 1024 를 줄이면 보안은 약해지나, 매번 암호 묻는 등의 번거로움은 줄어듬
- /usr/local/bin/openssl req -new -key filename(dsgenex).key -x509 -days 365 -out filename(dsgenex).crt
Enter pass phrase for filename.key: <암호입력>
Country Name (2 letter code) [AU]: <KR입력>
State or Province Name (full name) [Some-State]: <Seoul입력>
Locality Name (eg, city) []: <Seoul입력>
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <Digital Daesung Co., Ltd.입력>
Organizational Unit Name (eg, section) []: <Digital Daesung Co., Ltd.입력>
Common Name (eg, YOUR name) []: <주의: 꼭 사용할 도메인명을 써야함. 여기서는 www.dsgenex.net>
Email Address []: <sysoper@ds.co.kr 입력>
* 도메인명 안쓰면 실제 사용시 인증서가 도메인 일치 안한다고 경고 나옴
* 이 두 파일을 /usr/local/apache2/conf/ssl.crt/ 복사 (디렉토리는 권장사항)
* ssl.crt 디렉토리 는 안에 파일 포함 root 만 보고 쓸 수 있게 (600)
### [SSL] 2. httpd.conf 수정
* httpd.conf 내용중에 보면(2.2버전 이상의 경우 extra/httpd-ssl.conf로 바뀜)
<IfModule mod_ssl.c>
Include conf/ssl.conf
</IfModule>
* 이런 내용 있는데 mod_ssl 이 있으면 ssl.conf 란 파일을 포함한다는 뜻이니,
* ssl.conf 를 수정하면 됨
* 대략 수정 내용이
- DocumentRoot "/home/sitemgr/DSGENEX/SSLGENEX"
- ServerName www.dsgenex.net:443
- ServerAdmin sysoper@ds.co.kr
- SSLCertificateFile /usr/local/apache2/conf/ssl.crt/dsgenex.crt 수정 (중요!!)
- SSLCertificateKeyFile /usr/local/apache2/conf/ssl.crt/dsgenex.key 수정 (중요!!)
- CustomLog "|/usr/local/sbin/cronolog /home/sysoper/LOG/SSLGENEX/sslgenex_%Y%m%d_access.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" (수정!!)
- ErrorLog "|/usr/local/sbin/cronolog /home/sysoper/LOG/SSLGENEX/sslgenex_%Y%m%d_error.log" (수정!!)
### [SSL] 3. 서버 구동
* 기존 사이트와 따로, 먼저 시작 시켜야 함
* 일단, 기존 사이트가 running 중이라면 중지 하고 다시 시작
- apachectl sslstart
* apache2 2.2 부터는 그냥 apachectl start 하면 됨!!
* 이 때, 아까 친 암호 또 물어봄
첫댓글 자게에..._ 좋은 정보감사해요...오늘도 거운 하루 되세요...(__)
전 리눅스 아닌데요 ㅋㅋㅋㅋㅋ
수고 하셨어요.. 여긴 자게 인데요 ㅋ
좋은 정보네.... 수고해... 민구야....
아,, 리눅스 자료라서 그냥.. 자게에.. ㄷㄷㄷㄷ
메미넴님 솔라리스라도 비슷하게 설치 되지않나요?