본문 바로가기

Technical/Development

PHP5 + lighttpd fastcgi + mongodb + mysql(openeuse 11.3) 개발/운영 환경 설정

Opensuse 11.3, 12.1 각각에 대해 2회에 걸쳐서 정리

* howtoforge.com 내용 참조, 테스트 실행 & 보완


1. Lighttpd & php5 환경 설정


# zypper in -y lighttpd

# chkconfig --add lighttpd

# chkconfig lighttpd on

# service lighttpd start


# zypper in -y php5-fastcgi


* 아래 라인을 찾아서 un-comment

# vi /etc/php5/fastcgi/php.ini 

cgi.fix_pathinfo=1


* 아래 라인을 찾아서 un-comment

# vi /etc/lighttpd/modules.conf

include "conf.d/fastcgi.conf"


server.modules = (

...

  "mod_auth",

...

)


* 아래 라인을 추가

# vi /etc/lighttpd/lighttpd.conf

include "conf.d/auth.conf"


* 아래 라인들을 un-comment 하고 내용을 수정

# vi /etc/lighttpd/conf.d/auth.conf

auth.debug = 2

auth.backend = "plain"

auth.backend.plain.userfile  = "/etc/lighttpd/lighttpd.user"


auth.require = ( "/" =>

                      (

                        "method"  => "basic",

                        "realm"   => "Password protected area",

                        "require" => "user=loginid"

                      ),

                    )


* 아래 로그인 정보를 등록하고 저장

# vi /etc/lighttpd/lighttpd.user

loginid:loginpassword


* 아래 라인이 있는지 확인

# vi /etc/lighttpd/conf.d/fastcgi.conf

server.modules += ( "mod_fastcgi" )


* 아래 부분을 찾아서 un-comment

fastcgi.server = ( ".php" =>

                   ( "php-local" =>

                     (

                       "socket" => socket_dir + "/php-fastcgi-1.socket",

                       "bin-path" => server_root + "/cgi-bin/php5",

                       "max-procs" => 1,

                       "broken-scriptfilename" => "enable",

                     )

                   ),

                   ( "php-tcp" =>

                     (

                       "host" => "127.0.0.1",

                       "port" => 9999,

                       "check-local" => "disable",

                       "broken-scriptfilename" => "enable",

                     )

                   ),


                   ( "php-num-procs" =>

                     (

                       "socket" => socket_dir + "/php-fastcgi-2.socket",

                       "bin-path" => server_root + "/cgi-bin/php5",

                       "bin-environment" => (

                         "PHP_FCGI_CHILDREN" => "8",

                         "PHP_FCGI_MAX_REQUESTS" => "10000",

                       ),

                       "max-procs" => 2,

                       "broken-scriptfilename" => "enable",

                     )

                   ),

                )

* 위의 옵션은 소규모 접속일 경우이고, 일반적인 다중 접속 사이트일 경우 아래와 같이 규모에 맞게 적당히 옵션을 조정한다.

"PHP_FCGI_CHILDREN" => "16"

"max-procs" => 5


# service lighttpd restart


* lighttpd의  default 문서 홈디렉토리는 /srv/www/htdocs 이다


# vi /srv/www/htdocs/info.php

<?php

phpinfo();

?>


* 브라우저로 접속 확인




2. MySQL과 utility 패키지 설치


* Web 을 통하지 않고 직접 DB접속을 위해 접속 클라이언트를 사용할 경우에는 아래와 같이 클라이언트를 설치한다.

# zypper in -y mysql-community-server-client


* MySQL 및 일반적으로 많이 사용하는 드라이버 설치

# yast2 -i php5-mysql php5-bcmath php5-bz2 php5-calendar php5-ctype php5-curl php5-dom php5-ftp php5-gd php5-gettext php5-gmp php5-iconv php5-imap php5-ldap php5-mbstring php5-mcrypt php5-odbc php5-openssl php5-pcntl php5-pgsql php5-posix php5-shmop php5-snmp php5-soap php5-sockets php5-sqlite php5-sysvsem php5-tokenizer php5-wddx php5-xmlrpc php5-xsl php5-zlib php5-exif php5-pear php5-sysvmsg php5-sysvshm


3. mongodb 드라이버 설치


* pecl.php.net 사이트를 이용하여 최신 버전의 php mongo 드라이버를 찾아서 다운로드 한다.


# zypper in -y php5-devel

# wget http://pecl.php.net/get/mongo-1.3.0beta2.tgz

# tar xvzf mongo-1.3.0beta2.tgz; cd mongo-1.3.0beta2

# phpize

# ./configure

# make

# make install

# ldconfig

# vi /etc/php5/fastcgi/php.ini -> 아래 라인을 추가

extension=mongo.so


# service lighttpd restart


* 1의 과정과 같이 브라우저를 통해 php 환경에 맞게 설치된 드라이버들을 최종 확인한다.