Я установил 2 разных веб-приложения на свой выделенный Debian 6. Первое находится в /var/www/cast, а назначенный URL-адрес - `
example.example.com/cast
`
Я установил вторую, которая называется Airtime. Вторая установка не предлагала путь установки, поэтому она установилась автоматически где-то. Теперь, когда я пытаюсь войти в первую, я получаю вторую. Если я пытаюсь
example.example.com/cast
это ведет к Airtime. если я пойду в
пример.example.com
это также ведет туда..
Это записи в файле airtime-vhost
<VirtualHost *:80>
ServerName example.example.com
#ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /usr/share/airtime/public
DirectoryIndex index.php
SetEnv APPLICATION_ENV "production"
<Directory /usr/share/airtime/public>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Есть мысли, как мне дать им обоим уникальный URL?
решение1
Похоже, что Airtime имеет собственный веб-сервер, а вот «cast» (что бы это ни значило) — нет. Это правда?
В любом случае, общую проблему можно решить многими способами:
Вы можете запустить оба приложения на одном веб-сервере, если это возможно. Это было бы невозможно, только если одно из приложений зависит от очень специфической версии веб-сервера (предполагая, что Apache основан на файле конфигурации Airtime), которая несовместима с другим приложением. Но если вы можете загрузить все необходимые модули Apache в один экземпляр Apache, достаточный для запуска обоих приложений, тогда да, вам просто нужно поместить каждое приложение в отдельный путь в корне документа, например /var/www/airtime и /var/www/cast, и это будет "просто работать". В качестве альтернативы вы можете сопоставить любой каталог в файловой системе с корнем документа, либо с помощью simlinking в /var/www, либо с помощью директив конфигурации Apache.
Вы можете запустить два разных веб-сервера, но запустить их на разных портах. Это изменит URL-адрес по крайней мере на один из экземпляров, чтобы потребовать номер порта после домена, например,
http://example.com:8080/blah
где:8080
— это порт (я рекомендую выбрать значение больше 1024, но меньше 65000, и погуглить номер перед его использованием, чтобы убедиться, что это не известный порт для службы, которую вы уже используете).Вы можете запустить два разных веб-сервера, но запустить их на разных IP-адресах. Вы можете оставить порт по умолчанию 80 (или 443 для
https
), но вам понадобятся два разных IP-адреса.Вы можете запустить два разных веб-сервера, но запустить их на одном IP-адресе, но на разных поддоменах. Затем вы можете использовать URL Rewriting для автоматического сопоставления запросов на
http://airtime.example.com
приложение airtime и сhttp://cast.example.com
приложения cast.Для всего вышеперечисленного вы можете сделать это даже в пределах одного веб-сервера, если конфигурация достаточно надежна, а веб-сервер Apache достаточно надежен, чтобы сделать все вышеперечисленное в пределах одного экземпляра веб-сервера, хотя вам понадобятся некоторые более экзотические настройки конфигурации для некоторых вариантов. Обратите внимание, что я настоятельно рекомендую попробовать запустить все это в пределах одного экземпляра веб-серверапервый, поскольку этот способ более гибкий и простой в управлении, плюс вы, вероятно, сможете настроить его, не беспокоясь о портах или IP-адресах, которые усложняют жизнь вашим пользователям в первом случае и вам во втором.
Проблема с конфигурацией Airtime заключается в том, что она пытается быть vhost для, *:80
что означает, что каждый запрос к вашему серверу на порту 80 будет отображаться в корне документа для airtime, т. е /usr/share/airtime/public
. Вам нужно получить и cast
приложение, и airtime
приложение в одном и том же vhost, или же ограничить vhost airtime чем *:80
-то вроде того airtime.example.com:80
, чтобы только запросы к этому поддомену передавались в airtime.
Ваш конфиг Apache, который встроен в Debian, находится в /etc/apache2/
каталоге, поэтому перейдите туда и посмотрите на apache.conf
. Обратите внимание, что там также есть <VirtualHost *:80>
директива. Ну, вы не можете иметь два виртуальных хоста, претендующих на обработку всех запросов на порту 80; только один из них может победить. В этом и заключается проблема.