페이지

2013년 6월 14일 금요일

Windows에 AMP와 MediaWiki 설치하기

1. 들어가기

    AMP는 Apache + MySQL +  Perl/PHP/Python에 대한 줄임말이다. LAMP (Linux + AMP)라고 하여 Linux에 설치하는 것으로 많이 소개하고 있지만 Windows에서도 간편하게 설치하여 사용할 수 있다.
 
    이 글은 Windows 7에 Apache + MySQL + PHP를 설치하고 그 기반에서 MediaWiki를 설치하여 실행하는 과정을 간략히 정리한 것이다.

2. MySQL

    * 버전 5.6.12

    1) 다운로드

        http://dev.mysql.com/downloads/installer/

        MySQL Installer 5.6.12

        Windows (x86, 32-bit), MSI Installer
        (mysql-installer-web-community-5.6.12.0.msi)

    2) 다운로드한 MSI 파일을 더블클릭하여 설치를 진행한다.
 
        설치 위치:
     
            C:\Program Files\MySQL
     
        선택 사항:
         
            Install MySQL Products
            Choosing a Setup Type:
                Developer Default
            MySQL Server Configuration:
                Server Configuration Type
                    Config Type: Developer Machine
                Enable TCP/IP Networking
                    Port Number: 3306
                    Open Firewall port for network access
                Root Account Password
                    MySQL Root Password: ****
                MySQL User Accounts
                    Add User
                        Username: user001
                        Host: <All Hosts (%)>
                        Role: DB Admin
                        Password: ****
                Windows Service Details
                    Windows Service Name: MySQL56

        주의:
     
            위에서 "Host: <All Hosts (%)>" 설정은 MediaWiki 설치를 완료하고 접속하면 DB 계정 관련 에러를 일으키는 원인이 된다. 이에 대해서는 이 글의 마지막 단원 "6. DB 계정 관련 에러"에서 원인과 해결 방법을 제시하고 있다. 애초에 문제를 일으키지 않도록 하려면 아래와 같이 설정하도록 한다.
         
                Host: localhost

    3) Windows 시작 메뉴에서 "MySQL 5.6 Command Line Client"를 실행하고 아래 명령들을 차례대로 수행해 본다.
 
        Enter password: ****
        mysql> show databases;
        mysql> use mysql;
        mysql> show tables;
        mysql> desc user;
        mysql> select host, user, password from user;
        mysql> exit

3. PHP

    * 버전 5.4.16

    1) 다운로드

        http://windows.php.net/download/#php-5.4
     
        VC9 x86 Thread Safe (2013-Jun-05 22:49:25)
        http://windows.php.net/downloads/releases/php-5.4.16-Win32-VC9-x86.zip
 
    2) 다운로한 ZIP 파일을 원하는 위치에 풀어 놓는다.
 
        설치 위치:
     
            C:\DevApps\php
     
    3) 설치한 디렉토리에서 php.ini-development을 php.ini로 복사하고 php.ini 파일을 열어 아래와 같이 수정한다.
 
        extension_dir=C:\DevApps\php\ext
        extension=php_mysql.dll
 
4. Apache

    * 버전 2.2.22

    1) 다운로드
 
        http://apache.mirror.cdnetworks.com//httpd/binaries/win32/
     
        http://apache.mirror.cdnetworks.com//httpd/binaries/win32/httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
     
    2) 다운로드한 MSI 파일을 더블클릭하여 설치를 진행한다.
 
        설치 위치:
     
            C:\Program Files (x86)\Apache Software Foundation\Apache2.2
 
        선택 사항:
     
            Server Information
                Network Domain: localhost
                Server Name: localhost
            Setup Type
                Typical
             
    3) {Apache 설치 디렉토리}/conf/httpd.conf 파일을 열고 아래 항목들을 추가한다.
 
        LoadModule php5_module C:/DevApps/php/php5apache2_2.dll
     
        AddHandler application/x-httpd-php .php
        PHPIniDir C:/DevApps/php

        <IfModule dir_module>
            DirectoryIndex index.html index.php
        </IfModule>

    4) PHP와 MySQL 연결을 테스트하기 위하여 아래 파일을 작성한다.

        {Apache 설치 디렉토리}/htdocs/phpinfo.php
     
            <?php
            mysql_connect('localhost', 'user001', 'your_password');
            phpinfo();
            ?>
         
    5) Apache를 재시작한 다음 브라우져로 아래 주소에 연결한다.
 
        http://localhost/phpinfo.php
     
        여러 종류의 정보를 나타내는 테이블들이 나타나고 mysql 정보를 표시하는 테이블에서 Active Links의 값이 1이면 PHP 페이지에서 MySQL 연결이 정상적으로 동작하는 것이다.
     
    6) 흔히 발생할 수 있는 몇 가지 예외 상황과 그에 대한 점검 사항을 아래에 적어 보았다.

        만약 PHP 구문이 그대로 표시된다면 httpd.conf에서 PHP 설치 경로가 잘못 지정되었을 가능성이 높다. 그렇다면 경로를 제대로 지정하고 Apache를 재시작하여 테스트를 해 본다.
     
        mysql_connect 구문이 정의되지 않았다는 에러 메시지가 페이지에 표시되면 php.ini 파일에서 지정한 extension_dir 경로를 통해서 php_mysql.dll을 찾을 수 없기 때문일 것이다.
     
        mysql_connect 실행 부분에서 사용자 계정으로 접근이 거부되었다는 경고 메시지가 페이지에 뜨면 지정한 계정의 사용자 이름과 암호가 올바른지 확인해 본다.

5. MediaWiki

    * 버전 1.21.1

    1) 다운로드
 
        http://www.mediawiki.org/wiki/Download
     
        http://download.wikimedia.org/mediawiki/1.21/mediawiki-1.21.1.tar.gz
     
    2) 요구 사항
 
        Web server such as Apache or IIS
        PHP version 5.3.2 or later
            Perl Compatible Reqular Expressions
                - Beginning with PHP 4.2.0 these functions are enabled by default.
                - The Windows version of PHP has built-in support for this extension.
         
            Standard PHP Library
                - This extension is available and compiled by default in PHP 5.0.0.
        Database Server
            MySQL 5.0.2 or later
            or PostgreSQL 8.1 or later
            or SQLite
 
    3) 다운로드한 파일의 압축을 풀고 아래 위치로 옮긴다.
 
        {Apache 설치 디렉토리}/htdocs/wiki
     
    4) 브라우져를 열고 아래 URL로 접속한다. 그러면 설정을 시작하기 위한 페이지를 보여 줄 것이다.
 
        http://localhost/wiki
     
        언어
     
            설치 언어: ko - 한국어
            위키 언어: ko - 한국어
         
        사용 환경 검사
     
            이 환경이 미디어위키 설치에 적합한지 기본 검사를 실행합니다. 설치 중 도움이 필요하다면 이 검사 결과를 함께 제공해주어야 합니다.
            PHP 5.4.16(이)가 설치되었습니다.
            경고: APC, XCache 또는 WinCache를 찾을 수 없습니다.
            개체 캐싱을 활성화하지 않습니다.
            GNU diff3를 찾을 수 없습니다.
            GD 라이브러리나 ImageMagick를 찾을 수 없습니다.
            그림 섬네일이 비활성화됩니다.
            "http://localhost"(을)를 서버 이름으로 사용합니다.
            "http://localhost/wiki"(을)를 서버 URL로 사용합니다.
            경고: 유니코드 정규화를 처리할 intl PECL 확장 기능을 사용할 수 없기 때문에 느린 순수한 PHP 구현을 대신 사용합니다.
            높은 트래픽 사이트에서 실행하려면 유니코드 정규화를 읽어보시기 바랍니다.
            환경이 확인되었습니다. 미디어위키를 설치할 수 있습니다.

        데이터베이스에 연결
     
            데이터베이스 종류: MySQL
            MySQL 설정
                데이터베이스 호스트: localhost
                이 위키 식별
                    데이터베이스 이름: my_wiki
                    데이터베이스 테이블 접두어:
                설치를 위한 사용자 계정
                    데이터베이스 사용자 이름: root
                    데이터베이스 비밀번호: ****

        데이터베이스 설정
         
            웹 접근을 위한 데이터베이스 계정
                데이터베이스 사용자 이름: user001
                데이터베이스 비밀번호: ****
            스토리지 엔진: InnoDB
            데이터베이스 문자 집합: 바이너리
         
        이름
     
            위키 이름: Mercury
         
            프로젝트 이름공간:
                위키 이름과 같은 이름: Mercury
         
            관리자 계정
                사용자 이름: your_wiki_admin
                비밀번호: ****
             
        설정
     
            사용자 권한 프로필:
                열린 위키
            저작권 및 라이선스:
                라이선스 바닥글 없음
             
        설치
     
        완료

            LocalSettings.php를 다운로드하고 아래 위치로 복사한다.
                {Apache 설치 디렉토리}/htdocs/wiki/LocalSettings.php
            브라우져를 열고 아래 URL로 접속하면 Wiki 페이지로 들어간다.
                http://localhost/wiki
         
6. DB 계정 관련 에러

    1) MediaWiki 설치 완료하고 나서 브라우져로 아래 URL에 접속했더니 user001 계정으로 DB 접근이 거부되었다고 한다.
 
        http://localhost/wiki
     
    2) mysql 콘솔로 사용자 테이블을 살펴 보았다.
 
        C:\Users\Admin>"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root -p
        Enter password: *******
     
        mysql> show databases;
        mysql> use mysql;
        mysql> show tables;
        mysql> desc user;
        mysql> select host, user, password from user;
        +-----------+---------+-------------------------------------------+
        | host      | user    | password                                  |
        +-----------+---------+-------------------------------------------+
        | localhost | root    | *98CE4C1372B6A23FF1F0E71197948882FF18145E |
        | 127.0.0.1 | root    | *98CE4C1372B6A23FF1F0E71197948882FF18145E |
        | ::1       | root    | *98CE4C1372B6A23FF1F0E71197948882FF18145E |
        | %         | user001 | *98CE4C1372B6A23FF1F0E71197948882FF18145E |
        | localhost | user001 |                                           |
        +-----------+---------+-------------------------------------------+
        5 rows in set (0.00 sec)
     
    3) 문제의 원인과 해결 방법은 아래와 같다.
 
        원인:
     
            MySQL 설치 과정에서 All Hosts (%)를 대상으로 하여 user001을 추가하였다. 하지만 MediaWiki는 설치 도중 "웹 접근을 위한 데이터베이스 계정" 항목에서 지정한 user001에 대하여 localhost를 대상으로 한다고 간주하고 동일한 MySQL 계정이 없으니 새로 추가했다. 하지만 그 계정의 암호가 지정되어 있지 않다. 또한 localhost를 대상으로 추가된 user001에게는 select, delete, update, insert 등에 대한 권한도 주어지지 않았다는 것을 알 수 있다.
 
        해결:
     
            MySQL Workbench 프로그램을 실행해서 user001@localhost에 대한 암호와 권한을 설정해 준다. 또는 localhost를 대상으로 하는 user001 계정을 지우고 모든 호스트를 대상으로 하는 user0001 계정의 아래 설정 값을 localhost로 바꾸어 준다.
         
                Limit Connectivity to Hosts Matching: localhost
 

국어 맞춤법 참고 자료

  제목 설명(인용) 출처 IT 글쓰기와 번역 노트 IT 기술 문서 및 서적을 집필/번역/교정하면서 얻은 경험/정보/지식을 공유합니다. 전뇌해커 [우리말 바루기] ‘대로’의 띄어쓰기 명사 뒤에서는 붙여 쓰고, 그 외에는 띄어 쓴다고 생각하면 쉽다. 다...