В предыдущей статье я написал о том, как установить 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
И написать в нем следующее:
-
<VirtualHost *:80>
-
ServerName site
-
ServerAlias www.site.kz site.kz
-
DocumentRoot /var/www/site.kz/www
-
</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'
Как и в прошлый раз все писалось по памяти, поэтому если заметите какую-либо ошибку, то стукайте в личку!
Буду рад конструктивной критике и поправкам, так как сам я не такой уж и матерый линуксоид.
Всем удачи и с прошедшим Днем Святого Валентина!