ОПИСАНИЕ
Жёсткая ссылка на файл не отличима от оригинального файла, так как это
ссылка на объект, на который указывает оригинальное имя файла (более точно:
каждая из жёстких ссылок на файл — это ссылка на один номер inode, где
номер inode — индекс в таблице inode, в которой содержатся метаданные о всех
файлах файловой системы; смотрите stat(2)). Изменения файла не зависят от
используемого при этом имени файла. Жёсткие ссылки не могут указывать на
каталоги (чтобы не возникало петель в дереве файловой системы, что могло бы
привести к неправильной работе многих программ) и на файлы из разных
файловых систем (так как номера inode не уникальны в файловых системах).
Символьная ссылка — это специальный тип файла, чьё содержимое представляет
собой строку, содержащую имя другого файла — файла, на который указывает
ссылка (содержимое символьной ссылки можно прочитать с помощью
readlink(2)). Другими словами, символьная ссылка — это указатель на
другое имя, а не на сам объект. В следствии этого, символьные ссылки могут
указывать на каталоги и могут указывать на файлы в разных файловых системах.
Объект с именем, на которое ссылается символьная ссылка, может не
существовать. Символьную ссылку, указывающую на не существующее имя,
называют оборванной ссылкой (dangling link).
Как работают виртуальные хосты Apache?
Не будем пока о локальных системах. Если у вас есть веб-сайт, то наверное, вы занимались парковкой домена и уже знаете как все настраивается. Сначала используется DNS сервер, который выдает IP адрес вашего сервера всем клиентам, запросившим адрес этого домена. Затем клиенты отправляют запрос на ip вашего сервера, а веб-сервер уже должен его обработать.
Обычно, на хостингах один веб-сервер обслуживает десятки, а то и сотни сайтов. И как вы понимаете, все запросы поступают на один ip. Для распределения их между папками на сервере используется имя домена, которое передается вместе с запросом в HTTP заголовке «Host». Именно поэтому нужно выполнять парковку домена не только на DNS сервисе, но и на вашем сервере.
Вы настраиваете виртуальные хосты Apache, а затем веб-сервер сравнивает домен, переданный в заголовке «Host» с доступными виртуальными доменами и если находит совпадение, то возвращает содержимое настроенной папки или содержимое по умолчанию, или ошибку 404. Нужно сказать, что вы можете настроить виртуальный хост для любого домена, например, vk.com или losst.ru. Но пользователи смогут получить доступ к этому домену у вас, только если к вам будут поступать запросы от браузеров, в которых будет значиться этот домен. А теперь детальнее про настройку.
Ответ 5
Для Apache 2 на Linux Mint 17.3 Cinnamon 64-bit работает следующее:
-
В /etc/apache2/sites-available/ откройте файл 000-default.conf и измените Document Root на абсолютный путь к вашей директории.
sudo vim /etc/apache2/sites-available/000-default.conf
-
В папке /etc/apache2/ откройте файл httpd.conf и добавьте тег <Directory>, ссылающийся на ваш каталог и содержащий те же настройки, что и тег для var/www.
sudo vim /etc/apache2/apache2.conf
На моей машине это выглядело следующим образом:
<Directory /home/my_user_name/php/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Примечание: На первом этапе вы, вероятно, захотите изменить Document Root в файле default-ssl.conf также для целей SSL. Но, насколько я могу судить, этого не требуется, чтобы запустить общую среду разработки.
Типы ссылок
В системах Linux / UNIX есть два типа ссылок:
- Hard links . Вы можете придумать жесткую ссылку как дополнительное имя для существующего файла. Жесткие ссылки связывают два или более имен файлов с одним и тем же индексом . Вы можете создать одну или несколько жестких ссылок для одного файла. Жесткие ссылки не могут быть созданы для каталогов и файлов в другой файловой системе или разделе.
- Soft links. Это что-то вроде ярлыка в Windows. Это косвенный указатель на файл или каталог. В отличие от жесткой ссылки, символическая ссылка может указывать на файл или каталог в другой файловой системе или разделе.
Ответ 3
Правильный способ смены директории или запуска из нескольких директорий под разными портами для Apache 2 выглядит следующим образом:
Для Apache 2 конфигурационные файлы расположены в каталоге /etc/apache2 и не используют единый конфигурационный файл, как в старых версиях, а разбиты на более мелкие конфигурационные файлы, причем /etc/apache2/apache2.conf является основным конфигурационным файлом. Чтобы обслуживать файлы из другого каталога, нам нужен новый файл virtualhost conf. Файлы конфигурации virtualhost находятся в каталоге /etc/apache2/sites-available (не редактируйте файлы внутри sites-enabled). При установке Apache по умолчанию используется файл virtualhost conf 000-default.conf.
Начните с создания нового файла virtualhost, скопировав файл virtualhost, используемый установкой Apache по умолчанию (тот, который запускается на localhost на порту 80). Перейдите в каталог /etc/apache2/sites-available и сделайте копию sudo cp 000-default.conf example.com.conf, теперь отредактируйте файл sudo gedit example.com.conf следующим образом:
<VirtualHost *:80>
ServerAdmin example@localhost
DocumentRoot /home/ubuntu/example.com
</VirtualHost>
Для краткости я удалил несущественные строки из приведенного выше файла. Здесь DocumentRoot — это путь к директории, из которой будут обслуживаться файлы сайта, например, index.html. Создайте директорию, из которой вы хотите обслуживать файлы, например, mkdir example.com, и измените владельца и группу по умолчанию директории, например, если имя вашего зарегистрированного пользователя ubuntu, измените разрешения как sudo chown ubuntu:www-data example.com. Это предоставит полный доступ пользователю ubuntu и разрешит доступ на чтение и выполнение для группы www-data. Теперь отредактируйте конфигурационный файл Apache /etc/apache2/apache2.conf, выполнив команду sudo gedit apache2.conf, найдите строку <Directory /var/www/> и ниже закрывающего тега </Directory> добавьте следующее:
<Directory /home/ubuntu/example.com>
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
Теперь есть две команды для включения или отключения конфигурационных файлов virtualhost: a2ensite и a2dissite соответственно. Поскольку наш файл example.com.conf использует тот же порт (80), что и файл конфигурации по умолчанию (000-default.conf), мы должны отключить файл конфигурации по умолчанию, выполнив команду sudo a2dissite 000-default.conf, и включить наш файл конфигурации виртуального хоста командой sudo a2ensite example.com.conf. Теперь перезапустите сервер командой sudo service apache2 restart. Теперь Apache обслуживает файлы из каталога example.com на localhost на стандартном порту 80.
Команда a2ensite в основном создает символическую ссылку на конфигурационный файл в директории site-enabled. Не редактируйте файлы в директории sites-enabled (или *-enabled).
Для изменения порта и запуска из нескольких каталогов на разных портах:
Теперь, если вам нужно запустить каталог на другом порту, измените номер порта с 80 на 8080, отредактировав файл virtualhost следующим образом:
<VirtualHost *:8080>
ServerAdmin user@localhost
DocumentRoot /home/ubuntu/work
</VirtualHost>
А также отредактируйте /etc/apache2/ports.conf и добавьте Listen 8080 чуть ниже строки Listen 80.
Теперь мы можем включить файл конфигурации виртуального хоста по умолчанию, который работает на порту 80, поскольку каталог example.com использует порт 8080, как sudo a2ensite 000-default.conf. Теперь перезапустите или перезагрузите сервер командой sudo service apache2 restart. Теперь доступ к обоим каталогам возможен с localhost и localhost:8080.
Настройка виртуальных хостов Apache?
Я уже подробно рассматривал как настроить Apache в отдельной статье. Поэтому не буду полностью расписывать здесь все конфигурационные файлы. Остановимся на файлах виртуальных хостов. Для удобства они вынесены в отдельные папки:
- /etc/apache2/sites-available
- /etc/apache2/sites-enabled
Ясно, что это разделение очень условно. Вы можете его убрать и добавлять свои виртуальные хосты прямо в основной конфигурационный файл. Все файлы из этих папок подключаются к нему с помощью директив Include. Но ведь так намного удобнее. В папке sites-available находятся все конфигурационные файлы, но они пока еще не активированы и отсюда не импортируются никуда. При активации нужного хоста на него просто создается ссылка в папку /etc/apache2/sites-enabled.
Для примера, создадим новый конфигурационный файл для виртуального хоста site1.ru. Для этого просто скопируем существующую конфигурацию для хоста по умолчанию — 000-default:
Сначала рассмотрим синтаксис того, что вы увидите в этом файле:
<VirtualHost адрес_хоста_для прослушивания:порт>ServerName доменServerAlias псевдоним_доменаServerAdmin емейл@администратораDocumentRoot /путь/к/файлам/сайтаErrorLog /куда/сохранять/логи/ошибок/error.logCustomLog /куда/сохранять/логи/доступа/access.log combined</VirtualHost>
Это минимальная конфигурация, которую вам нужно указать, чтобы создать виртуальный хост Apache. Конечно, здесь вы можете использовать и другие директивы Apache, такие как Deny, Allow и многие другие. А теперь рассмотрим наш пример для тестового сайта site1.ru:
Здесь мы используем звездочку вместо ip адреса, это значит, что веб-сервер будет слушать соединения на всех адресах, как на внешнем, так и на localhost. Порт 80, это порт по умолчанию. Затем указываем домен, электронный адрес администратора, и путь к папке, в которой будут находиться данные сайта. Две строчки Log говорят куда сохранять логи, но добавлять их необязательно. Дальше, нам нужно активировать этот хост. Мы можем вручную создать ссылку или использовать уже заготовленную команду:
Затем перезапустите Apache:
И нам осталось все это протестировать. Если ваш сервер имен еще не направляет запросы к домену на ваш ip, а вы хотите уже проверить как все работает, можно пойти обходным путем. Для этого достаточно внести изменения в файл /etc/hosts на машине, с которой вы собрались открывать сайт. Этот файл, такой себе локальный DNS. Если компьютер находит ip для домена в нем, то запрос в интернет уже не отправляется. Если вы собираетесь тестировать с той же машины, на которую установлен Apache2, добавьте:
Если же это будет другой компьютер, то вместо 127.0.0.1 нужно использовать адрес вашего сервера, на котором установлен Apache. Затем можете открыть сайт в браузере:
Ln Command in Linux (Create Symbolic Links)
11 Января 2020
|
Терминал
Символическая ссылка, также известная как символическая ссылка или программная ссылка, представляет собой специальный тип файла, который указывает на другой файл или каталог.
В системах Linux / UNIX есть два типа ссылок:
- Hard links . Вы можете придумать жесткую ссылку как дополнительное имя для существующего файла. Жесткие ссылки связывают два или более имен файлов с одним и тем же индексом . Вы можете создать одну или несколько жестких ссылок для одного файла. Жесткие ссылки не могут быть созданы для каталогов и файлов в другой файловой системе или разделе.
- Soft links. Это что-то вроде ярлыка в Windows. Это косвенный указатель на файл или каталог. В отличие от жесткой ссылки, символическая ссылка может указывать на файл или каталог в другой файловой системе или разделе.
Как использовать команду
утилита командной строки для создания ссылок между файлами По умолчанию команда создает жесткие ссылки. Чтобы создать символическую ссылку, используйте параметр ( ).
Синтаксис команды для создания символических ссылок выглядит следующим образом :
- Если оба и приведены, создаст ссылку из файла , указанного в качестве первого аргумента ( ) в файл , указанный в качестве второго аргумента ( ).
- Если в качестве аргумента указан только один файл или второй аргумент является точкой ( ), будет создана ссылка на этот файл в текущем рабочем каталоге . Имя символической ссылки будет таким же, как и имя файла, на который она указывает.
По умолчанию в случае успеха не выводит никаких данных и возвращает ноль.
Создание символической ссылки на файл
Чтобы создать символическую ссылку на данный файл, откройте свой терминал и введите:
Замените на имя существующего файла, для которого вы хотите создать символическую ссылку, и на имя символической ссылки.
Параметр является необязательным. Если вы не укажете символическую ссылку, команда создаст новую ссылку в вашем текущем каталоге:
В следующем примере мы создаем символическую ссылку с именем файла :
Чтобы убедиться, что символическая ссылка была успешно создана, используйте команду:
Вывод будет выглядеть примерно так:
Символ представляет собой флаг типа файла, который представляет символическую ссылку. В символ показан файл символическая ссылка указывает.
Команда для создания символической ссылки на каталог такая же, как и при создании символической ссылки на файл. Укажите имя каталога в качестве первого параметра и символическую ссылку в качестве второго параметра.
Например, если вы хотите создать символическую ссылку из каталога в каталог, вы должны выполнить:
Если вы попытаетесь создать символическую ссылку, которая уже существует , команда выведет сообщение об ошибке.
Чтобы перезаписать путь назначения символической ссылки, используйте параметр ( ).
Чтобы удалить символические ссылки, используйте команду или .
Синтаксис очень прост:
Удаление символической ссылки с помощью команды аналогично удалению файла:
Независимо от того, какую команду вы используете, при удалении символической ссылки не добавляйте косую черту в конце ее имени.
Если вы удалите или переместите исходный файл в другое место, символический файл останется висящим (сломанным) и должен быть удален.
Для получения дополнительной информации о команде посетите страницу руководства ln или введите свой терминал.
Ответ 6
Нижеследующее относится к Ubuntu 14.04 (Trusty Tahr) и более поздним версиям. Перед внесением изменений обязательно сделайте резервную копию следующих файлов.
-
Откройте файл /etc/apache2/apache2.conf, найдите директиву <Directory /var/www/> и замените путь на /home/<USERNAME>/public_html. Вы можете использовать «*» вместо «.»
-
Откройте /etc/apache2/sites-available/000-default.conf и измените свойство DocumentRoot value с /var/www/html на /home/<USERNAME>/public_html. Также <Directory /var/www/html> на <Directory /home/<USERNAME>/public_html.
-
Откройте файл /etc/mods-available/php7.1.conf. Найдите и закомментируйте следующий код
php_admin_flag engine Off
Не включайте флаг php_admin_flag engine OFF, так как причина указана в комментарии над кодом Директивы. Также версия PHP может быть 5.0, 7.0 или любая другая, которая у вас установлена.
Создайте каталог public_html в home/<USERNAME>.
Перезапустите службу Apache, выполнив команду sudo service apache2 restart.
Протестируйте, запустив пример скрипта на сервере.
Конфигурации виртуальных хостов
Стандартный виртуальный хост находится в файле default в каталоге sites-available.
Чтобы ознакомиться с общим форматом виртуального хоста, откройте этот файл:
По умолчанию виртуальный хост обрабатывает запросы на порте 80.
Это не означает, что веб-сервер обязательно будет обрабатывать каждый запрос через этот порт. Apache может переопределять конфигурации.
Настройки виртуального хоста высшего уровня
Эти параметры устанавливаются в разделе Virtual Host и применяются ко всему виртуальному хосту.
Директива ServerName задаёт доменное имя или IP-адрес сервера. Это индивидуальный параметр каждого виртуального хоста, который может переопределить настройки по умолчанию, если он совпадает со значением ServerName.
Параметр ServerAlias позволяет добавить алиасы сайта – альтернативные имена и пути, ведущие к одному контенту. Так, например, часто устанавливается алиас домена с www.
DocumentRoot задаёт каталог, в котором веб-сервер хранит контент данного виртуального хоста. В Ubuntu для этого по умолчанию используется /var/www.
В конфигурации виртуального хоста есть специальный раздел для настройки обработки отдельных каталогов файловой системы. Эти настройки также можно переопределять.
Сначала виртуальный хост предлагает набор правил для каталога / (root-каталог). Этот раздел обеспечит базовую конфигурацию виртуального хоста, поскольку он относится ко всем файлам, которые обслуживаются в файловой системе.
По умолчанию Ubuntu не накладывает никаких ограничений на файловую систему. Apache рекомендует добавить несколько стандартных ограничений доступа, например:
Это заблокирует доступ ко всему контенту, если в последующих определениях каталогов не указано иное.
Далее идут настройки каталога document root, в которых параметр allow from all переопределяет параметры каталога /.
Параметр AllowOverride позволяет настроить переопределение конфигураций с помощью файлов .htaccess. Чтобы переопределить настройки, файл .htaccess должен находиться в каталоге с контентом. По умолчанию эта функция отключена.
Настройки Alias и ScriptAlias
Иногда перед разделом Directory идут параметры Alias и ScriptAlias.
Директива Alias позволяет добавлять к обслуживаемому контенту каталоги вне DocumentRoot.
ScriptAlias работает аналогичным образом, но содержит путь к каталогам с исполняемыми файлами.
К примеру, такая строка в виртуальном хосте для сайта example.com откроет доступ к контенту в каталоге /path/to/content/ при запросе example.com/content/.
Помните, что открывая доступ к дополнительным каталогам, нужно устанавливать ограниченные привилегии на них.
Включение сайтов и модулей в Apache
Создав файл виртуального хоста, вы можете включить его. Для этого нужно создать символическую ссылку на файл в каталоге sites-enabled:
Включив сайт, перезапустите Apache, чтобы веб-сервер перечитал конфигурации:
Чтобы отключить виртуальный хост, нужно удалить символьную ссылку из sites-enabled:
После этого нужно снова перезапустить веб-сервер:
Включить и отключить модуль Apache можно с помощью следующих команд (соответственно):
Они работают так же, как и ранее упомянутые команды a2ensite иa2dissite. После включения или отключения модуля нужно перезапускать веб-сервер.
Шаг 6 — Настройка файла локальных хостов (опционально)
Если до этого вы использовали не реальные доменные имена, которыми вы владеете, а тестовые, вы можете протестировать работоспособность виртуальных хостов, временно изменив файл на вашем локальном компьютере.
Это позволит перехватывать любой запрос к доменам, которые вы настроили и перенаправлять его на ваш VPS сервер так, как это сделала бы система DNS в случае использования реально зарегистрированных доменов. Это будет работать только с вашего локального компьютера и используется только для тестирования.
Убедитесь, что дальнейшие шаги вы будете проделывать на вашем локальном компьютере, а не на VPS сервере. Вам необходимо знать пароль администратора или быть членом группы администраторов.
Если вы используете компьютер с Mac или Linux, вы можете редактировать локальный файл с правами администратора, введя команду:
Если у вас компьютер с Windows, вы можете найти инструкции по редактированию файла хостов здесь.
Вам необходимо добавить в файл публичный IP-адрес вашего VPS сервера и, следом, доменное имя, по которому вы хотите обращаться к этому VPS.
Для доменов, используемых в этом руководстве, предположим, что IP-адрес нашего VPS . В этом случае мы можем добавить следующие строки в конец файла :
В результате этого любые запросы к и с нашего компьютера будут перенаправляться на наш сервер по адресу . Это удобно для проверки правильности настройки наших виртуальных хостов для случая, когда мы не являемся реальными владельцами этих доменных имен.
Сохраните и закройте файл.
Добавление команд Homestead
Вы можете расширить Homestead, используя сценарий в корне каталога Homestead. В этот файл вы можете добавить любые команды оболочки, которые необходимы для правильной настройки вашей виртуальной машины.
При настройке Homestead, Ubuntu может спросить вас, сохранять ли исходную конфигурацию пакета или перезаписать ее новым файлом конфигурации. Чтобы избежать этого, вы должны использовать следующую команду, чтобы избежать перезаписи любой конфигурации, ранее записанной Homestead:
Пользовательские настройки
При использовании Homestead вместе со своей командой вы можете настроить Homestead, чтобы он лучше соответствовал вашему личному стилю разработки. Для этого вы можете создать файл в корне каталога Homestead (тот же каталог, где находится ваш файл). В этом файле вы можете сделать любую настройку, какую захотите; однако файл должен быть добавлен в список игнорируемых, если вы пользуетесь системами контроля версий (VCS).
Ответ 2
Вам нужно изменить параметр DocumentRoot в файле httpd.conf. Скорее всего, он будет находиться в каталоге /etc/apache2/conf/httpd.conf. Используйте ваш любимый редактор (я рекомендую Vim), найдите DocumentRoot и измените его на /users/spencer/projects. Также найдите чуть ниже настройки, которые выглядят следующим образом:
<Directory «/var/www»>
Вы также захотите изменить то, что находится в кавычках, на ваш новый каталог. Это даст Apache доступ к чтению из этой директории, когда пользователь делает запрос с обращением к ней. Теперь перезапустите службу Apache (httpd -k restart), и все будет готово. Файлы конфигурации сайтов Apache 2 теперь обычно хранятся в /etc/apache2/sites-available/ (Debian, Ubuntu и т. д.).
Шаг 3 — Проверка веб-сервера
В конце процесса установки Debian 9 запускает Apache. Веб-сервер уже должен быть запущен и работать.
Используйте команду init system, чтобы проверить работу службы:
Как видно из результатов, служба успешно запущена. Однако лучше всего протестировать ее запуск посредством запроса страницы из Apache.
Откройте страницу Apache по умолчанию, чтобы подтвердить работу программного обеспечения через ваш IP-адрес: Если вы не знаете IP-адрес вашего сервера, есть несколько способов узнать его с помощью командной строки.
Попробуйте ввести в командной строке сервера следующую команду:
Вы получите несколько адресов, разделенных пробелами. Вы можете попробовать каждый из них в браузере, чтобы убедиться в их работоспособности.
Альтернатива заключается в использовании инструмента , который должен предоставить вам публичный IP-адрес, отображаемый в других местах в интернете.
Вначале выполните установку с помощью :
Затем используйте для получения icanhazip.com с помощью IPv4:
Когда вы узнаете IP-адрес вашего сервера, введите его в адресную строку браузера:
Вы увидите веб-страницу Debian 9 Apache по умолчанию:
Эта страница показывает, что Apache работает корректно. Также на ней содержится информация о важных файлах Apache и расположении каталогов.
Отладка и профилирование
Отладка веб-запросов
Homestead включает поддержку пошаговой отладки с использованием Xdebug. Например, вы можете получить доступ к странице в своем браузере, и PHP подключится к вашей среде IDE, чтобы разрешить проверку и изменение выполняемого кода.
По умолчанию Xdebug уже запущен и готов принимать подключения. Если вам нужно включить Xdebug в CLI, выполните команду на виртуальной машине Homestead. Затем следуйте инструкциям IDE, чтобы включить отладку. Наконец, настройте свой браузер для запуска Xdebug с расширением или букмарклетом.
Автозапуск Xdebug
При отладке функциональных тестов, которые отправляют запросы к веб-серверу, проще автоматически запускать отладку, чем изменять тесты для прохождения через настраиваемый заголовок или файл cookie для запуска отладки. Чтобы заставить Xdebug запускаться автоматически, измените файл внутри виртуальной машины Homestead и добавьте следующую конфигурацию:
Профилирование приложения с Blackfire
Blackfire — это сервис для профилирования веб-запросов и CLI-приложений. Он предлагает интерактивный пользовательский интерфейс, который отображает данные профиля в виде графиков вызовов и временных шкал. Он создан для использования в разработке, тестировании и производстве без дополнительных затрат для конечных пользователей. Кроме того, Blackfire обеспечивает проверку производительности, качества и безопасности кода и параметров конфигурации .
Blackfire Player — это приложение с открытым исходным кодом для веб-сканирования, веб-тестирования и веб-скрапинга, которое может работать совместно с Blackfire для создания сценариев профилирования.
Чтобы включить Blackfire, используйте параметр «features» в файле конфигурации Homestead:
Учетные данные сервера Blackfire и учетные данные клиента требуют наличие аккаунта Blackfire. Blackfire предлагает различные варианты профилирования приложения, включая инструмент командной строки и расширение браузера. Пожалуйста просмотрите документацию Blackfire для получения более подробной информации.
Что такое «мультисайт»
Обычно под термином «мультисайт» подразумевают управление двумя или более сайтами при помощи одной панели управления.
Если у компании несколько сайтов, то такой подход очень удобен с точки зрения администрирования. Действительно, использовать для управления всеми сайтами компании одной панели управления («админки») очень удобно. В том числе по следующим причинам:
- Один URL для входа в панель управления (в том числе платные);
- Сайты могут использовать общие компоненты;
- Экономия на лицензии платформы сайта (CMS);
- Мультисайт занимает меньше места на диске, чем два отдельных сайта (опять же за счёт использования общих компонентов ядра системы);
- Удобнее администрировать сайт (в том числе выполнять резервное копирование, обновление CMS и другие подобные операции);
Обратите внимание, что здесь есть не только технические преимущества, но и экономические. В случае двух и более сайтов экономия на лицензионных платежах за платформу сайта (покупка + регулярные обновления) может быть очень значительной и достигать многих десятков тысяч рублей
Стоит заметить, что многосайтовость (другое название мультисайта) поддерживают не все системы управления контентом (CMS). Таким образом, если ваша компания в будущем планирует создавать несколько сайтов, то лучше заранее выбирать для него такую платформу, которая поддерживает многосайтовость «из коробки» и позволяет без проблем сделать нормальный мультисайт без всяких «костылей».
В данной статье мы рассмотрим принципы создания мультисайта на примере профессиональной платформы HostCMS 6. Эта информация может быть применена для любых подобных случаев с другими платформами, поддерживающими такую замечательную функцию как многосайтовость.
Ответ 4
Я работал с LAMP, и, чтобы изменить корневую папку документа, я отредактировал файл по умолчанию, который находится в папке /etc/apache2/sites-available. Если вы хотите сделать то же самое, просто отредактируйте файл следующим образом:
DocumentRoot /home/username/new_root_folder
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/username/new_root_folder>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
После этого, если вы наберете в браузере «localhost», он загрузит содержимое /home/username/new_root_folder.
Системные вызовы
За исключениями, описанными ниже, все системные вызовы переходят по
символьным ссылкам. Например, если есть символьная ссылка slink, которая
указывает на файл с именем afile, то системный вызов open(«slink»
…) вернёт файловый дескриптор, ссылающийся на файл afile.
Некоторые системные вызовы не переходят по ссылкам, а работают с самими
ссылками: lchown(2), lgetxattr(2), llistxattr(2),
lremovexattr(2), lsetxattr(2), lstat(2), readlink(2),
rename(2), rmdir(2) и unlink(2).
Другие системные вызовы могут переходить по ссылкам: faccessat(2),
fchownat(2), fstatat(2), linkat(2), name_to_handle_at(2),
open(2), openat(2), open_by_handle_at(2) и utimensat(2);
подробности смотрите в их справочных страницах. Так как remove(3)
является псевдонимом unlink(2), библиотечная функция также не переходит
по символьным ссылкам. При указании символьной ссылки rmdir(2) вызов
завершается с ошибкой ENOTDIR.
Виртуальные хосты в Windows 7
В качестве примера поместим один или несколько проектов на диск D: локального компьютера. Сначала организуем структуру каталогов. На диске D: создаем каталог «mysites», а в нём каталог для первого сайта «site1». В каталоге «site1» сделаем два подкаталога: «www» и «logs». В первом подкаталоге будет располагаться сам сайт, а во втором, журналы виртуального хоста: access.log (журнал доступа) и error.log (журнал ошибок).
Файлы журналов создавать не надо, они будут созданы автоматически. А в каталоге «www», пока нет сайта, поместим простейший файл-заглушку «index.html» следующего содержания:
Теперь немного поправим настройки для виртуальных хостов веб-сервера Apache. Открываем C:\xampp\apache\conf\extra\ httpd-vhosts.confКак видим, этот файл уже содержит два примера виртуальных хостов. Не будем их трогать, а ниже разместим следующие строки:
NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot "C:/xampp/htdocs" ServerName localhost </VirtualHost> <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "D:/mysites/site1/www" ServerName site1 ServerAlias www.site1 ErrorLog "D:/mysites/site1/logs/error.log" CustomLog "D:/mysites/site1/logs/access.log" common <Directory "D:/mysites/site1/www"> AllowOverride All Require all granted </Directory> </VirtualHost>
Первая директива NameVirtualHost *:80 включает поименное использование виртуальных хостов на 80-ом порту (обычный http, если нужен https, используем 443 порт).Следующие четыре строки это общая секция для всех виртуальных хостов. Если клиент обращается к серверу по IP-адресу или по несуществующему имени он попадет на этот виртуальный хост. В нашем случае в корневую директорию веб-сервера. Остальные строки это описание нашего первого виртуального хоста. Если нужно добавить ещё один виртуальный хост, то просто копируем эту секцию, вставляем ниже и по аналогии изменяем данные. Сохраняем файл.Значение данных в секции виртуального хоста:
- <VirtualHost *:80> Какой порт используется
- ServerAdmin [email protected] Эл. почта администратора сайта
- DocumentRoot «D:/mysites/site1/www» Корневой каталог сайта
- ServerName site1 Имя хоста
- ServerAlias www.site1 Псевдоним хоста. Можно обращаться, используя псевдоним
- ErrorLog «D:/mysites/site1/logs/error.log» Расположение журнала ошибок
- CustomLog «D:/mysites/site1/logs/access.log» common Расположение журнала доступа. Оператор common определяет общую степень детализации журнала. Если нужна более подробная детализация, то вместо common пишем combined
- <Directory «D:/mysites/site1/www»> Подсекция, в которой определяются права и настройки для конкретного каталога.
- AllowOverride All Эта директива нужна для правильной работы системы SEF
Из панели управления XAMPP перестартовываем Apache. Изменяем файл C:\Windows\System32\drivers\etc\hosts. Дописываем в него две строки:
127.0.0.1 site1 127.0.0.1 www.site1
Вместо 127.0.0.1 можно написать 127.0.0.2, а для следующего виртуального хоста 127.0.0.3, но в этом нет особой нужды. Об этом напишу в другой раз. А сейчас сохраняем файл. Открываем браузер и адресной строке вводим http://site1 или просто site1. Если всё сделано правильно, видим информацию из файла-заглушки.
Команды, выполняющие обход дерева файлов
chgrpchmodchowncpdufindlspaxrmtar
Важно понимать, что следующие правила применяются как к символьным ссылкам,
обнаруженным при обходе дерева файлов, так и к символьным ссылкам, указанным
в аргументах командной строки.
Первое правило применяется к символьным ссылкам, которые указывают на
файлы, а не на каталоги. Операции, которые применимы к символьным ссылкам,
выполняются с самими ссылками, но другие ссылки игнорируется.
Команда rm -r slink каталог удалит slink, а также все символьные
ссылки, обнаруженные при обходе каталога, так как символьные ссылки могут
быть удалены. Команда rm(1) никогда не удаляет файл, на который указывает
slink.
Второе правило применяется к символьным ссылкам, которые указывают на
каталоги. По умолчанию такие символьные ссылки никогда не
разыменовываются. Часто об этом говорят как о «физическом» обходе, в
противовес «логическому» обходу (когда выполняется переход по символьным
ссылкам, указывающем на каталог).
При обходе дерева файлов командами соблюдаются (должны) определённые
соглашения, если это возможно:
- *
-
Команду можно заставить перейти по любой символьной ссылке, указанной в
командной строке, независимо от типа файла, на который она ссылаются, указав
параметр -H (от «half-logical»). Этот параметр заставляет пространство
имён командной строки выглядеть как логическое пространство имён (заметим,
что команды, которые не всегда делают обход дерева файлов, будут
игнорировать флаг -H, если также не указан флаг -R).Например, команда chown -HR user slink выполнит обход файловой иерархии
с корнем как у файла, указанном slink. Заметим, что здесь -H делает не
тоже самое, что и флаг -h, описанный ранее. При флаге -H символьные
ссылки, указанные в командной строке, будут разыменовываться и при обходе
файлового дерева и как если бы пользователь указал имя файла, на которое
указывает символьная ссылка. - *
-
Команду можно заставить перейти по любой символьной ссылке, указанной в
командной строке, а также по всем символьным ссылкам, встреченным при
обходе, независимо от типа файла, на который она ссылается, указав параметр
-H (от «half-logical»). Этот параметр заставляет всё пространство имён
выглядеть как логическое пространство имён (заметим, что команды, которые не
всегда делают обход дерева файлов, будут игнорировать флаг -L, если также
не указан флаг -R).Например, команда chown -LR user slink изменит владельца файла, на
который указывает slink. Если slink указывает на каталог, то chown
обойдёт дерево файлов с корнем в этом каталоге. Также, если символьные
ссылки встречаются в любом файловом дереве, которое обходит chown, то с
ними будет сделано тоже что и с slink. - *
-
Команду можно заставить следовать поведению по умолчанию, указав флаг -P
(от «physical»). Этот флаг предназначен для работы со всем пространством
имён как с физическим пространством имён.
Команды, которые по умолчанию не выполняют обход дерева файлов, игнорируют
флаги -H, -L и -P, если не указан флаг -R. Также вы можете
указать параметры -H, -L и -P более одного раза; последний
указанный параметр определяет поведение команды. Это позволяет создавать
псевдонимы команд с некоторым поведением, а затем переопределять это
поведение в командной строке.
У команд ls(1) и rm(1) есть исключения из этих правил:
- *
-
Команда rm(1) работает с символьными ссылками, а не с файлами, на который
они ссылаются, и поэтому никогда не переходит по символьной ссылке. Команда
rm(1) не поддерживает параметры -H, -L и -P. - *
-
Для совместимости со старыми системами работа команды ls(1) чуть
отличается. Если не указан параметр -F, -d или -l, то ls(1)
переходит по символьной ссылке, указанной в командной строке. Если указан
флаг -L, то ls(1) переходит по всем символьным ссылкам независимо от
их типа и где они встретились — в командной строке или при обходе дерева.