Windows에서 Apache, PHP 및 MySQL을 수동으로 설치하는 방법은 무엇입니까?


48

WAMPServer 또는 XAMPP와 같은 즉시 사용 가능한 패키지를 사용하지 않고 Windows에서 PHP 지원 및 MySQL 서버로 Apache를 설치하는 방법은 무엇입니까?

답변:


65

아파치

먼저, Windows 용 Apache 의 플랫폼 별 참고 사항을 읽어보십시오. 다른 OS에는없고 이전에 사용한 적이없는 서비스로 실행하는 것과 같은 일부 Windows 관련 기능에 대해 설명합니다.

이 플랫폼 별 참고 사항에서 언급했듯이 Apache는 Windows 용 바이너리를 제공하지 않지만 Apache 라운지 와 같이 바이너리를 제공하는 여러 타사 사이트에 대한 링크가 있습니다 .

해당 웹 사이트에서 32 비트 버전 (win32) 또는 64 비트 버전 (Win64)을 다운로드 할 수 있습니다. OS가 64 비트 인 경우 항상 64 비트 버전의 소프트웨어를 설치해야합니다. 64 비트 모듈도 사용해야합니다. 즉, 32 비트 모듈 만있는 경우 32 비트 Apache를 다운로드하십시오.

이 글을 쓸 때 사용한 버전은 다음과 같습니다. Apache 2.4.10 Win64 . 이 답변이 마지막으로 업데이트 된 최신 버전 : Apache 2.4.38 Win64 (게시물 하단의 편집 날짜 참조).

다운로드가 완료되면 다음 Apache24과 같은 경로를 갖도록 폴더를 하드 드라이브의 루트에 추출하십시오 C:\Apache24\bin.

명령 행 창을 열고 (Windows + R을 입력 cmd한 다음 Enter 키를 누름) 디렉토리를로 변경 C:\Apache24\bin하고 실행하십시오 httpd.exe. 일반적으로 오류를 인쇄하지 않아야합니다.

MSVCR110.dll시스템에 누락 되었다는 오류 대화 상자가 표시되면 Visual Studio 2012 용 Visual C ++ 재배포 가능 패키지 를 설치해야합니다. 프롬프트가 표시되면 항상 적절한 비트 버전을 선택하십시오. vcredist_x86.exe32 비트 시스템 및 vcredist_x64.exe64 비트 -그것들.

포트 80에 바인딩 할 수 없다는 오류가 표시되면 다른 응용 프로그램이 해당 포트를 사용하는지 확인하십시오. Skype도 기본적으로 포트 80 및 443을 사용하는 것으로 알려져 있습니다. 고급 연결 설정에서 "수신 연결의 대안으로 포트 80 및 443 사용"을 선택 취소하고 Skype를 다시 시작하여 변경 사항을 적용하면 문제없이 Apache를 시작할 수 있습니다.

현재와 ​​같은 경고 Could not reliably determine the server's fully qualified domain name는 무시해도됩니다.

Windows 방화벽은 Apache가 특정 네트워크에서 통신하도록 허용하라는 메시지를 표시 할 수 있습니다. 기본 설정을 사용하는 것이 좋습니다. 가정 및 회사 네트워크에서는 허용하지만 공용 / 신뢰할 수없는 네트워크에서는 허용하지 않습니다.

그런 다음 브라우저를 열고로 이동 http://localhost하십시오. 페이지가 표시되면 It works !Apache 설치가 작동 중임을 의미합니다.

명령 프롬프트에서 Ctrl + C를 눌러 현재 실행중인 Apache를 중지 할 수 있습니다.

시스템의 정규화 된 도메인 이름을 결정할 수 없다는 경고가 표시 C:\Apache24\conf\httpd.conf되면 ServerName변수 를 편집 하고 편집하여 수정하십시오 (이미 주석에 주석 처리가되어 있고 주석을 해제 한 후 변경하십시오).

ServerName <yourhostname>

교체 <yourhostname>시스템의 호스트 이름 또는 중 하나와 함께 localhost.

마지막으로, 시스템이 시작될 때 (아무도 로그인하지 않아도) 서버를 자동으로 실행하려면 관리자 권한으로 새로 관리자 권한 명령 프롬프트에서 서비스로 실행해야합니다.

httpd.exe -k install

이제 다른 Windows 서비스와 마찬가지로 제어 할 수있는 "Apache2.4"라는 서비스에 Windows 서비스 (Windows + R을 입력 한 다음 "services.msc"를 입력 한 다음 Enter 키를 누름)에 새로운 서비스가 생겼습니다.

Apache 액세스 localhost만으로 제한 - 선택 사항

만약 당신이 개발 목적으로 이것을 설정하고 있다면, 당신이 접근 할 수있는 사람 이외의 어느 누구도 접근 할 수 없도록하려면, 방화벽은 이미 그것을 처리해야하지만, 아파치에게 로컬로부터의 요청을 수락하도록 지시함으로써 또 다른 보안 계층을 추가합시다. 기계 만.

Apache의 구성 파일을 열고 C:\Apache24\conf\httpd.conf기본 디렉토리 블록을 검색하십시오 <Directory "c:/Apache24/htdocs">.

마지막에 줄이 있어야합니다. Require all granted즉, 누구나이 서버에 액세스 할 수 있습니다. Require local로컬 컴퓨터에서만 액세스 할 수 있도록하겠습니다 .

또한 방화벽과 액세스 제어 지시문이 모두 실패하더라도 서버가 여전히 인터넷 전체에 개방되지는 않는 방식으로 Apache에 루프백 인터페이스에만 바인딩하도록 지시 할 수 있습니다.

이를 위해 Listen지시문 (기본적으로 설정 됨 80)을 찾아서 다음과 같이 변경하십시오.

Listen 127.0.0.1:80
Listen [::1]:80

첫 번째 줄은 설명이 필요하고 두 번째 줄은 첫 번째 줄의 IPv6에 해당하며 대괄호는 주소와 포트를 구분하기 위해 IPv6 표기법에 사용됩니다.

파일을 저장하십시오. 이미 서버를 실행하고 있다면 변경 사항을 고려하기 위해 서버를 다시 시작하십시오. 이제 localhost액세스 권한 만 있으면 다른 모든 사용자는을 얻게 403 Forbidden됩니다.

PHP

Windows 시스템에 설치하는 방법에 대한 공식 PHP 설명서 를 읽어 보는 것이 좋습니다 .

Windows 용 공식 PHP 다운로드 페이지 에서 최신 PHP 바이너리를 다운로드하고 Apache 설치의 비트 버전 (32 비트 용 x86, 64 비트 용 x64)과 일치하는 스레드 안전 버전을 선택하십시오.

스레드로부터 안전하지 않은 버전은 CGI 바이너리로 실행될 때만 사용됩니다 . 자세한 정보는 here .

내가 사용한 버전은 다음과 같다. PHP 5.6.2 VC11 x64 Thread Safe . 이 답변이 마지막으로 업데이트 된 최신 버전 : PHP 7.3.3 VC15 x64 스레드 안전 (게시물 하단의 편집 날짜 참조).

PHP하드 드라이브의 루트에 빈 폴더를 만들고 이전에 다운로드 한 아카이브를 추출하십시오.와 같은 경로가 있어야합니다 C:\PHP\ext. 그렇지 않으면 잘못된 것이 있습니다.

에서 C:\PHP의 이름을 바꾸 php.ini-production거나 php.ini-development에 (당신이 원하는에 따라 다름) php.ini.

해당 php.ini파일을 열고 해당 extension_dir = "ext"행을 검색 하고 주석을 해제하십시오 (첫 번째 제거 ;). 기본 확장명 dir을 ext( 이 게시물의 이전 버전에서와 같이 수동으로 모든 확장명의 경로 C:\PHP\ext앞에 추가 ext/할 필요가 없도록 합니다).

이제 C:\Apache24\conf\httpd.conf모든 LoadModule라인 뒤에 다음을 추가하여 편집하여 해당 PHP를 사용하도록 Apache를 구성 하십시오.

(다음은 PHP 7 에만 해당 )

LoadModule php7_module "c:\php\php7apache2_4.dll"

<IfModule php7_module>

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    PHPIniDir "c:\php"
</IfModule>

(다음은 PHP 5 에만 해당 )

LoadModule php5_module C:/PHP/php5apache2_4.dll

<IfModule php5_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

이제 명령 프롬프트를 열고 C:\Apache24\bin실행 하여 Apache를 수동으로 시작 httpd.exe하십시오. 오류가 표시되지 않으면 구성 파일이 유효하고 PHP가 작동하는 것 입니다.

당신은 같은 파일을 작성하여 PHP 설치를 테스트 할 수 있습니다 info.php<?php phpinfo();내부에가는 http://localhost/info.php- 당신은 당신의 시스템과 PHP 설치 및 모든 모듈에 대한 정보를 꽤 볼 수 있습니다. "내부 서버 오류"와 같은 다른 것이 있으면 잘못된 것입니다.

이제 현재 Apache 프로세스 (콘솔에서 Ctrl + C)를 종료하고 서비스를 시작할 수 있습니다. 다음 부분은 Apache와 상호 작용하지 않으며 이미 시작된 서버에서 수행 할 수 있습니다.

작곡가- 옵션

Composer는 패키지 관리자와 같이 PHP의 종속성 관리 도구입니다. PHP 패키지와 전체 프레임 워크를 쉽게 설치할 수 있습니다.

Composer를 사용하려면 PHP OpenSSL 확장이 활성화되어 있어야합니다 C:\PHP\php.ini. 에서 활성화하십시오 .

텍스트 편집기의 검색 기능을 사용하여를 검색하십시오. php_openssl.dll이미 주석 처리 된 행이 있어야합니다. 주석 처리를 해제하십시오.

이제 다운로드 페이지 에서 Composer의 Windows 설치 프로그램을 다운로드하거나이 직접 링크를 사용 하십시오 .

지시에 따라 PHP 경로를 묻는 메시지가 나타나면를 찾아서 C:\PHP선택하십시오 php.exe.

이제 Composer가 시스템 전체에 설치되어 어느 곳에서나 사용할 수 있습니다. 새로운 명령 프롬프트를 열면 PATH됩니다 (Composer에서 설정 한 새 변수 를 읽어야하기 때문에 이미 열려있는 명령 프롬프트를 사용할 수 없음). installer)를 입력하고을 입력 composer합니다.

멋진 ASCII 아트 로고와 이와 같은 것을 얻을 수 있습니다 :

Composer version e87bc894daf8d5f8e77a01dd7ae5f0446ae30b14 2014-05-01 15:40:28

PHP MySQL 확장- 옵션

PHP에서 MySQL 데이터베이스에 액세스하려면 다음과 같이 확장을 활성화해야합니다. php_mysqli또는 php_pdo_mysql둘 다 활성화하는 것이 좋습니다.

열기 PHP의 구성 파일을 C:\PHP\php.ini텍스트 편집기 및 검색 php_mysqli또는 php_pdo_mysql- 그들은 이미 그들을 거기 주석 있어야한다.

완료, 이제 당신도 사용하는 MySQL 데이터베이스에 액세스 할 수 있습니다 mysqli또는 PDO.

MySQL

MySQL의 설치 프로그램 다운로드 페이지 웹 설치 프로그램을 다운로드 mysql-installer-web-community-xxxxx.msi.

mysql-installer-web-community-5.6.21.1.msi를 사용했습니다. 이 답변이 마지막으로 업데이트 된 최신 버전 : mysql-installer-web-community-8.0.15.0.msi (게시물 하단의 편집 날짜 참조).

MySQL의 비트 버전이 Apache 및 PHP 버전과 일치 할 필요는 없지만 64 비트 버전을 사용하는 것이 여전히 유리하지만 설치 프로그램은 시스템에 따라 적절한 버전 (32 비트 또는 64 비트)을 자동으로 설치합니다. 시스템은 3GB 이상의 RAM 을 활용할 수 있도록 지원합니다. 이는 데이터베이스 서버가 많은 RAM을 사용하는 경향이 있으므로 매우 중요합니다.

설치 프로그램의 단계를 따르십시오. 개발을 위해 이것을 설치하는 경우 Developer default최선의 선택이 될 것입니다. 기본 GUI 클라이언트 인 MySQL Workbench도 설치하므로 다음과 같은 느린 웹 기반 도구를 설치하지 않아도됩니다 명령 행 클라이언트 사용에 익숙하지 않은 경우 PHPMyAdmin.

모든 것이 설치되면 설치 프로그램에서 몇 가지 기본 구성 값을 요구합니다. 네트워크의 다른 시스템에서 데이터베이스에 액세스하지 않으려면 "네트워크 액세스를위한 방화벽 포트 열기"를 비활성화하는 것이 좋습니다.

루트 비밀번호를 설정하십시오. 개발 용일 뿐이고 방화벽이 네트워크에서 들어오는 연결을 차단하는 경우 강력한 비밀번호가 필요하지 않습니다.

마지막으로 트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 작업-> 옵션으로 이동 한 다음 Run at Windows Startup확인란을 선택 취소하고 적용 하여 쓸모없는 MySQL 알리미를 비활성화 할 수 있습니다. 그러면 몇 MB의 RAM이 절약되고 부팅시 시스템 속도가 느려지지 않습니다.

이제 모든 기능을 갖춘 WAMP 서버가 서비스로 실행되며 사용자에 의존하지 않습니다 (아무도 로그인하지 않아도 액세스 할 수 있음).

나는 이것의 보안에 대해 전혀 모른다. 개발 목적을 위해 방화벽이 Apache (포트 80 및 443) 및 MySQL (포트 3306)의 들어오는 연결을 차단해야하기 때문에 이것이 매우 안전하다고 말하고 싶습니다.

이것은 Windows 7 설치에서 테스트되었으며 Vista, Windows 8 및 Windows Server 2008/2012에서도 제대로 작동합니다. 그렇지 않은 경우 의견을 말하거나 공감하십시오.


3
php.ini에서 Windows 용 extension_dir = "ext"줄의 주석을 해제해야 할 수도 있습니다.
chivvijim

@ jaffamcneill 실제로 당신이 옳았습니다. 나는 그것을 설명하기 위해 내 대답을 업데이트했습니다.

이 푸는 내 목숨을 구했다. 지난 1 주일 동안이 문제로 어려움을 겪었지만 mysql은 phpinfo에서 활성화되지 않았습니다. 당신의 도움으로 고쳤습니다. 엄청 고마워.
clever_bassi

언제 mod_fcgid 모듈을 사용해야합니까? 시스템에 여러 명의 사용자가 동시에 여러 요청을하는 문제가 있습니다. 32 비트의 메모리가 부족하기 때문에 64 비트 버전이 필요합니다 (보고서에 대한 요청이 많은 VFP ODBC). 위의 설정이 제대로 작동합니까, 아니면 php_fcgid 모듈을 사용하고 PHP를 cgi moodule로 설치해야합니까? 이것은 항상 나를 혼란스럽게합니다 ... 통찰력에 감사드립니다.
Jeremy Jeremy

1
MSVCR110.dll오류가 (현재 Apache 버전에서) 나타 났을 때 Visual C ++ 재배포 가능 패키지 2010 SP1을 설치하게되었습니다. 나중에 파일에 대한 또 다른 오류가 발생 VCRUNTIME140.dll하여 Visual Studio 2015 용 Visual C ++ 재배포 가능 패키지를 설치해야했습니다.
Coded Monkey

7

PHP 7

위 답변의 지침은 2017 년 7 월 현재 완벽하게 작동하지만 PHP 7을 사용하려면 해당 답변의 지침 C:\Apache24\conf\httpd.conf대신 다음 줄을 추가해야합니다 (PHP 5에만 해당) . 모든 LoadModule줄 후에 ] :

LoadModule php7_module C:/PHP/php7apache2_4.dll

<IfModule php7_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>

모든 경로가 올바른지 확인하십시오. php7apache2_4.dllPHP 디렉토리에 없으면 잘못된 패키지를 다운로드했을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.