Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!diplom_Lazutin.doc
Скачиваний:
4
Добавлен:
27.10.2018
Размер:
672.77 Кб
Скачать

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

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