2009년 7월 16일 목요일

IIS7 + FastCGI + PHP + MySQL 설치 문서

http://daybreaker.springnote.com/pages/1722942.xhtml

IIS7 설치

IIS7 이상 버전을 사용하려면 Vista 또는 Server 2008을 써야 한다. 필자는 Vista만 써봤으므로 그것을 기준으로 하겠다.

  1. 제어판 -> 프로그램 -> Windows 기능 추가/제거로 들어가 Windows 기능 창을 연다.
  2. 인터넷 정보 서비스 -> 웹 관리 도구를 체크한다. (FTP 등 필요한 것을 더 체크해도 된다.)
  3. 확인 눌러서 설치.
  4. 웹브라우저에서 http://localhost 또는 http://127.0.0.1을 열고 환영 페이지가 나오는지 확인한다.
    기본 웹디렉토리는 C:\inetpub\wwwroot\이므로, UAC 없이 접근하려면 이 폴더의 속성 -> 보안 탭에서 자신의 사용자 계정에 모든 권한을 허가해주면 좀더 편하게 쓸 수 있다.

※ Vista SP1부터는 IIS7 자체에 FastCGI 모듈이 내장되어 있으므로 그것을 쓰면 된다.

PHP 설치

  1. php.net에서 최신 PHP 버전을 받아 설치한다. (5.2 이상 버전 권장, 글 쓰는 현재 5.2.6이 최신 버전임)
    이때 installer보다는 zip package를 권장하는데, 그 이유는 isntaller는 설치는 편리하지만 확장 기능(gd, mysql 등등)이 하나도 안 들어있기 때문이다. 나중에 zip package를 받아 확장기능 폴더만 복사해넣어도 되긴 하나 한 번에 하는 게 편하니까 zip package로 바로 하자.

    • FastCGI를 이용하면 각 연결을 각각의 독립된 프로세스가 처리하게 되므로, 최대한의 성능을 내기 위해 non-thread-safe 패키지를 이용하는 것이 좋다.
  2. 적당한 디렉토리에 압축을 푼다.
    zip으로 받았을 경우는 그냥 편하게 C:\php에 풀지만, installer로 하면 C:\Program Files\PHP에 설치되므로 참고한다. 여기서는 C:\PHP에 깔았다고 가정하겠다.
  3. IIS 관리자를 열고 왼쪽의 트리에서 사이트 -> Default Web Site를 클릭하면 오른쪽에 관련 작업 아이콘들이 나타난다.
  4. 그중 [처리기 매핑]을 더블클릭하고, 오른쪽의 작업 메뉴에서 [모듈 매핑 추가...]를 누른다.
  5. 추가 대화상자에서 [요청 경로] : "*.php", [모듈] : "FastCgiModule", [실행 파일 (옵션)] : "C:\PHP\php-cgi.exe", [이름] : "적당히 알아서. 필자는 PHP via FastCGI로 설정했음." 와 같이 설정하고 확인을 누른다.
  6. 웹디렉토리(wwwroot)에 info.php를 만들고 "<?php phpinfo(); ?>"라고 써넣은 다음 http://localhost/info.php를 쳐보자.
    웹브라우저에 php 정보 화면이 나오면 잘 된 것이다.

Tips!

  • 파일 업로드 기능 사용시 권한 관련 문제를 해결하려면 php.ini에서 uploaded_tmp_dir을 기본값이 아닌 다른 것으로 바꿔주는 것이 좋다. (IIS_IUSRS가 모든 권한을 가지는 디렉토리로)
  • php.ini의 설정을 변경하고 이것을 적용하려면, 웹사이트가 아닌 그 웹사이트에 연결된 응용프로그램 풀을 재생(refresh)해주면 된다. ISAPI 핸들러 형태로 php를 사용할 경우는 웹서버를 재시작하면 되지만, FastCGI의 경우 php가 외부 프로세스 형태로 실행되므로(IIS7의 기본 설정을 이용할 경우 NETWORK SERIVCE 사용자 권한을 가진다) 이를 관리해주는 응용프로그램 풀을 다시 로드해야 한다.
  • FastCGI를 위한 php.ini 추가 설정 참고:
    fastcgi.impersonate = 1
    cgi.fix_pathinfo = 1
    cgi.force_redirect = 0

    extension_dir = "./ext"

MySQL 설치

  1. mysql.com에서 적당한 버전을 받아 설치한다. 64bit 운영체제를 사용하더라도, php의 64bit용 Windows binary가 제공되지 않으므로 32bit를 쓰는 것이 편하다.
    패키지 중에 Windows Essentials를 받으면 무리 없다.
    (64bit와도 연동은 가능하지만 설정 과정에서 약간의 귀찮음이 있다.)
  2. 설치 완료 후 MySQL Server Instance Config Wizard를 실행한다.
    설정 과정에서 root 암호 및 기본 인코딩(기본 인코딩은 UTF-8 권장) 등을 지정하고, 커맨드 프롬프트에서 바로 실행할 수 있도록 PATH 추가 옵션을 체크해준다.
  3. PHP에서 인식시키기 위해, C:\PHP\php.ini에서 주석처리되어 있는 extension=php_mysql.dll을 주석 해제한다. (줄 앞에 붙은 세미콜론을 지워준다)
    내용이 없으면 적당한 곳에 추가해주면 된다. 취향에 따라 gd, mysqli, curl 등등을 켜준다.
  4. MySQL 설치된 폴더 안의 bin 폴더에 들어있는 libMYSQL.dll을 C:\Windows\System32 (32bit 윈도의 경우) / C:\Windows\SysWOW64 (64bit 윈도의 경우)에 복사한다.
  5. 다시 http://localhost/info.php를 열고 mysql 모듈이 잘 올라왔는지 확인한다. 만약 안 보일 경우 IIS 관리자에서 사이트를 재시작해준다.
  6. 커맨드 프롬프트에서 mysql -uroot -p를 실행하여 사용자 계정 등을 설정한다. 자세한 건 검색. -_-
  7. 간단한 php 스크립트를 만들어 접속 여부를 테스트해본다.

댓글 없음:

댓글 쓰기