Как настроить виртуальные хосты, чтобы они указывали на две разные директории

1

У меня есть один домен и поддомен, которые должны указывать на две разные папки, я пробовал эту помощь, но все же у меня есть проблемы. ( 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 info@wasamar.com.ng
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 info@wasamar.com.ng
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

Как мне этого добиться?

udemethegrtman
источник
Можете ли вы указать, какие "проблемы" у вас еще есть. Я вижу файлы conf, но не знаю, какую проблему вы думаете, у вас есть.
Цыганская
@ Цыган, я хочу, чтобы домен и поддомен указывали на два разных пути документа, как мне это сделать?
udemethegrtman
Что вы сделали, директива DocumentRoot сообщает серверу, где искать файлы. Вы включили каталоги для сервера? Вы включили виртуальные хосты? У вас основной файл conf включает эти файлы?
Цыганская
Я включил virtualhost sudo a2ensite wasamar.com.ng.conf и sudo a2ensite ts.wasamar.com.ng.confпозвольте мне добавить мою основную конфигурацию (/etc/apache2/apache2.conf), пожалуйста, посмотрите.
udemethegrtman

Ответы:

0

Из того, что я вижу, есть несколько проблем, и может быть больше. Для начинающих, в то время как вы указали Apache, где искать корень для каждого сервера, вы не дали разрешение Apache «обслуживать» файлы из этих каталогов. Также вы не сказали Apache, что это виртуальные хосты. Есть и другие вещи, которые вам нужно сделать с файлами conf виртуального хоста, но как минимум вам нужно дать разрешение Apache на сервер файлов в каталоге, и вам нужно сказать Apache, что это определение виртуального хоста. Измененные только для этого минимума, два файла выглядят так:

Это новый файл виртуального хоста (/etc/apache2/sites-available/wasamar.com.ng.conf):

<VirtualHost *:80>

ServerName wasamar.com.ng

ServerAlias www.wasamar.com.ng

ServerAdmin info@wasamar.com.ng
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 info@wasamar.com.ng
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>

В обоих случаях изменение добавляет первую строку и последние десять строк. Внутри директивы вы , вероятно , нужны другие вещи, такие , как Optionsи AllowOverride, например.

Чтобы все это работало, вам также нужно что-то еще в вашем основном файле конфигурации, вероятно, 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. Это может показаться много, но это хорошо проведенное время.

Цыганский заклинатель
источник
у меня возникли проблемы по этому поводу,
udemethegrtman
Рад, что ты получил эту часть работы. На семействе сайтов Stack Exchange, если один из полученных вами ответов решил вашу проблему, пожалуйста, найдите время и примите его , нажав на флажок слева. Это пометит вопрос как ответивший и выразит благодарность на сайтах Stack Exchange.
цыганский