64비트 윈도우즈에 아파치 웹 서버와 PHP, MySQL 설치하기

64비트 윈도우즈에 아파치 웹 서버와 PHP, MySQL 설치하기

전세계적으로 가장 많이 사용되고 있는 웹 서버는 아파치 웹 서버입니다. 아파치 웹 서버는 리눅스 운영체제에 최적화되어 있으며 안전성이 높습니다. 이 글에서는 64비트 윈도우즈에 아파치 웹 서버 최신 버전을 설치하는 방법을 알아볼 것입니다. 아파치 웹 서버는 리눅스뿐만 아니라 윈도우즈에서도 사용 가능한 웹 서버입니다. 개발자들은 PHP나 JSP와 같은 서버 스크립트를 테스트할 때 윈도우즈용 아파치 서버를 주로 사용합니다. 요즘 많이 사용되고 있는 64비트 윈도우즈에 아파치 웹 서버를 설치하여 PHP 스크립트를 테스트하는 방법을 자세하게 설명할 것입니다.

※ 이 글에서 설치하는 웹 서버는?
Microsoft Windows 8.1 64bit
Apache HTTP Server 2.4.27
MariaDB 10.2.7

PHP 7.1.7

아파치 웹 서버란?

먼저 웹 서버에 대하여 간단하게 설명하도록 하겠습니다. 웹 서버는 인터넷과 연결되어 있으며, 다른 컴퓨터에서 접속이 가능하고, 정보를 요청받아 전송해주는 컴퓨터를 말합니다. 개발자의 입장에서 본다면, 웹 서버는 서버측 스크립트를 테스트할 때 사용되는 일종의 소프트웨어입니다. 클라이언트에서는 실행할 수 없는 PHP, JSP, ASP, Perl, Python 등의 프로그래밍 언어로 작성된 파일을 실행할 수 있게 해줍니다. 우리가 인터넷을 돌아다닐 때 볼 수 있는 모든 사이트와 블로그가 웹 서버를 기반으로 작동하고 있습니다.

그 중에서 아파치 웹 서버(Apache HTTP Server)는 리눅스 시스템에서 가장 널리 사용되고 있는 웹 서버입니다. 빠른 속도와 높은 안전성이라는 장점이 있기 때문에 많이 사용되고 있습니다. 아파치 웹 서버(이하 아파치 서버)는 네이버나 페이스북과 같은 대규모 시스템에서도 사용되고 있는 세계 최고의 웹 서버입니다.

아파치 서버는 그 성능이 매우 우수함에도 오픈소스이기 때문에 어느 곳에서든지 무료로 사용할 수 있습니다. 또한 운영체제의 제한을 받지 않기 때문에 리눅스뿐만 아니라 윈도우즈에서도 사용할 수 있습니다. 윈도우즈를 개발 시스템으로 사용하고 있는 대부분의 웹 개발자는 본인의 윈도우즈 운영체제에 아파치 서버를 설치하여 개발된 소스코드를 로컬에서 테스트하고 있습니다. 인터넷에 업로드하지 않고 로컬에서 바로 테스트할 수 있기 때문에 좀 더 효율적입니다.

※ 참고: MariaDB는 MySQL을 기반으로 개발된 DBMS이므로 PHP MySQL 모듈과 100% 호환됩니다.

아파치 서버 + PHP + MySQL(MariaDB) 설치 준비

아파치 서버는 PHP와 MySQL(MariaDB)의 조합으로 사용되는 경우가 많습니다.

PHP는 문법이 쉽다는 장점과 다양한 함수를 제공하고 있다는 장점이 있습니다. 그리고 MySQL은 오픈소스 무료이면서 성능이 우수하다는 장점이 있기 때문에 아파치 서버 + PHP + MySQL의 조합이 많이 사용되고 있습니다. 그리고 모든 프로그램이 무료로 사용할 수 있는 오픈소스이기 때문에 이 세 개의 조합으로 웹 서버를 구성한다면 아무런 비용도 들지 않는다는 장점도 있습니다. 이 세 개의 조합은 짧게 줄여서 APM(Apache PHP MySQL)이라고 부릅니다.

아파치 서버와 PHP, MariaDB의 설치 파일은 다음 URL을 통하여 다운로드할 수 있습니다.

  1. Visual Studio 2015용 Visual C++ 재배포 가능 패키지
    https://goo.gl/kncWH3
  2. Apache 2.4.27 (for Windows x64)
    https://goo.gl/5gMVy8
    * 원본 페이지 바로가기 (최신버전 다운로드)
  3. MariaDB 10.2.7 (for Windows x86, x64)
    https://goo.gl/hZ4zXx
    * 원본 페이지 바로가기 (최신버전 다운로드)
  4. PHP 7.1.7 (for Windows x64 on VC15)
    https://goo.gl/RC3JGW
    * 원본 페이지 바로가기 (최신버전 다운로드)

이 글에서는 64비트 윈도우즈에 64비트 아파치 서버를 설치할 것입니다. 따라서 위 링크를 통하여 다운로드되는 설치파일이나 소스코드 압축파일은 모두 64비트용입니다. 64비트 아파치 서버를 사용한다면 PHP도 역시 64비트용으로 설치해야 합니다.

참고로 64비트 윈도우즈라 하더라도 32비트 소프트웨어도 설치는 가능합니다. 왜냐하면 윈도우즈에는 32비트 시스템 파일과 64비트 시스템 파일이 따로 존재하기 때문입니다.

※ 중요: 최신 버전의 아파치 서버와 PHP를 실행하기 위해서는 Visual C++ 2015 라이브러리가 필요합니다. Visual C++ 2015 라이브러리는 위의 1번 URL을 통하여 다운로드할 수 있습니다.

아파치 서버와 PHP를 설치하기에 앞서, 위에서 다운로드한 Visual C++ 2015 라이브러리를 가장 먼저 설치하시기 바랍니다. 이 라이브러리가 우선적으로 설치되지 않는 경우에는 아파치 서버와 PHP가 정상적으로 작동하지 않기 때문입니다. 다운로드한 파일을 실행하면 자동으로 설치가 진행됩니다. Visual C++ 2015 라이브러리도 64비트를 설치하시기 바랍니다.

아파치 서버 설치

다운로드한 httpd-2.4.27-Win64-VC15.zip 파일은 컴파일된 윈도우용 아파치 서버 파일이 포함되어 있는 압축파일입니다. 리눅스용 아파치 서버는 사용자가 직접 컴파일을 해야 하지만, 윈도우용은 미리 컴파일되어 배포되고 있습니다.

접근하기 쉬운 적당한 경로에 아파치 서버 압축 파일을 풀어줍니다. 이 글에서는 아파치 서버의 기본 설치 폴더인 C:\Apache24 에 압축을 풀었습니다.

압축을 풀었으면 다음 명령어를 실행하여 Windows 서비스에 아파치 서버를 등록합니다. 만약 접근 거부 오류 메시지가 나타난다면, 관리자 권한으로 실행을 해야 합니다. 이 때에는 아래의 내용을 커맨드 파일(*.cmd)에 저장한 후 관리자 권한으로 실행하면 됩니다.

    
C:\Apache24\bin\httpd.exe -k install

C:\Apache24 가 아닌 다른 곳에 압축을 풀었다면, 아파치 서버 설정 파일(httpd.conf)을 수정해야 합니다. {아파치 서버 설치 경로}\conf\httpd.conf 를 실행한 후, c:/Apache24 로 되어 있는 기본 설치 경로를 현재 설치되어 있는 아파치 서버의 설치 경로로 적당히 변경해줍니다. 메모장에서 c:/Apache24 를 검색한 후 수정하면 편합니다.

Windows 서비스에 아파치 서버가 잘 등록되었는지는 Windows 서비스 관리자에서 확인할 수 있습니다. Windows 서비스 관리자는 [제어판] – [시스템 및 보안] – [관리 도구] – [서비스] 로 접근이 가능합니다. 아니면 services.msc을 직접 실행해도 됩니다. 서비스 목록에 Apache 2.4 항목이 있다면 아파치 서버가 정상적으로 설치된 것입니다.

※ 참고: httpd.conf 의 내용 중에 서버 이름을 지정하는 ServerName 속성이 있을 것입니다. 서버의 도메인과 포트번호를 이용하여 ServerName의 값을 지정하면 됩니다. 예를 들면, localhost:80.

PHP 설치

위에서 다운로드한 php-7.1.7-Win32-VC14-x64.zip 파일은 64비트 윈도우용 PHP 파일이 포함되어 있는 압축파일입니다. 아파치 서버를 설치할 때와 마찬가지로 접근하기 쉬운 경로에 압축을 풀어줍니다. 이 글에서는 윈도우용 PHP의 기본 폴더인 C:\PHP 에 압축을 풀었습니다. 압축을 풀었다면 다음 과정을 통하여 PHP 설치를 마무리하도록 합니다.

PHP가 설치된 경로에 있는 php.ini-development 파일의 이름을 php.ini로 변경합니다. php.ini 파일은 PHP를 설정할 때 사용되는 파일입니다. 확장기능을 추가하거나 가상 호스트를 설정할 때 이 파일이 사용됩니다.

PHP 설치를 마무리하기 위해서는 php.ini 파일의 내용을 조금 수정해야 합니다. 수정하지 않으면 PHP에서 MySQL, GD와 같은 확장기능을 불러올 때 문제가 발생할 수도 있기 때문입니다.

우선 ; extension_dir = “./” 을 extension_dir = “C:\PHP\ext\” 로 수정합니다. 문자열 앞의 세미콜론은 꼭 삭제하시기 바랍니다. php.ini 에서 세미콜론은 주석으로 사용됩니다. 메모장에서 검색한 후 수정하면 편합니다.

그리고 Windows Extensions 부분에 있는 확장기능 설정 중에서 PHP가 MySQL 관련 확장기능 DLL 파일을 사용할 수 있도록 해야 합니다.

  • extension=php_mysql.dll PHP 7에서 지원 종료된 확장 → php_mysqli.dll로 대체
  • extension=php_mysqli.dll
  • extension=php_pdo_mysql.dll

이렇게 세 개두 개의 확장을 사용할 수 있도록 문자열 앞에 있는 세미콜론을 삭제해줍니다.

모든 내용을 수정했다면, php.ini 파일을 C:\Windows 폴더로 잘라내기/붙여넣기(이동O, 복사X)합니다. 복사/붙여넣기가 아니라 꼭 잘라내기를 하시기 바랍니다. 왜냐하면 PHP 폴더에도 php.ini가 존재하는 경우에는 Windows 폴더의 php.ini와 서로 충돌이 발생할 수도 있기 때문입니다.

아파치 서버와 PHP의 연동

아파치 서버와 PHP의 설치를 모두 마쳤으니, 이제는 아파치 서버와 PHP를 서로 연동시켜야 합니다. 아파치 서버와 PHP는 따로 설치되었기 때문에, 이 둘을 연동시켜주는 작업은 꼭 필요합니다.

우선, 아파치 서버의 기본 설정 파일을 수정해야 합니다. C:\Apache24\conf\httpd.conf 파일을 메모장에서 불러옵니다. 그리고 맨 아래쪽에 다음의 내용을 추가합니다.

PHPIniDir "C:/Windows"
LoadModule php7_module "C:/PHP/php7apache2_4.dll"
AddType application/x-httpd-php .html .php

위의 내용을 아파치 서버 설정 파일에 추가함으로써 아파치 서버와 PHP는 서로 연동됩니다. 모든 설정을 저장한 후, Windows 서비스 관리자에서 아파치 서버를 재시작하면 PHP와 아파치 서버가 함께 시작됩니다.

MariaDB 설치

윈도우즈용 MariaDB는 Windows Installer을 통하여 설치가 진행되기 때문에 설치 과정이 매우 간단합니다. 다운로드한 mariadb-10.2.7-winx64.msi 설치파일을 실행합니다. MariaDB를 실행하기 위해 필요한 부가적인 프로그램이 필요하면 추가적으로 설치를 진행하고, MariaDB 설치가 진행됩니다.

MariaDB를 설정하는 대화상자에서는 ROOT 계정의 패스워드와 MariaDB의 자동실행 여부를 지정할 수 있습니다. 본인의 취향에 맞게 설정하면 됩니다. 만약 자동실행 옵션을 선택하지 않는다면 MariaDB를 직접 실행해야 합니다. 직접 실행하는 방법으로는 윈도우 서비스 도구를 사용하는 방법과 MariaDB 콘솔을 사용하는 방법이 있습니다.

MariaDB 설치를 모두 마쳤다면, 아래의 PHP 소스코드를 이용하여 MariaDB가 제대로 동작하는지 확인합니다.

<?php
 
// 기본 타임존 설정
date_default_timezone_set('Asia/Seoul');
 
// 데이터베이스 테스트
$mysqli = new mysqli('localhost', 'root', 'password', 'information_schema');
if ($mysqli->connect_errno) {
    die('Connection Error ('.$mysqli->connect_errno.'): '.
    $mysqli->connect_error);
}
 
// PHP 정보 출력
phpinfo();

PHP 정보가 출력된다면 MariaDB와 아파치 서버, PHP가 제대로 작동하고 있다는 것을 의미합니다. 참고로 아파치 서버의 기본 문서 루트 경로는 C:\Apache24\htdocs 입니다. 이곳에 PHP 파일과 각종 HTML 파일을 저장하면 인터넷에서 확인할 수 있습니다. 이 경로는 httpd.conf 파일을 수정함으로써 바꿀 수 있습니다.

마무리

지금까지 64비트 윈도우즈에 64비트 전용 APM(Apache + PHP + MySQL-MariaDB)을 설치하는 방법을 알아보았습니다. 사실 64비트 윈도우즈에 32비트 APM을 설치하는 것도 가능합니다. 위에서도 말씀드렸듯이 64비트 윈도우즈에는 32비트 시스템 파일도 포함되어 있기 때문입니다. 하지만 32비트보다는 64비트 APM을 사용하는 것이 속도면에 있어서는 더 빠를 것입니다. 64비트 운영체제의 장점을 모두 활용할 수 있기 때문입니다.

아파치 서버와 PHP, MySQL은 전세계적으로 가장 많이 사용되고 있는 조합입니다. 개인적으로 블로그 스킨을 개발하거나 새로운 웹 프로그래밍 기술을 연구할 때에도 이 조합을 이용하면 매우 좋습니다.

29 Comments
  1. php 설치하는 과정에서 window extension 에서 extention=php_mysql.dll 이라는 줄이 없는데 그냥 제가 임의로 한줄 추가해도 되는걸까요

  2. 자꾸 스팸 인거 같다고 댓글이 안달려서 짧게짧게 나눠쓰는점 죄송합니다.

    1. 답이 늦어 죄송합니다. PHP 7으로 업그레이드되면서 기존의 mysql 확장 지원이 중단된 것 같습니다. mysqli와 호환이 가능하니 mysqli 확장을 사용하면 됩니다. 덕분에 글 수정을 할 수 있었습니다. 감사합니다.

    2. 댓글을 길게 작성하면 스팸으로 인식되는 문제는 현재 스팸필터 플러그인을 사용하고 있는데 여기에 문제가 있는 것 같습니다. 워드프레스가 아무래도 외국 소프트웨어라서 그런 것 같습니다.

  3. 글 따라 했는데 php가 설치된 건지 확인하려고 테스트 해보니 제대로 되지 않네요..

  4. 우선 이 글을 따라서 설치를 진행했습니다. 근데 다른 블로그에

    이 예제를 통해 설치확인을 하는 걸 보고 따라했더니 이 페이지에 연결할 수 없음 이렇게 나오네요..
    설치가 잘못된 건지 연동과정?이 잘못 된건지 잘 모르겠습니다..ㅜ

    1. PHP.ini 파일이나 아파치 설정 파일이 잘못 되었을 가능성이 있어보입니다.
      연동과정에 문제가 있는지 보려면 services.msc에서 아파치웹서버 서비스의 설명 내용에 PHP가 포함되어 있는지 확인하면 됩니다. 정상적으로 PHP와 아파치가 연동되었는데 문제가 발생한다면 설정 파일이 잘못 되었거나 웹 경로를 잘못 지정한 경우입니다.

  5. 마리아db할때
    php소스코드 어디에다 넣는거에요?

    1. 데이터베이스에 연결하는 소스코드는 보통 PHP 소스코드 상단에 위치시키는 것이 좋습니다. 이렇게 하면 어디에서든지 DB에 연결할 수 있기 때문입니다.

  6. C:\PHP\php.ini 파일을 C:\Windows 폴더로 잘라내기하는 이유가 따로 있을까요?
    C:\Apache24\conf\httpd.conf 파일에 작성한
    PHPIniDir “C:/Windows” 를
    PHPIniDir “C:/PHP” 로 잡아주면 php.ini파일 옮기지 않아도 될 것 같은데 왜 Windows로 옮기는지 궁금합니다~!

    1. 저도 PHPIniDir 값을 PHP가 설치된 디렉토리로 설정하면 된다고 생각하는 사람 중 한 명입니다. 그런데 PHP가 설치된 디렉토리로 설정하는 경우 때때로 php.ini가 인식되지 않아 기본 값으로 php가 실행되는 경우가 있습니다. 그래서 확장기능을 사용할 수 없죠. 이때에는 시스템설정에서 환경변수를 수정해야 하는데 글 길이를 줄이기 위해서 일단 시스템 파일들이 저장되는 기본 디렉토리인 Windows로 php.ini 파일을 이동시키면 충돌 없이 정상적으로 PHP 설정 값이 불러와집니다.

  7. php_pdo_mysql과 php_mysqli.dll모두 찾을 수가 없습니다. 대신 extension=MySQL이라는 확장은 있네요. 어떻게 하죠?

  8. 와.. 감사합니다 3일동안 고생하던거 해결됬네요 ㅠㅜㅠ
    php.ini 파일을 windows에 안넣어서 안됬던거라니… 감사합니다 덕분에 해결됬어요!

  9. php 서버 설치 과정에서 글에 올려주신
    extension=php_pdo_mysql.dll와 extension=php_mysqli.dll 모두 없는데 그냥 직접 쳐서 넣어도 되는건가요?

    1. 따로 존재하지 않을 때 추가한다고 해서 해당 기능이 작동하는 것은 아닙니다. 혹시 어떤 PHP 버전을 설치하셨나요?
      파일이 존재하지 않는다면 PHP 버전이 다르기 때문에 그럴 수도 있습니다.
      이때에는 해당 PHP 버전에서 어떻게 MySQL을 지원하는지 알아보아야 합니다.

  10. 모듈 연동하고 httpd.exe 실행하면 한 5초정도 있다가 오류문자열 잠깐뜨고 닫히면서 구동이 안되는데 무슨문제인가요?

  11. Fatal error: Uncaught Error: Class ‘mysqli’ not found in C:\Apache24\htdocs\index.php:7 Stack trace: #0 {main} thrown in C:\Apache24\htdocs\index.php on line 7
    테스트 코드 넣으니까 오류뜨는데 어떡하죠ㅠㅠ?

    1. 답변이 늦어 죄송합니다.
      위 오류메시지가 나타나는 이유는 mysqli 확장이 로드되지 않았기 때문입니다.
      PHP 설정파일(php.ini) mysqli 부분의 주석을 삭제하면 됩니다.
      그리고 설정 파일을 윈도우 폴더에 복사해넣으면 쉽게 해결할 수 있습니다.

  12. php, 아파치서버 만들기 부분.. 잘 없는 것 같아요. 님 글을 통해, Apache서버를 윈도우즈에 만들었습니다. 제 블로그에 공유할게요~. 웹프로그래밍 공부중입니다. 방문해주세요~.좋은 정보 감사합니다.

  13. 너무 감사합니다. 해킹 배우고 있는 데 책에서는 자세히 알려주지 않았던 것을 자세히 알려주어서 좋았습니다. 감사합니다.

Leave a reply

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다