Решил начать рассказ с web-сервера. Пару раз я наступал на совершенно непонятные с первого взгляда грабли. Надеюсь, мой опыт поможет ещё кому-то. В качестве боевого web-сервера был выбран apache.
Он должен:
1. Дружить с mysql/php.
2. Должна быть поддержка виртуальных хостов.
3. Некоторые сайты будут требовать Zend Optimizer.
Перед установкой апача (если он ещё не стоит), появилась проблема с mysql. СУБД просто падала при запуске с кучей ошибок в логе. Пришлось немного поискать ответы на www.centos.org и вычитать, что CentOS 5.2 содержит битый бинарник mysql, но в обновлениях уже лежит рабочий. Так что
yum remove mysql mysql-server
yum install mysql mysql-server
Странно, что update не исправлял эту ситуацию. Сейчас уже образы CentOS содержат рабочую версию mysql.
После успешной установки mysql, открываем /etc/my.conf и проверяем есть ли у нас что-то вроде:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=127.0.0.1
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Стоит обратить внимание на bind-address. mysql будет принимать подключения только от нашего же IP. Если необходимо чтобы с СУБД могли работать и другие клиенты, то можно поставить bind-address=0.0.0.0 или указать адрес того интерфейса сервера, с которого mysql будет принимать соединения. Если надо указать несколько интерфейсов, то можно продублировать bind-address несколько раз с каждым IP. Последний штрих – добавить mysql в “автозагрузку”:
chkconfig --level 3 mysqld on
и перезапустить:
service mysqld restart
Теперь установим (или обновим) apache и php:
yum install httpd mod_ssl php-common php-gd php-mcrypt php-memchache php-mhash php-mysql php-xml
Пока качаются обновления можно посмотреть пару роликов позитивной передачи об играх “Из-Подвала” или почитать блог для вебмастеров.
Откроем /etc/php.ini . Тут будет интересовать не многое:
…
Расскажите что дальше делать? Настроил виртуальные хосты для двух сайтов. Хочу 2 сайта на одном IP. Сервер Apache/2.2.9 (Debian 5) PHP/5.2.6-1+lenny8 панель управления Webmin. От хостера есть инфа:
Network: xxx.xxx.xxx.xxx/32
Main IP Address: xxx.xxx.xxx.xxx
Netmask: 255.255.255.252
Gateway: xxx.xxx.xxx.xxx
DNS Resolver1: xxx.xxx.xxx.xxx
DNS Resolver2: xxx.xxx.xxx.xxx
Что со всеми этими IP делать просто не знаю.
Подскажите куда писать DNS Resolver’ы в фаил hosts, а что еще куда записать? Подскажите пример. И как привязать к доменам? Регистратор Godaddy. У него вроде есть свои DNS. В управлении доменом на Godaddy я вбил оба DNS Resolver’а назвав каждый ns1 и ns2 соответственно и потом тамже у домена заменил старые NSы от старого хостера на новые уже свои ns1.mydomain.com ns2.mydomain.com . Залил сайт в катаог DocumentRoot /var/www/mydomain.com/. Захожу по SSH делаю проверку командой GET mydomain.com выдает HTML код страницы сайта вроде все работает, но когда захожу на mydomain.com через браузер сайт не работает. Всю голову сломал, весь интернет перерыл а сайт так и не работает. Догадываюсь что что то гдето не донастроил но не знаю где, метод тыка не помогает.
Если все сделано правильно, то у вас уже работают 2 сайта. После покупки домена у Godaddy, должна появится возможность указать на каком IP сайт будет крутится. Я ни разу не покупал у них, поэтому не могу подсказать где у них эта форма. После того как у Godaddy будет связка domain -> ip, произойдет обновление DNS. Пользователи будут направлены на нужный вам ip (тот, где вы настроили виртуальные хосты). Далее уже апач будет принимать запросы и отдавать нужные страницы (в соотвествии с доменом).
Обновление dns может занять некоторое время (обычно не более 24 часов). В любом случае вы всегда можете проверить правильно ли работает днс через:
nslookup mydomain.com
и
nslookup http://www.mydomain.com
Потенциальная проблема — вы купили домен mydomain.com и привязали его к ip сервера, а в браузере открываете http://www.mydomain.com, но это _разные_ домены. http://www.mydomain.com надо так же привязать к ip сервера у Godaddy.
Мне сложно сказать что у вас получилось с NS записями… Вы ввели реальные dns сервера или фейковые? Если фейковые, то godaddy просто делает редирект на них, а они не существуют… Запрос не выполняется и host unresolved. Просто используйте днс регистратора (godaddy) и пусть он отдает пользователям ip вашего сервера.
P.S. DNS Resolver’ы в hosts писать точно не надо (просто нет смысла).
godaddy требует две NS записи.. я и их прописал как ns1.mydomain.com ns2.mydomain.com а до этого в свою очередь в ns1 ns2 тамже на godaddy я них вбил свои DNS Resolver’ы. Правильно?
Даю команду nslookup mydomain.com ппишет -bash: nslookup: command not found
Даю команду GET mydomain.com начинает выдавать HTML код страницы index.php
GET http://www.mydomain.com тотже результат что и без www
Смотрю whois who.is/whois/mydomain.com
Результат:
Name Servers:
ns2.mydomain.com
ns1.mydomain.com
Тамже смотрю who.is/dns/mydomain.com/
Результат:
ERROR
dns_get_record() [function.dns-get-record]: res_nsend() failed
Команду big не понимает…вот ответ:
-bash: big: command not found
Если я правильно понял, делаю так
GET @ns1.mydomain.com mydomain.com
Результат:
400 URL must be absolute
It works!
делаю без @
GET ns1.mydomain.com mydomain.com
Результат:
500 Can’t connect to ns1.mydomain.com:80 (Bad hostname ‘ns1.mydomain.com’)
It works!
Где то не стыкуется :(
Поможешь разобраться?
PS. godaddy требует две NS записи.. я и их прописал как ns1.mydomain.com ns2.mydomain.com, а до этого в свою очередь тамже создал две записи в ns1 и ns2 на godaddy в них вбил свои DNS Resolver’ы. Правильно?
В файле etc/hosts такие записи
127.0.0.1 localhost
Main IP debian
Main IP http://www.mydomain.com mydomain.com
Main IP http://www.mydomain.com mydomain.com http://ftp.mydomain.com mail.mydomain.com
nslookup стоит сделать со своего компа (чтобы проверить виден ли ваш домен или нет).
Проблема в том, что у регистратора вы вписали (как я понимаю) кривые dns сервера. Нет такого сервера как ns1.mydomain.com, следовательно godaddy пытается к нему подключится и не может. Решение — используйте сервера самого godaddy, просто укажите что домен ссылается на ip вашего web-server’a, и не перенаправляйте домены на ns1.mydomain.com
В Годади ДНС я зарегистрировал таким образом:
В Domain Manager кликнул по домену, в открывшейся странице слева внизу Host Summary (add),
кликаете на add. Откроется Set Host and IP Addresses. Вписываю в HostName свой ns1.mydomain.com (.mydomain.com он автоматом подписывает) , а в Host IP 1: соответствующий ему IP DNS Resolver1 (который дал хостер). Жму OK. Потом тоже самое делаю для ns2. На почту приходит подтверждения от GoDaddy что созданы ваши NSы. Теперь такое впечатление что осталось только их где то у меня на сервере прописать?. В каком файле, где?
nslookup mydomain.com
Результат:
DNS request timed out.
time out was 2 seconds.
*** Can’t find adress for server mydomain.com: Time out
nsloockup ns1.mydomains.com
Результат:
Server: ns1.mydomain.com
Adress: IP DNS Resolver1 (которые я прописывал на Годади)
*** ns1.mydomain.com can’t find nslockup: Non-existent domain
Правильные результаты. Дело в том, что godaddy ссылается на ns1.mydomain.com, которого не существует.
Посмотрите
http://www.google.com/support/blogger/bin/answer.py?hl=en&answer=55373
Тут рассказывается как привязать свой домен с регистратора на blogger.com. Суть в том, что в панели godaddy вам необходимо убрать те днсы которые вписали и создать A и C записи, которые будут указывать на ip web-server’a.
А вы не могли бы привести пример как у вас на сервере настроена мастер зона в BIND чтобы я мог хотя бы конфигурацию сравнить?
у меня она выглядит так
$ttl 38400
mydomain.com. IN SOA ns1.mydomain.com. webmaster.mydomain.com. (
1272768354
3600
600
3604800
38400 )
mydomain.com. IN NS ns1.mydomain.com.
mydomain.com. IN MX 10 mail.mydomain.com.
mydomain.com. IN A IP main
ns1 IN A IP1 DNS
mail IN A IP main
http://www.mydomain.com. IN CNAME mydomain.com.
с такими настройками делаю nslookup mydomain.com
выдает
Can’t finde address for server mydomain.com:Server failed
Значит вы все же хотите свой dns…
Попробуйте вот так:
$ttl 38400
mydomain.com. IN SOA ns1.mydomain.com. webmaster.mydomain.com. (
1272768354
3600
600
3604800
38400 )
NS ns1.mydomain.com.
NS webmaster.mydomain.com.
MX 10 mail.mydomain.com.
A {YOUR_WEB_SERVER_IP_HERE}
www CNAME @
mail A {YOUR_WEB_SERVER_IP_HERE}
Должно работать.
А разве запись типа NS ns2.mydomain.com. в этом же файле не надо прописывать? Тогда где ns2 писать?
Покажите еще пожалуйста содержимое этих файлов
/etc/host.conf, /etc/hostname, /etc/hosts, /etc/hosts.allow, /etc/resolv.conf с работающего сервера?
чтобы реально посмотреть что чему соответствует … Настраиваю с 0 поэтому что то где то еще не хватает. Читал на форумах разных.. но там столько советчиков и куча всяких вариантов настройки Bind но полной картины нигде не нашел, путаница полная и каша в голове.
Спасибо за понимание
Так вот же оба NS’a:
NS ns1.mydomain.com.
NS webmaster.mydomain.com.
:)
Трогать не надо:
/etc/host.conf, /etc/hostname, /etc/hosts, /etc/hosts.allow, /etc/resolv.conf
Они никакого отношения к bind не должны имеют.
Я задумался на тему «почему может не работать»:
1. В Godaddy прописаны _не_ ip вашего dns, а доменное имя (должен быть ip и только ip, потому что доменное имя mydomain.com резолвится на вашем же сервере, godaddy _ничего_ не знает про него).
2. Запись bind’a заполнена неправильно.
Будем разбираться. Сперва отсечем вторую причину. Пишем в консоли вашего pc:
nslookup mydomain.com {YOUR_WEB_SERVER_IP_HERE}
Смотрим на ответ — если ваш бинд настроен правильно, он вернет вам информацию о вашем же домене, который он обслуживает.
Если тут все ок (т.е. бинд работает как надо), значит проблема с указанием доменов в godaddy.
P.S. Я понимаю, что на форумах часто советуют «а попробуй поменять вооон тот конфиг/поставить вот этот пакет», но все же лучше сперва диагностировать проблему — понять что конкретно не работает, чтобы не сделать новых и бОльших ошибок.
Ситуация такая от хостера у меня два IP днсов и основной IP сервера они все три разные. Godaddy в записях nameservers IP не принимает. Принимает только такие записи ns1.cccc.com ns2.cccc.com их можно тамже прописать и связать с моими IPднсов таким образом ссылка там Set Host and IP Addresses. Вписываю в HostName свой ns1.mydomain.com (.mydomain.com он автоматом подписывает) , а в Host IP 1: соответствующий ему IP DNS Resolver1 (который дал хостер). Жму OK. Потом тоже самое делаю для ns2. На почту приходит подтверждения от GoDaddy что созданы ваши NSы. т.е как бы привязал мои IPднсов с записясм ns1 и ns2. и после этого они пингуются нормально т.е. пишу nslookup ns1.mydomain.com выдает Server: ns1.mydomain.com и Address:мойпервыйIPднс т.е. получается на стороне Godaddy у меня все нормально работает остается у меня на сервере правильно бинд настроить и файлв конфигов. мой комп запись nslookup mydomain.com {YOUR_WEB_SERVER_IP_HERE} не понимает пишет Unrecognized command:nslookup mydomain.com IP.
Кстати в строке mydomain.com. IN SOA ns1.mydomain.com. webmaster.mydomain.com. (
означает адрес электронной почты всего лишь он в настройках вместо @ пишется . а запись ns1.mydomain.com. — это сам ДНС сервер где он у меня установле.
Может на почту кините содержимое фалов которые спрашивал ? с ними связана настройка сервера у меня в них что то не стыкуется, очень прошу.
> Ситуация такая от хостера у меня два IP днсов и основной IP сервера они все три разные
Но вы ведь хотите использовать _свой_ сервер как dns? Если да, то хостерские DNS’ы никакого отношения к вам не имеют и не должны никак использоваться (у вас _свой_ днс сервер). Если хотите использовать хостерские DNS’ы для резолва вашего домена — обратитесь к документации хостера (привязка домена к их dns).
> Godaddy в записях nameservers IP не принимает.
Попробуем его обмануть. :) Пишем в консоли:
nslookup {YOUR_WEB_SERVER_IP_HERE}
Есть очень большой шанс, что вы увидите что-то вроде:
Name: {YOUR_WEB_SERVER_IP_HERE}.{YOUR_SERVER_ISP}.com/ru/org/etc
Address: {YOUR_WEB_SERVER_IP_HERE}
Вот это имя и можно дать godaddy.
> Вписываю в HostName свой ns1.mydomain.com (.mydomain.com он автоматом подписывает) , а в Host IP 1: соответствующий ему IP DNS Resolver1 (который дал хостер).
Хм… В hostname вписываете ns1.mydomain.com? Я ни разу не видел панел godaddy, но эта фраза звучит очень странно. Hostname — это ваш домен. Host IP 1 — IP вашего сервера. Я не понимаю почему вы вписываете в него DNS Resolver1.
На почту кину свой рабочий конфиг.
Спасибо за помощь.
Все настроил все работает.
Все дело было в том что на Godaddy я прописал не те IP адреса в качестве ns1 и ns2. Нужно было прописать mainIP.
Удачи и спасибо