Пример создания локального сайта Apache

Матеріал з Wiki.Zina
Перейти до навігації Перейти до пошуку

Строго говоря, при настройке 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.

Создадим локальный сайт test.loc

[ред. | ред. код]

Сначала создайте папку сайта:

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

Ссылки

[ред. | ред. код]