Virtual host

Автор Juri4, 01 февраля 2016, 21:55:06

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Juri4

Веб сервер apache на Debian 7
Крутится несколько сайтов.
После смены IP и железа сервера.
Все работало нормально, но в один момент один сайт перестал открываться без www
открывает /var/www вместо /var/www/site.ru
замена местами server name и server alias не помогает.

endru

Не хватает технической информации, а именно - сам конфиг хоста.
без него вам никто ничего не подскажет.

Juri4

#2
Опытным ) путем установлено что конфиг виртуального сервера не влияет на работу.
А вот влияет файл hosts.

127.0.1.1       localhost o******r.ru e***26.ru s****e.ru

так вот первый сайт который работает - перестает работать без www
в примере это o******r.ru

если сменить местами o******r.ru и e***26.ru
Без www не работает e***26.ru





Cообщение объединено 02 февраля 2016, 21:36:21

из действий - первое вбить костыль поставить (подставить левый домен первым) - не помогло
второе - подставить не левый домен, а домен без папки указанной в virtual hosts  - тоже не помогло.

endru

можно и дальше гадать на кофейной гуще! если конфиги не будут предоставлены - тему будем считать мистической, и отправим в архив под названием "корзина".

hosts

Juri4

#4
default

<VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

o******r.ru

<VirtualHost *:80>
        ServerName o******r.ru
ServerAlias www.o******r.ru

ServerAdmin admin@o******r.ru

DocumentRoot /var/www/o******r.ru
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/o******r.ru/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>



Cообщение объединено 03 февраля 2016, 08:32:44

Все работало с этими конфигами - пока не переехал сервер.
смена ip, железа, hostname, и PTR записи.
Все больше ничего не делалось.

endru

и где эти конфиги лежат? /etc/apache2/sites-available/ или /etc/apache2/sites-enabled/ ?
если /etc/apache2/sites-available/ , то выполнялась ли команда a2ensite o******r.ru ?

Juri4

/etc/apache2/sites-available/   команда тоже выполнялась.

Первым делом начал пляску вокруг конфигов, но это не помогает.

А вот что странно с hosts немного выправил ситуацию.
как писал поставил сайт с маленькой посещаемостью на первое место.
Но проблему это не решает

endru

Juri4, вывод команд показывай:
uname -a
dpkg -l | grep apache2
ls -l /etc/apache2/sites-enabled/

не трогай hosts если не знаешь зачем он нужен. туда нужно писать только hostname, и никакие второстепенные домены там не нужны.

сделай самостоятельно симлинк на нужные конфиги, либо скопируй нужные домены с директории sites-available в sites-enabled.
после чего делай перезапуск apache2

Juri4

#8
juri@o******r:~$ uname -a
Linux o******r.ru 3.2.0-4-amd64 #1 SMP Debian 3.2.73-2+deb7u2 x86_64 GNU/Linux

juri@o******r:~$ dpkg -l | grep apache2
ii  apache2                            2.2.22-13+deb7u6              amd64        Apache HTTP Server metapackage
ii  apache2-mpm-prefork                2.2.22-13+deb7u6              amd64        Apache HTTP Server - traditional non-threaded model
ii  apache2-utils                      2.2.22-13+deb7u6              amd64        utility programs for webservers
ii  apache2.2-bin                      2.2.22-13+deb7u6              amd64        Apache HTTP Server common binary files
ii  apache2.2-common                   2.2.22-13+deb7u6              amd64        Apache HTTP Server common files
ii  libapache2-mod-php5                5.4.45-0+deb7u2               amd64        server-side, HTML-embedded scripting language (Apache 2 module)

ls -l /etc/apache2/sites-enabled/
итого 0
lrwxrwxrwx 1 root root 26 Ноя 19 21:11 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 40 Янв 24 17:14 ***.***.***.*** -> /etc/apache2/sites-available/***.***.***.***
lrwxrwxrwx 1 root root 33 Ноя 19 21:31 e****.ru.conf -> ../sites-available/e****.ru.conf
lrwxrwxrwx 1 root root 33 Ноя 19 21:32 e****.ru.conf -> ../sites-available/e****.ru.conf
lrwxrwxrwx 1 root root 35 Ноя 19 21:32 o******r.ru.conf -> ../sites-available/o******r.ru.conf
lrwxrwxrwx 1 root root 35 Ноя 19 21:32 p******w.ru.conf -> ../sites-available/p******w.ru.conf
lrwxrwxrwx 1 root root 36 Ноя 19 21:32 s******k.ru.conf -> ../sites-available/s******k.ru.conf
lrwxrwxrwx 1 root root 33 Ноя 19 21:32 s****.ru.conf -> ../sites-available/s****.ru.conf



Cообщение объединено 03 февраля 2016, 23:19:19

все заработало.
как и подозревал проблема была в hosts.
вместо o******r.ru прописал www.o******r.ru и все
причину так и не узнал )) - так как раньше все работало.

endru

Juri4, это не решение проблемы.

Juri4

Согласен - костыль.
Но не могу найти источник проблемы.

Juri4

Ответ пришел сам собой.
После переноса сервера с debian 7 на 8.
костыли не работали - оказалось при совпадении имен hostname и виртуального хоста открывается default.
забит новый костыль (удален default) и думаются мысли о замене Hostname и PTR записи.
Останавливает только отсутствие - присутствия исходящей почты - во время обновления PTR записей.

endru

Не поможет тебе Hostname и PTR.

на одном сервере может быть очень много сайтов, для того чтобы понять какой сайт должен обрабатывать apache - в конфиге есть ServerName. Клиент (браузер) при обращении к веб-серверу (apache2) передает заголовки, в которых передает адрес сайта (доменное имя). Apache2 анализирует эти заголовки, если такого домена в конфигах нет - будет открываться сайт default. Если такой домен есть - открывается нужный сайт.
Если эти сайты не открываются - нужно искать проблему:
1) проверить A-запись для домена (проверять нужно на клиенте):
nslookup domain.ru
должен вернуть IP сервера.
2) В конфигах есть ошибки, например 2 конфига на один сайт
grep -iE "warn|error" /var/log/apache2/error.log