1 (изменено: masada, 2012-03-26 18:24:02)

Тема: Как правильно создать структуру каталогов виртуальных хостов?

В «Установке Apache HTTP Server 2.2.19» написано:
«Создание структуры каталогов виртуальных хостов.
В корне диска необходимо создать каталог "apache" - в нем будут лежать ваши виртуальные хосты (домены)... В каталоге "apache" создаем еще одну пустую папку - "localhost", в которой, в свою очередь, создаем папку "www", именно в последней и надо будет держать наше добро в виде локальных скриптов».
Всё сделал, как написано, но! У меня для тестирования несколько сайтов на разных CMS, и каждый сайт в своей папке, например, site_WordPress, site_Drupal, site_Joomla и т.д.
Вопрос, где правильнее будет разместить эти сайты (папки)? У меня 3 варианта.
1. Правильно ли я сделал, что все эти несколько папок поместил в одну папку “www”, т.е. все папки с сайтами (site_WordPress, site_Drupal, site_Joomla) расположены по адресу “C:/apache/localhost/www”. 
2. Или правильнее создать структуру каталогов виртуальных хостов следующего вида:
“C:/apache/localhost1/www/site_WordPress ”;
“C:/apache/localhost2/www/site_Drupal”;
“C:/apache/localhost3/www/site_Drupal”;
3. Или правильнее создать структуру каталогов виртуальных хостов вот такого вида:
“C:/apache/localhost1/www”, где в папке “www” содержимое папки site_WordPress.
“C:/apache/localhost2/www” где в папке “www” содержимое папки site_Drupal.
“C:/apache/localhost3/www” где в папке “www” содержимое папки site_Joomla.
Понятно, что в двух последних случаях файл hosts будет отредактирован:
127.0.0.1  localhost1
127.0.0.1  localhost2
127.0.0.1  localhost3
А в файле "httpd-vhosts.conf" дописать:
<VirtualHost *:80>
   DocumentRoot "C:/apache/ localhost1/www"
   ServerName localhost1
   ServerAlias www.localhost1
   ErrorLog "C:/apache/ localhost1/error.log"
   CustomLog "C:/apache/ localhost1/access.log" common
</VirtualHost>
И таким же образом дописать для localhost2 и localhost3.

В общем, как правильно создать структуру каталогов виртуальных хостов для моего случая. Какой из трёх вариантов самый правильный?
И что имелось в виду под выражением "добро в виде локальных скриптов"? Собственно говоря, непонятность этого выражения и вызвала данный вопрос.

2

Re: Как правильно создать структуру каталогов виртуальных хостов?

"добро в виде локальных скриптов" - это и есть ваши скрипты WordPress, Joomla и Drupal.

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

3

Re: Как правильно создать структуру каталогов виртуальных хостов?

"это и есть ваши скрипты WordPress, Joomla и Drupal" - то есть это первый вариант, когда в одной папке "www" находится несколько подпапок с сайтами?

4

Re: Как правильно создать структуру каталогов виртуальных хостов?

masada сказал:

"это и есть ваши скрипты WordPress, Joomla и Drupal" - то есть это первый вариант, когда в одной папке "www" находится несколько подпапок с сайтами?

По сути - да. Обычно на localhost располагают локальные скрипты, например phpMyAdmin. Локальные они потому, что в отличие от сайтов, их не надо переносить и сидят на localhost.

5

Re: Как правильно создать структуру каталогов виртуальных хостов?

Допустим, на своём компе захочу создать сайт с произвольным именем, например, www.kis-kis-kis.com с заходом на него с других компьютеров из инета, то тогда мне нужно в "apache" создать папку "kis-kis-kis.com", в которой, в свою очередь, создать папку "www", а в эту последнюю распаковать содержимое какой-нибудь CMS, например, WordPress? Так как распакованный WordPress состоит из 3 папок и 19 файлов, то в "www" будет три папки и 19 файлов. Я правильно думаю или что-то упускаю?
Далее. Мой IP, к примеру: 80.83.245.105, поэтому в файле hosts прописываю:
80.83.245.105  kis-kis-kis.com
80.83.245.105  www.kis-kis-kis.com
В файле "httpd-vhosts.conf" дописываю:
<VirtualHost *:80>
   DocumentRoot "C:/apache/kis-kis-kis.com/www"
   ServerName kis-kis-kis.com
   ServerAlias www. kis-kis-kis.com
   ErrorLog "C:/apache/kis-kis-kis.com/error.log"
   CustomLog "C:/apache/kis-kis-kis.com/access.log" common
</VirtualHost>
Но мне остаётся непонятен пункт 4 из «Правки файла httpd.conf»:
«4. Найдите и раскомментируйте строку:
ServerName www.example.com:80
Отредактируйте ее следующим образом, установив изначальное имя сервера:
ServerName localhost:80»
Мне как в пункте 4 отредактировать ServerName и надо ли его вообще в моём случае редактировать. А если на локальном компе будет несколько сайтов?
Может, я ещё что упустил? Провайдер «Акадо» говорит, что заход на локальный сайт из Интернета возможен.

6

Re: Как правильно создать структуру каталогов виртуальных хостов?

masada сказал:

то тогда мне нужно в "apache" создать папку "kis-kis-kis.com", в которой, в свою очередь, создать папку "www", а в эту последнюю распаковать содержимое какой-нибудь CMS, например, WordPress?

Верно.

masada сказал:

Так как распакованный WordPress состоит из 3 папок и 19 файлов, то в "www" будет три папки и 19 файлов. Я правильно думаю или что-то упускаю?

Все правильно.

masada сказал:

Но мне остаётся непонятен пункт 4 из «Правки файла httpd.conf»:

Строка ServerName localhost:80 в httpd.conf влияет только на виртуальный хост localhost и фактически не работает, потому что у нас есть отдельный блок управления виртуальным хостом localhost. Но строку надо отредактировать именно так, как указано в статье. Трогать ее после этого уже не надо.

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

Только имейте в виду, что статья рассчитана на развертывание веб-сервера для разработки, а не для хостинга, поэтому далеко не безопасна в своих настройках.

7 (изменено: masada, 2012-03-26 22:51:20)

Re: Как правильно создать структуру каталогов виртуальных хостов?

Hanut, подскажите, пожалуйста, каким образом можно зайти с инета только по IP без покупки мною имени? Написав в адресной строке с другого компа мой IP: 80.83.245.105 и всё?
А как тогда отредактировать hosts? К какому имени в hosts привязать 80.83.245.105, если имя не покупается? Не к localhost’у же. Или ничего не писать (что странно)?
И что писать в файле "httpd-vhosts.conf"? Как вообще назвать папку в "apache", дать ей названием свой IP-адрес? То есть в папке "apache" создать папку "80.83.245.105", а в ней, в свою очередь, создать папку "www"? Тогда можно было бы в "httpd-vhosts.conf" написать:
DocumentRoot "C:/apache/80.83.245.105/www"
ServerName 80.83.245.105
ServerAlias www.80.83.245.105 
Так? Или это неправильно? Странно как-то, без .ru или .com или прочих суффиксов))
P.S. Разве обязательно покупать имя? Если я придумаю имя, которого точно ни у кого нет, например, бессмысленное имя сайта из 250 знаков и привяжу это имя к своему IP, то я ничего и ничьи права ведь не нарушу?

8

Re: Как правильно создать структуру каталогов виртуальных хостов?

masada сказал:

подскажите, пожалуйста, каким образом можно зайти с инета только по IP без покупки мною имени? Написав в адресной строке с другого компа мой IP: 80.83.245.105 и всё?

Именно так.

masada сказал:

А как тогда отредактировать hosts?

Файл hosts вы редактируете для себя, он действует локально, только для того компьютера на котором находится.

masada сказал:

К какому имени в hosts привязать 80.83.245.105, если имя не покупается?

Ни к какому имени не надо привязывать внешний IP 80.83.245.105. Для локального использования привязывается локальный же адрес 127.0.0.1, который означает ваш компьютер. Если доменное имя покупается, то в панели управления доменом вы делаете привязку этого имени и вашего статического IP.

masada сказал:

Как вообще назвать папку в "apache", дать ей названием свой IP-адрес?

Как хотите обращаться к сайту, так и назовите.

masada сказал:

DocumentRoot "C:/apache/80.83.245.105/www"

Можно и так, только неудобно будет этот IP все время вводить в адресной строке браузера.

masada сказал:

Странно как-то, без .ru или .com или прочих суффиксов)

Можете и с .ru, как угодно, это не имеет значения.

masada сказал:

Разве обязательно покупать имя?

Для внешних подключений по имени это имя надо купить или как-то еще получить. Есть сервисы, которые позволяют не покупать, а привязывают домен третьего уровня к вашему IP.

masada сказал:

Если я придумаю имя, которого точно ни у кого нет, например, бессмысленное имя сайта из 250 знаков и привяжу это имя к своему IP, то я ничего и ничьи права ведь не нарушу?

В hosts вы можете писать хоть google.com, этим ничего не нарушите, кроме того, что при попытке ввести этот адрес в браузере попадете на свой веб-сервер.

9

Re: Как правильно создать структуру каталогов виртуальных хостов?

"Как хотите обращаться к сайту, так и назовите" папку в "apache".
Вы прежде написали, что с другого компа я могу зайти, только написав свой IP-адрес в адресной строке, или я неправильно понял?
Допустим, решил я назвать свой сайт "kis-kis-kis.com", не покупая это имя, а где, в каком файле сделать привязку имени сайта к моему IP? В файле "httpd-vhosts.conf"? Дописав:
<VirtualHost *:80>
   DocumentRoot "C:/apache/kis-kis-kis.com/www"
   ServerName kis-kis-kis.com
   ServerAlias www. kis-kis-kis.com
   ErrorLog "C:/apache/kis-kis-kis.com/error.log"
   CustomLog "C:/apache/kis-kis-kis.com/access.log" common
</VirtualHost>
Так будет правильно? И тогда можно с другого компа зайти на мой сайт, набрав с другого компа в браузере www. kis-kis-kis.com?
А phpMyAdmin можно оставить в “localhost”? Или где бы Вы мне посоветовали?

10

Re: Как правильно создать структуру каталогов виртуальных хостов?

masada сказал:

И тогда можно с другого компа зайти на мой сайт, набрав с другого компа в браузере www. kis-kis-kis.com?

Нет. Не покупая доменного имени с другого компьютера зайти можно только по IP, по имени нельзя.

Оставьте phpMyAdmin в localhost.

11

Re: Как правильно создать структуру каталогов виртуальных хостов?

Знаете, я больше года назад зарегался на Вашем сайте, чтобы задать этот вопрос, но тогда что-то помешало это сделать. Сейчас вот задал вопрос, получил Ваши ответы и, к моему удивлению, всё получилось. Спасибо огромное! Заминка была с phpMyAdmin, но я сам виноват, не захотел Вас слушать и оставлять phpMyAdmin в localhost, потому соединения с базой не было. С phpMyAdmin в localhost’е всё получилось. Спасибо!
Правда, раз у меня несколько сайтов на одном IP, то у меня в папке “www” поддомены в виде папок “sait_1”, “sait_2”, “sait_3” с разными CMS. Если зайти по моему IP, например, 80.83.245.105, то будут видны все папки, а мне бы хотелось, чтобы пользователь не мог зайти по адресу 80.83.245.105, а заходил бы только при условии введения в адресной строке: 80.83.245.105/sait_1, 80.83.245.105/sait_2 или 80.83.245.105/sait_3. Вообще, это как-то возможно, чтобы пользователь не видел содержание папки 80.83.245.105?

12

Re: Как правильно создать структуру каталогов виртуальных хостов?

masada сказал:

Вообще, это как-то возможно, чтобы пользователь не видел содержание папки 80.83.245.105?

В корне создайте файл .htaccess и добавьте в него строку:

Options -Indexes

Это отключит вывод содержимого каталогов и выведет страницу ошибки 403 Forbidden.