Реферат: Тема: «Установка и настройка Web-сервера Apache+php+Mysql»


Преподаватель Халелова Е.Н.


Тема: «Установка и настройка Web-сервера Apache+PHP+MySQL»


Вопросы темы:

Web-сервер Apache – функции, конфигурационные файлы web-сервера

Конфигурационный файл httpd.conf и его директивы.

Виртуальные HTTP-серверы

Установка Apache+PHP+MySQL под Linux (Unix)

Установка Apache+PHP+MySQL под Windows




Web-сервер Apache – функции, конфигурационные файлы web-сервера


Сервер Apache разработан и поддерживается организацией Apache Project. Первоначально сервер Apache был разновидностью сервера Web-сервера NCSA, разработанного в Национальном центре разработок суперкомпью­теров Иллинойского университета. Возникновение Apache было связано с тем, что в 1994 году ушел из проекта главный разработчик NCSA, ос­тавив многих последователей самостоятельно разбираться в своем серве­ре. Со временем начали появляться исправления и дополнения к серве­ру NCSA — так называемые patches (патчи). А в апреле 1995 года вышла первая версия сервера Apache, основанного на версии 1.3 сервера NCSA. Первая версия Apache просто вобрала в себя все известные исправления сервера NCSA«A PatCHy» (сервер с доработками). Позже Apache стал самостоятельной разработкой. Сейчас сервер Apache поддерживается группой программистов-добровольцев Apache Group.

Apache — это своего рода стандарт Web-сервера в Интернете. Его основ­ным конкурентом является IIS (Internet Information Server) от Microsoft, который работает под Windows. Apache, хотя и существуют его версии под Windows, преимущественно устанавливается на Unix-подобных операци­онных системах — Linux и FreeBSD.

^ Конфигурационные файлы сервера Apache

Сервер Apache имеет три конфигурационных файла: httpd.conf, srm. conf, access . conf. Обычно эти файлы находятся в каталоге /etc/ httpd/conf. Вся настройка сервера заключается в редактировании этих трех файлов.

Файл httpd.conf — это основной файл конфигурации сервера. В нем содержится техническое описание работы сервера. В файле srm. conf за­даются параметры документов, которые размещены на сервере. Файл access.conf содержит параметры доступа к серверу.


^ Конфигурационный файл httpd.conf и его директивы


Директивой называется параметр сервера, влияющий на его поведение. Директивы бывают простыми и сложными, которые также называются блоками директив. Простые директивы изменяют только одно свойство сервера, например, его имя, а блоки директив позволяют изменять сразу несколько свойств какого-нибудь объекта, например, каталога.

Директивы конфигурационного файла сервера Apache можно условно разделить на такие группы:

Общие. К общим директивам относятся глобальные директивы, вли­яющие на работу всего Web-сервера. Это директивы ServerName, ServerType, Port, User и Group, ServerAdmin, ServerRoot, PidFile, DocumentRoot, UserDir.

Директивы протоколирования: ErrorLog, TransferLog, Hostname Lookups.

Директивы ограничения доступа: AllowOverride, Options, Limit.

Директивы управления производительностью: StartServers, MaxSpareServers, MinSpareServers, а также директива CacheNegotiatedDocs.

Директивы обеспечения постоянного соединения с клиентом: Timeout, KeepAlive, KeepAHveTimeout.

Директивы настройки отображения каталогов. Оформить отображе­ние каталогов можно с помощью директив настройки отображения каталогов: Directorylndex, Fancylndexing и AddlconByType.

Директивы обработки ошибок. Директивой обработки ошибок HTTP-сервера является директива ErrorDocument. С ее помощью можно установить реакцию на любую ошибку сервера, например, на ошиб­ку 404 (документ не найден).

Директивы перенаправления: Redirect, Alias и ScriptAlias.

Директивы для работы с многоязычными документами: AddLanguage и LanguagePriority.

Директивы обработки MIME-типов. Настроить свой сервер для об­работки различных MIME-типов можно с помощью директив DefaultType, AddEncoding, AddType, AddHandler и Action.

^ Директивы создания виртуальных узлов: VirtualHost, Listen, BindAddress.


Общие директивы

Общие директивы изменяют глобальные параметры сервера — его имя, тип, порт, адрес администратора. Значения, указанные глобальными директивами, влияют на работу всего сервера.

ServerName — директива, которая определяет имя сервера Apache. Причем, здесь должно быть задано официальное имя сервера в таком виде, в котором оно должно появляться в строке адреса браузера. Данное имя должно быть зарегистрировано в сервере DNS вашей сети.

ServerType — директива, которая определяет тип сервера. По умолчанию используется значение standalone.

ServerAdmin — директива, которая задает электронный адрес Web-мастера вашего Web-узла. Если возникнут какие-то проблемы, связанные с работой сервера, то по этому адресу будет отправле­но соответствующее сообщение. Обычно используется значение webmaster@Your_Host.com. Пользователь webmaster, как прави­ло, не существует реально в системе. Для определения имени (псевдонима) webmaster используется файл псевдонимов элект­ронной почты /etc/aliases. Данный файл используется для определения псевдонимов пользователей. Формат файла /etc/ aliases следующий:

псевдоним: имя

После модификации этого файла нужно ввести команду newaliases. Данную команду нужно вводить, зарегистрировавшись в системе, как суперпользователь. В Windows данного файла нет, поэтому ничего не нужно вводить. В Windows псевдонимы создаются с по­мощью программы настройки почтового сервера, который установ­лен и используется.

Port — директива, задающая номер порта, который будет использовать­ся для установки соединения. По умолчанию используется порт 80. Если нужно запустить сервер Apache с использованием этого или любого другого порта, номер которого меньше 1024, нужно обла­дать правами суперпользователя. Но даже если нет таких прав, можно запустить сервер для работы с портом, номер которого превы­шает значение 1024. Обычно используется номер 8080 или 8000.

User и Group. Директивы User и Group определяют идентификаторы пользователя и группы, от имени которых будет работать сервер. Данные идентификаторы присваиваются серверу, если он запущен в автономном режиме. Можно использовать, как имена пользовате­лей, так и их числовые эквиваленты — UID. По умолчанию ис­пользуется, имя пользователя nobody. Из соображений безопасности не рекомендуется изменять это значение и присваивать имя реаль­ного пользователя. В этом случае Web-сервер получит доступ толь­ко к тем файлам, которые разрешены для чтения для всех пользова­телей. Нужно заметить, что указанный пользователь и группа должны существовать в вашей системе. Ни в коем случае не запускайте сервер от имени пользователя root!

ServerRoot — в этой директиве указывается местонахождение фай­лов конфигурации сервера Apache. По умолчанию для этих целей используется каталог /etc/httpd.

PidFile — с помощью этой директивы указывается имя файла, в котором исходный процесс сервера будет регистрироваться. Этот файл содержит свой идентификатор процесса (PID). Данную ин­формацию можно использовать для останова или перезапуска сер­вера при написании собственных сценариев. Данный файл будет создан, только если сервер Apache запущен в автономном режиме.

DocumentRoot — директива, определяющая местонахождение корне­вого каталога документов вашего сервера.

UserDir — эта директива задает названия подкаталога в домашнем каталоге пользователя, из которого берутся документы. В этом слу­чае активизируется возможность использования пользовательс­ких каталогов. Если вы не хотите включать эту возможность, ука­жите UserDir DISABLED.



^ Директивы протоколирования

Директивы протоколирования управляют процессом протоколирования работы сервера.

HostnameLookups on | off. Сервер Apache ведет журнал доступа дру­гих компьютеров. Если включить данную опцию (on), то в жур­нал будет записано доменное имя компьютера-клиента. Если эта опция выключена (off), в журнал будет записан IP-адрес клиента. Включение данной опции замедляет работу сервера, так как требу­ется дополнительное время на ожидание ответа от сервера DNS.

ErrorLog и TransferLog — эти директивы определяют расположе­ние журналов сервера Apache. Обычно для этих целей использует­ся каталог /etc/httpd/logs, который является ссылкой на ката­лог /var/log/httpd или на любой другой. В журнале errorlog протоколируются диагностические сообщения, а также сообщения об ошибках, которые порождают CGI-сценарии. В журнале trasferlog протоколируются запросы клиентов. Если включена директива HostNameLookups, то вместо IP-адреса клиентов будут регистриро­ваться имена компьютеров.

^ Директивы управления производительностью

Сервер Apache для каждого соединения запускает отдельную копию, которая будет обрабатывать запросы клиента. Управлять запущенными копиями позволяют директивы StartServers, MinSpareServers, MaxSpareServers.

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

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

Директива MaxSpareServers позволяет указать максимальное число таких процессов. Если это количество превышено, то лишние процессы завершаются. Если количество «серверов на подхвате» меньше, чем задано директивой MinSpareServers, запускаются дополнительные копии. Для работы этих директив необходимо, чтобы сервер был запущен в автономном режиме.

CacheNegotiatedDocs. Данная директива позволяет прокси-серверу, например, SQUID, не кэшировать документы, которые не генерируются автоматически, то есть в процессе выполнения различных сценариев. Согласно протоколу НТТР/1.0, сервер Apache с каждым пакетом посылает заголовок Pragma: no-cache прокси-серверу, что позволяет отключить кэширование документов (в протоколе HTTP/ 1.1 вместо Pragma используется Cache-Control). Если включить данную директиву, то нужно разрешить прокси-серверу кэшировать документы. К сожалению, далеко не все прокси-серверы отключают кэширование после получения данного заголовка. При написании своего CGI-сценария, придется самому выводить заголовок Pragma (или Cache-Control) и мета-теги, которые указывают на дату последнего обновления документа.

^ Директивы обеспечения постоянного соединения с клиентом

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

KeepAlive — разрешает постоянные соединения, то есть такие соединения, в которых производится более одного запроса за один раз.

KeepAliveTimeOut — данная директива определяет таймаут для постоянного соединения.

MaxClients. Иногда поступающих запросов настолько много, что компьютеру не хватает ресурсов для загрузки новых копий сервера в память и их выполнения. Директива MaxClients (значение по умолчанию — 150) определяет максимальное число копий сервера, которые могут выполняться одновременно.

MaxRequestsPerChild. После обработки определенного количества запросов, указанного в директиве MaxRequestsPerChild, копия сервера завершается, а вместо нее запускается новая.


^ Директивы создания виртуальных хостов

Современные Web-серверы поддерживают виртуальные хосты. У вас будет собственное имя, например, www.firma.ru, но в действительности ваши файлы не будут помещены на отдельном компьютере www.firma.ru, а будут находиться на сервере провайдера (или хостера) — www.isp.ru.

Благодаря технологии виртуальных узлов один сервер хостинг-провайдера обслуживает сотни или даже тысячи сайтов.

На своем домашнем Web-сервере вы также можете создать один или несколько виртуальных узлов.

^ Listen. Позволяет связывать Apache с определенным IP-адресом и (или) дополнительными портами.

BindAddress. Данная директива используется для поддержки виртуальных хостов и применяется, чтобы сообщить серверу, какой IP-адрес следует прослушивать. Значением данной директивы может быть «*» (любой адрес), IP-адрес или полное имя домена.

^ Директивы настройки отображения каталогов

Directorylndex — позволяет задать название документа, который будет возвращен по запросу, который не содержит имя документа. С помощью данной директивы можно задать несколько имен файлов.

Значениями по умолчанию являются: index.html, index.php, index.htm, index.shtml, index.cgi, Default.htm, default.htm, index.php. Например, если вы введете в строке адреса браузера http: //localhost, то будет возвращен один из указанных в директиве Directorylndex документов.

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

AddlconByType — сопоставляет значок типу файла. Значок будет использоваться при выводе каталога, если включена директива Fancylndexing. Директива AddlconByType имеет следующий формат:

^ AddlconByType (TEXT, URL) mime-type

Параметр TEXT определяет текстовое описание типа, которое увидят пользователи, использующие текстовый браузер или пользователи, у которых отключено отображение рисунков. Параметр URL определяет адрес значка, а параметр mime-type — это тип файла, с которым нужно сопоставить значок. Полный перечень MIME-типов приведен в файле apache-mime.types. В качестве имени файла можно задать не только MIME-тип, но и символы, которыми заканчивается имя файла (см. пример 1), но для этого нужно использовать директиву Addlcon вместо AddlconByType.


пример1. Фрагмент файла httpd.conf


AddlconByType (VID,/icons/movie. gif) video/*

Addlcon /icons/binary.gif .bin .exe


Директивы обработки MIME-типов

В Windows существует такое понятие, как расширение (или тип) файла. По расширению можно связать какую-либо программу с определенным типом файла. Например, когда вы щелкаете на файле с расширением .txt, запускается Блокнот, а при щелчке на файле с расши­рением .doc будет запущен Word. Точно такой же механизм реализован в Apache. Вы можете сопоставить тип файла и обработчик этого типа — программу, которая будет запущена для обработки файла. Когда не был разработан модуль mod_php, программа PHP объявлялась обработчиком файла с расширением .php. Сервер запускал php, передавал ему файл, а потом возвращал пользователю результат.

DefaultType. Если запрашиваемый клиентом тип не соответствует ни одному из MIME-типов, используется MIME-тип, указанный в ди­рективе DefaultType.

AddEncoding. Для сокращения времени передачи файла клиентам используется сжатие данных. Браузеры имеют встроенные програм­мы для распаковки, запускаемые при получении архивов опреде­ленных MIME-типов. Именно эти MIME-типы и указываются в директиве AddEncoding.

^ AddType — с помощью этой директивы можно добавить новый MIME-тип, который не указан в файле apache-mime.types.

AddHandler и Action. Директива AddHandler позволяет сопоставить определенному MIME-типу какой-нибудь обработчик. А с помо­щью директивы Action можно определить какое-нибудь действие для обработчика.

Например, вы можете запустить какую-нибудь программу для обработки файла данного типа (см. пример 2).

^ Пример 2. Применение директив AddHandler и Action

AddHandler text/dhtml dhtml

Action text/dhtml /cgi-bin/dhtml-parse


Директивы для работы с многоязычными документами

AddLanguage. В большинстве браузеров можно задать предпочитаемый язык. Директива AddLanguage сопоставляет расширение файла аббревиатуре языка. Для русского языка используется аббревиатура ru, для английского — еn. При этом в корневом каталоге вашего сервера могут находиться несколько индексных файлов на разных языках. Например, для русского языка нужно использовать имя файла index.html.ru, а для английского — index.html .en.

LanguagePriority указываются приоритеты различных языков. Например,

^ LanguagePriority en ru

Клиент вводит в строке адреса своего браузера адрес http:// www.server.com/. Если в свойствах браузера имеется возможность задать предпочитаемый язык, то возвращен будет файл на нужном языке, если такой существует. Если браузер клиента не поддерживает такую возможность, будет возвращен файл на языке, имеющем наиболее высокий приоритет. В рассмотренном случае (см. пример) это английский язык. Если файл на нужном языке, например, на немецком, не существует, то будет возвращен файл на английском языке. Для того, чтобы сервер поддерживал нужный вам язык, пред­варительно установите правильное значение директивы AddLanguage.

^ Директивы перенаправления

Довольно часто нужно перенаправить пользователя на другой ресурс, например, вы сменили хостера и из-за этого изменилось имя вашего сайта.

Redirect. Используется, когда нужно перенести документы в другой каталог или на другой сервер. Например, вам нужно перенести данные из каталога /users/den в каталог /den. Если при этом старый URL-адрес был http://www.host.com/users/den, то новый станет http: //www.host.com/den/.

Пример: ^ Redirect /users/den /den

Можно также перенаправить запрос на другой сервер: Redirect/ users/den/ www.den.domain.com

При этом допускается использование, как нового, так и старого URL-адреса.

^ Alias — можно предоставить доступ не только к файлам, находящимся в каталоге, указанном директивой DocumentRoot, и его подкаталогах, но и в других каталогах. По умолчанию определен только псевдоним для каталога /icons.

ScriptAlias — аналогична директиве Alias, но позволяет задать месторасположение каталога для CGI-сценариев.


^ Директивы обработки ошибок

ErrorDocument — директива, сопоставляющая коды ошибок сервера URL-адресам на этом же сервере.


Директивы управления доступом к отдельным каталогам

Блок директив Directory — обычно определяет свойства каталога (см. пример 3).

^ Пример 3. Директива Directory




Options Indexes Includes FollowSymLinks

AllowOverride None



Свойства каталога можно указывать в директиве Directory или в файле .htaccess, который находится в том каталоге, для которого необходимо установить нужные параметры.

В блоке Directory могут находиться директивы управления доступом. К ним относятся директивы AllowOverride, Options, Limit.

Директива AllowOverride может принимать значения, указанные в табл. 1.

С помощью директивы Options можно определить функции сервера, которые будут доступны для использования в определяемом каталоге. Данную директиву можно использовать, как в файле httpd.conf, так и в файлах .htaccess. Допустимые опции для директивы Options представлены в табл. 2.


Таблица 1 Значения директивы AllowOverride

Значение

Описание

None

Сервер Apache будет игнорировать файлы .htaccess. Рекомендуется установить данную опцию, так как это повысит производительность сервера

All

Пользователи имеют право переопределять в файлах .htaccess глобальные параметры доступа. Из соображений безопасности лучше не использовать этот режим

Options

Разрешает использовать директиву Options

Limit

Разрешает использовать директиву Limit

AuthConfig

Разрешает использование директив ^ AuthName, AuthType, AuthUserFile и AuthGroupFile

Filelnfo

Разрешает использовать в файлах .htaccess директивы

AddType и AddEncoding


Таблица 2 Допустимые опции директивы Options

Опция

Описание

None

He разрешается использование каких-либо функций

All

Разрешаются все функции

FollowSymLinks

Разрешается использовать символические ссылки. С точки зрения безопасности не рекомендуется использовать этот режим

SymLinkslfOwnerMatch

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

ExecCGI

Разрешается выполнение CGI-сценариев

Indexes

Если эта опция выключена, сервер не будет передавать содержимое каталога при отсутствии файла index.html

Includes

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

IncludesNoExec

Разрешает использование серверных включений, но запрещает запуск из них внешних программ


Использование директивы Limit имеет следующий вид:

^ Limit, метод

Директива Limit ограничивает доступ к файлам в определенном катало­ге. Параметр метод определяет метод передачи, например, GET или POST. Директиву Limit можно использовать внутри блоков Directory, Location или в файле .htacccess.


Блок директив Limit

В блоке ^ Limit можно использовать такие директивы: allow (разрешить), deny (запретить), order (порядок), require (требуется). После директивы allow следует слово from, после которого можно указать IP-адрес, адрес сети, домен или просто имя компьютера. Слово all обозначает все ком­пьютеры. Например, требуется запретить доступ всем компьютерам, кроме компьютеров, которые входят в домен ru (см. пример 4).

^ Пример 4. Директивы allow, deny

order deny, allow

deny from all

allow from ru

Следующий пример показывает, как разрешить доступ компьютерам толь­ко из вашей сети (см. пример 5). Пусть, при этом, сеть имеет адрес 192.168.1.0.


Пример 5. Разрешения доступа подсети 192.168.1.1.

order deny, allow

deny from all

allow from 192.168.1.1

Директива order определяет порядок выполнения директив allow и deny. Кроме значений allow, deny и deny, allow, директива order может содержать значение mutual-failure. В этом случае доступ будет отказан всем компьютерам, которые явно не указаны в списке allow.

Директиву require можно использовать для защиты каталога паролем. После названия директивы должен следовать список элементов: имена пользователей, групп, которые заданы в директивах AuthUserFile и AuthGroupFile. Можно использовать параметр valid-user, который укажет серверу предоставить доступ любому пользователю, имя которого имеет­ся в директиве AuthUserFile, если он введет правильный пароль (см. пример 6).


^ Пример 6. Использование директивы require



AuthUserFile /var/secure/.htpasswd

AuthName Security

AuthType Basic


order deny, allow

deny form all

allow from rnydomain.ru

require valid-user






В примере 6 для аутентификации используется файл паролей .htpasswd, который можно создать с помощью программы htpasswd. Директивы блока Limit разрешают доступ к любому каталогу сервера толь­ко пользователям домена mydomain.ru

Кроме параметра valid-user допускается использование параметра users или grpoups. Данные параметры разрешают доступ только определенным пользователям или группам пользователей (см. пример 7).

Пример 7. Применения параметра users



AuthType Basic

AuthUserFile /var/users/ .htpasswd

AuthName UsersDir



require users denis igor evg






Блок директив Location


С помощью директив, расположенных в блоке Location, можно за­дать определенный URL-адрес, который предназначен для обозначе­ния каталогов, файлов или групп файлов. Обозначить группу файлов можно с помощью шаблонов, например, шаблон *.html определяет все файлы, имена которых заканчиваются на .html. В URL-адрес не вклю­чается протокол и имя сервера (см пример 8).

^ Пример 8. Блок Location



директивы управления доступом




Каталоги пользователей

Директива UserDir включает поддержку пользовательских каталогов. Эта директива определяет общее название подкаталога в домашних катало­гах всех пользователей. По умолчанию используется каталог public_html.

Доступ к файлам, расположенным в этих каталогах, производится с по­мощью указания через наклонную черту пользователя после имени сер­вера. Например, пусть имя сервера www.server.com, имя пользователя — denis, тогда URL-адрес будет выглядеть так: http: //www. Server. com/ ~denis/. При этом сервер самостоятельно определит, где именно рас­положен домашний каталог пользователя. Если домашний каталог пользо­вателя /home/den, то сервер передаст клиенту файл /home/den/ public_html/index.html.


^ Виртуальные HTTP-серверы


Концепция виртуальных хостов позволяет серверу Apache поддерживать несколько Web-узлов. Получается, что один Web-сервер заменяет несколь­ко серверов, и вместо одного узла пользователи видят отдельные Web-узлы. Это очень удобно, если нужно организовать персональные Web-узлы пользователей или собственные Web-узлы подразделений компании, на­пример, develop.mycompany.com.

Сервер Apache можно настроить несколькими способами:

чтобы запускался один сервер, который будет прослушивать ВСЕ обращения к виртуальным серверам,

или запускать отдельный процесс для каждого виртуального сервера.

В первом случае один сервер будет одновременно обслуживать все вир­туальные. В этом случае нужно настраивать вирту­альные сервера с помощью директивы VirtualHost. Настройка отдельных процессов для каждого сервера осуществляется с помощью директивы Listen и BindAddress.

В зависимости от версии и от настроек Apache виртуальные узлы могут прописываться или в файле httpd.conf, или в файле vhosts.conf.

Виртуальные серверы можно идентифицировать по имени или по IP-адресу.

^ Виртуальные серверы с идентификацией по имени

Идентификация по имени имеет существенное преимущество перед иден­тификацией по IP-адресу: нет ограничения количества адресов, имею­щихся у вас

в распоряжении. Можно использовать любое количество виртуальных серверов, и при этом не потребуются дополнительные адреса. Такое возможно благодаря использованию протокола HTTP/1.1. Данный протокол поддерживается всеми современными браузерами.

Поддержка виртуальных хостов обеспечивается директивами VirtualHost и NameVirtualHost. Если ваша система имеет только один IP-адрес, его нужно указать в директиве VirtualHost. Внутри блока директивы VirtualHost записывается директива ServerName. Эта директива задает доменное имя для создаваемого виртуального сервера. Все директивы VirtualHost используют один и тот же IP-адрес, заданный директивой NameVirtualHost. В блоке VirtualHost записываются параметры виртуаль­ного сервера, причем они записываются для каждого виртуального сер­вера отдельно (см. пример 9).

Структура каталогов виртуального узла задается директивами DocumentRoot, ErrorLog и TransferLog. Из примера 9 видно, что кор­невым каталогом для нашего виртуального узла будет /var/httpd/ www/html, а протоколы будут находиться в каталоге /var/httpd/www/ logs/error.log.

Пример 9. Два виртуальных сервера – www и lib

ServerName den . dhsilabs.com







ServerName www.dhsilabs.com

ServerAdmin webmaster@den.dhsilabs.com

DocumentRoot /var/httpd/www/html

ErrorLog /var/httpd/www/logs/error.log

TransferLog logs/access.log






ServerName lib.dhsilabs.com

ServerAdmin webmaster@den.dhsilabs.com

DocumentRoot /var/httpd/lib/html

ErrorLog /var/httpd/lib/logs/error.log

TransferLog logs/access.log




Если система имеет только один IP-адрес, значит доступ к основ­ному серверу станет невозможным, то есть вы не сможете использовать его напрямую. Можно основной сервер использовать в качестве вирту­ального. При наличии двух IP-адресов можно один присвоить основ­ному серверу, а другой — виртуальному.

Сервер Apache позволяет использовать несколько доменных имен для доступа к одному серверу, например:

^ ServerAlias www.dhsilabs.com www2.dhsilabs.com

При этом запросы, посланные по IP-адресам, которые присвоены виртуальным хостам, должны соответствовать одному из указанных до­менных

имен. Чтобы зафиксировать запросы, не соответствующие ни одному их этих имен, нужно с помощью опции default:* создать вирту­альный хост, который будет обслуживать такие запросы:



Обратите внимание на то, что в рассмотренном примере адреса

www. dhsilabs . com и lib. dhsilabs . com должны быть прописаны в DNS.


^ Виртуальные серверы с идентификацией по IP-адресу

В директиве VirtualHost в качестве адресов можно использовать домен­ные имена, но лучше указывать IP-адрес, причем действительный, а не виртуальный. В этом случае вы не будете зависеть от DNS при разреше­нии имени. Также потребуется один IP-адрес для вашего основного сер­вера. Если же распределить все адреса между виртуальными серверами, то нельзя будет получить доступ к основному серверу.

^ Пример 10. Идентификация по IP-адресу




ServerName www.dhsilabs.com

ServerAdmin webmaster@den.dhsilabs.com

DocumentRoot /var/httpd/www/html

ErrorLog /var/https/www/logs/error .log





ServerName lib.dhsilabs.com

ServerAdmin webmaster@den.dhsilabs.com

DocumentRoot /var/httpd/lib/html

ErrorLog /var/https/lib/logs/error.log



В приведенном примере (см. пример.10) сконфигурированы два вирту­альных сервера с идентификацией по IP-адресу. Один из них использует сам IP-адрес, а другой — доменное имя, соответствующее IP-адресу.

При конфигурировании виртуальных серверов можно использовать оп­цию ExecCGI, которая разрешает выполнение CGI-скриптов на вирту­альном сервере. Ниже приведен пример для почтового Web-интерфейса (см. пример 11)


Пример 11. Подключение почтового Web-интерфейса

# файл httpd.conf




order deny,allow

deny from all

allow from localhost

allow from 192.168

allow from 123.123.123.123

Options ExecCGI




#Файл vhosts.conf




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




#Error 403 — доступ извне, то есть почтовый интерфейс будет

#доступен только из локальной сети


Установка Apache+PHP+MySQL под Linux (Unix)


Все необходимое программное обеспечение входит в состав Linux — сер­веры Apache и MySQL, PHP, а также дополнительные модули mod_php и php_mysql. Программное обеспечение находится:

www.apache.org — официальный сайт Apache Group;

www.mysql.org — сайт разработчиков MySQL;

www.php.net — официальный сайт разработчиков РНР.

Для установки сервера Apache необходимо установить пакеты apache и apache-docs. В первом из них находится сам сервер, а во втором — доку­ментация. В последних версиях нужно установить еще и пакет apache-common, содержащий необходимые файлы для запуска сервера. Проще всего установку Apache можно произвести, введя следующую команду: rpm -ih apache*

После установки сервер конфигурируется для запуска в режиме standalone, то есть он будет постоянно находиться в памяти. Для запуска и останова сервера Apache используются команды:


/etc/rc.d/init.d/httpd start;

/etc/rc.d/init.d/httpd stop.

или команды

service httpd start;

service httpd stop.

После успешной установки сервера необходимо отредактировать файл /etc/httpd/conf / httpd.conf.

В нем необходимо исправить директиву — ServerName. При этом, на данном этапе (пока новое имя сервера Apache не зарегистриро­вано на вашем сервере DNS), вместо того имени, которое будет исполь­зоваться в дальнейшем (например, www.host.domain), установите обыкновенное имя вашего сервера, например, server.firma.ru. Данное имя должно быть зарегистрировано на DNS-

сервере вашей сети. После этого запустите сервер. Затем откройте любой браузер и попробуйте обратить­ся к серверу http://localhost

Теперь попробуйте обратиться к этому серверу с другого компьютера вашей сети: http://server.firma.ru

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

В отличие от Windows-версии Apache, в Linux-версии вам не нужно редактировать какие-либо другие директивы, поскольку стандартные значе­ния устраивают большинство пользователей. Вам также не нужно вручную прописывать РНР, поскольку он встраивается в Apache автоматически при установке пакета mod_php. Единственное, что вам нужно знать — это струк­туру каталогов — что и где лежит.

Корневым каталогом вашего Web-сервера является каталог /var/www/ html. Когда пользователь введет http://your_server.ru/ в строке браузера, ваш Web-сервер будет искать файл index.html именно в этом каталоге. Если данный каталог вас не устраивает, измените директиву DocumentRoot в файле конфигурации httpd.conf, после чего перезапус­тите Apache: service httpd restart.

Каталог /var/www/cgi-bin со­держит CGI-приложения: из этого каталога возможен запуск программ. Журналы сервера находятся в каталоге /var/log/httpd.


^ Конфигурирование Apache с помощью netconf

Практически все параметры Web-сервера Apache можно установить, ис­пользуя конфигуратор netconf (или linuxconf). Для этого запустите netconf и перейдите на вкладку Server Tasks, а затем нажмите на кнопку «Apache Web-server».

С помощью netconf устанавливаются основные параметры Apache (виртуальные хо­сты, параметры подкаталогов, спецификация каталогов и модулей, а также устанавливаются параметры модуля mod_ssl). Модуль mod_ssl обеспечивает поддержку защи­щенных SSL-соединений.


^ Установка MySQL

Благодаря своей про­стоте сервер MySQL приобрел широкое распространение в сети Интер­нет. MySQL идеально подходит практически для любого Интернет-проекта.

Прежде всего, нужно установить пакеты, необходимые для работы MySQL.

MySQL_GPL-3.x.x

MySQL_GPL-client-3.x.x

MySQL_GPL-sharcd-libs-3.x

MySQL_GPL-bench-3.x.x

MySQL_GPL-resolveip-3.x.x

Проще всего воспользоваться командой rpm -ih MySQL* для установки серве­ра. После установки пакета нужно создать базу данных mysql:

mysql__install_db


Если основная база данных существует, программа сообщит об этом. Теперь нужно установить пароль для пользователя root. По умолчанию пользователь root не имеет пароля.

База данных mysql является системной базой данных и содержит следу­ющие таблицы:

таблицу db;

таблицу host;

таблицу user.

Таблица user содержит пароли всех пользо­вателей, которые имеют право работать с сервером. На данном (началь­ном) этапе в базу данных внесен только один пользователь — root. Для изменения пароля запустите сервер командой:

safe_mysqld &

Эта команда запустит сервер в режиме демона и освободит консоль. Если все пакеты были установлены правильно, вы увидите сообщение;

mysql: ready for connections

Затем введите команду:

mysql -u root mysql

Данная команда запускает клиент MySQL. При этом используется имя пользователя root. Последний параметр определяет базу данных — mysql.

Измените пароль суперпользователя с помощью команды:

UPDATE user SET Password=PASSWORD('new_password') WHERE user='root';

Теперь нужно, чтобы MySQL при­нял изменения. Для этого выполните еще один запрос SQL:

^ FLUSH PRIVILEGES;

Для принятия изменений можно также использовать программу mysqladmin с параметром reload:

mysqladmin -р reload

Выйти из клиента mysql вы можете, введя команду quit.

Установите права доступа к сценарию /etc/rc.d/init.d/mysql:

chmod +х /etc/rc.d/init.d/mysql

Теперь перезапустите сервер командой:

/etc/rc.d/init.d/mysql restart

Если вы забудете пароль, вы его уже не восстановите. Единственный выход из этого положения — удалить каталог /var/lib/mysql/mysql и создать базу mysql заново командой mysql_install_db.

Теперь вы уже не можете зарегистрироваться на сервере без пароля. Если вы введете команду mysql -u root mysql, то получите следующее сообщение:

ERROR: Access denied for user: ' root@localhost' (Using password: NO)

Для регистрации на сервере теперь нужно использовать команду

mysql -u root -р. Параметр -р запросит пароль при регистрации.

Последнее, что вам осталось сделать — это добавить сервер MySQL в ав­тозапуск. С этой целью перейдите в каталог /etc/rc.d/rc3.d/ и создай­те символическую ссылку на файл /etc/rc.d/init.d/mysql:

in -s S14mysql /etc/rc.d/init.d/mysql


Префикс S14 определяет очередность запуска сервера mysql. В данном случае он запустится после сервисов network (S10) и portmap (S11). У вас эти значения могут быть другими.

В своей работе демон mysqld использует файл журнала /var/log/ mysql.log. Именно в него заносятся все транзакции, а также все ко­манды, которые ввел пользователь. После установки сервера нужно вне­сти пользователей, которые имеют право работать с сервером баз дан­ных. Введите следующий запрос:

GRANT ALL PRIVILEGES ON *.* TO admin@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;

Введенный запрос создаст пользователя admin, который будет иметь право выполнять любые операции со всеми базами данных. Данный пользователь будет иметь право подключаться к серверу с компьютера localhost, используя пароль password.

Маска *.* определяет, к каким базам данных и таблицам имеет право подключаться тот или иной пользователь. Первая звездочка определяет базу, а вторая — таблицу. Если нужно, чтобы пользователь admin имел право подключаться с любого хоста, используйте знак процента вместо имени хоста. В этом случае запрос будет выглядеть так:

GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY

' password' WITH GRANT OPTION;

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

GRANT CREATE, DROP, SELECT, INSERT, UPDATE, DELETE, INDEX ON user.* TO user@% IDENTIFIED BY 'user_password';

Перед выполнением данного запроса необходимо создать базу данных user.

Полный список полномочий представлен в табл. 3.

еще рефераты
Еще работы по разное