Настройка виртуальных хостов на веб-сервере

По давно принятой практике, домены принято хранить в папке пользователя, а не в /var/www как по дефолту предлагает нам апач.

И так, предположим есть у нас пользователь petya и нам нужно настроить виртуальный хост mysite.ru.
В директории /home/petya создаем директорию mysite.ru (в неё будут складываться логи) и поддиректорию www (тут будет лежать сам сайт). Пишем в консоли:

  1. mkdir /home/petya/mysite.ru
  2. mkdir /home/petya/mysite.ru/www

Далее в директории /etc/apache2 есть две папки sites-available и sites-enabled. Логично, что в папке sites-available лежат конфиги всех сайтов, что есть на сервере, а в sites-enabled символические ссылки на конфиги сайтов, что должны быть включены.
Создаем конфиг нашего сайта:
sudo touch /etc/apache2/sites-available/mysite.ru
Если мы делаем это на виртуальной машине и у нас включен графический интерфейс (на примере убунты), то набираем в консоли:
sudo gedit /etc/apache2/sites-available/mysite.ru

Если у нас удаленный сервер и голая консоль, то:
sudo nano /etc/apache2/sites-available/mysite.ru

*В разных дистрибутивах могут быть установлены по дефолту разные текстовые редакторы, если примеры выше не сработали, можно попробовать вместо gedit прописать kate, а вместо nano - vim

В открывшемся текстовом редакторе вводим:

  1. <VirtualHost *:80>
  2. ServerAdmin webmaster@localhost
  3. ServerName mysite.ru
  4. DocumentRoot /home/petya/mysite.ru/www/
  5.  
  6. <Directory /home/petya/mysite.ru/www/>
  7. Options Indexes FollowSymLinks MultiViews
  8. AllowOverride all
  9. Order allow,deny
  10. allow from all
  11. </Directory>
  12.  
  13. ScriptAlias /cgi-bin/ /home/petya/mysite.ru/cgi-bin/
  14. <Directory "/home/petya/mysite.ru/cgi-bin">
  15. AllowOverride None
  16. Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  17. Order allow,deny
  18. Allow from all
  19. </Directory>
  20.  
  21. ErrorLog /home/petya/mysite.ru/error.log
  22.  
  23. # Possible values include: debug, info, notice, warn, error, crit,
  24. # alert, emerg.
  25. LogLevel warn
  26.  
  27. CustomLog /home/petya/mysite.ru/access.log combined
  28.  
  29. </VirtualHost>

Добавляем ссылку на этот конфиг в папку sites-enabled:
sudo ln -s /etc/apache2/sites-available/mysite.ru /etc/apache2/sites-enabled/mysite.ru

Добавляем информацию о нашем сайте в файл hosts:
sudo gedit /etc/hosts
*или sudo nano /etc/hosts если нет графического интерфейса

дописываем в конце строчку:
127.0.0.1 mysite.ru
если настраиваем сервер на виртуалке
Если настраиваем на рабочем серваке, то вместо 127.0.0.1 прописываем айпишник сервака.

Теперь осталось перезапустить апач:
sudo /etc/init.d/apache2 restart

Все! Если вы настраивали виртуальную машину и хотите чтобы сайт был доступен в браузере основной системы, для этого в файле hosts прописываем айпишник нашей виртуалки и имя сайта, например так:
192.168.1.13 mysite.ru
В Windows этот файл можно найти по адресу c:\Windows\System32\drivers\etc\hosts