The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Конфигурирование виртуальных HTTP и FTP-серверов (http ftp proftpd virtual apache)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: http, ftp, proftpd, virtual, apache,  (найти похожие документы)
From: Denis Kolisnichenko <http://dkws.narod.ru>; Date: Wed, 24 Feb 2008 18:21:07 +0000 (UTC) Subject: Конфигурирование виртуальных HTTP и FTP-серверов Оригинал: http://dkws.narod.ru/linux/servers/vs.html В статье пойдет речь о конфигурировании виртуальных HTTP- и FTP-серверов. В качестве HTTP сервера будет рассмотрен Apache, а создание виртуального FTP-сервера будет происходить с использованием FTP-сервера ProFTP. Для начала определимся что такое виртуальный сервер? Как и подразумевает слово "виртуальный", наш сервер не будет существовать физически, но пользователь будет считать, что он работает с реальным сервером. - Установка виртуального Web-сервера - Идентификация по имени - Идентификация по IP-адресу - Подключение почтового интерфейса - Установка виртуального FTP-сервера - Директивы файла конфигурации FTP-сервера Виртуальный HTTP-сервер Концепция виртуальных хостов позволяет Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколько и пользователи видят отдельные Web-узлы. Это очень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, например develop.mycompany.com Apache можно настроить несколькими способами: чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам, или запускать отдельный процесс для каждого виртуального сервера. В первом случае один сервер будет одновременно обслуживать все виртуальные. Если вас интересует такой вариант, нужно настраивать виртуальные сервера с помощью директивы VirtualHost. Настройка отдельны процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress. В статье я буду рассматривать именно первый случай. Внутри блока директивы VirtualHost можно использовать любые директивы, кроме ServerType, BindAddress, Listen, NameVirtualHost, ServerRoot, TypesConfig, PidFile, MinRequestPerChild, MaxSpareServers, MinSpareServers, так как некоторые из них относятся к основному HTTP-серверу (например, ServerType), а некоторые - ко второму варианту настройки виртуальных серверов и здесь неприемлемы. Обязательно должны присутствовать директивы ServerName, DocumentRoot, ServerAdmin и ErrorLog В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться или в файле httpd.conf или в файле vhosts.conf Виртуальные сервера можно идентифицировать по имени или по IP-адресу. Виртуальные сервера с идентификацией по имени Идентификация по имени имеет существенное преимущество перед идентификацией по IP-адресу: вы не ограничены количеством адресов, имеющемся у вас в распоряжении. Вы можете использовать любое количество виртуальных серверов и при этом вам не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными броузерами. Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для нашего виртуального сервера. Это обязательно нужно сделать, чтобы избежать поиска службой DNS - мы же не хотим, чтобы при неудачном поиске виртуальный сервер был заблокирован? Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуального сервера, причем они записываются для каждого виртуального сервера отдельно. Пример 1.1. Создадим два виртуальных сервера - www и lib ServerName den.dhsilabs.com <NameVirtulaHost 192.168.1.1> <VirtualHost 192.168.1.1> ServerName www.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/www/html ErrorLog /var/https/www/logs/error.log TransferLog logs/access.log </VirtualHost> <VirtualHost 192.168.1.1> ServerName lib.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/lib/html ErrorLog /var/https/lib/logs/error.log TransferLog logs/access.log </VirtualHost> Если ваша система имеет только один IP-адрес, доступ к основному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве виртуального, что я и сделал в примере 1.1.: основной сервер www является виртуальным. При наличии двух IP-адресов можно один присвоить основному серверу, а другой - виртуальным. Apache позволяет использовать несколько доменных имен для доступа к одному серверу: ServerAlias www.dhsilabs.com www2.dhsilabs.com Запросы, посланные по IP-адресам, которые присвоены нашим виртуальным хостам, должны соответствовать одному из указанных доменных имен. Чтобы зафиксировать запросы, не соотвествующие ни одному их этих имен, нужно с помощью опции default:* создать виртуальный хост, который будет обслуживать такие запросы: <VitrualHost _default_:*> Обратите внимание на то, что адреса www.dhsilabs.com и lib.dhsilabs.com должны быть прописаны в DNS Виртуальные сервера с идентификацией по IP-адресу В директиве VirtualHost в качестве адресов можно использовать доменные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при резолвинге. Также потребуется один IP-адрес для вашего основного сервера. Если распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу. Пример 1.2. <VitrualHost 192.168.1.2> ServerName www.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/www/html ErrorLog /var/https/www/logs/error.log </VirtualHost> <VirtualHost lib.dhsilabs.com> ServerName lib.dhsilabs.com ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /var/httpd/lib/html ErrorLog /var/https/lib/logs/error.log </VirtualHost> В приведенном примере сконфигурированы два виртуальных сервера и идентификацией по IP-адресу. Один из них использует сам IP-адрес, а другой - доменное имя, соответствующее IP-адресу. При конфигурировании виртульных серверов можно использовать опцию ExeсCGI, которая разрешает выполнение CGI-скриптов на виртуальном сервере. Ниже приведен пример для почтового Web-интерфейса: Пример 1.3. Подключение почтового Web-интерфейса # Файл httpd.conf <Directory /home/httpd/mail> order deny,allow deny from all allow from localhost allow from 192.168 allow from 123.123.123.123 Options ExecCGI </Directory> # Файл vhosts.conf <VirtualHost 123.123.123.123> ServerAdmin webmaster@den.dhsilabs.com DocumentRoot /home/httpd/mail ServerPath /mail ServerName wwwmail.dhsilabs.com ErrorLog logs/error_log TransferLog logs/access_log ErrorDocument 403 http://www.dhsilabs.com/messages/error403.html </VirtualHost> # Error 403 - доступ извне, то есть почтовый интерфейс будет доступен только # из локальной сети Виртуальный FTP-сервер Рассмотрим конфигурирование виртуального FTP-сервера на примере ProFTP. Демон proftpd позволяет обслуживать сразу несколько FTP-узлов. Виртуальные FTP-узлы нужны когда мы, например, хотим организовать несколько FTP-узлов - один для одной рабочей группы, другой - для второй, в третий может быть анонимным и т.д. Настройка виртуального FTP-узла очень похожа на настройку виртуального Web-сервера - даже используется та же директива VirtualHost. Linux может поддерживать несколько Ip-адресов, благодаря чему мы можем создать виртуальные узлы. Дополнительные IP-адреса, которыми вы располагаете можно использоваться виртуальными узлами. При конфигурировании виртуальных FTP-узлов каждому виртуальному узлу нужно присвоить отдельный IP-адрес. Для конфигурирования виртуального FTP в файл proftpd.conf нужно добавить директиву VirtualHost, содержащую IP-адрес. <VirtualHost 192.168.1.5> ServerName "Virtual FTP Server" </VirtualHost> В блок VirtualHost можно другие вставить директивы, например, директиву Anonymous, которая создаст гостевой узел. Можно также задать каталог или порт. Пример 2.1. <VirtualHost ftp.library.com> ServerName "Online library" MaxClients 15 MaxLoginAttempts 1 DeferWelcome on <Limit LOGIN> Allow from 192.168.1 Deny from all </Limit> <Limit WRITE> AllowUser libadmin DenyAll </Limit> <Anonymous /var/ftp/library/books> User library Group library AnonRequirePassword on <Anonymous /var/ftp/library> User ftp Group ftp UserAlias anonymous ftp </Anonymous> </VirtualHost> В примере 2.1 приведена конфигурация виртуального сервера ftp.library.com. В директиве VirtualHost используется доменное имя, которое должно быть прописано в сервере DNS. IP-адрес должен указывать на узел сети, на котором запущен демон proftpd. В конфигурации 2.1 также конфигурируются две анонимных учетных записи - library и ftp. Причем учетная запись library требует ввода пароля при регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. Доступ к виртуальному серверу разрешен только для нашей подсети (192.168.1.0). Записывать данные на сервер может только пользователь libadmin. Директивы конфигурации сервера ProFTP AccessGrantMsg message Ответное сообщение, которое будет отправлено пользователю в случае его регистрации или получения анонимного доступа. Символы %u будут заменены на имя пользователя, которое он ввел при регистрации. Allow from all | host | network [,host | network[, ...]] Используется внутри блока Limit. Ограничивает доступ к серверу (а именно разрешает доступ). По умолчанию allow from all AllowAll Разрашает доступ к блокам Directory, Anonymous, Limit AllowForeignAddress on | off Разрешает клиенту указывать при соединении соединения адрес, который не соответствует ему. По умолчанию off. Может использоваться в блоках VirtualHost, Anonymous, <Global> AllowGroup group_list Разрешает доступ определенным группам. Используется в блоке Limit AllowUser user_list Разрешает доступ определенным группам. Используется в блоке Limit AnonRequirePassword on | off Требует пароль при анонимной регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. По умолчанию опция выключена. <Anonymous directory> Создает анонимную учетную запись, directory - корневой каталог анонимного сервера. AuthGroupFile path Позволяет указать путь к альтернативному файлу group. По умолчанию используется файл /etc/group AuthUserFile path Указывает альтернативный файл passwd Bind address Разрешает привязку дополнительного IP-адреса к основному или виртуальному хосту. DefaultRoot directory Задает корневой каталог по умолчанию Deny from all | host | network Запрещает доступ к серверу. Блок Limit DenyAll Запрещает анонимным пользователям доступ к объектам, указанным в блоке Limit DenyUser user_list Запрещает доступ определенным пользователям <Directory> path Используется в VirtualHost, Anonymous для того, чтобы определить особенные параметры доступа к каталогу и его подкаталогам DisplayFirstChdir filename Текстовый файл filename будет выводиться, когда пользователь впервые за время сеанса войдет в данный каталог. Используется в VirtualHost, Directory, Anonymous DisplayLogin filename Этот файл будет отображен, когда пользователь зарегистрируется <Global> Используется для задания параметров, которые будут использоваться как основным, так и всеми виртуальными серверами <Limit command> Ограничение на выполнение данной FTP-команды, например LOGIN, WRITE MaxClients number | none | message Ограничение на количество клиентов. Message будет отображено, если пользователю будет отказано в доступе. Блоки Anonymous, Global MaxLoginAttempts Максимальное количество попыток зарегистрироваться. По умолчанию 3. Блоки VirtualHost, Global Order allow, deny | deny, allow Порядок выполнения директив Allow и Deny в блоке Limit PersistentPassword on | off При значении on будут использованы системные файлы /etc/passwd и /etc/group, несмотря на то, что командой chroot корневой каталог был изменен. RequireValidShell on | off Разрешает или запрещает регистрацию при использовании оболочек (shells), которые не указаны в файле /etc/shells ServerAdmin email Определяет email администратора сервера. ServerType Определяет режим работы сервера standalone (по умолчанию) или inetd. В первом случае сервер будет запускаться автоматически из стартовых сценариев системы, во втором - его будет запускать сервер inetd при попытке соединения. TimeoutIdle seconds Время в секундах, в течение которого пользователь имеет право не проявить активности. По умолчанию 60 (1 минута). User username Имя пользователя, присвоенное демону ProFTP UserAlias Alias User Создает псевдоним (alias) для пользователя (user) <VirtualHost address> Создает виртуальный сервер

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Илья (??), 08:24, 03/04/2010 [ответить]  
  • +/
    Видео: установка виртуального сервера Apache + PHP + MySQL + Windows
    Это не пакет Denver, а все своими руками за 10 минут с нуля:
    http://www.sysbox.ru/server/
    http://www.youtube.com/watch?v=rs4-_A-sV48
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру