
- •Аннотация
- •Содержание
- •Обозначения и сокращения
- •Введение
- •Постановка задачи
- •1.1 Обзор возможностей
- •1.1.1 Объединение серверов
- •1.1.2 Поддержка встроенных средств для Linux (ifl)
- •1.1.3 Более простые и эффективные системы управления
- •1.1.4 Расширенный менеджер безопасности
- •1.1.5 Высокая доступность и кластеризация
- •1.1.6 Улучшенная производительность
- •1.2.2 Ограничения ядра
- •1.2.3 Поддержка файловых систем
- •2.1 Описание web-сервера Apache
- •2.2 Инсталляция web-сервера Apache
- •2.2.1 Сборка web-сервера Apache
- •2.2.2 Установка web-сервера Apache
- •2.2.3 Запуск web-сервера Apache
- •2.2.4 Остановка и перезапуск web-сервера Apache
- •2.2.5 Обновление web-сервера Apache
- •2.3 Конфигурирование web-сервера Apache
- •2.3.1 Основные настройки web-сервера Apache
- •2.3.2 Настройка виртуальных хостов
- •2.3.3 Настройки авторизации и аутентификации
- •3. Безопасность жизнедеятельности
- •3.1 Основные негативные воздействия и борьба с ними
- •3.2 Выбор помещения
- •3.3 Выбор стола и его ориентации
- •3.4 Выбор и установка кресла
- •3.5 Условия эксплуатации компьютера
- •3.6 Требования к электропитанию компьютера
- •3.7 Меры безопасности при работе на компьютере
- •Заключение
- •Список используемых источников
- •Приложение 1
- •Приложение 2
- •Приложение 3
2.2.2 Установка web-сервера Apache
После того, как выполнится конфигурационный скрипт, необходимо скомпилировать сервер, используя команду
make,
затем произвести установку нового сервера командой
make install.
Эта команда скопирует все необходимые файлы в директорию, определенную опцией -prefix. Если данная опция не была указана, то по умолчанию будет использоваться путь /usr/local/apache/.
2.2.3 Запуск web-сервера Apache
httpd - собственно сам сервер. В Unix программа httpd представляет собой демон, выполняющийся в фоновом режиме и обслуживающий поступающие запросы.
Демон httpd может быть запущен со следующими ключами:
-
-d значение-ServerRoot
-
-f имя-конфигурационного-файла (относительно ServerRoot)
-
-k start | restart | graceful | stop | graceful-stop
-
-C директива (выполнить директиву до чтения файла конфигурации)
-
-c директива (выполнить директиву после чтения файла конфигурации)
-
-D параметр (определение параметра для условной конфигурации)
-
-e значение-LogLevel
-
-E имя-файла (выводить сообщения об ошибке в указанный файл)
-
-l (выдать список модулей, динамически подключённые модули не указываются)
-
-L (выдать список директив для каждого модуля)
-
-M (выдать список модулей, динамически подключённые модули указываются)
-
-S (разбор конфигурации виртуальных хостов)
-
-t (проверить конфигурацию)
-
-X (отладочный режим)
-
-v (выдача краткой информации о версии сервера)
-
-V (выдача полной информации о версии сервера)
-
-h (выдать синтаксис командной строки)
Для запуска демона httpd лучше всего использовать скрипт apachectl. Этот скрипт устанавливает ряд переменных окружения, необходимых для правильной работы сервера под некоторыми операционными системами, а затем запускает исполняемый файл httpd. Скрипт apachectl передаст серверу любую командную строку, так что при вызове можно указывать в его командной строке все необходимые для сервера опции. Также можно вручную внести некоторые изменения в скрипт apachectl, в частности, изменив значение переменной HTTPD для запуска Apache из другого каталога, и указав опции, которые будут передаваться серверу каждый раз при его запуске командой
./bin/apachectl start
Скрипт apachectl принимает следующие команды:
-
start
-
stop
-
restart (предварительно проверяется синтаксис файла настройки)
-
fullstatus (нужен mod_status и lynx)
-
status
-
configtest
-
graceful (перезапуск без обрывания текущих соединений, статистика не сбрасывается; журналы закрываются не сразу, рекомендуемая пауза - 15 минут)
-
help
Содержимое скрипта apachectl представлено ниже:
#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Apache control script designed to allow an easy command line interface
# to controlling Apache. Written by Marc Slemko, 1997/08/23
#
# The exit codes returned are:
# XXX this doc is no longer correct now that the interesting
# XXX functions are handled by httpd
# 0 - operation completed successfully
# 1 -
# 2 - usage error
# 3 - httpd could not be started
# 4 - httpd could not be stopped
# 5 - httpd could not be started during a restart
# 6 - httpd could not be restarted during a restart
# 7 - httpd could not be restarted during a graceful restart
# 8 - configuration syntax error
#
# When multiple arguments are given, only the error from the _last_
# one is reported. Run "apachectl help" for usage info
#
ARGV="$@"
#
# |||||||||||||||||||| START CONFIGURATION SECTION ||||||||||||||||||||
# -------------------- --------------------
#
# the path to your httpd binary, including options if necessary
HTTPD='/opt/apache2/bin/httpd'
#
# pick up any necessary environment variables
if test -f /opt/apache2/bin/envvars; then
. /opt/apache2/bin/envvars
fi
#
# a command that outputs a formatted text version of the HTML at the
# url given on the command line. Designed for lynx, however other
# programs may work.
LYNX="lynx -dump"
#
# the URL to your server's mod_status status page. If you do not
# have one, then status and fullstatus will not work.
STATUSURL="http://localhost:80/server-status"
#
# Set this variable to a command that increases the maximum
# number of file descriptors allowed per child process. This is
# critical for configurations that use many file descriptors,
# such as mass vhosting, or a multithreaded server.
ULIMIT_MAX_FILES="ulimit -S -n `ulimit -H -n`"
# -------------------- --------------------
# |||||||||||||||||||| END CONFIGURATION SECTION ||||||||||||||||||||
# Set the maximum number of file descriptors allowed per child process.
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
$ULIMIT_MAX_FILES
fi
ERROR=0
if [ "x$ARGV" = "x" ] ; then
ARGV="-h"
fi
case $ARGV in
start|stop|restart|graceful|graceful-stop)
$HTTPD -k $ARGV
ERROR=$?
;;
startssl|sslstart|start-SSL)
echo The startssl option is no longer supported.
echo Please edit httpd.conf to include the SSL configuration settings
echo and then use "apachectl start".
ERROR=2
;;
configtest)
$HTTPD -t
ERROR=$?
;;
status)
$LYNX $STATUSURL | awk ' /process$/ { print; exit } { print } '
;;
fullstatus)
$LYNX $STATUSURL
;;
*)
$HTTPD $ARGV
ERROR=$?
esac
exit $ERROR
Первым делом httpd находит и считывает конфигурационный файл httpd.conf. Путь к этому файлу задается еще во время сборки сервера, но его можно изменить и после этого, запустив сервер с опцией -f, как это показано в следующем примере
/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf
Если во время запуска не возникло никаких проблем, то сервер отсоединится от консоли и приглашение на ввод командной строки вернется к пользователю практически мгновенно. Это указывает на то, что сервер запустился и теперь выполняет свою работу. Теперь можно, используя браузер, подключиться к нему и увидеть тестовую страницу, находящуюся в каталоге DocumentRoot, а также локальную копию документации.
Если во время запуска Apache произойдет какая-либо фатальная ошибка, то перед тем, как завершить свою работу, сервер пошлет на консоль или в ErrorLog сообщение, описывающее данную ошибку.
Скрипт apachectl разработан таким образом, что он может действовать как стандартный init-скрипт системы SysV. Он может принимать аргументы start, restart, и stop и переводить их в соответствующие сигналы процессу httpd. Поэтому для запуска сервер автоматически после перезагрузки системы, достаточно добавить вызов скрипта apachectl в системные файлы, отвечающие за загрузку операционной среды, расположенные в каталоге /etc/init.d/. Для этого возьмем стандартный init-скрипт httpd.init для Apache из директории /bin/rpm/ нашего дистрибутива и отредактируем его под свои нужды. Содержимое измененного скрипта представлено ниже:
#!/bin/bash
#
# Startup script for the Apache Web Server
#
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve \
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache2/logs/httpd.pid
# config: /usr/local/apache2/conf/httpd.conf
# Source function library.
. /etc/rc.d/init.d/functions
if [ -f /etc/sysconfig/httpd ]; then
. /etc/sysconfig/httpd
fi
# Path to the apachectl script, server binary, and short-form for messages.
apachectl=/opt/apache2/bin/apachectl
httpd=/opt/apache2/bin/httpd
pid=$httpd/logs/httpd.pid
prog=httpd
RETVAL=0
# The semantics of these two functions differ from the way apachectl does
# things -- attempting to start while running is a failure, and shutdown
# when not running is also a failure. So we just do it the way init scripts
# are expected to behave here.
start() {
echo -n $"Starting $prog: "
daemon $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/httpd
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $httpd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/httpd $pid
}
reload() {
echo -n $"Reloading $prog: "
killproc $httpd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $httpd
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f $pid ] ; then
stop
start
fi
;;
reload)
reload
;;
graceful|help|configtest|fullstatus)
$apachectl $@
RETVAL=$?
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|status"
echo $"|fullstatus|graceful|help|configtest}"
exit 1
esac
exit $RETVAL
Затем скопируем этот скрипт в директорию /etc/init.d/ и дадим ему права на выполнение. После выполним команды, обеспечивающие запуск сервера вместе с системой:
chkconfig --add httpd
chkconfig --level 2345 httpd on
Таким образом, сервер будет загружаться вместе с загрузкой системы с правами привилегированного пользователя.