Cтатья: Установка nginx как front-end к apache в Debian / Ubuntu - 2

Всё прекрасно, всё понятно, спасибо. Опечатку в путях /site /sites устранил сам. Всё работает, только страницы не вижу. Получаю 404. Где располагать и как прописывать контент? Забыл добавить, apache_error.log пишет "File does not exist: /htdocs".

спросил Aug 24 '10 at 02:03

targitaj's gravatar image

targitaj
21

обновлено Aug 24 '10 at 02:42


Опечатку в путях /site /sites устранил сам

Спасибо за замечание. Текст скорректирован.

Получаю 404.

Я бы проверил, что:

  • запросы проходят через nginx. Для этого посмотреть лог: /home/site/debianworld.ru/logs/nginx_access.log
  • запросы доходят до apache. Для этого смотрим лог: /home/site/debianworld.ru/logs/apache_access.log

После каждого обращения к сайту там должны появляться записи. Если этого не происходит (записей новых нет), то что-то не правильно настроено. Надо смотреть логи ошибок: /home/site/debianworld.ru/logs/{nginxaccess.log, apacheerror.log}

Где располагать и как прописывать контент?

Забыл добавить, apache_error.log пишет "File does not exist: /htdocs"

  • Статический контент (картинки, flash, javascript, css и т.п.) необходимо располагать в директории: /home/site/debianworld.ru/static/, которая указана к конфиге для nginx в секции "location".
  • Остальное - необходимо дополнительно настраивать apache (копать в сторону опций Location, Directory). Этот момент сильно разница в зависимости от того, какой контент будет: статический html, python, php или что-то еше. На сайте есть несколько примеров настройки apache для разных случаев.
  • Судя по логу, в конфиге прописана директория "/htdocs", которой реально не существует. Необходимо, либо создать эту директорию, либо указать путь к той директории, которая существует.

ответил Aug 24 '10 at 10:17

dw's gravatar image

dw
156

Всё работает, просто контент не найден. По-умолчанию в апаче кладешь контент в папку www и всё. Если кладешь папку - потом эту папку через / указываешь.

Все зависит от того, как настроен виртуальный хост в apache2.

Я считаю, что следует добавить в статью хотя бы ссылки на примеры заполнения виртуальных хостов контентом.

Добавил ссылочку на документацию по виртуальным хостам apache2.

Интересный результат поиска

Это настройки потокового видео сервера, а не apache2

ответил Aug 24 '10 at 13:26

dw's gravatar image

dw
156

обновлено Aug 24 '10 at 13:27

Понятное дело, что где-то кем-то почему-то прописана папка /htdocs, но где ?

Думаю, что может помочь поиск вида:

$ find /etc/apache2 -name "*" | xargs grep -i -n "htdocs"

Таким образом будут найдены все записи в файлах конфигурации apache, где встречается слово "htdocs".

Просто один апач работал нормально.

А сейчас apache какой порт слушает? 8080 ?

Если сейчас сходить на http://домен:8080, будет ошибка?

ответил Aug 24 '10 at 11:29

dw's gravatar image

dw
156

Заработало. Не уверен на 100%, но, кажется, помогло добавление в файл

/etc/apache2/sites-available/tarh.local

строчки

DocumentRoot /home/sites/tarh.local/apache/

Возможно, дело и не в ней, я сейчас не упомню всё, что пробовал. Есть нюанс, правда. Страница открывается при абсолютно любом имени, относящегося к ЭТОЙ машине, не только при www. Даже если я вбиваю дуругую зону 2-го уровня. Естественно, все эти зоны и имена есть у меня в DNS. Виртуал хост создан при этом только один. Осталось найти как привязать жестко к www.tarh.local. чтобы страница открывалась ТОЛЬКО при запросе этого адреса ЦЕЛИКОМ.

PS. В правах на файле страницы должно быть разрешение X, на выполнение. Едит. Нет, всё-таки не надо.

PSS. Я вас прошу, ткните в простенький мануал с основами оформления, самому страшно смотреть.

ответил Aug 24 '10 at 22:06

targitaj's gravatar image

targitaj
21

обновлено Aug 25 '10 at 01:43

nginx_access.log:

192.168.1.10 - - [24/Aug/2010:11:03:09 +0400] "GET / HTTP/1.1" 404 224 "-" "Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.19) Gecko/20080528 Epiphany/2.22"

192.168.1.10 - - [24/Aug/2010:11:03:26 +0400] "GET / HTTP/1.1" 404 232 "-" "Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.19) Gecko/20080528 Epiphany/2.22"

apache_access.log:

192.168.1.10 - - [24/Aug/2010:11:03:09 +0400] "GET / HTTP/1.0" 404 224 "-" "Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.19) Gecko/20080528 Epiphany/2.22"

192.168.1.10 - - [24/Aug/2010:11:03:26 +0400] "GET / HTTP/1.0" 404 232 "-" "Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9.0.19) Gecko/20080528 Epiphany/2.22"

localhost - - [24/Aug/2010:11:05:03 +0400] "GET /server-status?auto HTTP/1.0" 200 1068 "-" "libwww-perl/5.813"

Понятное дело, что где-то кем-то почему-то прописана папка /htdocs, но где? Сам я этого не вбивал. Все конфиги, про которые вспомнил, обшарил - нет такого текста нигде. Может, это какой-нибудь плагин? Подскажи, как произвести поиск по тексту по всему содержимому раздела?

Стало быть, апач надо еще дополнительно настраивать. Хорошо, будем копать. Пока что:

The requested URL / was not found on this server.
Apache/2.2.9 (Debian) Server at www.tarh.local Port 80

Просто один апач работал нормально.

ЗЫ. Кстати, ведь прокатит, если папка с сайтами root:root и 0777? С этим же не должно быть проблемы?

ответил Aug 24 '10 at 11:14

targitaj's gravatar image

targitaj
21

обновлено Aug 24 '10 at 11:33

dw's gravatar image

dw
156

Кстати, ведь прокатит, если папка с сайтами root:root и 0777? С этим же не должно быть проблемы?

Лучше, конечно владельцем сделать не-root пользователя. Но если права стоят "777", то пользователь apache должен без проблем читать содержимое.

ответил Aug 24 '10 at 11:36

dw's gravatar image

dw
156

find /etc/apache2 -name "*" | xargs grep -i -n "htdocs"

Не дал ничего. Вообще.

Not Found

The requested URL / was not found on this server.

Apache/2.2.9 (Debian) Server at www.tarh.local Port 8080

Всё работает, просто контент не найден.

По-умолчанию в апаче кладешь контент в папку www и всё. Если кладешь папку - потом эту папку через / указываешь.

Я считаю, что следует добавить в статью хотя бы ссылки на примеры заполнения виртуальных хостов контентом.

ответил Aug 24 '10 at 11:47

targitaj's gravatar image

targitaj
21

обновлено Aug 24 '10 at 13:16

dw's gravatar image

dw
156

http://httpd.apache.org/docs/2.2/vhosts/

Вах! По-русски!

Интересный результат поиска

$ find /etc -name "*" | xargs grep -i -n "htdocs"
/etc/ffserver.conf:276:#File "/usr/local/httpd/htdocs/tlive.rm"
/etc/ffserver.conf:281:#File "/usr/local/httpd/htdocs/test.asf"
/etc/ffserver.conf:301:#File "/usr/local/httpd/htdocs/test1.mpg"
/etc/ffserver.conf:322:#File "/usr/local/httpd/htdocs/test1.mpg"

ЗЫ. Что-то у меня красиво оформить не получается :(

ответил Aug 24 '10 at 12:22

targitaj's gravatar image

targitaj
21

обновлено Aug 24 '10 at 13:18

dw's gravatar image

dw
156

Если можно, поясните подробней назначение строчки ServerName debianworld.ru в файле apache2.conf. Еще раз спасибо.

ответил Aug 24 '10 at 22:18

targitaj's gravatar image

targitaj
21

Заработало. Не уверен на 100%, но, кажется, помогло добавление в файл "/etc/apache2/sites-available/tarh.local" строчки "DocumentRoot /home/sites/tarh.local/apache/"

Да, настройка "DocumentRoot" как раз и указывает на то место в файловой системе, откуда apache будет забирать файлы.

Возможно, дело и не в ней, я сейчас не упомню всё, что пробовал. Есть нюанс, правда. Страница открывается при абсолютно любом имени, относящегося к ЭТОЙ машине, не только при www. Даже если я вбиваю дуругую зону 2-го уровня. ... Если можно, поясните подробней назначение строчки ServerName debianworld.ru в файле apache2.conf. Еще раз спасибо.

"ServerName" отвечает за то, на какой адрес будет отзываться Ваш virtual host.

Осталось найти как привязать жестко к www.tarh.local. чтобы страница открывалась ТОЛЬКО при запросе этого адреса ЦЕЛИКОМ.

Во второй части статьи про настройку apache есть пример настройки virtual host'a. В Вашем случае, он мог бы выглядеть следующим образом:

<VirtualHost *:8080>
    ServerAdmin admin@www.tarh.local
    ServerName www.tarh.local
    ServerAlias tarh.local

    DocumentRoot /home/sites/tarh.local/apache/    

    <Directory /home/sites/tarh.local/apache/>
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn
    ErrorLog  /home/sites/tarh.local/apache/logs/apache_error.log
    CustomLog /home/sites/tarh.local/apache/logs/apache_access.log combined

   # Остальные настройки
   # ...
</VirtualHost>

И конечно, надо не забывать чтобы в nginx этот вирт.хост так же был корректно настроен. За это отвечает опция "server_name". В вашем случае это будет:

#...
server_name www.tarh.local tarh.local;
#...

ответил Aug 25 '10 at 09:05

dw's gravatar image

dw
156

Ваш ответ
вы можете ответить анонимно, а потом войти
переключить предпросмотр

Подписка:

После регистрации/входа Вы сможете подписываться на любые обновления

Тэги вопроса:

×38
×28
×17
×12
×2

задано вопросов: Aug 24 '10 at 02:03

вопрос просмотрен: 2,800 раз

последнее обновление: Aug 25 '10 at 09:06