parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Цитата...

Sanja (v.2) 12.09.2002 16:24

из моей старой статьи про установку Apache/win32, которую я сейчас переписываю на добрую треть (будет лежать на http://www.bougakov.com/web/):

------------------------------------

А вот адреса, начинающиеся с 127.* всегда указывают на локальный компьютер. Те, в ком есть страсть к экспериментаторству, могут попробовать прямо сейчас сделать ping по любому такому адресу:
C:\> ping 127.1.2.3

Обмен пакетами с 127.1.2.3 по 32 байт:

Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128
Ответ от 127.1.2.3: число байт=32 время<10мс TTL=128

Для этого не нужно включать модем или подключаться к локальной сети - все адреса 127.*.*.* - к вашим услугам. То есть мы можем использовать любой из 2553 = 16,5 млн. доступных нам адресов, начинающихся на 127.*, не рискуя занять чей-то чужой номер и не прося ни у кого разрешения.

Наберите в своём браузере адрес {http://127.0.0.1/} и вы … ничего не увидите. И это нормально, потому что вы пока не запустили вебсервер на своей машине. Только после его запуска вы увидите не сообщение "Сервер не найден - невозможно отобразить страницу", а страницы своего сайта.

.....

мы будем использовать адреса в диапазоне 127.*.*.* под тестируемые сайты. Если у вас их две штуки, один привяжете к 127.0.0.2, а другой - к 127.0.0.3, если десять - займёте ещё. Вопрос в том, что не очень удобно обращаться к ним по IP-адресам - было бы удобнее использовать буквенные обозначения. Отсюда проблема - как заставить ваш компьютер сопоставить 127.0.0.2 адресу www.mycoolwebsite.ru так, как он сопоставляет IP-адрес 207.46.230.219 имени microsoft.com?

Обычно, когда вы набираете в адресной строке {microsoft.com} или {linux.org.ru}, вашему браузеру нужно узнать IP-адрес требуемого сервера. Сначала он ищет его у себя в кэше а затем обращается к DNS-серверу вашего провайдера - а всё это время вы любуетесь на строчку "Поиск узла nnnn..." ("Looking up for domain nnnn..."). Но перед этим происходит ещё один этап - Windows обращается к файлу HOSTS, в котором могут перечисляться сопоставления IP'шников адресам. Этот файл унаследован ещё от старых систем тех времён, когда все компьютеры, входящие в Интернет, можно было перечислить в одном файле. В Windows NT этот файл называется C:\WINNT\system32\drivers\etc\hosts. В Windows 9x его обычно не существует, и для того, чтобы его создать, найдите файл C:\WINDOWS\hosts.sam и скопируйте его в файл C:\WINDOWS\hosts (безо всякого расширения!) Вот как этот файл обычно выглядит:

# Copyright (c) 1993-1995 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows NT.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost

Если нужное имя будет найдено там, обращения к DNS не потребуется. Если вы будете заниматься тестированием своего сайта с помощью домашнего вебсервера, в этот момент никто не станет дозваниваться до провайдера, чтобы подключиться к DNS - всё успешно пройдёт и в офлайне.

Предположим, вы собираетесь тестировать на домашнем компьютере сайт {www.вашсайт.вашпровайдер.ru}. Откройте файл HOSTS в Блокноте и добавьте в его конец строчку

127.0.0.2 www.вашсайт.вашпровайдер.ru

Одновременно тестируете ещё три сайта? Нет проблем, добавляйте строки

127.0.0.3 www.ещёсайт.вашвторойпровайдер.ru
127.0.0.4 www.ваштретийсайт.вашчетвёртыйпровайдер.ru
127.0.0.5 пятыйсайт.вашзабугорныйпровайдер.com

Теперь все запросы, выдаваемые вашим браузером, адресуются вашему же компьютеру. Закончили тестирование, закачали файлы на сайт и хотите посмотреть, как всё выглядит - удалите ненужную строчку из файла HOSTS и перезапустите браузер (Windows перезагружать не надо). Браузер перестанет обращаться к локальному компьютеру и полезет дозваниваться до вашего Интернет-провайдера. Кстати, удалять ненужную строчку из файла HOSTS насовсем не требуется - добавьте в её начало символ "#" и Windows её проигнорирует.

...........


Подключение сайта к Apache

Теперь мы займёмся подключением к Apache вашего сайта. Расскажу о том, как это делать на примере моего сайта - {http://Userguide.webservis.ru/}.

Когда я регистрировал мой сайт UserGuide.webservis.ru, я получил на сервере в своё распоряжение папку /home/home-webservis/14659/public_html, папка cgi-bin располагалась у меня по адресу /home/home-webservis/14659/public_html/cgi-bin (вебсервер на сайте управляеся связкой Apache и FreeBSD). Поэтому я создал на диске c:\ папку home, в ней - папки /home-webservis/14659/public_html/cgi-bin. В public_html я скопировал все файлы своего сайта, включая скрипты, которые поместились в папку cgi-bin, и непременный файл index.html.

.......

После этого я заставил Apache подключить эту папку и использовать её, как корневой каталог моего вебсервера. Для этого я добавил в самый конец файла httpd.conf такой вот фрагмент:

# Домашняя копия сайта Userguide.Webservis.ru
# Копию сайта я привязал к адресу 127.0.0.2
<VirtualHost 127.0.0.2>
# Имя сервера, с которым в файле HOSTS
# связан IP-адрес 127.0.0.2
ServerName userguide.webservis.ru
# Здесь я указал адрес, выданный мне при регистрации
ServerAdmin userguide@webservis.ru
# Параметр DocumentRoot указывает на только что
# созданную мной папку - отсюда Apache будет брать
# страницы для выдачи их браузеру.
# Учитывайте, что папку нужно создать ДО того,
# как вы прицепите её к Apache. Ещё следите,
# в какую строну направлены косые черты!.
DocumentRoot "c:/home/home-webservis/14659/public_html"
# А здесь мы указываем серверу,
# что с этой папкой можно делать
# Если хотите знать, что эти параметры
# означают - читайте руководство к Apache
<Directory "c:/home/home-webservis/15405/public_html">
Options Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# Параметр ScriptAlias указывает на папку с cgi-скриптами
ScriptAlias /cgi-bin/ "c:/home/home-webservis/14659/public_html/cgi-bin/"
# В этот файл будут записываться ошибки сервера.
# Да, это тот самый лог сервера, который вам
# ни под каким соусом не хотели давать
# админы халявных хостингов!!!
ErrorLog "c:/home/home-webservis/14659/error.log"
# А в этот файл сервер пишет, какие файлы он выдаёт браузеру.
# У него есть сволочная привычка быстро разрастаться до
# чудовищных размеров, не забывайте его периодически чистить.
CustomLog "c:/home/home-webservis/14659/custom.log" common
</VirtualHost>

Исправьте в этом фрагменте куски, выделенные красным, на свой вариант. После этого сохраните httpd.conf и закройте Блокнот.

Перейдите к папке c:\Program Files\Apache Group\Apache\ и запустите apache.exe c ключом "-t". Если всё было сделано правильно, вы получите подтверждение, что вы всё сделали правильно, и ошибок в файле httpd.conf нет.

c:\> c:\Program Files\Apache Group\Apache\apache.exe -t
c:\Program Files\Apache Group\Apache\conf\httpd.conf: Syntax OK

Если же что-то сделано неправильно, вы увидите сообщение наподобие этого:

[error] Failed to resolve server name for 127.0.0.5
(check DNS) - or specify an explicit ServerName

Это сообщение, кстати, говорит о том, что адресу 127.0.0.5 в файле HOSTS забыли сопоставить имя сервера - это очень частая ошибка!

.......

Помните, что я говорил, что нам доступно примерно 16 миллионов адресов, начинающихся на 127.*? Мы только что заняли один, а что делать с остальными?

Самое вкусное состоит в том, что если у вас несколько сайтов, домашнюю копию каждого вы можете прицепить к своему адресу - один - к 127.0.0.3, второй - к 127.0.0.4 и так далее. И так до шестнадцати миллионов! Один Apache может обслуживать несколько сайтов, причём делается это до безобразия просто - вы добавляете в конец httpd.conf ещё один блок, с увеличенным на единичку номером, правите файл HOSTS, прописываете новые пути к папкам и перезапускаете Apache - и всё!

Учитывайте, что перед тем, как вписать сюда адрес папки, нужно создать её на диске. После того, как вы сохраните httpd.conf, не (пере)запускайте Apache до того, как проверите, правильно ли вы всё сделали, командой

c:\> c:\Program Files\Apache Group\Apache\apache.exe -t
c:\Program Files\Apache Group\Apache\conf\httpd.conf: Syntax OK