Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
12:03, 15 февраля 2011

Как и обещал - виртуальные хосты в 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'

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

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

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

0