WampServer에서 가상 호스트를 만드는 방법
WAMPServer 3는이 과정을 훨씬 쉽게 만들어줍니다!
WAMPServer의 일부로 제공되는 유틸리티에서 거의 모든 작업을 수행 할 수 있습니다.
project.site를 포함 할 폴더를 내부에 만듭니다. 이것은 C:\wamp\www\
디렉토리 아래에 있거나 C:\websites
.
EG를 선택한 위치 C:\websites\project1\www
또는 아래에 폴더를 만듭니다 .c:\wamp\www\project1\www
이제 localhost를 열고 홈페이지의 TOOLS 섹션 아래 wampmanager->localhost
에있는 링크를 클릭하십시오 Add a Virtual Host
.
다음과 같은 페이지가 표시됩니다.
각 필드 위의 지침에 지정된대로 필드를 채우십시오.
가상 호스트 구성이 생성됩니다.
이제 DNS 캐시를 다시 시작해야합니다. 이와 같은 wampmanager 메뉴에서이 작업을 수행 할 수 있습니다 right click wampmanager->Tools->Restart DNS
. DNS 캐시가 다시 시작되고 Apache도 중지되고 다시 시작됩니다. wampmanager 아이콘이 다시 녹색으로 바뀌면 모든 것이 완료된 것입니다.
이제 간단한 index.php
파일을 만들 거나 위에서 만든 폴더에 사이트를 설치해야합니다.
VH가 호출되었다고 가정하면 WAMPServer 홈페이지 의 가상 호스트 섹션 project.dev
에서 해당 이름을 볼 수 있습니다.
이 메뉴에서 사이트를 시작하거나 주소 표시 줄 EG project1.dev
및 사이트 shoudl 시작 에서 새 도메인 이름을 사용할 수 있습니다 .
이전 WAMPServer 2.5 메커니즘 또는 모든 것을 수동으로 수행하려는 경우
WampServer 2.5 이상에서 개념이 변경되었으며이 변경에 대한 좋은 이유가 있습니다!
WampServer에서는 이제 프로젝트를 \wamp\www\subfolder
구조로 유지하더라도 각 프로젝트에 대한 가상 호스트를 만드는 것이 강력히 권장됩니다 .
가상 호스트 문서
가상 호스트 예
WampServer 홈 페이지 ( \wamp\www\index.php
)는 이제 모든 프로젝트에 대해 가상 호스트를 만들었을 것으로 예상하므로 그렇게하는 경우에만 제대로 작동합니다.
역사
WampServer를 사용하는 초보자가 PHP Apache와 MySQL을 배우기 위해 더 쉽게 사용할 수 있도록 폴더 아래에 하위 폴더를 만드는 것이 좋습니다 \wamp\www\
.
wamp
|
|
|
|
이러한 하위 폴더는 WampServer 홈페이지의 'Your Projects'라는 메뉴 아래에 링크로 표시되며 이러한 링크에는 localhost/subfoldername
.
간단한 자습서에만 허용됨
이것은 완전한 초보자의 삶을 편하게 만들었고, 예를 들어 PHP 코딩을 배우기 위해 튜토리얼을 따르는 사람들에게 완벽하게 허용되었습니다. 그러나 나중에 라이브 호스팅 서버에 복사하려는 실제 웹 사이트를 개발할 때 사용하기위한 것이 아닙니다. 실제로이 메커니즘을 사용했다면 라이브 사이트 구성이 개발 구성과 일치하지 않기 때문에 종종 문제가 발생했습니다.
실제 웹 사이트 개발 의 문제 .
그 이유는 물론 wamp의 기본 DocumentRoot 설정이
DocumentRoot "c:/wamp/www/"
하위 폴더의 이름에 관계없이. 구조 또는 사이트를 쿼리하는 PHP 코드를 자주 사용하는이 문서는 개발 WampServer에서 실행할 때 다른 정보를 수신했으며 라이브 호스팅 서버에서 실행할 때 수신 할 정보와 다른 정보를 받았습니다. 여기서 DocumentRoot 구성은 웹 사이트 상단의 폴더를 가리 킵니다. 파일 계층. 이러한 종류의 코드는 많은 프레임 워크 및 CMS (예 : WordPress 및 Joomla 등)에 존재합니다.
예를 들어
project1이라는 프로젝트가 유지되고 wamp\www\project1
잘못 실행 되었다고 가정 해 보겠습니다.localhost/project1/index.php
문제의 일부 PHP 명령에서보고되는 내용은 다음과 같습니다.
$_SERVER['HTTP_HOST'] = localhost
$_SERVER['SERVER_NAME'] = localhost
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www
이제 가상 호스트 정의를 사용하여 해당 사이트를 올바르게 정의 http://project1
하고 WAMPServer 개발 사이트의 결과가 라이브 호스팅 환경에서 수신 된 결과와 일치하므로 이를 실행했습니다 .
$_SERVER['HTTP_HOST'] = project1
$_SERVER['SERVER_NAME'] = project1
$_SERVER['DOCUMENT_ROOT'] = c:/wamp/www/project1
이제이 차이는 처음에는 사소 해 보일 수 있지만 예를 들어 WordPress와 같은 프레임 워크 또는 Joomla와 같은 CMS 중 하나를 사용하는 경우 사이트를 라이브 서버로 이동할 때 문제가 발생할 수 있으며 문제가 발생할 수 있습니다.
WampServer에서 가상 호스트를 만드는 방법
실제로 이것은 기본적으로 모든 wndows Apache 서버에서 동일하게 작동해야하며 Apache 구성 파일을 찾을 수있는 위치에서만 차이가 있습니다.
Apache에서 첫 번째 가상 호스트를 만드는 데는 3 단계가 있으며 이미 정의 된 경우 2 단계 만 있습니다.
- 가상 호스트 정의 만들기
- HOSTS 파일에 새 도메인 이름을 추가하십시오.
- 가상 호스트 정의 파일을 포함하는 httpd.conf의 행의 주석 처리를 제거하십시오.
1 단계 , 가상 호스트 정의 생성
httpd-hosts.conf
WampServer가 있는 파일을 편집하십시오 .
\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
(Apache 버전 번호는 다를 수 있으므로 계속하기 전에 두뇌를 사용하십시오)
이 파일을 처음으로 편집하는 경우 기본 예제 코드를 제거하면 아무 소용이 없습니다.
나는 우리가 살고있는 project1이라는 사이트에 대한 정의를 만들고 싶다고 가정하고 있습니다.
\wamp\www\project1
매우 중요한 것은 먼저 localhost가 여전히 작동하는지 확인해야이 파일에 넣을 첫 번째 VHOST 정의가됩니다.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www"
ServerName localhost
ServerAlias localhost
<Directory "c:/wamp/www">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
이제 프로젝트를 정의합니다. 물론 새 프로젝트를 시작할 때 각 프로젝트에 대해 수행합니다.
<VirtualHost *:80>
DocumentRoot "c:/wamp/www/project1"
ServerName project1
<Directory "c:/wamp/www/project1">
Options Indexes FollowSymLinks
AllowOverride All
Require local
</Directory>
</VirtualHost>
참고 : 각 가상 호스트는 자체적으로 DocumentRoot
정의됩니다. 가상 호스트 정의에 추가 할 수있는 다른 많은 매개 변수도 있습니다. Apache 문서를 확인하십시오.
옆으로 작은
가상 호스트가 Apache에서 작동하는 방식 :이 파일의 첫 번째 정의도 기본 사이트가되므로 브라우저에서 사용되는 도메인 이름이 실제로 정의 된 가상 호스트 도메인과 일치하지 않으면 localhost가 파일의 첫 번째 도메인이됩니다. 해킹 시도가 IP 주소를 사용하는 경우로드되는 사이트입니다. 따라서이 도메인에 대한 Apache 보안 이 항상 다음으로 설정되어 있는지 확인하면
Require local
외부 주소에서 발생한 임의의 해킹은 오류를 수신하고 PC에 들어 가지 않지만 도메인 철자를 잘못 입력하면 WampServer 홈페이지가 표시됩니다. WampServer와 동일한 PC를 사용하고 있기 때문 local
입니다.
2 단계 :
HOSTS 파일에 새 도메인 이름을 추가하십시오. 이제 가상 호스트 정의에서 사용한 도메인 이름을 HOSTS 파일에 추가하여 Windows에서 찾을 위치를 알 수 있도록해야합니다. 이것은 DNS A 레코드를 만드는 것과 비슷하지만이 경우이 특정 PC에서만 볼 수 있습니다.
편집하다 C:\windows\system32\drivers\etc\hosts
파일에는 확장자가 없으며 그대로 유지해야합니다. .txt
더 나은 편집기가없는 경우 확장 프로그램을 추가 할 수 있으므로 메모장을주의하십시오 . 무료이며 아주 좋은 편집기 인 Notepad ++를 다운로드하는 것이 좋습니다.
또한 이것은 보호 된 파일이므로 관리자 권한으로 편집해야하므로 관리자 권한으로 실행 메뉴 옵션을 사용하여 편집기를 시작 하십시오 .
이러한 편집을 완료하면 호스트 파일이 다음과 같아야합니다.
127.0.0.1 localhost
127.0.0.1 project1
::1 localhost
::1 project1
Apache가 이제 IPV6을 인식하고 브라우저가 IPV4 또는 IPV6 또는 둘 다를 사용하므로 여기에 IPV4 루프백 주소 127.0.0.1
및 IPV6 루프백 주소에 대한 정의가 ::1
있어야합니다. 어떤 것을 사용할지 결정하는 방법은 모르겠지만 IPV6 스택이 켜져 있고 대부분의 윈도우 OS가 XP SP3에서 작동하는 경우 둘 중 하나를 사용할 수 있습니다.
이제 Windows에 도메인 이름 캐시를 새로 고치도록 지시해야하므로 관리자 권한으로 실행 메뉴 옵션을 다시 사용하여 명령 창을 다시 시작 하고 다음을 수행하십시오.
net stop dnscache
net start dnscache
이렇게하면 창에서 도메인 이름 캐시를 지우고 다시로드합니다. 다시로드하면 HOSTS 파일을 다시 읽으므로 이제 도메인에 대해 알게됩니다 project1
.
3 단계 : 가상 호스트 정의 파일을 포함하는 httpd.conf의 행의 주석 처리를 제거하십시오.
httpd.conf를 편집하고 wampmanager.exe 메뉴를 사용하여 올바른 파일을 편집하는지 확인하십시오.
httpd.conf에서이 줄을 찾으십시오.
그리고 #
그 줄의 주석을 제거하려면 제거하십시오 .
Apache를 실행하는 경우이 변경 사항을 활성화하려면 이제 Apache 서비스를 중지했다가 다시 시작해야합니다.
wampmanager.exe -> Apache -> Service -> Restart Service
이제 시스템 트레이의 WAMP 아이콘이 다시 녹색으로 바뀌지 않으면 \wamp\bin\apache\apache2.4.9\conf\extra\httpd-hosts.conf
파일에 문제가있는 것입니다 .
그렇다면 여기에 무엇이 잘못되었는지 알아낼 수있는 유용한 메커니즘이 있습니다. Apache exe (httpd.exe)의 기능을 사용하여 구성 파일을 확인하고 파일 이름과 줄 번호로 오류를보고합니다.
명령 창을 시작하십시오.
cd \wamp\bin\apache\apache2.4.9\bin
httpd -t
따라서 오류를 수정하고 출력을 얻을 때까지 다시 테스트하십시오.
Syntax OK
이제 한 가지 더 있습니다.
wampmanager 메뉴 시스템에는 실제로 2 개의 새로운 메뉴 항목이 있습니다. 기본적으로 켜져있는 '내 프로젝트' 라는 이름 입니다. 그리고 기본적으로 활성화되지 않는 'My Virtual Hosts' 라는 두 번째 항목 입니다.
'내 프로젝트'는 \ wamp \ www 디렉토리의 모든 하위 디렉토리를 나열하고 해당 하위 디렉토리에서 사이트를 시작할 수있는 링크를 제공합니다. 앞서 말했듯이 'localhost / project1'이 아닌 'project1'을 시작하므로 링크가 작동하도록하려면이 링크가 실제로 브라우저에서 해당 사이트를 시작하도록 가상 호스트 정의를 만들어야합니다. 가상 호스트 정의 없이는 사이트 이름에 대한 웹 검색을 키워드로 시작하거나 사이트를 찾을 수 없음 조건을 반환합니다.
'내 가상 호스트'메뉴 항목은 약간 다릅니다. 가상 호스트를 정의하는 데 사용되는 파일을 검색하고 (우리는 잠시 후에 다룰 것입니다) 찾은 각 ServerName 매개 변수에 대한 메뉴 링크를 만들고 각각에 대한 메뉴 항목을 만듭니다. \ wamp \ www 폴더의 하위 디렉토리에 대한 가상 호스트 정의를 생성하면 일부 항목이 '내 프로젝트'메뉴와 '내 가상 호스트'메뉴 모두에 표시되므로 약간 혼란스러워 보일 수 있습니다.
다른 '내 가상 호스트'메뉴를 켜려면 어떻게해야합니까?
- 실수 할 경우를 대비하여 \ wamp \ wampmanager.tpl 파일의 백업을 만드십시오. 매우 중요한 파일입니다.
- \ wamp \ wampmanager.tpl을 편집합니다.
- 이 매개 변수
;WAMPPROJECTSUBMENU
는 '[Menu.Left]'섹션에서 찾습니다.
- 매개 변수
;WAMPVHOSTSUBMENU
앞이나 뒤에이 새 매개 변수 를 추가하십시오 ;WAMPPROJECTSUBMENU
.
- 파일을 저장하십시오.
- 이제 wampmanager 아이콘을 마우스 오른쪽 버튼으로 클릭하고 '새로 고침'을 선택하십시오. 메뉴가 추가되지 않으면 '종료'하고 wampmanager를 다시 시작하십시오.
참고
사항 새 메뉴는 이미 일부 가상 호스트를 정의한 경우에만 나타납니다! 그렇지 않으면 VHOST를 정의 할 때까지 차이가 없습니다.
이제 이것을 논리적 확장으로 가져 가면
이제 \wamp\
VHOST 정의에서 DocumentRoot 매개 변수를 변경 하여 웹 사이트 코드를 폴더 구조 외부로 완전히 이동할 수 있습니다 . 예를 들어 다음과 같이 할 수 있습니다.
Wamp 디스크 또는 다른 디스크에 폴더를 만듭니다 (네트워크 드라이브에주의하세요. 조금 더 복잡합니다)
D:
MD websites
CD websites
MD example.com
CD example.com
MD www
이제 사이트 코드를 복사하거나 \websites\example.com\www
폴더 에서 생성을 시작 하고 다음과 같이 VHOST를 정의합니다.
<VirtualHost *:80>
DocumentRoot "d:/websites/example.com/www"
ServerName example.dev
ServerAlias www.example.dev
<Directory "d:/websites/example.com/www">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
php_flag display_errors Off
php_flag log_errors On
php_value max_upload_size 40M
php_value max_execution_time 60
php_value error_log "d:/wamp/logs/example_com_phperror.log"
</VirtualHost>
그런 다음이 새 개발 도메인을 HOSTS 파일에 추가합니다.
127.0.0.1 localhost
::1 localhost
127.0.0.1 project1
::1 project1
127.0.0.1 example.dev
::1 example.dev
참고 : 실제 도메인 이름과 동일한 ServerName 또는 ServerAlias를 사용하는 것은 좋은 생각이 아닙니다. example.com을 ServerName으로 사용한 것처럼 더 이상 여기에서 실제 라이브 사이트로 이동할 수 없음을 의미하기 때문입니다. PC는 example.com을 127.0.0.1, 즉 인터넷이 아닌이 PC로 연결합니다.
또한 : VHOST 정의 내에서 인터넷에서이 사이트에 액세스 할 수 있도록 허용했습니다.이 변경 사항은이 사이트에만 적용되며 다른 사이트에는 적용되지 않습니다. 클라이언트가 라이브 서버에 복사하지 않고도 한 시간 정도 변경 사항을 볼 수 있도록하는 데 매우 유용합니다. 이것은 wampmanager의 온라인 / 오프라인 메뉴 항목을 사용하는 대신이 액세스를 켜고 끄려면이 파일을 수동으로 편집해야 함을 의미합니다.
또한 PHP 구성에 몇 가지 수정 사항을 추가했습니다. 다시 한 번이 사이트에만 적용됩니다. 유지 관리하는 다른 모든 사이트와 달리 특정 요구 사항이있는 사이트를 유지 관리 할 때 매우 유용합니다. 사용 된 매개 변수에서 어딘가에 오래 실행되는 페이지가 있고 매우 잘못 작성되었으며 페이지를 끔찍하게 엉망으로 만들지 않고 브라우저에 오류가 표시되면서 실행되지 않을 것이라고 가정 할 수 있다고 생각합니다. 이런 사이트가 존재하고 사람들은 여전히 사이트가 나쁘게 유지되기를 원한다고 믿으십시오 . 그러나 이는 WampServer에서 실행되는 모든 가상 사이트가 아닌이 특정 사이트에 대해서만 이러한 매개 변수를 변경해야 함을 의미합니다.