linux установка apache
Apache — это веб-сервер из мира свободного ПО. Согласно данным netcraft.com, по состоянию на май 2009 года около 47 % всех сайтов работают с Apache. Если же учитывать только миллион наиболее посещаемых сайтов, то доля Apache на рынке оказывается просто баснословной — 68%. В этой главе мы лишь немного коснемся Apache.
Установка
Обычно установленная копия Apache состоит из нескольких взаимосвязанных пакетов: самого сервера, различных библиотек, плагинов, языков программирования и др. Чтобы облегчить установку, в некоторых дистрибутивах предусмотрен выбор для установки сразу целой группы пакетов.
В Fedora в консоли выполняется команда yum groupinstall 'Web-Server'. В SUSE в разделе YaST, отведенном для управления пакетами, выбирается Сервер ► Веб-и LAMP-сервер, а затем устанавливаются все нужные пакеты. В Ubuntu с помощью Synaptic или apt-get устанавливается пакет apache2-mpm-prefork. Вместе с ним устанавливается и несколько других зависящих от него пакетов.
Начиная с версии 2, Apache поддерживает три различных режима многопоточной работы: perchild, prefork и worker. От выбранного метода зависит, насколько эффективно Apache сможет синхронно обрабатывать несколько запросов. При установке Apache вам необходимо выбрать один из трех этих вариантов. Если вы собираетесь использовать вместе с Apache язык программирования РНР, то лучше всего выбрать prefork. При работе с другими вариантами возможны ошибки, так как их библиотеки не приспособлены к работе с потоками .
Запуск/остановка. Apache — это демон, который в некоторых дистрибутивах нужно специально запускать. Названия сценария Init-V в разных дистрибутивах могут быть различными: apache2 в Debian, SUSE и Ubuntu или httpd в Fedora и Red Hat.
Название программы и учетная запись. Названия программы, представляющей собой веб-сервер Apache, в разных дистрибутивах также различаются. По причинам, связанным с безопасностью, веб-сервер, подобно многим другим сетевым демонам, выполняется не от имени администратора, а под другой учетной записью. Чтобы узнать ее название, лучше всего выполнить ps axu.
Собственные HTML-страницы. Чтобы вместо тестовой страницы на экране появилась главная страница вашего сайта, нужно сохранить HTML-файлы в каталоге документов Apache. Ваши HTML-файлы должны быть доступны для чтения с той учетной записи, под которой выполняется веб-сервер Apache!
Конфигурация
Размеры книги не позволяют подробно описать конфигурацию Apache. Но хотя бы рассмотрим, где располагаются конфигурационные файлы различных дистрибутивов и как производятся простейшие настройки.
Ранее конфигурация Apache выполнялась в файле httpd.conf, точное местоположение которого зависело от дистрибутива. Но со временем этот конфигурационный файл становился все более путаным. Вместе с этим возрастала сложность автоматизированной технической поддержки, в частности активизации и деакти-визации плагинов.
В результате в большинстве дистрибутивов стал использоваться другой метод — настройки распределялись между несколькими файлами, а затем считыва-лись из различных каталогов с помощью команд include. Такой метод позволяет сделать отдельные файлы более понятными, но сама система становится совсем запутанной. Кроме того, становится практически невозможно перенести настройки одного дистрибутива в другой. Если вы ищете в конфигурационных файлах определенное ключевое слово, то лучше всего действовать так:
user$ cd /etc/httpd (или) cd /etc/apache2 user$ find -type f -exec grep -i -q ключевоеслово -print
В Debian/Ubuntu в каталоге mods-available содержится коллекция файлов *.load и *.conf для различных модулей Apache. Для активизации других модулей создайте в mods-enabled ссылки на эти файлы. При управлении ссылками в Debian вам пригодятся специфичные для этого дистрибутива команды a2enmod и a2dismod. В дальнейшем вы сможете активизировать и деактивизировать виртуальные хосты с помощью команд a2ensite и a2dissite. По умолчанию в sites-available содержится только файл default: он конфигурирует стандартную веб-страницу сервера (каталог / var/www), а кроме того, содержит разнообразные базовые настройки для протоколирования ошибок и обращений к страницам.
Механизм работы такой же, как и с модулями: в каталоге sites-available содержатся все конфигурационные файлы для всех хостов, а в sites-enabled находятся соответствующие ссылки.
В SUSE все CONF-файлы из каталога sysconf.d при каждом запуске Apache создаются сценарием Init-V /etc/init.d/apache2 заново! По этой причине вносить изменения в эти файлы бессмысленно. Напротив, вам следует изменить переменные, находящиеся в /etc/sysconfig/apache2. Кроме того, в данном файле определяется, какие модули должны загружаться при запуске Apache (переменная APACHE MODULES). Если хотите добавить к конфигурационным файлам SUSE собственный файл, укажите его название в переменной APACHE_CONF_INCLUDE_FILES.
Тестирование конфигурации
Изменив синтаксис, с помощью команд httpd -t, httpd2 -tnnnapache2 -t вы можете проверить, нет ли в конфигурации синтаксических ошибок. В Debian и Ubuntu сначала нужно считать из файла envvars некоторые переменные окружения:
root# . /etc/apache2/envvars root# apache2 -t Syntax OK
После этого прикажите Apache заново считать конфигурационные файлы:
root# /etc/init.d/имя_1пН-сценария reload
Переменная ServerName
Обычно веб-сервер Apache запускается сразу. Но в зависимости от настроек конкретной сети вам потребуется изменить или добавить в конфигурационных файлах как минимум одну строку: переменная ServerName должна содержать имя вашего компьютера. Если эта настройка не подействует, укажите UseCanonicalName Off.
<code> # в /etc/apache2/httpd.conf (Debian/<a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-ubuntu/">Ubuntu</a>) # или /etc/httpd/conf/httpd.conf (<a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-v-fedora/">Fedora</a>/Red Hat) ServerName mars.sol # здесь укажите имя вашего компьютера</code>
В SUSE имя компьютера записывается в файле /etc/sysconfig/apache2 в переменной APACHE_SERVERNAME.
Стандартная кодировка
Во всех распространенных дистрибутивах Linux автоматически применяется кодировка Unicode UTF-8. Иначе говоря, если вы создаете в текстовом редакторе новый текстовый файл, в котором есть специальные символы, например немецкие буквыа, б, и илиВ, они сохраняются в кодировке UTF-8.
Для Apache в принципе неважно, в какой кодировке сохранены файлы. Программа просто переносит файлы байт за байтом в браузер, запросивший страницу. Но Apache посылает вместе со страницей так называемый заголовок, где в числе прочего указано, в какой кодировке создана страница. Браузер интерпретирует эту информацию и использует указанную кодировку при отображении сайта.
Настройка кодировки. Теперь Apache должен правильно указать кодировку. Если этого не получится сделать, пользователь увидит у себя в браузере неа или й, а какие-нибудь причудливые комбинации символов. Во избежание такого в Apache предусмотрена возможность настройки конфигурации кодировки. О AddDefaultCharset off — при такой настройке Apache интерпретирует МЕТА-тег передаваемого HTML-файла и сообщает браузеру, какая кодировка указана в этом теге. Если файл HTML начинается так, как это показано ниже, то применяется кодировка Unicode UTF-8:
<code><!D0CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/htm!:charset=utf-8" /> </code>
AddDefaultCharset charset — Apache сообщает указанную здесь кодировку всем страницам браузера. Настройка действует для HTML- и PHP-файлов. МЕТА-тег в HTML-коде игнорируется. О AddDefaultCharset charset extension—так настраивается кодировка для файлов, имеющих определенное расширение. Если указать AddCharset utf-8 .utf8, то все файлы, название которых заканчивается на .utf8, будут посланы в браузер в кодировке Unicode UTF-8. Для работы AddCharset требуется модуль Apache mod_mime, который по умолчанию активен во всех дистрибутивах.
Debian, Ubuntu. Разумеется, стандартная конфигурация в разных дистрибутивах неодинакова. Для глобальной настройки кодировки в Ubuntu предусмотрен конфигурационный файл /etc/apache2/conf.d/charset. По умолчанию он пуст, то есть действует AddDefaultCharset off.
Кроме того, AddDefaultCharset и AddCharset можно использовать в конфигурационных файлах для виртуальных хостов (каталог sites-available), а также в файлах. htaccess, если вам нужна особая конфигурация отдельно взятого хоста или каталога. Но не забывайте, что настройки кодировки, указываемые в .htaccess, учитываются лишь в тех случаях, когда для веб-каталога задан параметр AHowOverride АН или FileInfo.
Fedora, Red Hat. В Fedora и Red Hat также может применяться AddDefaultCharset UTF-8. Эта настройка находится в файле /etc/httpd/conf/httpd.conf. В том же файле находится настройка AHowOverride None для каталога /var/www/html.
В SUSE отсутствуют особые функции для задания кодировки в конфигурационных файлах. Таким образом, действует AddDefaultCharset off, то есть кодировка определяется только по данным, указанным в МЕТА-теге HTML-файла. Для настройки AddDefaultCharset хорошо подходит файл /etc/apache2/mod_mime-defaults.conf.
Кроме того, в SUSE действует AllowOvern'de None для каталога /srv/www/htdocs. Эту настройкуможно изменить в файле /etc/apache2/default-server.conf.
Обеспечение безопасности при работе дома или внутри организации
Если вы собираетесь использовать Apache только в рамках отдельно взятой фирмы или в локальной сети, то вам потребуется запретить доступ к серверу извне. Это можно сделать, используя брандмауэр (см. главу 18) либо изменив несколько строк в конфигурационных файлах.
. В принципе управление доступом к отдельным веб-каталогам происходит в разделах конфигурационных файлов (как обычно, их расположение различается от дистрибутива к дистрибутиву). При этом, если имеются настройки для корневого каталога, все остальные каталоги соблюдают их по умолчанию. Затем в иных разделах для конкретных каталогов могут быть указаны и другие настройки, отличающиеся от стандартных. Из следующего примера должно быть понятно, каковы значения ключевых слов Order, Deny и Allow.
Приведенный далее код действует так, что все веб-страницы, находящиеся в стандартном каталоге, могут быть запрошены только страницами, расположенными в локальной сети. Кроме того, перестают работать символьные ссылки, так как они зачастую серьезно угрожают безопасности сети (обратите внимание, что deny.allow указывается без пробела!). Действующие строгие правила немного смягчаются для каталога /var/www/html/public. Благодаря параметру Indexes в браузере отображается список файлов, находящихся в том или ином каталоге, если в нем отсутствует файл index.html.
<code># Более надежная стандартная конфигурация, задаваемая для всего дерева каталогов «Directory /> Options None # Без параметров AllowOvern'de None # .htdocs не оказывает никакого влияния Order deny.allow # Сначала запретить, затем разрешить Deny from all # Запретить все, но... Allow from 192.168.0.0/8 # Доступ из локальной сети Allow from .sol # Разрешить доступ из локальной сети Allow from localhost # Доступ для localhost </Directory> # Разрешить доступ к Интернету на http://<site>/public (для <a class="myClass" href="http://www.modx.cc/linux/zapusk-sistemyi-v-fedora/">Fedora</a>/Red Hat) «Directory "/var/www/htm!/public"> Options Indexes FollowSymLinks Order allow.deny Allow from all # Свободный доступ для всех! </Directory></code>
Защита веб-каталогов паролем
Иногда бывает необходимо не запрещать доступ к серверу полностью, а разрешать его только после ввода верного пароля.
Такой метод может применяться в тех случаях, когда у вас на сайте есть несколько административных страниц (например, PhpMyAdmin для администрирования MySQL. Неважно, где вы (администратор MySQL) сейчас находитесь, — если хотите, то можете получить доступ к этой странице. Одновременно следует исключить возможность выхода обычных пользователей на административные страницы.
Файл с паролем
Для решения таких проблем каталог необходимо защитить с помощью файла с паролем. По возможности файл с паролем нужно сохранять за пределами веб-каталога, чтобы исключить доступ к этому файлу по адресу servername/verzeichnis/ password-file. В следующем примере предполагается, что файл с паролем сохранен в каталоге /private.
Для создания нового файла с паролем используйте команду htpasswd (htpasswd2 в SUSE) с параметром -c (create). Пароль, разумеется, зашифровывается:
<code>user$ cd /private user$ htpasswd -c passwords.pwd имяпользователя New password: ******** Re-type new password: ******** Adding password for user username Остальные пары логин/пароль добавляются командой htpasswd без параметра -c. user$ cd /private user$ htpasswd passwords.pwd имя2 New password: ******** Re-type new password: ******** Adding password for user username </code>
ПРИМЕЧАНИЕ
He забудьте дать Apache право чтения файла с паролем и каталога, в котором этот файл находится! Из соображений безопасности Apache работает не под учетной записью администратора, а под другой учетной записью (www-date в Debian и Ubuntu, apache в Fedora и Red Hat, wwwrun в SUSE). Если ваш компьютер защищен SELinux или AppArmor, то правила этих систем безопасности также не должны мешать доступу сервера к файлу с паролем.
Существует два варианта конфигурации Apache, при которых пароли действительно учитываются. При использовании первого варианта требуется изменить центральные конфигурационные файлы (httpd.conf и пр.). Второй вариант предусматривает конфигурацию в файле .htaccess, находящемся внутри веб-каталога.
Файл httpd.conf
Чтобы Apache учитывал файл с паролем, нужно вставить защищаемый паролем каталог в httpd.conf в виде отдельного раздела . В следующем примере показано, как это делается:
<code># Каталог, защищенный паролем «Directory "/var/www/html/admin/"> AuthType Basic AuthUserFile /pn'vate/passwords.pwd AuthName "admin" Require valid-user # Другие параметры, если они требуются </Directory> </code>
Параметр AuthName обозначает область, в которую разрешен доступ. Смысл в том, что вам не требуется каждый раз заново входить в систему, если вы хотите получить доступ к разным каталогам, которые защищены одним и тем же паролем. Если вы вошли в систему с определенным обозначением AuthName, то имеете доступ и ко всем остальным каталогам с таким же AuthName.
Настройка Require valid-user означает, что для входа в систему может применяться любое действующее сочетание имени пользователя и пароля. Вы также можете здесь указать, что вход в систему разрешен только определенному пользователю:
Require user имя! имя2 Файлы .htaccess
Описанный выше процесс можно осуществить лишь в том случае, если у вас есть доступ к центральным конфигурационным файлам Apache, то есть если вы сами являетесь администратором сети. Если вы не администратор, то можете обеспечить не менее надежную защиту с помощью файла .htaccess, который находится в каталоге, защищенном паролем. В этом файле должны быть указаны те же команды, что и в группе , то есть AuthType, AuthUserFile, AuthName и Require.
Обратите внимание — файл .htaccess учитывается лишь при условии, что в httpd.conf в группе данного каталога допускается изменение информации, связанной с аутентификацией (вместо AllowOvern'de AuthConfig также может быть указано AllowOvern'de АН). На веб-серверах, где отдельные пользователи отвечают за собственные сетевые каталоги, это условие обычно выполняется.
<code># Каталог, который можно защитить с помощью .htaccess «Directory "/var/www/htm!/admin/"> AllowOvern'de AuthConfig # Другие параметры, если они требуются </Directory></code>
Читайте так же:
PHP
Услуги по MODX Revolution
Посмотреть все услуги
Оптимизация сайта
Подробнее & Заказать
Создание сайта на MODX Revolution
Подробнее & Заказать
Перенос сайта на MODX Revolution
Подробнее & Заказать
Комментарии ()