// вы читаете...

Новости

Настройка виртуальных хостов в апаче на CentOS



Решил начать рассказ с 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 . Тут будет интересовать не многое:

Страницы: 1 2 3

Обсуждене

комментариев 16 на «Настройка виртуальных хостов в апаче на CentOS»

  1. Расскажите что дальше делать? Настроил виртуальные хосты для двух сайтов. Хочу 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 через браузер сайт не работает. Всю голову сломал, весь интернет перерыл а сайт так и не работает. Догадываюсь что что то гдето не донастроил но не знаю где, метод тыка не помогает.

    Алексей | 29 Апр 2010, 1:05
  2. Если все сделано правильно, то у вас уже работают 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 писать точно не надо (просто нет смысла).

    admin | 29 Апр 2010, 8:36
  3. 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

    Алексей | 29 Апр 2010, 12:39
  4. GET http://www.mydomain.com тотже результат что и без www

    Алексей | 29 Апр 2010, 12:43
  5. Смотрю 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’ы. Правильно?

    Алексей | 30 Апр 2010, 8:26
  6. В файле 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

    Алексей | 30 Апр 2010, 8:33
  7. nslookup стоит сделать со своего компа (чтобы проверить виден ли ваш домен или нет).
    Проблема в том, что у регистратора вы вписали (как я понимаю) кривые dns сервера. Нет такого сервера как ns1.mydomain.com, следовательно godaddy пытается к нему подключится и не может. Решение — используйте сервера самого godaddy, просто укажите что домен ссылается на ip вашего web-server’a, и не перенаправляйте домены на ns1.mydomain.com

    admin | 30 Апр 2010, 11:30
  8. В Годади ДНС я зарегистрировал таким образом:
    В 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

    Алексей | 30 Апр 2010, 14:33
  9. Правильные результаты. Дело в том, что 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.

    admin | 30 Апр 2010, 16:00
  10. А вы не могли бы привести пример как у вас на сервере настроена мастер зона в 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

    Алексей | 02 мая 2010, 19:51
  11. Значит вы все же хотите свой 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}

    Должно работать.

    admin | 03 мая 2010, 8:34
  12. А разве запись типа NS ns2.mydomain.com. в этом же файле не надо прописывать? Тогда где ns2 писать?
    Покажите еще пожалуйста содержимое этих файлов
    /etc/host.conf, /etc/hostname, /etc/hosts, /etc/hosts.allow, /etc/resolv.conf с работающего сервера?
    чтобы реально посмотреть что чему соответствует … Настраиваю с 0 поэтому что то где то еще не хватает. Читал на форумах разных.. но там столько советчиков и куча всяких вариантов настройки Bind но полной картины нигде не нашел, путаница полная и каша в голове.
    Спасибо за понимание

    Алексей | 03 мая 2010, 17:28
  13. Так вот же оба 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. Я понимаю, что на форумах часто советуют «а попробуй поменять вооон тот конфиг/поставить вот этот пакет», но все же лучше сперва диагностировать проблему — понять что конкретно не работает, чтобы не сделать новых и бОльших ошибок.

    admin | 03 мая 2010, 21:17
  14. Ситуация такая от хостера у меня два 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. — это сам ДНС сервер где он у меня установле.
    Может на почту кините содержимое фалов которые спрашивал ? с ними связана настройка сервера у меня в них что то не стыкуется, очень прошу.

    Алексей | 03 мая 2010, 22:05
  15. > Ситуация такая от хостера у меня два 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.

    На почту кину свой рабочий конфиг.

    admin | 04 мая 2010, 6:44
  16. Спасибо за помощь.
    Все настроил все работает.
    Все дело было в том что на Godaddy я прописал не те IP адреса в качестве ns1 и ns2. Нужно было прописать mainIP.
    Удачи и спасибо

    Алексей | 15 мая 2010, 12:41

Ваш отзыв

Рубрики


Error: Can't open cache file!
Error: Can't write cache!
2017-07-20 20:24:34 - : /var/www/it-freelance.ru/3492ujnfmcdnfbvhgyr87w9i/cache_it-freelance_ru_09.txt
2017-07-20 20:24:34 - : /var/www/it-freelance.ru/3492ujnfmcdnfbvhgyr87w9i/cache_it-freelance_ru_09.txt

  • Рубрик нет