============================================================ LAB> APM 설치 static 방식 컴파일 !!! 실무에서는 가끔씩 한 대의 서버에서 테스트용으로 여러개의 !!! 아파치 웹서버를 설치해서 사용 경우도 존재한다. !!! 여기서는 한 대의 서버에 두 개의 웹서버를 설치하는걸로 한다. !!! 중요하는 것은 두 개의 웹서버가 떠지기 위해서는 서로간의 !!! 포트번호가 충돌이 없어야 한다는 조건이 선행되야 한다. -- 조건 -- 1. 한 대의 서버에 (DSO, Static) 둘 다 설치 - 기존의 DSO 로 운영되는 서버에 Static 방식을 설치한다. 2. 설치 디렉토리 - Apache(/usr/local/apache_static) - Php(/usr/local/php_static) 3. 아파치 웹서버 포트 - Port : 8000 -- 조건 -- Mysql 설치 : 이미 설치되어 있으므로 mysql은 설치를 생략한다. Apache 설치 : static 방식으로 컴파일한다. Php 설치 : static 방식으로 컴파일한다. - 설치 순서 Mysql(1,2,3,4)->Apache(1)->Php(1,2,3,4)->Apache(1,2,3,4) - Mysql 설치 Mysql은 이미 설치되어 있으므로 생략한다. - Apache 설치 # rm -rf apache_1.3.41 # tar xzf apache_1.3.41.tar.gz # rm -rf php-4.4.8 # tar xzf php-4.4.8.tar.gz # cd apache_1.3.41 # ./configure --prefix=/usr/local/apache_static - php4 모듈을 확인한다. (현재는 없다. X) # ls src/modules example extra NWGNUmakefile README experimental Makefile proxy standard - static 으로 컴파일하기 위해서 php 옵션중에 --with-apache를 준다. - php의 환경설정에서 여러 모듈들이 있지만 여기서는 생략한다. # cd ../php-4.4.8 # ./configure \ --prefix=/usr/local/php_static \ --with-apache=../apache_1.3.41 \ --with-mysql \ --with-zlib # make # make install # cp php.ini-dist /usr/local/php_static/lib/php.ini - php4 모듈을 확인 (O) # ls src/modules example extra NWGNUmakefile proxy standard experimental Makefile php4 README - 아래 두 개의 명령어중 하나를 이용하여 실행한다. # ./config.status \ --enable-module=vhost_alias \ --activate-module=src/modules/php4/libphp4.a or # ./configure \ --prefix=/usr/local/apache_static \ --enable-module=vhost_alias \ --activate-module=src/modules/php4/libphp4.a # ls -ld /usr/local/*static -- php 와 port 번호를 설정하고 웹페이지에 연동 여부를 확인 -- - httpd.conf 에서 포트와 php 인식을 설정한다. Port 8000 .php .html 인식 - 연동이 잘 되었는지 확인한다. http://ipaddress:8000/ .... # vi /usr/local/apache_static/conf/httpd.conf -- /usr/local/apache_static/conf/httpd.conf -- : Port 8000 : <IfModule mod_dir.c> DirectoryIndex index.html index.php </IfModule> : : - 800번 라인 부근에 위치 아래 두 줄을 추가한다. AddType application/x-tar .tgz AddType application/x-httpd-php .php .html AddType application/x-httpd-php-source .phps : : -- /usr/local/apache_static/conf/httpd.conf -- # /usr/local/apache_static/bin/apachectl start # netstat -nltp | grep :80 tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 14069/httpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21897/httpd # cd /usr/local/apache_static/htdocs/ # rm -fr * # echo '<? phpinfo(); ?>' > index.html - DSO, static 확인 DSO 확인 : - httpd -l http_core.c mod_so.c - ls /usr/local/apache/libexec libhttpd.so mod_auth.so mod_include.so mod_userdir.so libphp4.so ... static 확인 : - /usr/local/apache_static/bin/httpd -l http_core.c mod_vhost_alias.c : : mod_auth.c mod_setenvif.c mod_php4.c <-- - ls /usr/local/apache/libexec ============================================================
============================================================ 로그인 기능 구현 +--------------------------------+ | | | | v login.html ---> loginok.html ---> 로그인 userid, userpw 검사 (세션파일 생성 /tmp/sess_랜덤문자열 ) - index.html 의 소스 조건 전송방식 : mothod=post 전송할 파일 : action=loginok.html 전송할 사용자 변수 : name=userid 전송할 비밀번호 변수 : name=userpw +----------+-----------------+ | 사용자 | | +----------+-----------------+ | 비밀번호 | | +----------+-----------------+ | 로그인 | +----------------------------+ -- login.html -- <? session_start(); ?> <html> <head> <title> ::: 로그인 ::: </title> </head> <body> <? // 로그인을 했다면 if(isset($_SESSION['userid'])) { ?> <table align=center cellpadding=3 cellspacing=1 bgcolor=black width=300> <tr bgcolor=white> <td align=center> <?=$_SESSION['userid']?> 님 환영합니다. </td> </tr> <tr bgcolor=white> <td align=center> <a href=logout.html>로그아웃</a> </td> </tr> <? } else { ?> <form method=post action=loginok.php> <table align=center cellpadding=3 cellspacing=1 bgcolor=black width=300> <tr bgcolor=white> <td align=center> id </td> <td> <input type=text name=userid> </td> </tr> <tr bgcolor=white> <td align=center> pw </td> <td> <input type=password name=userpw> </td> </tr> <tr bgcolor=white> <td align=center colspan=2> <input type=submit value=로그인> </td> </tr> </table> </form> <? } ?> </body> </html> -- login.html -- -- loginok.html -- <? session_start(); // /tmp/sess_랜덤문자열 세션파일을 생성 // Array ( [userid] => aaa [userpw] => 1234 ) // print_r($_POST); // 나중에는 DB에서 꺼내와서 변수로 등록해야 하지만 // 현재는 그냥 변수로 처리한다. $dbuser = "linux"; $dbpass = "linux1234"; // 사용자와 비밀번호가 같다면 // if(strcmp($_POST['userid'], $dbuser) == 0) if($_POST['userid'] == $dbuser && $_POST['userpw'] == $dbpass) { // 세션변수를 생성하고 login.html 로 보낸다. // $_SESSION[userid] = $_POST[userid]; X $_SESSION['userid'] = $_POST['userid']; echo "<script language=JavaScript> <!-- location.href = 'login.html'; --> </script> "; exit; } else { echo "<script language=JavaScript> <!-- alert('사용자와 비밀번호를 확인해주세요!!!'); location.href = 'login.html'; --> </script> "; exit; } ?> -- loginok.html -- -- logout.html -- <? session_start(); session_destroy(); echo "<script language=JavaScript> <!-- location.href = 'login.html'; --> </script> "; ?> -- logout.html -- # while : > do > ls -l /tmp > sleep 2 > clear > done ============================================================
Linux/기타