XAMPP for Linux: организация и настройка виртуальных хостов - 2

/ Просмотров: 19009
Метки: ,

Часть 2. Организация виртуальных хостов

Настройка XAMPP как виртуального офлайн-хостинга для наших сайтов очень проста, не требует особых познаний (которые, впрочем, никогда не бывают лишними), и конкретно сводится к редактированию трех файлов – одного системного и двух конфигов самого XAMPP:

  • /etc/hosts
  • /opt/lampp/etc/httpd.conf
  • /opt/lampp/etc/extra/httpd-vhosts.conf

Но сначала определимся с нашими будущими сайтами и точкой их монтирования.

Имена виртуальных хостов

Для определенности договоримся, что в нашем примере будут три сайта: mysite1.dev, mysite2.dev и mysite3.dev. Вы, естественно, можете сделать их (теоретически) сколько угодно и назвать их как хотите.

Note: Избегайте совпадения суффикса с реально существующими доменными зонами, сверяйтесь, например, здесь.

Размещение виртуальных хостов

Стандартно рекомендуется размещать папки сайтов в директории /opt/lampp/htdocs, однако мы пойдем другим путем smile и будем держать их в своей домашней директории, что несравненно удобнее, хотя бы потому, что в этом случае нам не нужны будут права рута на каждый чох.

Кроме того, если вы захотите установить другую версию XAMPP, папки с вашими локальными сайтами останутся, даже если вы забыли о бэкапе (но базы данных улетят, да. Их бэкап – ваша забота).

Итак, создаем в домашней директории папку www, а в ней папки mysite1.dev, mysite2.dev и mysite3.dev. В них и будем загружать файлы наших сайтов.

Правим /etc/hosts

Предварительное Note: Будьте умницей, сделайте бэкап первоначального /etc/hosts. Бережёного бог бережет.

Файл /etc/hosts приведём к такому виду:

127.0.0.1   localhost lampp xampp mysite1.dev mysite2.dev mysite3.dev
127.0.1.1   <hostname> # Вместо <hostname> подставьте имя своего компьютера, которое выводится в консоли по команде hostname

Всё остальное, что может содержаться в этом файле, нас в данном случае не интересует и пусть остаётся как есть.

Правим /opt/lampp/etc/httpd.conf

Здесь нас интересует одна-единственная строка:

#Include etc/extra/httpd-vhosts.conf

Она должна быть где-то 488-ой (для разных версий XAMPP – в районе 480 - 490-ой)

Найдём ее и раскомментируем.

Правим /opt/lampp/etc/extra/httpd-vhosts.conf

Приведём этот файл к следующему виду (всё остальное должно быть закомментировано или удалено):

NameVirtualHost 127.0.0.1:80
 
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@mysite1.dev
    DocumentRoot "/opt/lampp/htdocs"
    ServerName lampp
    ServerAlias xampp
</VirtualHost>
 
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@mysite1.dev
    DocumentRoot "/home/ваш_логин/www/mysite1.dev"
    ServerName mysite1.dev
    ServerAlias www.mysite1.dev
    ErrorLog "/opt/lampp/logs/mysite1.dev-error_log"
    CustomLog "logs/mysite1.dev-access_log" common
    <Directory />
    AllowOverride All
    Require all granted
    </Directory>
</VirtualHost>
 
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@mysite2.dev
    DocumentRoot "/home/ваш_логин/www/mysite2.dev"
    ServerName mysite2.dev
    ServerAlias www.mysite2.dev
    ErrorLog "/opt/lampp/logs/mysite2.dev-error_log"
    CustomLog "logs/mysite2.dev-access_log" common
    <Directory /> 
    AllowOverride All
    Require all granted
    </Directory>
</VirtualHost>
 
<VirtualHost 127.0.0.1:80>
    ServerAdmin admin@mysite3.dev
    DocumentRoot "/home/ваш_логин/www/mysite3.dev"
    ServerName mysite3.dev
    ServerAlias www.mysite3.dev
    ErrorLog "/opt/lampp/logs/mysite3.dev-error_log"
    CustomLog "logs/mysite3.dev-access_log" common
    <Directory /> 
    AllowOverride All
    Require all granted
    </Directory>
</VirtualHost>

Warning! Везде замените ваш_логин на свой логин в системе, а mysite1(2,3).dev – на имена ваших виртуальных сайтов.

Как видим, каждая секция представляет собой набор инструкций для отдельного хоста. Секции обычно клонируются копипастом, а затем в них исправляется имя хоста. Это удобно и просто, но в результате недосмотров и опечаток именно этот файл становится главным источником ошибок.

Поэтому после правки запустим (или перезапустим) XAMPP из консоли:

sudo /opt/lampp/lampp restart

чтобы убедиться, что он не выдает ошибок в stdout.

Note: Инструкции в секции <Directory /> меняются от версии к версии, но об этом мы поговорим позже, а пока просто не забывайте, что речь у нас тут идет о XAMPP 1.8.3-1.

Кажется, ничего не забыли? Тогда, как говорит один мой приятель, всё должно зафурыкать. Вбиваем в браузере mysite1(2,3).dev и убеждаемся в этом.

Добавление новых хостов

Если вы внимательно прошли весь предыдущий путь, то уже понимаете, что добавление нового хоста чрезвычайно просто и сводится к следующему:

  • Создаем папку ~/www/<имя_нового_хоста> и загружаем туда файлы
  • Дописываем имя нового хоста в файле /etc/hosts
  • Добавляем в файл /opt/lampp/etc/extra/httpd-vhosts.conf ещё одну секцию по аналогии с существующими и прописываем в ней вместо mysite1(2,3).dev имя нового хоста.
  • Перезапускаем XAMPP

Два слова о паранойе

Если вам необходимо (или хочется) защититься по максимуму, нажмите на стартовой странице на Security

xampp_security.png

и прочитайте, что там написано. В двух словах, вам предлагается запаролить всё, что только можно, набрав в консоли команду

/opt/lampp/lampp security

и пройдя весь процесс step-by-step.

Может быть, я не прав (в любом случае решать вам), но не советую. Этим вы сильно затрудните себе жизнь, тогда как XAMPP, имхо, и без того достаточно хорошо защищён.



В следующей части речь пойдет о нюансах настройки, специфических для разных версий.

Комментариев: 35 RSS
Константин1
2014-05-27 в 11:03:33

Здравствуйте, уважаемый админ!Большое спасибо за такое понятное и подробное объяснение, все установил.

И можно еще один вопрос? После установки, как Вы и посоветовали, попробовал открыть свой сайт через браузер, сайт открылся, но вот загруженные фотографии не захотели. У меня это фотогалерея со скриптами JavaScript - не открываются ни маленькие ни большие фото. Получается, что нужно еще поставить JavaScript? Или проблема в чем-то другом?

И что еще интересно - созданный сайт на флешке открывается браузером (получается средствами браузера?)без проблем. Для чего тогда нужен XAMPP (apache на компе, PHP), если сайт (небольшой) можно сделать и так, поправляя редактором HTML-файлы и перезагружая браузер? Извините, что спрашиваю, может, простые вещи, делаю в web-разработке первые шаги.

Константин, спасибо за отзыв.

Судя по всему, Ваш сайт не использует php, и поэтому Вам XAMPP не требуется, сайт будет работать и без него. JavaScript — технология браузерная и ни apache, ни каких-то дополнительных пакетов в системе не требует. Если всё сделано правильно, скрипт заработает. Смотрите документацию к JS-галерее и ищите, где допустили ошибку.

Константин3
2014-05-27 в 17:31:02

Сделал так:

chmod -R 777 /home

т.е. разрешил всё и всем домашней папке. Заработало! Почему-то не было права доступа у пользователя к картинкам в подкаталоги. Хотя это папка home.

Еще раз огромное спасибо!

Константин, а зачем же было разрешать "всё и всем домашней папке"? Вполне достаточно было расширить права на отдельные файлы и директории. Таким "глобальным" решением Вы создали себе потенциальные угрозы для безопасности, и это как минимум. В норме в /home права на каталоги 755, на файлы 644 (т.е. запись для группы и остальных запрещена), а на ряд каталогов и файлов права могут быть 700 и 600, например, а на файлы, где хранятся пароли и т.п. конфиденциальная информация – еще жестче, вплоть до 400.

Теорию прав доступа следует достаточно хорошо изучить, особенно если Вы собираетесь заниматься созданием сайтов и вообще веб-технологиями, где это совершенно необходимо. В Linux механизмы прав точно такие же, а "правовая политика" – одна из причин высокой безопасности и надежности Linux.

Константин5
2014-05-27 в 21:34:37

Да, я еще совсем новичок. Уже сделал 755. Сайт работает))). Просто до этого, когда начинал работать в подкаталогах opt (поначалу там хотел сайт установить), 755 не хватило для того, чтобы пользователь (я) мог туда файлы записывать (копировать без терминала). Только через терминал или mc. А иногда все же хочется мышкой быстренько.

А, кстати, подскажите, пожалуйста, что лучше почитать по теории прав (желательно с примерами установки). И вообще по Linux (интересует Debian, Ubuntu, Linux Mint), чтоб было понятно новичку, с примерами команд. Хотя, конечно, такие развернутые инструкции вряд-ли в одном месте есть... В любом случае надо будет решение конкретной задачи искать.

Насчет прав процитирую сначала золотые слова (http://docs.altlinux.org/current/modules/linux_permissions/index.html#id2526339), хотя написанные по поводу ALT Linux, но вполне применимые к любому Linux-дистру:

"Установка и поддержание оптимальных прав доступа является одной из важнейших задач системного администратора. Права должны быть достаточными для нормальной работы пользователей и программ, но не бóльшими, чем необходимо для такой работы. Дистрибутивы ALT Linux обладают продуманной системой прав (предопределённые группы, псевдопользователи для различных программ-серверов, права доступа для системных файлов и каталогов). Прежде чем вносить существенные изменения в эту систему, целесообразно понять её логику и выяснить, нет ли другого способа достичь нужной цели."
Ну, а конкретных материалов море, можно начать хотя бы с http://www.opennet.ru/base/sys/file_access.txt.html. Советую прямо сразу постараться осилить хоть и непростые местами, но серьезные материалы типа этого: http://www.ibm.com/developerworks/ru/library/l-lpic1-v3-104-5/

А дальше, всё лучше ориентируясь в теме, сами без труда найдете массу полезной информации smile

Константин7
2014-05-28 в 07:54:19

Отлично, в очередной раз спасибо!))

Еще вот о чем хотел спросить. При установке системы я выбрал установку веб-сервера, по умолчанию установился Apache2. При каждой перезагрузке системы надо его останавливать, чтобы запустить XAMPP. Думаю его удалить, но не повлияет ли это на работу XAMPP, ведь в его сборку тоже входит Apache2?

Так, кое-что выяснилось. Я-то думал, что Ваш сайт написан на статических страницах, без php...Если Вы при установке выбрали сервер, то XAMPP Вам уже не нужен. XAMPP как раз и предназначен для того, чтобы не превращать домашний десктоп в сервер, но при этом иметь возможность создавать и отлаживать сайты. А если уж установлена серверная ОСь, то на ней и надо всё это делать. Что-нибудь одно.

Константин9
2014-05-28 в 13:39:32

Там только Apache2 без PHP и MySQL(хотя когда я еще до них доберусь). Мне сервер на данном компьютере не нужен, задача - только создавать и отлаживать сайты. В-общем-то только для этого и ставил сервер. Сейчас немного боюсь удалять Apache2 - как бы это не повлияло на настройки XAMPP. Хотя, переустановить недолго.

Удаление апача из ОС никак не повлияет на XAMPP, который всё нужное имеет у себя "на борту" – тем-то он и хорош.

Не могли б вы также написать как устанавливать модули в Xampp, у меня например сложности с imagick

Max, я никогда не нуждался в каких-либо дополнительных модулях и, как существо крайне ленивое, ненужным не интересовался. А пожалуй, надо бы. Но поскольку придется более-менее глубоко влезать в сабж, обещать такой материал в самое ближайшее время, увы, не могу.

Посмотрите для начала эту ссылочку: https://community.apachefriends.org/f/viewtopic.php?f=17&t=39759, может, в этом что-то есть.

Вы б могли просто глянуть на данные когда я пытался установить imagick? Возможно вы сразу поймете. Ответы терминала, инструкция и команды по которым я устанавливал есть.

Сомневаюсь, но давайте попробуем. Перешлите мне всё на rulitbox@yandex.ru или выложите на каком-нибудь pastebine.

В общем я кажется справился сам.

Пользовался этим https://community.apachefriends.org/f/viewtopic.php?f=17&t=39759 и этим http://sbd-inlinux.blogspot.com/2011/07/configure-error-not-found-please.html

Вот слова не мальчика, но настоящего линуксоида smile

Кстати, Ваша ссылка вместе с моей – уже приличная основа для дополнительной части "XAMPP for Linux", как развяжусь с текущими делами, так займусь.

Спасибо огромное за статью. Перелопатил кучу сайтов, и здесь единственно где написано от и до , доходчиво даже для меня, только только начинаю разбираться с линуксом. Все получилось, сайты заработали из домашней директории. Только вот одно но, при установке новой темы, говорит - нет прав на создание папки uploads, все равно права 777 надо выставлять для папки wp-content, несмотря на то что сайты в домашней директории находятся. И еще в винде я кидаю просто папку в темы, с индексным файлом и файлом стилей пустым, и его уже можно установить как тему, так удобно работать при создании своего шаблона с нуля. А здесь даже у почти готового шаблона почему-то не читает файл стилей, пока опять же права 777 не задашь. Тогда какой смысл в домашнюю папку переносить сайты? В общем вопрос может смешной, но совершенно не понимаю почему в домашней категории, где вроде бы все можно делать без прав администратора, wordpress эти права запрашивает, может браузеру эти права надо выставить?)) Еще раз спасибо за статью.

Сергей, спасибо за хороший отзыв.

Что касается прав: смысл переноса виртуальных сайтов в домашнюю директорию в том, что мы можем как угодно их править/изменять/удалять (в том числе и менять права на файлы и директории) без прав рута. А вот конкретные права на файлы и директории -- это уже другое дело. Они определяются, применительно к Вашему случаю, требованиями движка WP.

Иными словами, в Linux, как и во всем Web, Вы можете быть владельцем файла, но не иметь права его читать (права в восьмеричном виде 200) или редактировать (400) или запускать как исполняемый (600). Кроме Вас как владельца, учитываются права группы и остальных. Такие же ограничения прав действуют и по отношению к руту.

В винде, если Вы администратор, то Вам (а также группе и остальным) можно всё (что соответствует правам 777). Это очень плохая практика, из-за которой винда так уязвима. Советую Вам поскорей избавляться от этого наследия и обязательно изучить вопрос о структуре прав на файлы и директории, поскольку, повторюсь, та же система действует и на серверах во всем интернете, и без ее знания будет очень трудно разобраться с возникающими проблемами. Материалов по теме в интернете -- море. Успехов!

ТЕма жива еще? проблемка есть небольшая...
вот файл часть файла httpd-vhosts.conf

ServerAdmin admin@xampp.ru

DocumentRoot /opt/lampp/htdocs/xampp

ServerName xampp.ru

ServerAdmin admin@domen.ru

DocumentRoot /home/linca/www/domen/public_html

ServerName domen.ru

xampp.ru - работает, остальное - браузер пишет access forbidden, error 403

права на папку поставил www поставил 755, не помогло

вопрос снят, забыл поставить это

AllowOverride All

Require all granted

на другом сайте инструкцию нашел, там про Директори не было написано ничего. сейчас работает.

Здравствуйте! спасибо за статью, но вот есть проблемка, я сайты собираюсь хранить на внешнем устройстве (ntfs), которое при использовании примонтировывается, sudo chmod не помогает, не пускает, пишет 403 Access forbidden. Как бы я мог выйти из ситуации?

Боюсь, это у Вас не проблемка, а проблема, и, возможно, даже с большой буквы. Дело в том, что монтирование ntfs в обычном варианте означает права на файлы 600 (на директории 700) на ntfs-разделе, и простыми линуксовыми средствами это не решается. Придется разбираться с драйвером ntfs-3g и опциями монтирования. Лично я с этим дела не имел, могу лишь посоветовать для начала почитать тут:

wiki.archlinux.org/index.php/NTFS-3G_(Русский)

Александр23
2016-01-12 в 18:57:05

Здравствуйте уважаемый админ. Проблема вот в чем заключается. Я полный ноль в линуксе. Установил xampp. Запустил его, проверил по адресу localhost. все работает отлично. В htdocs создал папку test.dev и в нем создал файл test.dev. в нем прописал: когда вывел этот документ в браузер он мне все это и выдал. Не скрипт php, а html код. он вывел мне все что я написал. Если Вы можете помочь буду вам очень сильно благодарен!!!

Уважаемый Александр! То, что Вы "полный ноль в линуксе" -- это, конечно, не есть хорошо, но к данному случаю отношения не имеет. Здесь нужно иметь (хотя бы первоначальное) представление о том, как устроен и работает сайт. К примеру, файл test.dev не поймет ни один сервер, они понимают файлы index.html или index.php -- таковы по умолчанию начальные страницы сайта, именно эти страницы отдает пользователю сервер при обращении к нему по адресу сайта (в Вашем случае htpp://test.dev).

Так что совершенно тот же результат Вы наблюдали бы и в Винде, -- на Денвере или Виндовой сборке XAMPP.

Информации по сайтостроению и вообще веб-технологиям в интернете более чем достаточно (кстати, как и о Линуксе, который документирован лучше чем Windows), так что требуется только желание учиться, время и некоторое терпение.

Успехов!

Александр25
2016-01-13 в 09:27:15

Уважаемый админ. Приношу свои извинения, что ввел вас в заблуждение и забыл дописать что файл с расширением php. был написан в блюфише и сохранен с расширением php. еще раз приношу свои извинения. мы пытались запустить парсер сайта. вот код ошибки:

xampp Warning: Unknown: failed to open stream: Отказано в доступе in Unknown on line 0

Ну это уже конкретнее. На поверхности у Вас две проблемы: кодировка и права на файлы-каталоги.

XAMPP сообщает именно об этом (Отказано РІ доступе в "переводе на русский" означает Отказано в доступе).

С главной проблемой -- доступом -- будет гораздо легче справиться, если у Вас есть ясное представление о владельце файла и правах на файл. Если нет -- настоятельно советую прояснить для себя эти вопросы, поскольку они являются фундаментальными как для Linux, так и для всего интернета в целом. В данном случае нужно начать с проверки прав на файл index.php (обычно нормальные права 644) и директорию test.dev (755).

Александр27
2016-01-13 в 17:45:26

этот файл был создан на ОС Windows. Перенесли на Linux. Вот и проблема. не могли бы вы более конкретно обьяснить что делать?

Права на файл можно поменять командой chmod.

Предположим, Ваш index.php расположен по пути /opt/lampp/htdocs/test.dev/index.php (в норме это так и должно быть, а если не так -- пропишите точно существующий путь). Тогда достаточно забить в терминале команду

sudo chmod 644 /opt/lampp/htdocs/test.dev/index.php

(лучше делать это при остановленном XAMPP или, если он был запущен, после выполнения команды перезапустить его).

Аналогично можно поменять права и на другие файлы, занесенные с другой ОС. Учтите, что в зависимости от разных причин права на некоторые специфические файлы могут требоваться нестандартные, так что моя рекомендация -- освоить понятие о правах и владельце файлов-каталогов -- остается в силе.

Александр29
2016-01-14 в 14:17:19

Спасибо огромное. Все проблемы решены при помощи команды chmod 777. Парсер заработал! еще раз огромное спасибо за вашу помощь!!!!!!!

Дмитрий30
2016-03-08 в 09:58:07

Сделал все по инструкции. При переходе по адресу mysite1.dev, выдает стандартную заглушку "Приветствия" (первое окно после установки) подскажите в чем может быть проблема?

Обычно такое происходит при неправильной настройке DNS. Проверьте записи в /etc/hosts, а также еще раз /opt/lampp/etc/extra/httpd-vhosts.conf -- в нем частенько случаются ошибки.

Дмитрий32
2016-03-08 в 22:33:37

Нашел в чем была причина!

Файл "httpd.conf" имел расширение после установки XAMPPa "httpd.conf.bak" следовательно как я тщательно не копировал и не сверял настройки все сводилось к нулю, т.к. данный файл имел не то расширение (.bak)

Информация будет полезна тем кто решил установить свежую версию xampp. Возможно разработчики изменили установщик возможно это связанно с "linux mint 17.3 cinnamon" на других не пробовал.

Автору статьи большое спасибо!

Спасибо, Дмитрий. Как соберусь дополнить материал сведениями о новых версиях XAMPP, буду иметь в виду Вашу информацию.

ServerAdmin admin@mysite1.dev

DocumentRoot "/opt/lampp/htdocs"

ServerName lampp

ServerAlias xampp

ServerAdmin admin@mysite1.dev

DocumentRoot "/home/ваш_логин/www/mysite1.dev"

ServerName mysite1.dev

ServerAlias www.mysite1.dev

ErrorLog "/opt/lampp/logs/mysite1.dev-error_log"

CustomLog "logs/mysite1.dev-access_log" common

AllowOverride All

Require all granted

у меня сайт 1 работает и открывается, а сайт 2, 3 нет. --почему у вас на сайт 1 написаны две секции, первая с ссылкой на папку "Ксампа", а другая секция на дамашнюю папку при этом больше строк? (выше копипаст с вашего мануала две секкции о которых разговор)

Семен, давно не занимаюсь темой, детально ответить не могу. Но если работает один сайт, можно попробовать добавить и на остальные по такой же первой секции, как на первый.

Оставьте комментарий

Комментарий будет опубликован после проверки

(обязательно)