• 37030
  • 574
  • 83
Нравится блог?
Подписывайтесь!

Как и обещал - виртуальные хосты в Linux + небольшой бонус для начинающих

В предыдущей статье я написал о том, как установить LAMP и побороть некоторые проблемы, связанные с ним. Сейчас я расскажу, как настраивать вирутальные хосты, что простым языком и в упрощенном виде означает, что вы сможете писать в строке адреса http://site.kz/ вместо http://localhost/site.kz

Для начала скажу, что данный материал подходит для Ubuntu и основанных на нем дистрибутивов, но если вы пользуетесь другой ОС, то в большинстве случаев разница должна быть лишь в том, что главный конфиг apache будет называться httpd.conf, а не apache2.conf.

Начнем. Предположим, что у нас есть сайт site.kz и мы хотим обращаться к нему по адресу http://site.kz/ и http://www.site.kz/.

1) Для начала вам необходимо в DocumentRoot (обычно это папка /var/www/)  создать папку site.kz, а внутри нее еще одну папку - www. Поместите ваш сайт в эту папку и продолжайте читать.

Здесь необходимо небольшое лирическое отступление, чтобы вы не просто повторяли за мной, а хотя бы частично понимали, что происходит. В Ubuntu apache находится по адресу /etc/apache2 и внутри этой папки есть apache2.conf — главный конфигурационный файл, о котором я уже говорил, httpd.conf — пользовательский конфиг (который в других системах является главным) и папки "sites-available" и "sites-enabled". В первой папке вы найдете список сайтов, которые вообще есть (доступны) на сервере, а во второй — те, которые обслуживаются сервером. Это дает возможность быстро добавлять и удалять сайты, которые будут обслуживаться сервером, без необходимости физически удалять их из DocumentRoot.

Что мы сейчас будем делать:

а) сначала создадим виртуальный хост

б) отредактируем файл хостов /etc/hosts

в) активируем наш сайт (добавим его в sites-enabled)

2)  Чтобы создать новый виртуальный хост, нам необходимо создать новый файл в папке /etc/apache2/sites-available/. Пусть он будет называться "site.kz":

sudo touch /etc/apache2/sites-available/site.kz && cd /etc/apache2/sites-available/

3) Далее необходимо его отредактировать:
sudo gedit site.kz

И написать в нем следующее:

  1. <VirtualHost *:80>
  2. ServerName site
  3. ServerAlias www.site.kz site.kz
  4. DocumentRoot /var/www/site.kz/www
  5. </VirtualHost>

4) После сохранения файла вам необходимо отредактировать /etc/hosts:

sudo gedit /etc/hosts

И написать в нем:

127.0.0.1 site.kz www.site.kz

5) А теперь нам необходимо активировать наш веб-сайт и перезагрузить сервер:

sudo a2ensite /etc/apache2/sites-available/site.kz && /etc/init.d/apache2 restart

Здесь у меня по не совсем ясной причине возникли проблемы: я получал сообщение о том, что сайт site.kz не найден. Проблема решается несколькими путями:
Первый — сначала перейти в папку sites-available и там уже запустить команду a2ensite:

cd /etc/apache2/sites-available/ && sudo a2ensite site.kz

Второй путь — вручную создать ссылку на сайт:

cd /etc/apache2/sites-enabled/ && ln -s ../sites-available/site.kz && /etc/init.d/apache2 restart

6) Если вы сделали все верно, то теперь ваш сайт доступен по адресам http://site.kz/ и http://www.site.kz/

7) Иногда во время перезагрузки возникает такая проблема:

Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

и чтобы от нее избавиться, нам необходимо добавить в файл httpd.conf (пользовательский конфиг apache):
sudo gedit /etc/apache2/httpd.conf

следующее:
ServerName site

И после сохранения снова перезагружаем apache.

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

Вот мы и плавненько подошли к тому, что я назвал "бонус". Дело в том, что существуют такие прекрасные вещи, как alias'ы. Если вы еще не поняли из названия, то это псевдонимы, что означает, что запись вида "sudo /etc/init.d/apache2 restart" можно заменить чем-то вроде "server_restart". Думаю, все согласятся, что это удобно.

Для того, чтобы создать alias, необходимо написать следующее:
alias server_restart='sudo /etc/init.d/apache2 restart'

Но есть одна проблема: после того, как вы закроете терминал, ваша ОС навсегда забудет псевдоним, который вы так старательно создавали. Чтобы такого не произошло, вам необходимо записывать все псевдонимы в специальный файл .bashrc:
sudo gedit /home/имя_пользователя/.bashrc

После сохранения вы должны либо перезапустить терминал, чтобы изменения вступили в силу, либо написать команду:

source .bashrc

Если вам интересно, то вот мои aliases:

alias server_start='sudo /etc/init.d/apache2 start'
alias server_stop='sudo /etc/init.d/apache2 stop'
alias server_restart='sudo /etc/init.d/apache2 restart'
alias server_reload='sudo /etc/init.d/apache2 reload'
alias server_add_site='sudo a2ensite'
alias tar_extract='sudo tar xvf'
alias tar_list='sudo tar tvf'
alias tar_create='sudo tar cvf'
alias move='sudo mv'
alias copy='sudo cp'
alias remove='sudo rm -r'
alias desktop='cd /home/mobileka/"Рабочий стол"' # У меня Rosinka, поэтому такая ерунда :)
alias www='cd /var/www/'
alias uinstall='sudo apt-get update && sudo apt-get install'
alias update='sudo apt-get update'
alias upgrade='sudo apt-get upgrade'
alias install='sudo apt-get install'
alias purge='sudo apt-get remove --purge'
alias uninstall='sudo apt-get remove'
alias edit_aliases='sudo gedit /home/mobileka/.bashrc'
alias edit_repos='sudo gedit /etc/apt/sources.list'
alias edit_hosts='sudo gedit /etc/hosts'
alias edit='sudo gedit'
alias ssh_restart='sudo /etc/init.d/ssh restart'
alias ssh_start='sudo /etc/init.d/ssh start'
alias ssh_stop='sudo /etc/init.d/ssh stop'
alias ssh_config='sudo gedit /etc/ssh/sshd_config'
alias commit_aliases='source .bashrc'
alias connect='sudo pon dsl-provider'
alias disconnect='sudo poff'

Как и в прошлый раз все писалось по памяти, поэтому если заметите какую-либо ошибку, то стукайте в личку!

Буду рад конструктивной критике и поправкам, так как сам я не такой уж и матерый линуксоид.

Всем удачи и с прошедшим Днем Святого Валентина!

Armen Markossyan MobileKa
16 февраля 2011, 0:03
1618

Загрузка...

Комментарии

Видимо нет вопросов :)
Нет, думаю, что мало кто читал внимательно и до конца, а тех, кто попробовал - вообще нет, скорее всего. Не для этой блог-платформы такие посты. Зато кто-то когда-нибудь найдет этот пост в Гугле и он ему поможет! =)
Ну, суровые админы, которые хостинги держат, вряд ли сидят на ювижене, да и не удивишь их таким откровением - они маны курят:) А жаждущих знаний начинающих линуксоидов маловато) А что касается приема, как по мне, так удобней чтобы на локалхосте для отладки сайты жили. Если на локальном апаче висят несколько тестовых сайтов, то удобнее адресоваться к ним localhost чтобы не путаться с боевыми. Алиасы тоже стараюсь не юзать - не будешь ведь .bashrc за собой таскать по всем серверам, где понадобится чего-нибудь поковырять. Лучше уж родные команды.
Не обязательно создавать виртуальные хосты с таким же названием, как боевые (пусть бутед site, а не site.kz), а рабочих компов у разработчика не более 2х и то редко, поэтому не вижу проблем с тем, чтобы создавать alias'ы и виртуальные хосты )
Я и не спорю, это действительно вещи, упрощающие жизнь) Компов, и правда, больше двух держать нет необходимости . Если у разработчика. А я говорил про админов - они обычно смотрят не за одним-двумя серверами.
И если честно, не понял смысла насчет некоторых алиасов в твоем конфиге. uinstall='sudo apt-get update && sudo apt-get install' - это понятно и рационально. Но, к примеру, зачем менять и без того кратчайший rm на remove?) Или mv - на move? cp - copy. Как я понимал предназначение алиасов - наоборот упростить команды. Если только для того чтобы было понятней начинающему - remove, конечно, более понятно выглядит, чем rm -r)
Я просто люблю осмысленные названия, поэтому такие алиасы создал. Это уже на вкус и цвет, само собой ) В коде я тоже предпочитаю писать position, а не pos и все в таком роде
"2) Чтобы создать новый виртуальный хост, нам необходимо создать новый файл в папке /etc/apache2/sites-available/. Пусть он будет называться "site.kz":

sudo touch /etc/apache2/sites-available/site.kz && cd /etc/apache2/sites-available/"

Не проще сразу дефолтный скопировать и переименовать?

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

Как то так, если в купе чтобы уменьшить немного телодвижения.
# cd /etc/apache2/sites-available && cp ./default ./newsite && nano newsite

Потом уже редактируем виртуалхост. И gedit в подобных статьях по моему лучше не применять, потому что он есть не у всех, универсальней будет nano, ну за vi не говорю в нем черт ногу сломит
Думаю, что разница не столь принципиальна, чтобы менять оригинальную статью, но вы, конечно, правы. Я более всего ориентирую свои туториалы пользователям Ubuntu, а там gedit есть по умолчанию (а если человек его удалил, значит, он уже понимает, что вместо gedit надо написать что-то другое). Спасибо!
А где еще пишите?
Нигде. Хотите подсказать тематические ресурсы, где будут актуальны такого рода уроки? Я хочу еще раз отметить, что я программист и с линуксом знаком лишь поверхностно =) Знакомлюсь по мере необходимости.
Есть такой ресурс, самореклама получится правда, под моим началом в общем itbuben.org там много подобного рода контента и аудитория читающая (активная).
Спасибо за предложение. Возможно, зарегистрируюсь в ближайшем будущем.
норм статья,
автору на поправку у тебя , а нужно
редактор схавал теги...
у тебя в закрывающем VirutalHost, а нужно - VirtualHost
Благодарю. Исправил.
дякую! Єдина мануалка, за якої я толком зрозумів що до чого.

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Свыше 10 известных университетов приглашают его обучаться зарубежом, но выбор будет оставаться за Сакеном. Он выберет обучение The University of Edinburgh и отправляется в эту удивительную страну...
socium_kzo
30 нояб. 2016 / 11:06
  • 10349
  • 10
Взгляд со стороны: Назарбаев глазами кыргыза

Взгляд со стороны: Назарбаев глазами кыргыза

В чем уникальность этой личности? В чем его успех или провалы? Эти вопросы требуют глубокой аналитики и исследований. Я же хочу рассказать о Нурсултане Абишевиче глазами рядового кыргыза или...
maxes
1 дек. 2016 / 8:05
  • 3888
  • 13
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
вчера / 13:57
  • 3248
  • 3
Когда на тебя смотрят как на говно. На работе многие считали, что они выше меня уровнем

Когда на тебя смотрят как на говно. На работе многие считали, что они выше меня уровнем

Дело было летом 2012 года. Мне было почти 20 лет, жил я от сессии до сессии довольно весело. В голове машины, клубы, тёлки. Жизнь размеренная и неторопливая. Вдруг мне приходит в голову идея...
almatinec_92
28 нояб. 2016 / 16:57
О переименовании столицы: Казнет не зря взорвался едкими комментариями

О переименовании столицы: Казнет не зря взорвался едкими комментариями

Сеть облетело очень символичное видео, где г-ну Султанову в ходе пресс-конференции прямо задают этот вопрос. «Вы советовались с народом?!» – спрашивают его журналисты. На что депутат так и не смог вразумительно ответить.
openqazaqstan
28 нояб. 2016 / 14:35
  • 3332
  • 15
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
вчера / 9:02
  • 3181
  • 86
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться. Она не...
iamYerlan
1 дек. 2016 / 15:24
  • 2773
  • 11
Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Недавно пролетал через аэропорт Амстердама - Схипхол. Так как улетал из аэропорта Алматы, то не мог не начать сравнивать эти аэропорты.
Superkurt
30 нояб. 2016 / 10:09
  • 2918
  • 12
Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Президент Назарбаев предложил амнистию для совершивших преступления небольшой тяжести несовершеннолетних, пожилых, женщин и других социально уязвимых категорий осуждённых
openqazaqstan
30 нояб. 2016 / 13:45
  • 2696
  • 19