• 37988
  • 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
1651

Загрузка...
Loading...

Комментарии

Видимо нет вопросов :)
Нет, думаю, что мало кто читал внимательно и до конца, а тех, кто попробовал - вообще нет, скорее всего. Не для этой блог-платформы такие посты. Зато кто-то когда-нибудь найдет этот пост в Гугле и он ему поможет! =)
Ну, суровые админы, которые хостинги держат, вряд ли сидят на ювижене, да и не удивишь их таким откровением - они маны курят:) А жаждущих знаний начинающих линуксоидов маловато) А что касается приема, как по мне, так удобней чтобы на локалхосте для отладки сайты жили. Если на локальном апаче висят несколько тестовых сайтов, то удобнее адресоваться к ним 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

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

Почему я больше не поеду отдыхать на северное побережье Алаколя

Почему я больше не поеду отдыхать на северное побережье Алаколя

Нам казалось, что на Алаколе мы сможем хорошо отдохнуть, расслабиться и набраться сил на весь следующий год. Вроде, и достаточно бюджетно, и не так далеко.
RisKaS
26 июня 2017 / 18:05
  • 7607
  • 38
ЭКСПО-2017. Каким бы правдоподобным ни казался обман, он всё равно раскроется

ЭКСПО-2017. Каким бы правдоподобным ни казался обман, он всё равно раскроется

Изначально про ЭКСПО было очень много слухов. Лишь только усаживаясь в поезд «тальго» до Астаны, мы уже были изрядно загружены этими слухами. Кто их запускал, для чего – отдельный вопрос..
openqazaqstan
вчера / 15:45
  • 6169
  • 40
Эксперимент. Два парня и девушка в поисках лучшего донера в Астане

Эксперимент. Два парня и девушка в поисках лучшего донера в Астане

Нас трое: девушка и двое парней. Мы обошли 7 заведений, где продают донеры. Оценивали по 10-бальной шкале только по вкусовым качествам донера. Никто нам за рекламу не платил, бесплатными донерами не кормил!
nargiz_15
вчера / 10:08
  • 6001
  • 15
На каких улицах города Алматы вы точно попадете в «пробку»

На каких улицах города Алматы вы точно попадете в «пробку»

Строятся пешеходные и велосипедные дорожки, трамвайные пути "сносят", а главная традиция нашего мегаполиса - замена подземных коммуникаций и в этом году не была нарушена.
beoblod
26 июня 2017 / 17:22
  • 4019
  • 3
Где отлично провести летние месяцы с пользой для здоровья и кошелька?

Где отлично провести летние месяцы с пользой для здоровья и кошелька?

Я обратил внимание, что в случае с уникальными природными зонами Павлодарской области применима поговорка: «что имеем – не ценим», а ведь они легко могли бы стать международными курортами.
Muzalevskiy
23 июня 2017 / 22:57
  • 3486
  • 11
Это «колхозное сооружение» вредит имиджу города. Я, как алматинка, против!

Это «колхозное сооружение» вредит имиджу города. Я, как алматинка, против!

Почему эту трубу не проложили под землей? Она обезображивает улицу, как дикий багровый шрам от раны, зашитой равнодушным, криворуким и ленивым хирургом, обезображивает лицо.
ValentinaVladimirska
23 июня 2017 / 12:10
  • 2838
  • 45
На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

На Иссык-Куль через Юг. Не бойтесь ехать в Киргизию своим ходом!

Очень живописная и бюджетная поездка вдоль всего берега по Иссык-Кулю! Мы, две обаятельные девушки, поехали вдвоем, подготовленные к совершенно автономной жизни в палатке, и ни разу ничего не...
yelenasergiyenko
22 июня 2017 / 13:20
  • 3036
  • 23
Неравенство в Казахстане – доходы самых богатых граждан в 6 раз больше заработка бедных

Неравенство в Казахстане – доходы самых богатых граждан в 6 раз больше заработка бедных

Почти 46% расходов казахстанцев уходит на продукты. При этом бедные казахстанцы стали есть меньше, богатые - больше. Инфографика
ZonaKZ
25 июня 2017 / 9:06
  • 2478
  • 23
Миф о героях нашего времени: «Они лишь дешевые подделки»

Миф о героях нашего времени: «Они лишь дешевые подделки»

Они назвали лизоблюдство – нетворкинг. Они назвали бессовестное самохвальство – селфбрендинг. Они назвали беспринципность и отсутствие морали – гибкость и креативный подход.
Aks_Ras
22 июня 2017 / 17:32
  • 2166
  • 12