web-applications - 차이 - 아파치 톰캣 연동 이유




하나의 아파치 인스턴스에서 여러 사이트를 실행하는 방법 (2)

귀하의 질문은 몇 가지 다른 개념을 혼합합니다. 먼저 동일한 도메인을 사용하지만 동일한 폴더에서 다른 사이트를 사용하여 동일한 서버에서 사이트를 실행하고 싶다고 말하기 시작했습니다. 특별한 설정이 필요하지 않습니다. 단일 도메인이 실행되면 해당 문서 루트 아래에 폴더를 만듭니다.

귀하의 나머지 질문에 따라, 당신이 정말로하고 싶은 일은 자신의 도메인 이름으로 같은 서버에서 여러 사이트를 운영하는 것입니다.

이 주제에서 찾을 수있는 가장 좋은 문서는 아파치 설명서의 가상 호스트 문서이다.

가상 호스트에는 이름 기반과 IP 기반의 두 가지 유형이 있습니다. 이름 기반은 단일 IP 주소를 사용하는 반면, IP 기반은 각 사이트마다 다른 IP를 요구합니다. 위의 설명에 따라 이름 기반 가상 호스트를 사용하려고합니다.

초기 오류는 NameVirtualHost 행과 다른 포트를 사용했기 때문에 발생했습니다. 80 이외의 포트에서 사이트를 제공하려면 각 포트에 NameVirtualHost 항목이 있어야합니다.

처음부터 시작한다고 가정 할 때, 이것은 생각보다 훨씬 간단합니다.

가장 먼저해야 할 일은 아파치에게 네임 기반의 가상 호스트를 사용할 것이라는 것입니다.

NameVirtualHost *:80

이제 아파치는 당신이 원하는 것을 알고 당신의 가상 호스트 정의를 설정할 수 있습니다 :

<VirtualHost *:80>
    DocumentRoot "/home/user/site1/"
    ServerName site1
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/site2/"
    ServerName site2
</VirtualHost>

동일한 포트에서 원하는만큼의 사이트를 실행할 수 있습니다. ServerName 이 다르면 아파치에 사용할 가상 호스트를 알려주기에 충분합니다. 또한 ServerName 지정 문은 항상 도메인 / 호스트 이름이므로 절대로 경로를 포함해서는 안됩니다.

80 이외의 포트에서 사이트를 실행하기로 결정한 경우 사이트에 액세스 할 때 항상 URL에 포트 번호를 포함시켜야합니다. 따라서 http://example.com 으로 이동하는 대신 http://example.com:81 로 이동해야합니다 .

내가 인터넷에서 찾을 수있는 모든 가이드에 이어 서클에서 보낸 시간.

하나의 아파치 인스턴스에서 두 개의 사이트를 실행하고 싶습니다. 예를 들어 192.168.2.8/site1과 192.168.2.8/site2

나는 서클에서 돌아 다니고 있었지만, 지금은이 사이트에서 사용할 수있는 두 개의 conf 파일 (사이트에 심볼릭 링크 됨)이 있습니다.

<VirtualHost *:2000>

ServerAdmin [email protected]
ServerName site1
ServerAlias site1

# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/user/site1/

# CGI Directory
ScriptAlias /cgi-bin/ /home/user/site1/cgi-bin/

Options +ExecCGI

# Logfiles
ErrorLog /home/user/site1/logs/error.log
CustomLog /home/user/site1/logs/access.log combined

</VirtualHost>

<VirtualHost *:3000>

ServerAdmin [email protected]
ServerName site2
ServerAlias site2

# Indexes + Directory Root.
DirectoryIndex index.html
DocumentRoot /home/user/site2/

# CGI Directory
ScriptAlias /cgi-bin/ /home/user/site2/cgi-bin/

Options +ExecCGI

# Logfiles
ErrorLog /home/user/site2/logs/error.log
CustomLog /home/user/site2/logs/access.log combined

</VirtualHost>

http.conf는 다음과 같습니다.

NameVirtualHost *:2000
NameVirtualHost *:3000

지금이 오류가 발생하는 -

[error] VirtualHost *:80 — mixing * ports and non-* ports with a NameVirtualHostaddress is not supported, proceeding with undefined results

Ports.conf는 다음과 같이 보입니다 - (가이드를 수정하지 않아도 됨)

NameVirtualHost *:80

Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

누구든지이 간단한 실행을위한 간단한 지침을 줄 수 있습니까? 내가 찾은 모든 가이드는 그것을 다른 방식으로하고, 각각은 다른 에러를 일으킨다 고 말한다. 나는 분명히 잘못된 것을하고 있지만 그것이 무엇인지에 대한 명확한 설명을 찾지 못했습니다.

포트 2000에서 액세스 할 수있는 사이트와 포트 3000에서 액세스 할 수있는 사이트 중 하나 (또는 ​​무엇이든 테스트 할 수있는 포트를 선택) 만 있으면됩니다.

우분투 서버 12.04를 실행 중입니다 ...

=============

편집하다

다른 '가이드'를 따라 ...

이제 사이트에서 이것을 사용할 수 있습니다 : 사용 가능 :

<VirtualHost *:80>
    DocumentRoot "/home/user/site1/"
    ServerName 192.168.2.10/site1
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/site2/"
    ServerName 192.168.2.10/site2
</VirtualHost>

apache2.conf에서 이것을 설정하십시오 :

ServerName site1
ServerName site2

이것을 ports.conf에 추가했습니다 :

Listen 192.168.2.10:80

==============

편집하다

이제 작동하고 사이트 기반의 conf 파일에 저장합니다.

<VirtualHost *:81>
    DocumentRoot "/home/user/site1/"
    ServerName site1
</VirtualHost>

<VirtualHost *:82>
    DocumentRoot "/home/user/site2/"
    ServerName site2
</VirtualHost>

나는 이것을 ports.conf에 가지고있다 :

Listen *:80
Listen *:81
Listen *:82

나는 이것을 apache2.conf에 가지고있다 :

ServerName site1
ServerName site2

어떤 가이드에서나 이것을 찾지 못했습니다. 시행 착오를 하루 종일 제대로 처리했기 때문에 이것이 좋은 해결책인지 잘 모릅니다. 하지만 지금은 내가 원하는 방식으로 작업하고 있습니다.


네, 가상 호스트로 당신이 원하는만큼의 병렬 프로그램을 가질 수 있습니다 :

열다

/etc/httpd/conf/httpd.conf

Listen 81
Listen 82
Listen 83

<VirtualHost *:81>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site1/html
    ServerName site1.com
    ErrorLog logs/site1-error_log
    CustomLog logs/site1-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site1/cgi-bin/"
</VirtualHost>

<VirtualHost *:82>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site2/html
    ServerName site2.com
    ErrorLog logs/site2-error_log
    CustomLog logs/site2-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site2/cgi-bin/"
</VirtualHost>

<VirtualHost *:83>
    ServerAdmin [email protected]
    DocumentRoot /var/www/site3/html
    ServerName site3.com
    ErrorLog logs/site3-error_log
    CustomLog logs/site3-access_log common
    ScriptAlias /cgi-bin/ "/var/www/site3/cgi-bin/"
</VirtualHost>

아파치를 다시 시작하십시오.

service httpd restart

이제 Site1을 참조 할 수 있습니다.

http://<ip-address>:81/ 
http://<ip-address>:81/cgi-bin/

Site2 :

http://<ip-address>:82/
http://<ip-address>:82/cgi-bin/

Site3 :

http://<ip-address>:83/ 
http://<ip-address>:83/cgi-bin/

경로가 스크립트에서 하드 코딩되지 않으면 웹 사이트가 원활하게 작동해야합니다.





apache2