---
title: "Как и обещал - виртуальные хосты в Linux + небольшой бонус для начинающих"
description: "В предыдущей статье я написал о том, как установить LAMP и побороть некоторые проблемы, связанные с ..."
author: "MobileKa"
published: "2011-02-15T12:03:49+00:00"
modified: "2012-04-20T06:43:55+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/kak-i-obeshchal-virtualnye-hosty-v-linux-nebolshoy-bonus-dlya-nachinayushchih-120603"
markdown_url: "https://yvision.kz/post/kak-i-obeshchal-virtualnye-hosty-v-linux-nebolshoy-bonus-dlya-nachinayushchih-120603/markdown"
site_name: "Yvision.kz"
---

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

> В предыдущей статье я написал о том, как установить LAMP и побороть некоторые проблемы, связанные с ...

В [предыдущей](http://yvision.kz/community/Linux/119068.html) статье я написал о том, как установить 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`

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

-

- ServerName site

- ServerAlias www.site.kz site.kz

- DocumentRoot /var/www/site.kz/www

-

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' `

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

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

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

---

Source: [https://yvision.kz/post/kak-i-obeshchal-virtualnye-hosty-v-linux-nebolshoy-bonus-dlya-nachinayushchih-120603](https://yvision.kz/post/kak-i-obeshchal-virtualnye-hosty-v-linux-nebolshoy-bonus-dlya-nachinayushchih-120603)