Пример создания локального сайта Apache
Строго говоря, при настройке Apache мы делаем настройку виртуальных хостов, но для краткости мы будем называть их попросту сайтами.
По умолчанию в Ubuntu Apache ищет сайты в папке /var/www. В этом есть смысл, когда компьютер выполняет роль сервера, с которым работают много пользователей. Если же вы работаете за своим личным компьютером, то локальные сайты удобнее держать в своей домашней папке.
Создайте папку, в которую будут помещаться конфиги и папки сайтов. Название ее может быть произвольным. Для примера сделаем так, как обычно делается в OS X: ~/Sites.
mkdir ~/Sites
sudo chgrp -R www-data ~/Sites
Добавьте в основной конфиг Apache /etc/apache2/apache2.conf директиву IncludeOptional, указывающую, где лежат конфиги ваших сайтов:
MYDIR="$(whoami)"; sudo sh -c 'echo "IncludeOptional /home/'$MYDIR'/Sites/*.conf" >> /etc/apache2/apache2.conf'; MYDIR=""
Теперь можно создавать сайты как стандартным образом, в папке /var/www, так и более простым — в своей домашней папке ~/Sites.
При это учитывайте, что конфиги сайтов тоже могут храниться как стандартным образом — в папке /etc/apache2/sites-available/, так и в папке ~/Sites. Соответственно, инструменты для включения a2ensite и выключения a2dissite сайтов будут работать только со стандартным путем и не будут работать с сайтами в домашней папке.
Создайте файл ~/Sites/vhost.conf со стандартными настройками ваших сайтов:
AddDefaultCharset UTF-8
ServerAdmin webmaster@localhost
<Directory /home/USERNAME/Sites/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Вместо USERNAME впишите ваше имя пользователя. Его можно узнать командой echo $(whoami)
Теперь можно в папке ~/Sites создавать файлы example.conf следующего вида (замените example на имя вашего локального сайта):
<VirtualHost *:80>
ServerName test.loc
DocumentRoot "/home/USERNAME/Sites/example.loc/html"
</VirtualHost>
и они будут подхватываться Apache после его перезапуска командой sudo service apache2 reload.
Сначала создайте папку сайта:
mkdir -p ~/Sites/test.loc/html
Здесь html - корневая папка (DocumentRoot) сайта test.loc.
Создайте в этой папке файл index.php:
echo '<h1>It Works!</h1><?php phpinfo(); ?>' >> ~/Sites/test.loc/html/index.php
Создайте в папке ~/Sites конфигурационный файл сайта test.loc.conf:
echo "<VirtualHost *:80>" >> ~/Sites/test.loc.conf
echo " ServerName test.loc" >> ~/Sites/test.loc.conf
echo " DocumentRoot \"/home/$(whoami)/Sites/test.loc/html\"" >> ~/Sites/test.loc.conf
echo "</VirtualHost>" >> ~/Sites/test.loc.conf
Проверьте конфиг Apache:
apache2ctl configtest
Перезапустите Apache:
sudo service apache2 reload
Добавьте домен test.loc в файл /etc/hosts, чтобы к нему можно было обращаться в браузере:
sudo sh -c 'echo "127.0.0.1 test.loc" >> /etc/hosts'
Проверьте сайт в браузере: http://test.loc