LINUX.ORG.RU
решено ФорумAdmin

Сайт в локальной сети Not Found

 , ,


0

1

Доброго дня всем.
Настроил lamp на debian:
Доступ:
-- права на корневую папку

chmod -R 755 /var/www

-- владелец корневого каталога сайта

chown -R vasy:vasy /var/www/geocity.mm/

Виртуальный хост:

<VirtualHost *:80>
    ServerAdmin admin@geocity.mm
    ServerName geocity.mm
     DirectoryIndex index.php
      DocumentRoot /var/www/geocity.mm/public_html
     <Directory /var/www/geocity.mm/public_html>
        Options Indexes FollowSymLinks MultiViews
         Require all granted
         Order allow,deny
         Allow from all
         AllowOverride All
     </Directory>
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
 </VirtualHost>

/etc/hosts

127.0.0.1     geocity.mm

Сайт открывается на сервере, а на локальных компьютерах нет (роутер dhcp). Если набираю из сети

192.168.0.103/geocity.mm
выдает Not Found.
В чем собственно проблема может быть?

В структуре директорий, documentroot и тому подобном счастье имхо

upcFrost ★★★★★ ()

ServerName geocity.mm

А вот что это такое:

192.168.0.103/geocity.mm

не ясно

anc ★★★★★ ()
Ответ на: комментарий от anc

192.168.0.103 - это ip сервера в локальной сети,
geocity.mm - это адрес сайта.
Я думал по логике должно так открываться. На сервер то всё работает , если перейти по адресу geocity.mm
Или надо dns поднимать?

AleksLeks ()
Ответ на: комментарий от AleksLeks

На сервере у вас работает вот поэтому

127.0.0.1 geocity.mm

Или надо dns поднимать?

Исходя из конфига апача, надо

192.168.0.103/geocity.mm

Исходя из этого может и не надо (на эту тему upcFrost выше ответил)
Все зависит от того чего достигнуть хотим.

anc ★★★★★ ()
Ответ на: комментарий от upcFrost

А что может со структурой не так? С правами на доступ что-то или нет? Права у пользователя не изменялись, т.е. пользователь создан во время установки как есть с теми правами какие были. В итоге я решил делать так, что каждому пользователю отдельный доступ до виртуального хоста. Седлал права чтения на www, а дальше директории отдельных сайтов отдельному пользователю.
-geocity.mm
-- public_html // cms, yii, php и тд
-- на этом же уровне можно еще папки создавать, чтобы не захламлять каталог сайта или вынести к примеру конфиг сайта от глаз подальше.
Подскажите, пожалуйста.

AleksLeks ()
Ответ на: комментарий от AleksLeks

Я честно больше с nginx работаю, но что-то подсказывает что при DocumentRoot /var/www/geocity.mm/public_html путь $ip/geocity.mm пойдёт на DocumentRoot /var/www/geocity.mm/public_html/geocity.mm , а не на index.php. или я неправильно твой пост распарсил?

Сорри за форматирование, я с телефона

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от anc

Хотим всего))
У меня такое видение, к примеру:есть сервер, где несколько сайтов, есть несколько девелоперских локальных машин (тестеры, они же верстальщики, они же программисты, и я). Вход по фтп на сервер только по локальной сети и только в свои папки сайтов (собственно поэтому и началось то, что для каждого сайта нужен отдельный пользователь с правами доступа).
И видеть все сайты по локальной сети на всех машинах, включая девайсы.
Также возможность потом всё перенастроить не ломая голову для доступности просмотра сайта из интернета или всё вместе сразу: интернет и локальная сеть (хотя по идеи второе отпадает, когда сайт видно из интернета, но мало ли что там случится, вдруг провайдер сменит настройки или интернет отключится, а сайты будет хоть видно из локальной сети, чтобы можно было продолжать хоть как-то работать)
Как-то так.

AleksLeks ()
Ответ на: комментарий от upcFrost

ТС upcFrost все верно написал. От себя добавлю если это единственный или первый в списке VirtualHost и ip у сервера 192.168.0.103 то просто по запросу 192.168.0.103 должно работать (исключение, в коде самого сайта прописаны полные пути вида http://geocity.mm)

anc ★★★★★ ()
Ответ на: комментарий от upcFrost

А в свою очередь /var/www/geocity.mm/public_html/geocity.mm должен запустить index.php, который лежит в каталоге public_html, мне кажется так. Ведь на сервере по адресу geocity.mm сайт работает.

AleksLeks ()
Ответ на: комментарий от AleksLeks

Также возможность потом всё перенастроить не ломая голову для доступности просмотра сайта из интернета

Без dns никак

Вход по фтп на сервер только по локальной сети и только в свои папки сайтов (собственно поэтому и началось то, что для каждого сайта нужен отдельный пользователь с правами доступа).

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

anc ★★★★★ ()
Ответ на: комментарий от AleksLeks

Нет. Вот так будет: /var/www/geocity.mm/public_html/geocity.mm/index.php
Впрочем выше я уже описал.

anc ★★★★★ ()
Ответ на: комментарий от AleksLeks

Ты запрос даёшь http://192.168.0.103/geocity.mm или слеш в посте означал 'либо то либо это'? Если первое - то почему у тебя должен /geocity.mm на /index.php переправлять? В плане - в конфиге редиректа нет. Можт там скрипт есть по этому пути, тогда другой разговор.

А про адреса - ты А-запись dns с адресом и локальным путем не путаешь?

В конфиге задана привязка локального пути на хосте к относительному пути для апача. То есть ты говоришь что / = /var/www/geocity.mm/public_html

Дальше ты от этого пути и танцуешь если дополнительно ничего не задано

А разрешение servername это вообще дело десятое

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 2)
Ответ на: комментарий от anc

Спасибо за совет) Я постарался продумать заранее (до того как познакомился с nix) про бекапы, сейчас всё в программном raid1 и lvm на случай расширения дискового пространства. Единственное, что еще хочу третий диск резервный, только пока боюсь подумать, как мне его туда третьим подружить, это на потом оставил, слишком много вопросов сразу. А где про контейнеры почитать можно? Я просто от вас первый раз слышу про них, предполагал просто группы пользователей и как-то еще где-то читал, что есть возможность расширить способы доступа при помощи дополнений.

AleksLeks ()
Ответ на: комментарий от AleksLeks

Я постарался продумать заранее (до того как познакомился с nix) про бекапы, сейчас всё в программном raid1

Эх молодежь.... raid != backup. В вашем конкретном случае он нужен для того что бы когда(не если, а именно когда) сайт поломают развернуть назад из резервной копии которая была создана ДО взлома (естественно устранив дыру в ней).

А где про контейнеры почитать можно?

В гугле lxc (но не только он) тут уж кому как нравиться. Поищите здесь по форуму, были темы про кто что использует для изоляции вэба.

anc ★★★★★ ()
Ответ на: комментарий от upcFrost

т.е. получается, что если будет при

192.168.0.103/geocity.mm
так
/var/www/geocity.mm/public_html/geocity.mm/index.php
то логике и как сказал anc должно открываться просто по ip 192.168.0.103.
Но там та же самая ошибка выходит. Странно
А с dns я еще не начинал ничего делать, у меня dhcp, там и путать то особо нечего, притом роутер я сам настраивал и присваивал каждому свой адрес. Буду пробовать с днс шаманить. Спасибо что поставили на путь истинный!)

AleksLeks ()
Ответ на: комментарий от AleksLeks

то логике и как сказал anc должно открываться просто по ip 192.168.0.103.

Только при условиях описанным мной выше. Вообще смотрите логи, там все хорошо описывается.

anc ★★★★★ ()
Ответ на: комментарий от anc

Перед тем как сайт в эфир выкладывать обязательно бекап поставлю!) Просто упустил момент. Кстати я тогда еще не знал, что на linux будет такая широкая возможность управлять дисками во время установки, поэтому и не запасся еще одним диском, знал бы вообще начал бы с SSD под базы и саму систему.

AleksLeks ()
Ответ на: комментарий от AleksLeks

Эм... не, пожалуйста конечно, но только dns и dhcp это слегка разные вещи.

И да, сделанный вывод про путь как раз абсолютно нелогичен. Ты сопоставил / с локальным путем. Тогда /geocity.mm это локальный путь (целиком) плюс geocity.mm.

То есть /var/www/geocity.mm/public_html/geocity.mm/

И уже в этой директории он будет искать index.php. вообще посмотри по логам что он у тебя за файл найти пытается, там все написано.

Короче, сам index.php в какой директории лежит? Вот если её указать как /, то по адресу 192.168.0.103 (без дополнений) должен будет идти запрос на этот файл.

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от upcFrost

index.php лежит в public_html У меня по всем адресам 192.168.0.103, 192.168.0.103/index.php тоже самое Not Found
/var/log/apache2/error.log пустой вообще. Или я не те логи смотрю?

AleksLeks ()
Ответ на: комментарий от AleksLeks

загляни еще в access.log на всякий

далее - проверь что это правда единственный сайт, который слушает порт 80. Иначе апач без name-based resolution будет цеплять по адресу первый из этих сайтов.

далее - ошибка Not Found это 404 код ответа или что-то другое? т.к. есть код ответа, а есть страница которую браузер рисует. Можешь через curl с параметром -v глянуть что он за код ответа шлет и вообще куда тебя кидает.

далее - для простоты можешь заменить ${APACHE_LOG_DIR} на что-то более предсказуемое, например на /var/log/apache или на свой /home или еще куда. Главное чтоб юзер, под которым апач стартует, мог туда добраться и писать.

upcFrost ★★★★★ ()
Ответ на: комментарий от upcFrost

О, спасибо большое! Забыл я про дефолтный 000-default.
Отключил его и сайт заработал по ip 192.168.103 и 192.168.0.103/index.php
А интересно, если заставить сайт работать по 192.168.0.103/geocity.mm другие хосты будут работать по такому же принципу?

AleksLeks ()
Ответ на: комментарий от AleksLeks

А интересно, если заставить сайт работать по 192.168.0.103/geocity.mm другие хосты будут работать по такому же принципу?

заставлять ничего не надо, нужно просто грамотно маппинг раскидать.

по какому именно принципу должны работать другие хосты не совсем понял, но так или иначе - у апача есть 2 модели разрешения vhost: по имени и по адресу/порту. Во втором случае если один адрес/порт слушает несколько vhost с разными именами, то при обращении без имени хоста тапки получает первый из них по списку.

p.s. не забываем отмечать решенные задачи (внизу в первом посте ссылка есть «отметить как решенную»)

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 2)
Ответ на: комментарий от upcFrost

Я уже понял, что порты надо разные. А по имени, то есть вместо ip имя geocity.mm? Я вот тут больше всего боюсь одного, что бы не получилось так, что я настрою локальный просмотр, а после с интернета не будут доступны сайты, особенно если делать, что-то с портами.

AleksLeks ()
Ответ на: комментарий от upcFrost

у апача есть 2 модели разрешения vhost: по имени и по адресу/порту.

Дополню, «по имени» это не обязательно доменное имя, может быть и ip адресом, т.е. то что в браузере запрашиваете.

anc ★★★★★ ()
Ответ на: комментарий от AleksLeks

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

есть такое дело. Для этого можно ставить ServerAlias если мне память не изменяет. Потому что действительно часто в локалке свой днс-сервер (да и вообще структура формирования имени), а во внешних интернетах свой, и А-запись может быть разная чисто по административным причинам

И кстати - не порты разные, а пары адрес/порт разные. Скажем ты вполне можешь слушать два интерфейса на один порт, например 127.0.0.1:80 ведет на сервис, а 1.2.3.4:80 - на гейт, который проверяет сертификат/логин-пароль/токен юзера и только затем перенаправляет на 127.0.0.1:80.

upcFrost ★★★★★ ()
Последнее исправление: upcFrost (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.