두 개의 서로 다른 디렉터리를 가리키도록 가상 호스트를 설정하는 방법

두 개의 서로 다른 디렉터리를 가리키도록 가상 호스트를 설정하는 방법

두 개의 다른 폴더를 가리켜야 하는 도메인과 하위 도메인이 있습니다. 이 도움말을 시도했지만 여전히 문제가 있습니다. (https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04)

www.wasamar.com.ng | wasamar.com.ng -> /var/www/html/wasamar/public

이것은 가상 호스트 파일(/etc/apache2/sites-available/wasamar.com.ng.conf)입니다.

ServerName wasamar.com.ng

ServerAlias www.wasamar.com.ng

ServerAdmin [email protected]
DocumentRoot /var/www/html/wasamar/public

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

www.ts.wasamar.com.ng | ts.wasamar.com.ng -> /var/www/html/wasamar_ts/public

이것은 가상 호스트 파일(/etc/apache2/sites-available/ts.wasamar.com.ng.conf)입니다.

ServerName ts.wasamar.com.ng

ServerAlias www.ts.wasamar.com.ng

ServerAdmin [email protected]
DocumentRoot /var/www/html/wasamar_ts/public/

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

apache.conf 파일용 페이스트빈http://pastebin.com/dnDfB21y

어떻게 이를 달성할 수 있나요?

답변1

내가 아는 한 몇 가지 문제가 있고 어쩌면 그보다 더 많은 문제가 있을 수도 있습니다. 우선, Apache에게 각 서버의 루트 디렉터리를 찾을 수 있는 위치를 알려주었지만 해당 디렉터리의 파일을 "제공"할 수 있는 Apache 권한은 부여하지 않았습니다. 또한 Apache에게 이것이 가상 호스트임을 알리지 않았습니다. 가상 호스트 구성 파일로 수행해야 할 다른 작업이 있지만 최소한 서버 디렉터리의 파일에 Apache 권한을 부여해야 하며 이것이 가상 호스트 정의임을 Apache에 알려야 합니다. 이 최소값만 수정하면 두 파일은 다음과 같습니다.

이것은새로운가상 호스트 파일(/etc/apache2/sites-available/wasamar.com.ng.conf):

<VirtualHost *:80>

ServerName wasamar.com.ng

ServerAlias www.wasamar.com.ng

ServerAdmin [email protected]
DocumentRoot /var/www/html/wasamar/public

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

# At least you need to make the folder accessable for serving by the server.
# Versions of Apache, and modules installed can make a difference in what's inside
# the Directory directive. But as an example:
<Directory "/var/www/html/wasamar_ts/public">
        <IfModule mod_authz_core.c>
            Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            Order allow,deny
            Allow from all
        </IfModule>
</Directory>
</VirtualHost>

이것은새로운가상 호스트 파일(/etc/apache2/sites-available/ts.wasamar.com.ng.conf):

<VirtualHost *:80>

ServerName ts.wasamar.com.ng

ServerAlias www.ts.wasamar.com.ng

ServerAdmin [email protected]
DocumentRoot /var/www/html/wasamar_ts/public/

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

# At least you need to make the folder accessable for serving by the server.
# Versions of Apache, and modules installed can make a difference in what's inside
# the Directory directive. But as an example:
<Directory "/var/www/html/wasamar_ts/public">
        <IfModule mod_authz_core.c>
            Require all granted
        </IfModule>
        <IfModule !mod_authz_core.c>
            Order allow,deny
            Allow from all
        </IfModule>
</Directory>
</VirtualHost>

두 경우 모두 처음과 마지막 10개의 행을 추가하는 것이 변경되었습니다. 지시어에는 다른 것이 필요할 수도 Options있습니다 AllowOverride.

이 모든 것이 작동하려면 기본 conf 파일(아마도 httpd.conf디렉토리 어딘가) 에 몇 가지 항목을 더 추가해야 합니다 /etc/apache2/. 필요한 것은 이러한 새 파일을 구성에 포함시키는 지시어입니다. 가장 간단하게 경로를 지정하면 다음과 같습니다.

Include sites-available/wasamar.com.ng.conf
Include sites-available/ts.wasamar.com.ng.conf

사이트 사용 가능 디렉토리에 가상 호스트만 포함하는 경우 다음을 사용할 수 있습니다.

Include sites-available/*.conf

여기에는 해당 위치에 있는 모든 .conf 파일이 포함되므로 매번 httpd.conf에 줄을 추가하지 않고도 필요에 따라 추가 호스트를 생성할 수 있습니다.

며칠 동안 Apache 문서를 읽고 또 읽으면 많은 것을 배울 수 있습니다.온라인, 또는 Apache의 로컬 설치에 포함될 수도 있습니다. 많아 보일 수도 있지만 시간을 잘 보냈습니다.

관련 정보