설치 된 프로그램
gcc
gnu make
autoconf
automake
libtool
openssl
(gcc, make, autoconf, automake, libtool는 프로그램 컴파일에 필요한 파일들이다.
그리고 openssl의 경우 각각의 프로그램들이 ssl을 지원하도록 하기위해서
설치했다.)
우선 apache, php, tomcat, mysql을 설치할 계획을 짠다.
가장 쉬운 예로. 이들 모든 프로그램을 /usr/local 디렉토리 이하에 설치할 것인가?
아니면 하나의 디렉토리로 모아서 설치할 것인가 일것이다.
아니면 다른 디렉토리에 설치할 것인가 이다.
계획을 세워본다.
참고로 필자는 주 디렉토리로 /usr/local/httpd
apache 의 디렉토리로는 /usr/local/httpd/apache
php 의 디렉토리로는 /usr/local/httpd/php
mysql의 디렉토리로는 /usr/local/httpd/mysql
tomcat 의 디렉토리로는 /usr/local/httpd/tomcat
로 해서 웹에 관련된 프로그램들을 한 곳에 모아서 설치했다.
apache, php, mysql의 경우 configure 실행시 --prefix=DIR 옵션을 붙이지 않는다면
/usr/local을 기본 디렉토리로 사용한다. 그러나 우리는 좀 더 깔끔한 정리를 통해서
프로그램을 설치하면 보다 관리가 쉬울 것이라고 생각이 든다.
귀찮으면 기본 디렉토리 /usr/local에 설치해도 된다.
1. Apache 설치
현재 stable 한 버전의 아파치 버전은 httpd-2.0.49.tar.gz이다.
소스가 없다면 http://www.apache.org에서 받는다.
보통 컴파일해서 프로그램을 설치하는데는 문서만 보고 따라하려는 경향이 많다. 절대로
그러면 않된다. 우선 README, INSTALL 등의 메뉴얼 파일이 있다면 꼭 읽어보고 컴파일에
들어가도록 한다. 이 문서를 적는 필자도 모든 프로그램을 컴파일 하기전에는 한번이라도
이런 문서는 꼭 읽어보고 컴파일한다.
# ./configure --help
그리고 configure 실행시 그냥 하는 경우도 많다. 프로그램에 보면 지원할 수 있는 것도
많으며, 지원하는 내용 중 삭제할 수 있는 것도 --help arg를 붙여서 실행해보면 알 수
있다. 아래는 configure --help 의 내용이다. 한번 슬쩍 보자.
Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--enable-layout=LAYOUT
--enable-v4-mapped Allow IPv6 sockets to handle IPv4 connections
--enable-exception-hook Enable fatal exception hook
--enable-maintainer-mode
Turn on debugging and compile time warnings
--enable-modules=MODULE-LIST
Modules to enable
--enable-mods-shared=MODULE-LIST
Shared modules to enable
--disable-access host-based access control
--disable-auth user-based access control
--enable-auth-anon anonymous user access
--enable-auth-dbm DBM-based access databases
--enable-auth-digest RFC2617 Digest authentication
--enable-isapi isapi extension support
--enable-file-cache File cache
--enable-echo ECHO server
--disable-charset-lite character set translation
--enable-charset-lite character set translation
--enable-cache dynamic file caching
--enable-disk-cache disk caching module
--enable-mem-cache memory caching module
--enable-example example and demo module
--enable-case-filter example uppercase conversion filter
--enable-case-filter-in example uppercase conversion input filter
--enable-ldap LDAP caching and connection pooling services
--enable-auth-ldap LDAP based authentication
--enable-ext-filter external filter module
--disable-include Server Side Includes
--enable-deflate Deflate transfer encoding support
--disable-log-config logging configuration
--enable-logio input and output logging
--disable-env clearing/setting of ENV vars
--enable-mime-magic automagically determining MIME type
--enable-cern-meta CERN-type meta files
--enable-expires Expires header control
--enable-headers HTTP header control
--enable-usertrack user-session tracking
--enable-unique-id per-request unique ids
--disable-setenvif basing ENV vars on headers
--enable-proxy Apache proxy module
--enable-proxy-connect Apache proxy CONNECT module
--enable-proxy-ftp Apache proxy FTP module
--enable-proxy-http Apache proxy HTTP module
--enable-ssl SSL/TLS support (mod_ssl)
--enable-optional-hook-export
example optional hook exporter
--enable-optional-hook-import
example optional hook importer
--enable-optional-fn-import
example optional function importer
--enable-optional-fn-export
example optional function exporter
--enable-bucketeer buckets manipulation filter
--enable-static-support Build a statically linked version the support
binaries
--enable-static-htpasswd
Build a statically linked version of htpasswd
--enable-static-htdigest
Build a statically linked version of htdigest
--enable-static-rotatelogs
Build a statically linked version of rotatelogs
--enable-static-logresolve
Build a statically linked version of logresolve
--enable-static-htdbm Build a statically linked version of htdbm
--enable-static-ab Build a statically linked version of ab
--enable-static-checkgid
Build a statically linked version of checkgid
--enable-http HTTP protocol handling
--disable-mime mapping of file-extension to MIME
--enable-dav WebDAV protocol handling
--disable-status process/thread monitoring
--disable-autoindex directory listing
--disable-asis as-is filetypes
--enable-info server information
--enable-suexec set uid and gid for spawned processes
--disable-cgid CGI scripts
--enable-cgi CGI scripts
--disable-cgi CGI scripts
--enable-cgid CGI scripts
--enable-dav-fs DAV provider for the filesystem
--enable-vhost-alias mass virtual hosting module
--disable-negotiation content negotiation
--disable-dir directory request handling
--disable-imap server-side imagemaps
--disable-actions Action triggering on requests
--enable-speling correct common URL misspellings
--disable-userdir mapping of requests to user-specific directories
--disable-alias mapping of requests to different filesystem parts
--enable-rewrite rule based URL manipulation
--enable-so DSO capability
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-apr=DIR|FILE prefix for installed APR, path to APR build tree,
or the full path to apr-config
--with-apr-util=DIR prefix for installed APU, or path to APU build tree
--with-port=PORT Port on which to listen (default is 80)
--with-z=DIR use a specific zlib library
--with-ssl=DIR SSL/TLS toolkit (OpenSSL)
--with-mpm=MPM Choose the process model for Apache to use.
MPM={beos|worker|prefork|mpmt_os2|perchild|leader|thr
adpool}
--with-module=module-type:module-file
Enable module-file in the modules/<module-type>
directory.
--with-program-name alternate executable name
--with-suexec-bin Path to suexec binary
--with-suexec-caller User allowed to call SuExec
--with-suexec-userdir User subdirectory
--with-suexec-docroot SuExec root directory
--with-suexec-uidmin Minimal allowed UID
--with-suexec-gidmin Minimal allowed GID
--with-suexec-logfile Set the logfile
--with-suexec-safepath Set the safepath
--with-suexec-umask umask for suexec\'d process
이중 자신이 원하는 옵션을 추가해서 컴파일 해보자.
참고로 --enable-modules=so, --enable-so와 --enable-headers를 꼭 추가해 주도록하자.
--enable-modules=so 의 경우 php와 tomcat connecter 등 so 확장자를 가진 파일들의 모
듈을 아파치에 로딩 시킬 수 있게 한다.
--enable-headers 의 경우 IE6 과 쿠키에 관련된 옵션이다. IE6으로 버전 업이 되면서
각각의 프레임에서 쿠키를 구울 수 없게 되었다. 이것을 지원해 주는 것이 --enable-headers
이다. (그리고 설정 파일에도 적용 시켜줘야 작동한다. 이것은 아래에 설명한다.)
이것을 적용시키지 않으면 제로보드, 이지보드 등과 같은 cgi 프로그램 등, 쿠키를 구워서 작
동하는 프로그램이 작동 안할 수 있다.( -ㅁ-;; 이것이 바로 M$의 다른 회사 죽이기의 하나의
방편이다)
필자의 configure이다.
# ./configure --prefix=/usr/local/httpd/apache \\
> --enable-modules=so --enable-ssl --enable-file-cache --enable-cache \\
> --enable-disk-cache --enable-mem-cache --enable-headers \\
> --enable-expires --enable-cgi --enable-cgid \\
> --enable-vhost-alias --enable-so
상당히 많은 것을 지원했다. 이럴 경우 시스템이 느려질 수도 빨라질 수도 있다.
잘 선택해서 추가하자. 위 모두를 추가한다고 좋은 것은 아니다.
단지
# ./configure 만해서 컴파일해도 잘된다..
꼭 필요한 옵션은 --enable-modules=so --enable-so --enable-headers 이것이다.
configure 가 깨끗하게 끝났다면 Makefile 파일이 만들어졌다. 이제 make, make install
해서 프로그램을 설치하자.
설치가 끝났으면 올바르게 설치되었는지 확인해본다.
[] # cd /usr/local/httpd/apache/bin/
[ns@/usr/local/httpd/apache/bin] # ./httpd -l
Compiled in modules:
core.c
mod_access.c
mod_auth.c
mod_file_cache.c
mod_cache.c
mod_disk_cache.c
mod_mem_cache.c
mod_include.c
mod_log_config.c
mod_env.c
mod_expires.c
mod_headers.c
mod_setenvif.c
mod_ssl.c
prefork.c
http_core.c
mod_mime.c
mod_status.c
mod_asis.c
mod_cgi.c
mod_cgid.c
mod_vhost_alias.c
mod_negotiation.c
mod_dir.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_so.c
[ns@/usr/local/httpd/apache/bin] #
우선 내가 원한 모듈이 모두 들어간 것을 볼 수 있다.
이제 아파치의 설정 파일을 적절히 고친다.
[ns@/usr/local/httpd/apache/bin] # vi /usr/local/httpd/apache/conf/httpd.conf
User nobody
Group #-1
아파치를 실행할 유저와 그룹을 설정한다.
User nobody
Group nobody
DefaultLanguage euc_kr
ServerAdmin you@example.com
#ServerName www.example.com:80
필요하다면 위 설정도 고친다.
[fModule mod_header.c]
Header add P3P \"CP=\'CAO PSA CONi OTR OUR DEM ONL\'\"
[IfModule]
위 부분이 없다면 적당한 곳에 추가한다..(아마 없다.)
[ 을 "<" 으로 바꾸기 바란다 여기서는 표시가 않되는구만 ㅡㅡ;
참고
Internet Explorer 6 에서 cookie 사용가능하게 (P3P규격 설정)
http://kltp.kldp.org/stories.php?story=01/11/01/9121595
IE6 P3P 에 대하여
http://kltp.kldp.org/stories.php?story=02/05/14/3891633
그리고 자신에 맞게 적절하게 설정을 변경한다.
설정 파일 테스트를 해본다.
[ns@/usr/local/httpd/apache/bin] # ./apachectl configtest
Syntax error on line 388 of /usr/local/httpd/apache/conf/httpd.conf:
</Directory> without matching <Directory> section
[ns@/usr/local/httpd/apache/bin] #
388 줄에 문제가 생긴 것을 알 수 있다. (여러 설정 하던 중 오류..)
[ns@/usr/local/httpd/apache/bin] # ./apachectl configtest
Syntax OK
문제 없음으로 나왔다.. 아파치를 실행해 본다.
[ns@/usr/local/httpd/apache/bin] # ./apachectl start
[ns@/usr/local/httpd/apache/bin] # ps -ef|grep httpd
nobody 2061 2057 0 11:54:57 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
nobody 2060 2057 0 11:54:57 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
nobody 2062 2057 0 11:54:57 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
nobody 2058 2057 0 11:54:54 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
root 2057 1 1 11:54:54 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
nobody 2063 2057 0 11:54:57 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
nobody 2059 2057 0 11:54:54 ? 0:00 /usr/local/httpd/apache/bin/httpd
-k start
root 2065 342 0 11:55:10 pts/1 0:00 grep httpd
[ns@/usr/local/httpd/apache/bin] #
실행이 잘된다.
자 아파치 메뉴얼을 보면 부팅시 자동 실행하려면 apachectl 을 그냥 링크만 하면된다
고 나온다.
# cd /etc/rc2.d
# ln ../.어쩌고저쩌고/apachectl S99apache
하면 잘된다... 라고 할 수는 없다. 막상 실행해보면 라이브러리가 없다고 나오면서
중지 된다... -ㅁ-;; 스크립트를 작성해서 실행시키자.
# vi /etc/init.d/apache2
#!/sbin/sh
#
# Copyright by Seong-mu .
#
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
export LD_LIBRARY_PATH
APACHE2_PATH=/usr/local/httpd/apache
APACHE_CONF=/usr/local/httpd/apache/conf/httpd.conf
PIDFILE=/usr/local/httpd/apache/logs/httpd.pid
if [ ! -f ${APACHE_CONF} ]; then
exit 0
fi
case \"$1\" in
start)
/bin/rm -f ${PIDFILE}
$APACHE2_PATH/bin/apachectl start
cmdtext=\"starting\"
;;
restart)
cmdtext=\"restarting\"
;;
stop)
cmdtext=\"stopping\"
$APACHE2_PATH/bin/apachectl stop
;;
*)
echo \"Usage: $0 {start|stop|restart}\"
exit 1
;;
esac
echo \"httpd $cmdtext.\"
if [ $? != 0 ]; then
echo \"$status\"
exit 1
fi
exit 0
만약 고칠 부분이 있다면
APACHE2_PATH=/usr/local/httpd/apache
APACHE_CONF=/usr/local/httpd/apache/conf/httpd.conf
PIDFILE=/usr/local/httpd/apache/logs/httpd.pid
부분만 고치면 된다. 아래 부분은 전혀 손대지 말것..
그리고 링크를 건다.
[ns@/root] # cd /etc/rc2.d/
[ns@/etc/rc2.d] # ln /etc/init.d/apache2 S98apache2
참고
스크립트를 봐서 알겠지만 apache2를 사용하고 싶지 않다면
/usr/local/httpd/apache/conf/httpd.conf 의 파일 명만 변경 해주면된다. ^^
reboot 해서 아파치가 잘 실행되는지 보자. ^^
아파치가 잘 실행되면
httpd starting 이 나온다..
자 아파치는 설치해서 실행까지 잘된다. php를 먼저 컴파일 할 것인가 mysql을 먼저 설치
할 것인가는 php에 mysql이 작동하도록 하느냐 마느냐에 따른다.
우리는 php에 mysql도 지원하기를 원하니 mysql 먼저 설치하자.
2. Mysql 설치
http://www.mysql.org 에 접속해서 소스를 다운 받자.
현재는 4.1.1-alpha 버전이 stable 버전이다. ^^
다운 받은 소스 파일을 푼다.
(다시 한번 강조하지만 README 파일과 INSTALL 파일을 꼭 읽자.)
# configure --help 를 실행보니 상당히 많은 것을 지원한다는 것을 알 수 있다.
이곳에서 추천하는 컴파일 옵션을 약간 변형해서 configure 을 해보자
추천 옵션 (솔 9는 없다.. 그래서 솔 8을 참고)
Sun Solaris 8 x86 with `gcc\' 3.2.3
`CC=gcc CFLAGS=\"-O3 -fno-omit-frame-pointer\" CXX=gcc CXXFLAGS=\"-O3
-fno-omit-frame-pointer -felide-constructors -fno-exceptions
-fno-rtti\" ./configure --prefix=/usr/local/mysql -- 설치디렉토리
--localstatedir=/usr/local/mysql/data -- 데이터저장 디렉토리
--libexecdir=/usr/local/mysql/bin -- 실행파일이 위치한 디렉토리
--with-extra-charsets=complex
--enable-thread-safe-client --enable-local-infile
--disable-shared --with-innodb\'
[ns@/root/src/mysql-4.1.1-alpha] # CC=gcc CFLAGS=\"-O3 -fno-omit-frame-pointer\" \\
> CXX=gcc CXXFLAGS=\"-O3 -fno-omit-frame-pointer -felide-constructors \\
> -fno-exceptions -fno-rtti\" \\
> ./configure --prefix=/usr/local/httpd/mysql \\
> --localstatedir=/usr/local/httpd/mysql/data \\
> --libexecdir=/usr/local/httpd/mysql/bin \\
> --with-extra-charsets=complex \\
> --enable-thread-safe-client --enable-local-infile \\
> --disable-shared --with-innodb --with-low-memory
참고로 ORBit 가 없다고 나올 수 있다. 그래도 configure는 완료 되며, 파일이 없어도
작동은 한다. 그래도 불안하다면 http://www.gnome.net 에 가서 orbit 파일을 다운
받아서 설치한다.
(아무래도 다운 받아서 설치하는 것이 좋을 것 같다. 혹 이상 작동이 일어날 수도 있으니)
--with-openssl 은 이버전에서는 빼는 것이 좋다. -ㅁ-;;
컴파일하다 상당히 에러가 많아 뜬다. -ㅁ-;;
./include/my_global.h:1138:30: openssl/opensslv.h: No such file or directory
에러가 뜨는데.. 컴파일 옵션중 openssl 헤더 디렉토리 지정이 빠진 Makefile 이 상당히 많다.
팔지는 --with-openssl 을 추가하고 일일이 Makefile 을 편집했다. (상당히 힘들었다. )
INCLUDES = -I/usr/local/ssl/include -I$(top_srcdir)/include
이부분인데 일일이 모두 타이핑 했다.. ㅡㅡ;(권장하지는 않는다.)
이제 설정이 끝났다. make, make install을 해서 설치하자.
설치해서 실행하면 끝나는가?? 아니다. 몇가지 더 남았다.
shell> groupadd mysql
shell> useradd -g mysql mysql
shell> cd /usr/local/httpd
shell> cd mysql (mysql 디렉토리로 이동하자)
shell> bin/mysql_install_db
shell> chown -R root .
shell> chown -R mysql data
shell> chgrp -R mysql .
shell> bin/mysqld_safe --user=mysql &
각각 명령어를 실행해본다.
shell> bin/mysqld_safe --user=mysql & 이 명령어 실행 후 mysql이 실행 잘된다면
설치는 잘되었다. mysql 은 아주 예전의 경우 nobody로 작동을 했으나. 이제는 mysql
이라는 계정을 통해서 작동한다.
아참 mysql 유저를 추가했었다. 계정 사용을 막기 위해 passwd 파일도 처리해줘야한다
# vi /etc/passwd
mysql:x:102:100::/home/mysql:/bin/sh
mysql:x:102:100:::/bin/false
로 변경 시켜준다.
마지막 한고비.. 부팅시 자동 실행이 남았다. 다행이도 mysql은 자동 부팅 스크립트를
지원한다.
[ns@/usr/local/httpd/mysql] # cd share/mysql/
[ns@/usr/local/httpd/mysql/share/mysql] # ls mysql.server
mysql.server
[ns@/usr/local/httpd/mysql/share/mysql] # cp mysql.server /etc/init.d/mysqld
테스트 해보자..
[ns@/usr/local/httpd/mysql/share/mysql] # cd /etc/init.d/
[ns@/etc/init.d] # ./mysqld start
Starting mysqld daemon with databases from /usr/local/httpd/mysql/data
잘된다.
참고로 mysql_install_db와 mysql.server은 설치 옵션에 따라 변경되어 만들어진다.
이제 부팅시 자동으로 실행하도록 링크를 건다
[ns@/etc/init.d] # cd /etc/rc2.d/
[ns@/etc/rc2.d] # ln /etc/init.d/mysqld S98mysql
이제 아파치 설치까지 끝냈다.
3. php 설치.
최신의 php의 stable 버전은 4.3.6 버전이다. 이버전을 설치해본다.
우선 소스를 받아서 압축을 푼다.
그리고 당연히 configure --help 해서 어떤 옵션이 있는지 확인한다. 상당히 화려하다.
-ㅁ-;;
[ns@/root/src/php-4.3.6] # ./configure --prefix=/usr/local/httpd/php --with-apx
s2=/usr/local/httpd/apache/bin/apxs --with-openssl --with-mysql=/usr/local/http
d/mysql --disable-debug --enable-sockets --with-language=korean --with-charset=
euc_kr --enable-modules=so --enable-trans-sid --with-config-file-path=/usr/loca
l/httpd/apache/conf --with-execdir=/usr/local/httpd/apache/bin
자기 선택에 맞게 configure 한다.
--enable-modules=so --with-mysql=/usr/local/httpd/mysql 이부분은 꼭 첨가하자.
끝나면 make, make install 을 사용해서 설치하자.
모두 잘되었다면
[ns@/usr/local/httpd/apache/modules ] # ls
httpd.exp libphp4.so <-- 모듈이 추가되었다.
--with-config-file-path=/usr/local/httpd/apache/conf 이 옵션을 사용해서 php의 설
정파일 위치를 지정했다. 그러니 설정 파일을 복사하자.
[ns@/src/php-4.3.6] # cp php.ini-dist /usr/local/httpd/apache/conf/php.ini
그리고 설정 파일 몇가지를 변경하자.
default_charset = \"euc_kr\" --- 추가
register_globals = On -- 수정
그리고 아파치 설정 파일 변경을 해줘야 한다.
[ns@/usr/local/httpd/apache/conf ] # vi httpd.conf
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule\' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l\') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module modules/libphp4.so -- 이 위치에 보면 추가된 것을
볼 수 있다.
# Example:
# LoadModule foo_module modules/mod_foo.so
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php .php4 .php3 .html .htm .phtml .ph
AddType application/x-httpd-php-source .phps
추가해 주자...
[ns@/usr/local/httpd/apache/conf] # ../bin/apachectl configtest
Syntax OK
[ns@/usr/local/httpd/apache/conf] #
그리고 설정 파일을 테스트 했을 때 자알 되었다. 아파치를 다시 시작한다.
아 파일을 만들어서 테스트 해본다.
howtosolaris# cat > test.php
[? phpinfo(); ?]
[ 을 < 로 변경하기 바란다 -ㅁ-;
5. tomcat 5.0.19
tomcat 을 http:/www.apache.org에서 다운 받는다.
이때 우리는 소스 버전과 바이너리 버전을 다운 받을 수 있다.
소스 버전의 경우 ant 등을 설치해서 컴파일해야하는 번거러움이 있으므로..
바이너리 버전을 다운 받아서 압축을 푼다.
# gzip -dc jakarta-tomcat-5.0.19.tar.gz | tar xvf -
# ls
jakarta-tomcat-5.0.19
jakarta-tomcat-5.0.19 디렉토리가 하나 생겼다. 이 디렉토리를 통체로 옮긴다.
# mv jakarta-tomcat-5.0.19 /usr/local/httpd/tomcat.5
# cd /usr/local/httpd/tomcat.5/
[ns@/usr/local/httpd/tomcat.5] #
[ns@/usr/local/httpd/tomcat.5] # ls
LICENSE bin logs temp
RELEASE-NOTES common server webapps
RUNNING.txt conf shared work
[ns@/usr/local/httpd/tomcat.5] # cd bin
bin 디렉토리로 이동한다.
[ns@/usr/local/httpd/tomcat.5/bin] # ls
LauncherBootstrap.class setclasspath.sh
bootstrap.jar shutdown-using-launcher.bat
catalina.bat shutdown-using-launcher.sh
catalina.sh shutdown.bat
catalina.xml shutdown.sh
commons-daemon.jar startup-using-launcher.bat
commons-launcher.jar startup-using-launcher.sh
commons-logging-api.jar startup.bat
cpappend.bat startup.sh
digest.bat tomcat.exe
digest.sh tomcatw.exe
jsvc.tar.gz tool-wrapper-using-launcher.bat
launcher.properties tool-wrapper-using-launcher.sh
service.bat tool-wrapper.bat
setclasspath.bat tool-wrapper.sh
[ns@/usr/local/httpd/tomcat.5/bin] #
이중 파일이 정말 많다. 우선 j2se 파일이 설치되어 있는지 확인해보자.
[ns@/usr/local/httpd/tomcat.5/bin] # ls /usr/j
j2se java java1.2
[ns@/usr/local/httpd/tomcat.5/bin] # ls /usr/j2se
COPYRIGHT README bin jre man src.zip
LICENSE README.html include lib opt
[ns@/usr/local/httpd/tomcat.5/bin] #
설치되어 있다.
bin 디렉토리에 있는 파일 중 톰켓을 실행 시키는 파일은 startup.sh
중지 시키는 파일은 shutdown.sh 이다.
startup.sh 를 약간 가공하자.. ^^
[ns@/usr/local/httpd/tomcat.5/bin] # vi startup.sh
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
#
# $Id: startup.sh,v 1.3 2002/08/04 18:19:43 patrickl Exp $
# -----------------------------------------------------------------------------
# ADD PATH
JAVA_HOME=/usr/j2se
export JAVA_HOME
CATALINA_HOME=/usr/local/httpd/tomcat.5
export CATALINA_HOME
위 부분을 추가해주자. (참고로 catalina.sh, shutdown.sh 에도 추가 ^^)
그리고 실행해 본다.
[ns@/usr/local/httpd/tomcat/bin] # ./startup.sh
Using CATALINA_BASE: /usr/local/httpd/tomcat.5
Using CATALINA_HOME: /usr/local/httpd/tomcat.5
Using CATALINA_TMPDIR: /usr/local/httpd/tomcat.5/temp
Using JAVA_HOME: /usr/j2se
실행은 잘 된다. 홈페이지가 잘뜨는지 익스플로어 창을 열어서 확인해본다.
http://homeaddress:8080
톰 켓 화면이 잘 뜬다.
이제 가장 어려운 jk connecter 부분이 남았다. 이번 강좌의 핵심이랄 수 있다.
많은 사람이 이것을 보고 싶어서 이 강좌를 읽으리라 본다. -ㅁ-;;
5. jakarta-tomcat-connectors
사실 우리는 apache 말고 tomcat 만 실행한 상태에서 http://homeaddress:8080 을 웹창
(또는 http://homeaddress:8080/index.jsp) 에 실행해 본다면 톰켓이 작동하는 것을 볼
수 있다. 아파치는 전혀 필요 없다.
그.러.나 일반 사용자는 8080 이것을 입력하기 귀찮아하며, 보기도 싫다.
그래서 http://homeaddress/ 입력한다면 index.jsp 가 작동하도록 하게 하고 싶다라는
의미가 자카르타 톰켓 커넥터를 설치하는 원인다.
우선은 아파치와 톰켓의 작동 방식을 알아보자.
톰켓을 적절히 조정한다면 8009 포트를 열어서 정보를 받을 수도 보낼 수도 있게 설정할
수 있다. 마찬가지로 아파치에서 적절히 커넥터를 설치한다면 8009 포트로 정보를 보낼
수도 받을 수도 있다. 즉 아파치와 톰켓은 8009 포트를 통해서 통신 할 수 있다는 결론
을 내릴 수 있다. 그럼 이것을 하면 8080 이라는 포트를 웹창에 적어 넣지 않아도 작동
한다는 말이 된다. 이것이 가능하게 하는 것이 바로 자카르타 톰켓 커넥터라는 모듈이다.
사실이 길었다. 이제 설치해보자.
우선 jk connecter 을 다운 받자 소스로 다운 받아야한다. (참고로 jk가 아니라 jk2 이다.)
아마 현재 릴리즈 되는 파일의 이름은 분명히
jakarta-tomcat-connectors-jk2-src-current.tar.gz 이것이다.
압축을 푼다.
jakarta-tomcat-connectors-jk2-2.0.4-src 라는 디렉토리가 생겼다.
[ns@/] # cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/
커넥터를 컴파일 하기 위해서는 이 디렉토리로 이동한다.
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2] # ls
BUILD.txt Makefile.in autom4te.cache config.status libtool
CHANGES.html README.txt build.xml configure scripts
CHANGES.txt STATUS.txt buildconf.sh configure.in server
INSTALL.txt aclocal.m4 common include tomcat
Makefile apr config.log jni
파일이 많이 보인다. 우선 설치에 관한 환경 설정을 하는 buildconf.sh를 먼저 실행해
준다.
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2] # ./buildconf.sh
..
.......
이후 에러가 뜨지 않는다면 configure 를 실행한다.
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2] # ./configure
--with-apxs2=/usr/local/httpd/apache/bin/apxs
--with-apxs2 라는 옵션을 사용해서 아파치의 apxs 의 위치를 알려준다.
이모든 과정을 끝난 이후. make를 한다. 참고로 make install 은 않된다.
모든 과정이 끝난 이후 컴파일은 끝이 났다.
만들어진 mod_jk2.so 를 아파치 모듈 디렉토리에 복사한다. 그러나..
파일이 않보인다. -ㅁ-;;
디렉토리를 이동하자..
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/build/jk2/apache2/usr/local/httpd/apache/modules] # ls
mod_jk2.a mod_jk2.la mod_jk2.so
위에 보이는 디렉토리를 참고해서 찾아가자
파일이 보인다.. 이것을 아파치 모듈에 추가하자.
# cp mod_jk2.so /usr/local/httpd/apache/modules/
다른 파일은 필요 없는가? 필요 없다.
자 한가지가 더 남았다.
workers2.properties 파일은 /usr/local/httpd/apache/conf 에 복사해야한다.
mod_jk2.so 모듈은 workers2.properties 파일을 참고로 해서 어떻게 작동해야
할지 결정한다.
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf] # ls
jk2.manifest tomcat-jk2.manifest
jk2.properties workers.properties
jkconf.ant.xml workers2.properties
jkconfig.manifest workers2.properties.minimal
shm.manifest
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf] # cp workers2.properties /usr/local/httpd/apache/conf/
자 이제 톰켓에서 8009 포트로 작동할 준비와 아파치에서 8009 포트로 작동할 설정
(준비)를 해야한다.
우선 톰켓 설정 부터하자.
[ns@/jakarta-tomcat-connectors-jk2-2.0.4-src/jk/conf] # cd /usr/local
/httpd/tomcat.5/conf/
톰켓 5에는 coyote connector 가 기본적으로 설치되어 있다. coyote connector가
하는 역할은 mod_jk2 의 모듈에서 전달하는 정보를 수신 송신하는 역할을 한다.
이것을 설정하는 파일이 jk2.properties 파일이다.
당연히 이 파일은 존재한다.
[ns@/usr/local/httpd/tomcat.5/conf] # vi jk2.properties
## THIS FILE MAY BE OVERRIDEN AT RUNTIME. MAKE SURE TOMCAT IS STOPED
## WHEN YOU EDIT THE FILE.
## COMMENTS WILL BE _LOST_
## DOCUMENTATION OF THE FORMAT IN JkMain javadoc.
# Set the desired handler list
# handler.list=apr,request,channelJni
#
# Override the default port for the socketChannel
channelSocket.port=8009
# Default:
# channelUnix.file=${jkHome}/work/jk2.socket
# Just to check if the the config is working
shm.file=/usr/local/httpd/apache/logs/jk2.shm
# In order to enable jni use any channelJni directive
# channelJni.disabled = 0
# And one of the following directives:
# apr.jniModeSo=/opt/apache2/modules/mod_jk2.so
# If set to inprocess the mod_jk2 will Register natives itself
# This will enable the starting of the Tomcat from mod_jk2
apr.jniModeSo=inprocess
[ns@/usr/local/httpd/tomcat.5/conf] #
자 위와 같이 고친다. ^^
이제 아파치 쪽의 설정을 변경해 보자.
[ns@/usr/local/httpd/tomcat.5/conf] # cd /usr/local/httpd/apache/conf/
[ns@/usr/local/httpd/apache/conf] # vi httpd.conf
적절한 곳에
LoadModule jk2_module modules/mod_jk2.so
이 내용을 적는다. php 모듈을 설정했던 바로 밑에 적어 넣으면 될 것이다.
자 이제 mod_jk2의 설정 파일인 workers2.properties 파일을 고칠 차례이다.
[ns@/usr/local/httpd/apache/conf] # vi workers2.properties
# Shared memory handling. Needs to be set.
[shm]
file=/usr/local/httpd/apache/logs/shm.file
size=1048576
# Example socket channel, explicitly set port and host.
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
# define the worker
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
# Announce a \"status\" worker
[status:status]
# Uri mapping
[uri:/jsp-examples/*]
worker=ajp13:localhost:8009
[uri:/servlets-examples/*]
worker=ajp13:localhost:8009
[uri:/tomcat-docs/*]
worker=ajp13:localhost:8009
[uri:/*]
worker=ajp13:localhost:8009
[uri:/status/*]
worker=status:status
자 위와 같이 설정한 후에 톰켓, 아파치를 다시 실행한다.
않되면 위의 것을 그대로 복사해서 만들어도 된다.
필자의 설정 그대로를 올려놓은 것이다.
(아마도 리부팅 후 실행하는 것이 좋을 듯하다.)
그리고 http://homeaddress/ 를 입력해본다.
http://homeaddress:8080/ 과 같은 화면이 뜬다. 우선 이것으로 자카르타 톰켓
커넥터는 자알~~ 설치되었다.
이것으로 우리는 웹 페이지를 보이는 아파치 웹 루트와 톰켓을 보이는 웹 루트가
있는 것을 알 수 있다. 그러나 지금 보이는 톰켓 루트만 보이고 웹 루트는 보이
는가? index.html이 아파치 웹루트에 있다면 이것은 작동하지 않는다.(파일이 없다고 나온다.)
그러면 어떻게 설정해야하는가? 그리고 왜 이렇게 나오는가?
우리는 mod_jk 의 작동 방식을 잘 생각해보면 답이 나온다. 그리고
workers2.properties를 잘 살펴본 사람이라면 쉽게 답이 나올 수 있다.
# Uri mapping 이부분이다. 이부분에 맞는 url가 나오면 무조건 톰켓으로 정보를
보내어 버린다. 특히 극악은
[uri:/*]
worker=ajp13:localhost:8009 이부분으로 모든 파일은 톰켓으로 전송해버리는 극
악한 짓을 한다.
즉 http://homeaddres/index.html 은 톰켓 루트에서 찾는다.
/* 과 url가 매칭이 되기 때문이다. -ㅁ-;;
그럼?
[uri:/jsp/*]
worker=ajp13:localhost:8009
와 같이 만들어 버리고 톰켓 웹 루트에 jsp 디렉토리를 만들어 이곳으로 자바서블
릿을 설치하면 될거라고 생각한다..
무슨 말인지 이해하겠는가?
자 복습해보자
[uri:/*.html] 이렇게 써있다면 어떻게 작동할 것인가?
aaa.html 파일을 실행했을 때 aaa.html 파일은 어느 디렉토리에서 찾을 것인가?
[uri:/image/*.jpg] 이렇게 써있다면 어떻게 작동할 것인가를 잘 생각해보자..^^
참고로 톰켓은 php 작동은 안한다 ㅡㅡ; 그러니 아파치에서 실행하는 문서와
톰켓에서 실행하는 문서는 달라야한다?
그러면 아파치 웹 루트를 톰켓 웹루트로 바꾸면 되지 않는가?
아니면 반대의 경우라면?
아파치와 톰켓의 작동 방식은 약간 달라서 상당히 어려울 것이면
톰켓에서 바꿔설정해줘야 할부분이 훨씬 많아질 것이다.
그러니.. 실력을 쌓으면 바꿔보자.
MintState
2004�� 12�� 02��, 03:45 PM
�ㅤㄷㅒㅁㅤㅂㅒㄿ�� 7.3 + APM + �곗ㅤㅍㅕㅄ 4.1.12 �곕ㅤㄹㅛㅄ踰� (�곗ㅤㅍㅕㅄ �ㅤㄲㅛㄿㅤㄸㅘㅍ移ㅤㅅㅒㅀ� 媛ㅤㅅㅛㄽㅤㅆㅢㅆ 紐⑤ㅤㅂㅑㅈ�� �ㅤㅆㅝㅈㅤㅍㅖㄲ�� 而댄ㅤㄸㅘㅍ��)
��ㅤㄷㅞㅀ �곗ㅤㅍㅕㅄ�� �ㅤㄷㅒㅂㅤㅂㅓㄽ�ㅤㅂㅞㄶㅤㄸㅡㄻ �닿ㅤㅋㅚㄴ �ㅼㅤㅌㅟㄲ�ㅤㅅㅒㄾㅤㅋㅞㅆ �띠� 遺ㅤㄲㅛㄾㅤㅆㅢㅆ 留ㅤㄹㅗㅄ�寃� 媛ㅤㅅㅛㄽㅤㅂㅡㄽ��..
援우ㅤㄷㅟㄶ�쇰ㅤㅂㅒㄿ�ㅤㅅㅒㅀㅤㅆㅢㅆ �곗ㅤㄸㅒㄶ 湲�ㅤㅆㅣㄲ ��꺼 �ㅤㅂㅞㄷㅤㄷㅟㅎ�ㅤㄷㅒㅁㅤㄸㅒㄻ.
[�ㅼㅤㅌㅟㄲ�ㅤㅅㅒㄾ꼍]
Model: LG IBM eServer X330
CPU : Intel Pentium III 1.13Mhz
RAM: 256M
HDD: SCSI IBM 18
OS: Redhat Linux 7.3
Kernel: 2.4.18
[�ㅼㅤㅌㅟㄲ��]
洹몃ㅤㄹㅛㅄ�� ��ㅤㅅㅡㄲ由щㅤㄴㅢㅁ�� �ㅤㄸㅜㅄ� 7.1�ㅤㅁㅒㅅㅤㄲㅘㄴ 由щㅤㄴㅢㅁ�ㅻ� �댁ㅤㅃㅢㄶ�ㅤㅅㅒㄿㅤㄸㅒㄻ媛� �щㅤㅇㅠㄾ媛�� 蹂댁ㅤㅂㅡㅄ踰ㅤㄲㅛㄼ렇�� 湲고��깅ㅤㅂㅓㄾ�� �댁ㅤㅆㅚㅆ濡� �대ㅤㅋㅚㄻ 湲고ㅤㅅㅟㄻ�� �ㅤㄷㅒㅁㅤㅂㅒㄿ�� 7.3�쇰ㅤㅈㅜㄽ �ㅤㄲㅣㄷ렇�ㅤㄷㅒㅂㅤㅆㅢㅆ�ㅤㅆㅝㅇ� �ㅤㅅㅒㅀ��듬ㅤㄸㅑㄻ��. 洹몃ㅤㅇㅠㄾ�� �ㅤㅇㅐㅊㅤㅋㅒㄿ蹂대ㅤㄸㅒㄻ �쎌��� �ㅤㄷㅢㄾㅤㄸㅠㄵ援곗ㅤㅃㅝㄴ.. �▲ㅤㄲㅠㄳ;
洹몃ㅤㅇㅖㄻ�� 1二쇱ㅤㅆㅣㄲ�ㅤㅅㅛㄽㅤㅂㅡㅄ PHP�ㅼ엥怨� �щㅤㅇㅖㄱ�룹ㅤㅆㅡㄾ 寃ㅤㄸㅜㅅㅤㄸㅒㄲ�ㅤㅁㅒㅂ낵 Q&A瑜� 李멸ㅤㅋㅞㅆ�ㅤㅅㅒㅀㅤㅃㅝㄴ 7.3踰ㅤㄲㅛㄾㅤㅈㅒㅍ�ㅤㅁㅒㅅㅤㄲㅘㄴ �ㅤㄲㅛㄿㅤㄸㅘㅍ移ㅤㅅㅒㅀ� �곗ㅤㅍㅕㅄ�� �곕ㅤㄹㅛㅄ�� �깃났�ㅤㅅㅒㅀ��듬ㅤㄸㅑㄻ��.
湲곗〈 4.0.5踰ㅤㄲㅛㄾㅤㅈㅒㅍ �댄ㅤㅂㅢㄷ�� �곗ㅤㅍㅕㅄ怨쇰ㅤㄷㅞㅀ �곕ㅤㄹㅛㅄ 諛⑸ㅤㅋㅚㅊ�� 醫� �ㅻⅨ寃� 媛ㅤㅅㅛㄽㅤㅂㅡㄽ�� 留ㅤㄹㅗㅄㅤㅆㅢㅆ 怨ㅤㅈㅘㄲㅤㄲㅐㄶ�ㅤㄷㅒㅂㅤㄷㅟㅎ�ㅤㄷㅒㅁㅤㄸㅒㄻ.
�곗ㅤㅍㅕㅄ怨� �ㅤㄲㅛㄿㅤㄸㅘㅍ移ㅤㅅㅒㅀㅤㅆㅡㄾ 而ㅻㅤㄲㅘㄿ�� 紐⑤ㅤㅂㅑㅈ�� �ㅤㄲㅛㄿㅤㄸㅘㅍ移� 而댄ㅤㄸㅘㅍ�쇱ㅤㄸㅒㄲ PHP�� 媛ㅤㅅㅛㄽㅤㅆㅢㅆ 紐⑤ㅤㅂㅑㅈ�� �ㅤㅆㅝㅈㅤㅍㅖㄲ�� 而댄ㅤㄸㅘㅍ�� �ㅤㅆㅝㅈ섟�듬ㅤㄸㅑㄻ��.
�곗ㅤㅍㅕㅄ�� 泥ㅤㅅㅒㅀㅤㅆㅠㅋ �ㅤㄸㅕㅈㅤㄸㅘㅅ�대낫�ㅤㅂㅞㄵㅤㅋㅚㄴ�대ㅤㅆㅣㄲ�� �ㅼㅤㄴㅣㄽ媛� �ㅤㄷㅒㅂㅤㅆㅠㅀ吏�ㅤㄹㅚㅆ 紐⑤Ⅴ�� �ㅤㅁㅚㅊㅤㅂㅣㄽ 諛ㅤㅂㅞㄶㅤㅇㅕㅀ�ㅤㄷㅒㅁㅤㄸㅒㄻ.
�ㅤㄲㅛㄾㅤㅉㅛㅌ �곗ㅤㅍㅕㅄ�ㅤㅁㅒㅅㅤㄲㅘㄴ 踰ㅤㄲㅛㄾㅤㅌㅔㅀ�� �몄ㅤㄷㅟㄶ�ㅤㄲㅣㄻ� �깃났 �ㅤㅅㅒㅀ� 紐삵ㅤㅃㅔㅂ�ㅤㅂㅞㄶㅤㄸㅡㄻ �ㅤㄱㅗㅊЦ �ㅤㄲㅛㄿㅤㄱㅒㅅ癒쇳ㅤㄷㅠㄳ源ㅤㄸㅜㅅ� 李얠ㅤㅂㅡㄽ 遊ㅼㅤㅆㅛㅇ�� �ㅤㅅㅒㄿ��곕ㅤㅈㅜㄽ �ㅤㄷㅒㅁㅤㄷㅞㅀ�� �ㅤㄷㅒㅁㅤㄹㅣㄿ�ㅤㅂㅞㄵ뎔��..�▲ㅤㄲㅠㄳ; �ㅤㄲㅛㄾㅤㅉㅛㅌ �닿났�� 遺�”�ㅤㅅㅒㅀㅤㅃㅝㄴ.. �뱀ㅤㄸㅒㄲ �깃났�ㅤㅅㅒㅀㅤㄸㅒㄶ遺� �ㅤㄷㅒㅂㅤㅆㅛㅇ�ㅤㅆㅝㅇ㈃ �닿났�� 遺�”�� �ㅤㄷㅚㅌㅤㅇㅕㅋ瑜� �ㅤㄲㅛㄿㅤㅂㅣㄽ �듦�醫� �ъㅤㅂㅡㄽ 二쇱ㅤㄸㅒㄲ湲� 諛ㅤㅂㅞㄶㅤㅇㅕㅀ�ㅤㄷㅒㅁㅤㄸㅒㄻ.
�ㅤㄷㅒㅁㅤㅂㅒㄿ�� 7.3�� �ㅤㅆㅝㅇㅤㅋㅚㄵ紐⑤ㅤㅂㅒㄿ濡� �ㅼㅤㅌㅟㄲ�ㅤㅅㅒㄾㅤㅋㅞㅆ �⑦ㅤㄱㅝㄶ吏�ㅤㅃㅛㅌ�ㅤㅆㅝㅇㅤㄷㅞㅀ 紐⑤ㅤㅁㅖㅈ �댁ㅤㅈㅔㄷ �ㅤㅅㅒㄾㅤㅋㅞㅆ �ㅼㅤㅌㅟㄲ�ㅤㄷㅒㅂㅤㄷㅟㅎ�ㅤㄷㅒㅁㅤㄸㅒㄻ.
湲곕낯�ㅤㄱㅗㅋㅤㅆㅛㅇ濡� Freetype�� GD�� 7.3踰ㅤㄲㅛㄾㅤㅈㅒㅍ�� 媛ㅤㅅㅛㄽㅤㅆㅢㅆ �ㅼㅤㅌㅟㄲ �ㅤㅅㅒㄿㅤㄷㅞㅀ援곗ㅤㅅㅟㅈ.. PHP而댄ㅤㄸㅘㅍ�쇳ㅤㅂㅢㅀ�� �듭ㅤㄲㅟㅇ留� �lㅤㅃㅖㄾ二쇱ㅤㄸㅒㄲ硫� 媛ㅤㅅㅛㄽㅤㅆㅢㅆ �곕ㅤㄹㅛㅄ �⑸ㅤㄸㅑㄻ��.
openssl�� 蹂댁ㅤㅂㅡㅄ 踰ㅤㄲㅛㄼ렇濡� �명ㅤㅂㅢㄷ�� �ㅤㄲㅣㄷ렇�ㅤㅅㅒㅀㅤㅆㅢㅆ�ㅤㅆㅝㅇ� �댁ㅤㅂㅣㅍ �ㅤㅅㅒㄿㅤㄱㅜㄾ �ㅤㅅㅒㅀ〈�깆ㅤㅆㅢㅆ 嫄몃━�ㅤㅂㅞㄵㅤㅋㅚㄿ �ㅤㄷㅒㅁТ 留ㅤㄹㅗㅄㅤㅂㅡㄽ�� �ㅤㄲㅛㄽㅤㅁㅖㅈ媛� �ㅤㄷㅒㅁㅤㄱㅝㄼ�ㅤㄷㅒㅁㅤㄸㅒㄻ..�▲ㅤㄲㅠㄳ;
openssl�� �ъㅤㅅㅠㅆ�ㅤㅅㅒㅀㅤㄸㅒㄲ�� 遺ㅤㄲㅛㄾ� 瑗� �⑥ㅤㅌㅟㄲ�ㅤㄲㅛㄾㅤㅃㅛㅌ �ㅼㅤㅌㅟㄲ�ㅤㅅㅒㅀㅤㄸㅒㄲ湲� 諛ㅤㅂㅞㄶㅤㅇㅕㅀ�ㅤㄷㅒㅁㅤㄸㅒㄻ.. 湲고� �ㅼㅤㅌㅟㄲ�� 醫ㅤㄸㅕㅇ� �ㅤㄱㅗㅋㅤㅆㅢㅆ�� 遺�”�ㅤㅆㅝㅈㅤㅈㅓㅀ�� �ㅤㄷㅒㅁㅤㄸㅒㄻ硫� 由ыㅤㅂㅙㅍ 諛ㅤㅂㅞㄶㅤㅇㅕㅀ�ㅤㄷㅒㅁㅤㄸㅒㄻ(硫ㅤㅂㅞㄷㅤㅆㅣㄲ二쇱ㅤㄴㅒㅁ:admin@aidc.co.kr). �닿났�� 遺�”�� �ㅤㄷㅚㅌㅤㅇㅕㅋ�ㅤㅁㅒㅂㅤㅋㅚㄿ 留ㅤㄹㅗㅄ� �ㅤㄲㅛㄾ��� �ㅤㅈㅗㅌㅤㅋㅚㄲ�ㅤㄷㅒㅁㅤㄸㅒㄻ.^^
[�ㅼㅤㅌㅟㄲ�ㅤㅂㅞㄷㅤㅆㅣㄲ]
mysql-3.23.52.tar.gz : http://www.mysql.com/downloads/mysql-3.23.html
apache_1.3.26.tar.gz : http://www.apache.org/dist/httpd
php-4.2.3.tar.gz : http://www.php.net/downloads.php
j2sdk-1_4_1-linux-i586.bin : http://java.sun.com
jsdk20-solaris2-sparc.tar.Z : http://java.sun.com/products/servlet/archive.html
mm.mysql-2.0.4-bin.jar : http://mmmysql.sourceforge.net/oldDist.html
imap-2001a.tar.Z : ftp://ftp.cac.washington.edu/imap/
freetype-2.0.6.tar.gz : ftp://ftp.freetype.org/freetype/freetype2 (7.3踰ㅤㄲㅛㄾㅤㅈㅒㅍ�� 湲곕낯 �ㅤㅆㅝㅅ났)
gd-2.0.1.tar.gz : http://www.boutell.com/gd (7.3踰ㅤㄲㅛㄾㅤㅈㅒㅍ�� 湲곕낯�ㅤㅆㅝㅅ났)
openssl-0.9.6e.tar.gz : http://www.openssl.org/source
ZendOptimizer-1.3.2-Linux_glibc21-i386.tar.gz : https://www.zend.com/store/products/zend-optimizer.php
jakarta-tomcat-4.1.12.tar.gz : http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/bin
jakarta-tomcat-connectors-4.1.12-src.tar.gz : http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.12/src
** �ㅤㄸㅜㅅㅤㄷㅟㄶ�� �ㅤㄲㅛㄾㅤㅆㅡㄾ 寃쎈ㅤㅈㅜㄽ�ㅤㅁㅒㅅㅤㄲㅘㄴ 諛ㅤㅆㅖㄻㅤㅂㅢㄷ�듬ㅤㄸㅑㄻ��. �뱀ㅤㄸㅒㄲ �ㅤㅁㅒㅄㅤㅈㅢㅈ媛� �ㅤㄴㅗㄶ굅�� 洹�갖�쇱ㅤㄸㅒㄲ硫� �ㅤㄲㅛㄽㅤㅇㅖㄻ 留ㅤㄱㅗㅌㅤㄱㅔㄺ�ㅤㅁㅒㅅㅤㄲㅘㄴ 諛ㅤㅆㅖㄻㅤㅆㅛㅇ�ㅤㅆㅝㅇ㈃ �⑸ㅤㄸㅑㄻ��.
�ㅼㅤㅌㅟㄲ �ㅤㄸㅜㅅㅤㄷㅟㄶ�ㅤㅂㅞㄷㅤㅆㅣㄲ �ㅤㄲㅛㄽ� �ㅤㅃㅑㄽㅤㅌㅔㅄ�댁ㅤㄲㅘㄴ �ㅤㅂㅞㄷㅤㅆㅣㄲ �ㅤㅆㅝㅅㅤㅋㅓㅊ濡� 留ㅤㄸㅜㅄㅤㅂㅒㅈ�� �ㅤㅂㅖㄿㅤㅂㅢㄷ�듬ㅤㄸㅑㄻ��. (李멸ㅤㅋㅞㅆ : �⑸ㅤㅇㅞㅈ�� 議곌ㅤㅌㅛㄱ 留ㅤㄹㅗㅄㅤㄷㅟㅎ�ㅤㄷㅒㅁㅤㄸㅒㄻ. �� 70硫ㅤㅂㅞㄵ� 遺ㅤㄲㅛㄽㅤㅇㅞㅈ)
http://www.aidc.co.kr/customer/sub7_qna-list.htm
[�ㅼㅤㅌㅟㄲ諛⑸ㅤㅋㅚㅊ]
紐⑤ㅤㅂㅒㅄ �ㅤㄸㅜㅅㅤㄷㅟㄶ�� /usr/local/src�대ㅤㄸㅠㄵ媛� �ㅼㅤㅌㅟㄲ 猷⑦ㅤㄷㅠㄳ �대ㅤㄸㅠㄵ�대ㅤㄸㅒㄻ.
�ㅼㅤㅌㅟㄲ�� SSH瑜� 3.4�댁ㅤㄱㅣㄾ�� 踰ㅤㄲㅛㄾㅤㅈㅒㅍ�쇰ㅤㅈㅜㄽ �ㅤㄲㅣㄺㅤㄸㅡㄻ�댄ㅤㄷㅠㄳ �댁���.
openssl�� 媛ㅤㅅㅛㄽㅤㅆㅢㅆ �ㅤㄲㅣㄺㅤㄸㅡㄻ�댄ㅤㄷㅠㄳ �댁���.
1. MYSQL�ㅼㅤㅌㅟㄲ
癒쇱 � �ㅤㄸㅜㅅㅤㄷㅟㄶ瑜� /usr/local/src �대ㅤㄸㅠㄵ�� �대ㅤㄹㅛㅄ�ㅤㅆㅝㅇㅤㄸㅒㄻ�� �ㅤㅃㅑㄽㅤㅌㅔㅄ�� �쇰ㅤㄸㅒㄻ.
[root@localhost]# tar xvfz mysql-3.23.52.tar.gz
[root@localhost]# cd mysql-3.23.52
[root@localhost]# ./configure --prefix=/usr/local/mysql --with-charset=euc_kr --localstatedir=/var/lib/mysql(DB�ㅤㅂㅞㄷㅤㅆㅣㄲ�� ��ㅤㅇㅖㅎ� 寃쎈ㅤㅈㅜㄽ �ㅼㅤㅈㅓㅌ)
- �뱀ㅤㄸㅒㄲ �ㅼㅤㄴㅣㄽ濡� �ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ�� �ㅼㅤㄸㅒㄲ �댁ㅤㅂㅣㅍ� 寃쎌ㅤㅅㅡㄲ make distclean 紐ㅤㄲㅣㄺㅤㅈㅕㅄ�ㅽㅤㅃㅔㅄ
[root@localhost]# make; make install
- 湲곕낯 �곗ㅤㅆㅢㅆ�� 踰ㅤㅈㅘㄲㅤㅆㅢㅆ�� �ㅼㅤㅌㅟㄲ
[root@localhost]# cd /usr/local/mysql/bin
[root@localhost]# ./mysql_install_db
- mysql�� �ㅤㅆㅝㅈㅤㅇㅖㄱ怨ㅤㄲㅛㄾㅤㅈㅓㅌ�ㅼㅤㅈㅓㅌ
[root@localhost]# groupadd mysql
[root@localhost]# adduser -g mysql mysql
[root@localhost]# vi /etc/passwd (mysql怨ㅤㄲㅛㄾㅤㅈㅓㅌ�� �ㅤㅅㅒㅀㅤㅆㅠㅀ nologin�쇰ㅤㅈㅜㄽ �ㅤㅅㅒㅀㅤㅈㅓㅌ)
[root@localhost]# rm -rf /home/mysql(mysql怨ㅤㄲㅛㄾㅤㅈㅓㅌ�� �ㅤㄷㅒㅁㅤㅂㅚㄻ�ㅤㄷㅚㅍㅤㄴㅓㅀ由� ��ㅤㅈㅔㄷ)
[root@localhost]# cd /usr/local/mysql
[root@localhost]# chown -R mysql.mysql var
[root@localhost]# cp /usr/local/src/mysql-3.23.52/support-files/my-medium.cnf /etc/my.cnf
[root@localhost]# vi /usr/local/mysql/share/mysql/mysql.server
- �몄ㅤㅉㅜㅅ湲곕ㅤㅈㅜㄽ �댁ㅤㅃㅖㄾ�� safe_mysql�� �ㅽㅤㅃㅔㅄ�ㅤㅅㅒㄿㅤㄷㅞㅀ �쇱ㅤㅆㅢㅋ(119�쇱ㅤㅆㅢㅋ)�� --language=korean �듭ㅤㄲㅟㅇ�� 異ㅤㅂㅞㄵ�.
$bindir/safe_mysqld --pid-file=$pid_file --datadir=$datadir --language=korean & �ㅤㅆㅝㅅ�硫ㅤㅂㅞㄷㅤㄲㅙㄺ吏�� �ㅤㄲㅛㄾㅤㅅㅡㄲ�ㅤㄲㅛㄽㅤㅈㅜㄾ �댁���.
- �ㅤㅆㅝㅈㅤㄷㅟㄶ�� 遺�ㅤㄸㅘㅅ�ㅤㅆㅝㅈㅤㅃㅛㅌ �ㅤㅁㅒㅄㅤㄹㅛㅄ �ㅽㅤㅃㅔㅄ�ㅤㅅㅒㄿㅤㄹㅚㅆ濡� �ㅼㅤㅈㅓㅌ
[root@localhost]# cp -p /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc3.d/S90mysqld
- 留ㅤㄸㅜㅅㅤㅆㅣㄲ Xwindows濡� 遺�ㅤㄸㅘㅅ� 寃쎌ㅤㅅㅡㄲ瑜� �ㅤㄲㅛㄿㅤㅂㅣㄽ /etc/rc.d/rc5.d/ �ㅤㅂㅞㄹㅤㄲㅟㄷ�ㅤㅈㅗㅍ━�ㅤㅁㅒㅄㅤㄹㅚㅆ 留ㅤㄱㅗㅌㅤㄱㅔㄺ瑜� 留ㅤㄸㅜㅄㅤㅂㅒㅄ��.
[root@localhost]# ln -s /etc/rc.d/init.d/mysqld /etc/rc.d/rc5.d/S90mysqld
- mysql�곕が�� �ㅤㅆㅝㅈㅤㅇㅖㄱ怨� 醫ㅤㄲㅣㄺㅤㅈㅢㅈ 諛� 愿�ㅤㅈㅔㅋ 紐ㅤㄲㅣㄺㅤㅈㅕㅄ�대� �ъㅤㅅㅠㅆ�ㅤㅅㅒㄾ린 �명ㅤㅂㅢㄷ寃� �ㅤㅅㅒㄾ린�ㅤㄲㅛㄿㅤㅂㅣㄽ�� �ㅤㅆㅝㅈㅤㄷㅟㄶ�� 遺�ㅤㄸㅘㅅ�ㅤㅅㅒㄾ꼍�� PATH瑜� 吏�ㅤㅈㅓㅌ�� �ㅤㅂㅞㄶㅤㄸㅒㄻ.
[root@localhost]# vi /root/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
[root@localhost]# /etc/rc.d/init.d/mysqld start
[root@localhost]# ps -ef | grep mysql MySQL �ㅤㄲㅛㄽㅤㅈㅜㄽ�몄ㅤㄷㅟㄶ �ㅤㅃㅑㄽㅤㅆㅢㅋ�ㅤㅅㅒㄾ린
[root@localhost]# /etc/rc.d/init.d/mysqld stop MySQL �곕が 醫ㅤㄲㅣㄺㅤㅈㅢㅈ�ㅤㅅㅒㄾ린
- mysql�ㅼㅤㅌㅟㄲ�� 瑗� root�⑥ㅤㄷㅟㄶ�ㅤㄸㅜㅄㅤㅂㅒㄿ瑜� 蹂�꼍�댁���
2. IMAP�ㅼㅤㅌㅟㄲ
[root@localhost]# tar xvzf imap.tar.gz
[root@localhost]# mv imap-2001a /usr/local/imap
[root@localhost]# cd /usr/local/imap
[root@localhost]# make slx
[root@localhost]# cp ipop/ipop3d /usr/sbin
[root@localhost]# cp imap/imapd /usr/sbin
[root@localhost]# vi /etc/xinetd.d/imapd
service imap
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/imapd
log_on_success += HOST DURATION
log_on_failure += HOST
}
[root@localhost]# vi /etc/xinetd.d/ipop3d
service pop3
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/sbin/ipop3d
log_on_success += HOST DURATION
log_on_failure += HOST
}
[root@localhost]# /etc/rc.d/init.d/xinetd restart(�ㅤㄷㅒㅄㅤㄸㅡㅌ�곕が�� �ш���)
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
- telnet�� �댁ㅤㅅㅠㅆ�ㅤㅅㅒㅀㅤㅃㅝㄴ 濡ㅤㅆㅝㅈ뺄�몄ㅤㄷㅟㄶ�� 110�ыㅤㄷㅠㄳ(pop3)濡� �ㅤㅁㅚㅈㅤㄴㅒㅂ�ㅤㅅㅒㅀㅤㅃㅝㄴ �ㅤㄸㅜㅅㅤㄷㅟㄶ�� �ㅤㅆㅝㅇㅤㄸㅒㄻ.
[root@localhost]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
+OK POP3 localhost.localdomain v2001.78 server ready
user admin
+OK User name accepted, password please
pass 1234
+OK Mailbox open, 0 messages
quit
+OK Sayonara
Connection closed by foreign host.
IMAP�� 143 �ыㅤㄷㅠㄳ瑜� �ъㅤㅅㅠㅆ.
[root@localhost]# cp /usr/local/imap/c-client/c-client.a /usr/lib/libc-client.a
[root@localhost]# mkdir /usr/local/include (�대ㅤㄸㅠㄵ媛� �ㅤㄴㅗㄺㅤㅆㅠㅀ�� �ㅤㅇㅐㅌㅤㄲㅙㄲ�댁���)
[root@localhost]# cp /usr/local/imap/c-client/mail.h /usr/local/include
[root@localhost]# cp /usr/local/imap/c-client/rfc822.h /usr/local/include
[root@localhost]# cp /usr/local/imap/c-client/linkage.h /usr/local/include
3. Jdk�ㅼㅤㅌㅟㄲ
- 李멸ㅤㅋㅞㅆ) jdk媛� �ㅼㅤㅌㅟㄲ�ㅤㅅㅒㅀㅤㅃㅖㄾ �ㅤㄷㅒㅂㅤㅃㅖㄾ��. �곗베�ㅤㅁㅒㅅㅤㄲㅘㄴ �ㅤㅆㅝㅇㅤㅌㅛㄾ由우ㅤㅆㅠㅀ 媛�ㅤㄹㅛㅄ�ㅤㅈㅘㄲㅤㄴㅣㄽ �ㅤㄷㅒㅂㅤㅆㅠㅋ
[root@localhost]# cd /usr/local/src
[root@localhost]# chmod +x j2sdk-1_4_1-linux-i586.bin
[root@localhost]# ./j2sdk-1_4_1-linux-i586.bin
[root@localhost]# mv j2sdk1.4.1/ /usr/local/jdk
- �ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ 遺�ㅤㅌㅓㅊ
[root@localhost]# vi /etc/profile
# JDK �ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ
PATH="$PATH:/usr/local/jdk/bin"
export JAVA_HOME="/usr/local/jdk"
export CLASSPATH="."
[root@localhost]# java -version
java version "1.2.2"
Classic VM (build JDK-1.2.2_013, green threads, nojit)
4. JSDK�ㅼㅤㅌㅟㄲ
[root@localhost]# tar xvfz jsdk20-solaris2-sparc.tar.Z
[root@localhost]# mv JSDK2.0 /usr/local/JSDK
- �ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ
[root@localhost]# vi /etc/profile
# JSDK �ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ
PATH="$PATH:/usr/local/JSDK"
export CLASSPATH=".:/usr/local/JSDK/lib/jsdk.tar"
# APACHE + PHP + TOMCAT + TOMCAT Connector�곕ㅤㄹㅛㅄ
[root@localhost]# tar xvfz apache_1.3.26.tar.gz
[root@localhost]# cd apache_1.3.26
[root@localhost]# ./configure --prefix=/usr/local/apache
- tomcat �ㅼㅤㅌㅟㄲ
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz jakarta-tomcat-4.1.12.tar.gz
[root@localhost]# mv jakarta-tomcat-4.1.12 /usr/local/jakarta-tomcat
[root@localhost]# vi /etc/profile
# tomcat config
PATH="$PATH:/usr/local/jakarta-tomcat/bin"
export TOMCAT_HOME="/usr/local/jakarta-tomcat"
export CLASSPATH="."
[root@localhost]# vi /usr/local/jakarta-tomcat/conf/workers.properies(�ㅤㄲㅛㄽㅤㅇㅖㄻ 遺�ㅤㅌㅓㅊ �ㅤㄲㅣㄺㅤㅈㅔㅆ)
aworkers.tomcat_home=/usr/local/jakarta-tomcat
workers.java_home=/usr/local/jdk
worker.list=ajp12, ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
- tomcat �ㅤㅁㅚㅈㅤㄴㅒㅂ 紐⑤ㅤㅂㅑㅈ 而댄ㅤㄸㅘㅍ��
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz jakarta-tomcat-connectors-4.1.12-src.tar.gz
[root@localhost]# mv jakarta-tomcat-connectors-4.1.12-src /usr/local/jakarta-tomcat/connectors
[root@localhost]# cd /usr/local/src/jakarta-tomcat-connectors-4.1.12-src/jk/native
[root@localhost]# ./builconf.sh
[root@localhost]# ./configure --with-apache=/usr/local/src/apache_1.3.26
[root@localhost]# make; make install
[root@localhost]# vi /etc/rc.d/init.d/tomcat �ㅽㅤㅃㅔㅄ �ㅽㅤㄱㅔㄺ由쏀ㅤㄷㅠㄳ
#######################################################################
#!/bin/sh
# ---------------------------------------------------------------------
# Start/Stop Script for the CATALINA Server
#
# ---------------------------------------------------------------------
#######################################################################
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/usr/local/jakarta-tomcat/
export CLASSPATH="."
PRGDIR="$TOMCAT_HOME/bin"
EXECUTABLE=startup.sh
# Check that target executable exists
if [ ! -x "$PRGDIR"/"$EXECUTABLE" ]; then
echo "Cannot find $PRGDIR/$EXECUTABLE"
echo "This file is needed to run this program"
exit 1
fi
case "$1" in
start)
echo -n "Starting Catalina service: "
daemon "$PRGDIR"/"$EXECUTABLE $@"
;;
stop)
echo -n "Shutting down Catalina service: "
daemon "$PRGDIR"/"$EXECUTABLE $@"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
echo
exit 0
###################################################################
- php而댄ㅤㄸㅘㅍ��
[root@localhost]# cd /usr/local/src
[root@localhost]# tar xvfz php-4.2.3.tar.gz
[root@localhost]# cd php-4.2.3
[root@localhost]#./configure --with-mysql=/usr/local/mysql
--with-apache=/usr/local/src/apache_1.3.26
--with-charset=euc_kr --with-language=korean
--with-config-file-path=/usr/local/apache/conf
--enable-shmop --with-track-debug --with-zlib
--enable-track-vars
--enable-calendar
--prefix=/usr/local/php
--enable-ftp
--enable-sockets
--enable-mailparse
--enable-magic-quotes
[root@localhost]# make; make install
- APACHE而댄ㅤㄸㅘㅍ��
[root@localhost]# cd /usr/local/src/apache_1.3.26
[root@localhost]# ./configure
--prefix=/usr/local/apache
--activate-module=src/modules/php4/libphp4.a
--activate-module=src/modules/jk/libjk.a (�대�遺� 以ㅤㅁㅚㅈㅤㅅㅟㅈ)
--enable-module=so
--enable-shared=max
[root@localhost]# make; make install
[root@localhost]# httpd -l 紐⑤ㅤㅂㅑㅈ�ㅼㅤㅌㅟㄲ �ㅤㅃㅑㄽㅤㅆㅢㅋ
http_core.c
mod_so.c
[root@localhost]# cp ../php-4.2.3/php.ini-dist /usr/local/apache/conf/php.ini php�ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ �ㅤㄸㅜㅅㅤㅆㅣㄲ 蹂듭ㅤㄱㅝㅀ
[root@localhost]# vi /usr/local/apache/conf/httpd.conf apache�ㅤㅅㅒㄾ꼍�ㅼㅤㅈㅓㅌ
- APACHE遺�ㅤㄸㅘㅅ�� �ㅤㅁㅒㅄㅤㄹㅛㅄ�ㅤㅆㅝㅈㅤㅇㅖㄱ �깅ㅤㅈㅜㄾ
[root@localhost]# cp -p /usr/local/apache/bin/apachectl /etc/rc.d/init.d/apachectl
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc3.d/S85httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc5.d/S85httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc0.d/K15httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc1.d/K15httpd
[root@localhost]# ln -s /etc/rc.d/init.d/apachectl /etc/rc.d/rc6.d/K15httpd
- �ㅤㅅㅒㄾ꼍蹂�ㅤㄴㅣㄽ �ㅤㅃㅑㄽㅤㅆㅢㅋ
[root@localhost]# cd $JAVA_HOME
[root@localhost]# cd $TOMCAT_HOME
- Zend �ㅼㅤㅌㅟㄲ
[root@localhost] cd /usr/local/src
[root@localhost] tar xvfz ZendOptimizer-2.0.1-Linux_glibc21-i386.tar.gz
[root@localhost] cd ZendOptimizer-2.0.1-Linux_glibc21-i386
[root@localhost] ./install.sh �ㅤㅁㅒㅅㅤㄸㅒㄶ�� 留ㅤㅇㅚㅄㅤㅋㅚㄿ �ㅤㄱㅗㅋㅤㅈㅓㄵ�ㅤㅅㅒㄾㅤㅋㅚㄿ �ㅤㅅㅒㅀㅤㅈㅓㅌ(紐⑤Ⅴ硫� 洹몃ㅤㄲㅐㅀ Enter�� �ㅤㄲㅣㄺㅤㅈㅔㅆ)