'2011/07'에 해당되는 글 5건

  1. 2011.07.27 아파치2 톰캣6연동 by verynyang poppy
  2. 2011.07.19 ip로는 접속불가, 도메인으로만 접속하기 by verynyang poppy
  3. 2011.07.14 mysqli 설치 by verynyang poppy
  4. 2011.07.11 이클립스에서 프로젝트 add가 안될때 by verynyang poppy (3)
  5. 2011.07.07 apache2.2.x에서 mod_ssl.so 추가하기 by verynyang poppy (2)

아파치2 톰캣6연동

setup 2011.07.27 12:24


참고 url: http://www.zoomup.kr/skin/board/mw.basic/mw.proc/mw.print.php?bo_table=server&wr_id=8

기존의 안되던 연동에서 내가 고친부분
아파치 conf/workers.properties 에서
===================================================================================================
workers.tomcat_home=/usr/local/tomcat
workers.java_home=/usr/local/java
ps=/
worker.list=ajp13 =>worker의 이름

worker.ajp13.port=8009
worker.ajp13.host=somedomain.com
worker.ajp13.type=ajp13   =>얜 그냥 타입임
worker.ajp13.lbfactor=1
===================================================================================================

아파치 conf/uriworkermaps.properties 파일 추가해줌 =>.do나 .jsp로 끝나는건 탐캣으로 넘기겠다
===================================================================================================
/*.do=ajp13
/*.jsp=ajp13
===================================================================================================

아파치.conf/httpd.conf
===================================================================================================
#
#Mod_jk settings
#
<IfModule jk_module>
   JkWorkersFile conf/workers.properties
   JkLogFile logs/mod_jk.log
   JkLogLevel error
   JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"
</ifModule>
===================================================================================================

아파치 conf/extra/httpd-vhosts.conf
===================================================================================================
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/tomcat/webapps"
    JkMountFile /usr/local/apache/conf/uriworkermaps.properties
    ServerName somedomain.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
===================================================================================================

톰캣의 conf/server.xml
===================================================================================================
    <!-- Connector port="8080" protocol="HTTP/1.1"   =>톰캣만으로 돌리는 port 주석처리
               connectionTimeout="20000"
               redirectPort="8443" / -->


<Engine name="Catalina" defaultHost="somedomain.com">
===================================================================================================

이렇게 설정을 바꿔주고 tomcat 과 아파치를 재시작하니
연동이 되었다.

Posted by verynyang poppy

아파치의 httpd.conf에서는 특정아이피를 허용,차단하는 설정이 있지만
ip로접근했을때만 접속이 안되게 하려면 어떻게 하는걸까?

아파치의 기본 DocumentRoot는
httpd.conf에
/usr/local/apache/htdocs 이렇게 기본으로 설정되어있다.

아파치로 서비스되는 DocumentRoot의 디렉토리가
기본설정디렉토리와 다른경우는 도메인으로만 접속이되고
ip로는 접속이 되지 않는구려...
Posted by verynyang poppy

mysqli 설치

setup 2011.07.14 14:03

php가 설치된 디렉토리로 간다
#cd /usr/local/php-5.2.14/ext/mysqli

phpize를 실행해준다. 권한이 없다면 permission에러남
#/usr/local/bin/phpize

그럼 이런결과가 나온다
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519

그리고나서 설치를 진행한다
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/local/mysql/bin/mysql_config
그리고 컴파일 make

모듈을 복사해둘 디렉토리를 만든다
# mkdir /usr/local/lib/php/extensions

복사를 하자
cp /usr/local/php-5.2.14/ext/mysqli/modules/*.* /usr/local/lib/php/extensions/

php.ini 파일에서 extension directory의 경로와 모듈명을 추가해준다.
나의 경우는 /usr/local/php/lib/아래에 php.ini가 없어서
php의 소스폴더 /usr/local/php-5.2.14아래에 있는
php.ini-dist파일을 복사해서 /usr/local/php/lib/php.ini에 넣고 수정했다. php.ini-dist는 개발용(display_error옵션이 켜져있어 디버깅가능)이고 php.ini-recommended는 운영할때 쓴다.
extension_dir = "/usr/local/lib/php/extensions/"
extension=mysqli.so


아파치 재시작
mysqli가 설치되었는지의 여부는 phpinfo()에서 mysqli가 검색되는지의 여부로 확인할 수 있다.

이렇게 되면 php소스에서 mysqli를 이용한 바인딩변수처리가 가능해지게 된다.
<a.php>
private $db_host = "211.234.56.789";//여기서 포트를 넣으면 에러

private $db_name = "mydbname";
private $db_user = "myid";
private $db_pass = "mypass";

function DBi(){
      $this->mysqli = new mysqli($this->db_host, $this->db_user, $this->db_pass, $this->db_name);

    /* check connection */
    if (mysqli_connect_errno()) {
       printf("Connect failed: %s\n", mysqli_connect_error());
       exit();
     }

 }

<b.php>
include_once "a.php";

private $auth;  // 권한값
private $name;
               
//생성자
function AdminPassDB() {
    $this->DBi(); // 디비 접속 초기화.....
    $this->auth = "";        // 권한
}

//mysqli 모듈 설치 후 바인드변수로 받도록 수정 2011.07.14-
function executeLoginResult($tablename, $id, $passwd){

   $query = "select auth, passwd, id from ".$tablename." where id=?";
   $stmt = $this->mysqli->prepare($query);
   $stmt->bind_param('s', $id);  
   $stmt->execute();

   /* store result */
   $stmt->store_result();

   /* bind result variables */
   $stmt->bind_result($authr, $passwdr, $idr);

   if($stmt->num_rows > 0){  // 성공시 권한값 추출
      while($stmt->fetch()){
           if($passwd!=$passwdr || $id!=$idr){
             $this->auth = "ID";//비번이 일치하지 않을 때
           }else {
             $this->auth = $authr;
             $this->name=$namer;
             $this->email=$emailr;
           }
      }
    }else{
      $this->auth = "NOTHING"; // 아이디 패스워드 모두 없을
    }
    $stmt->close();
    return $this->auth;

  }





Posted by verynyang poppy

svn으로 받은 프로젝트를 이클립스에서 띄운 톰캣에 추가하려고 하는데
Tomcat version 1.6 이 어쩌구 등등 버전의 문제로 add버튼이 활성화되지 않을 때가 있다.
이때는 workspace의 해당프로젝트 폴더로 가보면,
.settings라는 폴더가 있다.
이 아래의 파일 중

org.eclipse.wst.common.project.facet.core.xml
위의 이름의 폴더를 open해준다.

그럼 install될 때의 자바버전등이 명시되어있다.
자바버전을 바꾸어 준다던지 할수도 있지만

간편하게 톰캣에 추가되는 다른 프로젝트에서
복사해서 내용을 붙여준다.

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="jst.web"/>
  <fixed facet="jst.java"/>
  <installed facet="jst.java" version="5.0"/>
  <installed facet="jst.web" version="2.5"/>
</faceted-project>
 이런식으로.
그리고 해당 프로젝트를 refresh한 다음
서버탭에서 add and remove를 클릭했을때
문제없이 해당 프로젝트가 추가되는 것을 볼 수 있다.
Posted by verynyang poppy

아파치를 설치할 때 시작옵션에 지정해 주지 않으면
ssl과 관련된 내용은 나중에 지정해 줘야 한다.

ssl이 설치 되었는지의 여부는
httpd –l
위의 명령어를 써서 mod_ssl.c이 나오면 설치된 것이다.,

/usr/local/apache2/modules아래에
mod_ssl.so라는 모듈이 존재하는지를 살펴본다.
있으면 ssl모듈이 SharedObject형태로 설치된 것이다.

이것이 없을 경우.
먼저 openssl을 설치해야한다.
/usr/local에서

wget –c http://www.openssl.org/source/openssl-0.9.8i.tar.gz
tar
xvfz openssl-0.9.8i.tar.gz
cd openssl-0.9.8i
./configure shared
make
make install
이렇게하면 /usr/local/ssl에 디폴트로 설치된다.

그리고 lib path에 등록해야한다
# vi /etc/ld.so.conf 수정
/usr/local/ssl/lib
추가

# ldconfig


그리고나서 아파치를 컴파일하자.
설치된 아파치의 소스로 가서(예를들면 이런곳: /usr/local/httpd-2.2.17)

./configure --prefix=/usr/local/apache2 --enable-module=so --enable-so  --enable-mods-shared=ssl --with-ssl=/usr/local/ssl --enable-ssl=shared

위의 명령어를 치고 Enter

이때 중요한 것은 module=so로 잘 쳤는지 확인해 보는 것이다.
modules=so라고 치면 에러가 나니 주의!

그리고
#make

#maike install
을 해주면 된다.

컴파일을 할때 이미 돌아가고 있는 서비스라면 prefix를 다른 폴더로 바꿔준다.
prefix=/usr/local/apache222 => 이런식으로.
이렇게 하면 컴파일 된 후에 
prefix=/usr/local/apache2 /modules라는 폴더가 생기는데
이 안에 mod_ssl.so 모듈이 자리잡고 있다.
그럼 mod_ssl.so를 기존의 아파치/modules로 복사해 준다.

<이후 conf에서 설정해 줄 것들>
1. 아파치/cont/httpd.conf

LoadModule ssl_module modules/mod_ssl.so
NameVirtualHost ip주소:80

2. 아파치/cont/extra/httpd-ssl.conf
NameVirtualHost ip주소:443

<VirtualHost IP주소:443>
     ....
    ServerName www.도메인.co.kr:443
   SSLEngine on
    SSLCertificateFile conf/ssl/www.domain.com.crt
ß 인증서 파일 경로
    SSLCertificateKeyFile conf/ssl/www.domain.com.key ß 키파일 경로
    SSLCACertificateFile conf/ssl/chainca.crt ß 중계인증서 파일경로 
</VirtualHost>
 
# SSL 을 통해서만 접근할 수 있는 디렉토리 설정.
<Directory "/some/html/dir/secure">
     SSLRequireSSL
     ....
</Directory >


기존 아파치/bin에서
#apachectl stop
# apachectl start로 해주면 된다.

시작시 비밀번호 입력안하고 자동으로 시작하도록 설정하는것은
/usr/local/apache2/conf/ssl/pw.sh를 만들어준다.
내용은 아래와 같이.
#!/bin/sh
echo "mp8557"
그리고
chmod 700 /usr/local/apache2/conf/ssl/pw.sh

/usr/local/apache2/conf/httpd.conf에 아래의 내용을 추가해준다
<IfModule mod_ssl.c>
#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
#SSLPassPhraseDialog  builtin
SSLPassPhraseDialog  exec:/usr/local/apache2/conf/ssl/pw.sh
</IfModule>

그리고 나서
/usr/local/apache2/bin/에가서
apachectl configtest 라고 하면 문법검사를 해준다

이상이 없다면
apachectl start

기존 띄우던 페이지
기존의 포트가 80이라면 그냥 http://www.기존도메인 => https://www.기존도메인으로 확인해 볼수있다.

나의경우 8080포트를 사용하고 있었기에 기존은 이렇게 연결되고 있었다.
url: http://www.도메인:8080
https는 기본 port가 443이므로 다른 보안관련 포트 설정인경우 포트를 붙여주지만
그냥은 https://www.도메인 로 띄우면 된다.

이상 확인 끝.
보안설정이 필요한 페이지를 https://로 호출하고
그페이지에서 다른페이지로 갈때 http://로 호출해주면 된다.







Posted by verynyang poppy


티스토리 툴바