50286

Запуск и остановка Apache

Реферат

Информатика, кибернетика и программирование

Вы должны запустить аpаche как суперпользователь. pche после запуска будет порождать дочерние процессы использующие UID и GID указанные в директивах User и Group. Для перезапуска pche выполните команду service httpd restrt или etc rc.

Русский

2014-01-20

246 KB

1 чел.

Запуск и остановка Apache

 Для запуска Web-сервера Apache выполните команду service httpd start или /etc/rc.d/init.d/httpd start. Если будет выдано сообщение об ошибке, то нужно устранить неправильные установки в файле httpd.conf и запустить команду заново. Вы должны запустить Apache как суперпользователь. Apache после запуска будет порождать дочерние процессы, использующие UID и GID, указанные в директивах User и Group.

Для перезапуска Apache выполните команду service httpd restart или /etc/rc.d/init.d/httpd restart. При перезапуске родительский процесс Apache (запущенный суперпользователем) уничтожает всех наследников, читает файл конфигурации и перезапускает новое поколение дочерних процессов. Этот тип перезапуска прерывает обслуживание Web-клиентов, которые продолжают ожидать ответа от дочерних процессов сервера. Родительский процесс Apache укажет дочерним процессам закончить обслуживание текущего запроса и затем закончить свою работу, так что родительский процесс сможет перечитать файл конфигурации и перезапустить новый набор дочерних процессов.

Для остановки Apache выполните команду service httpd stop или /etc/rc.d/init.d/httpd stop.

Cервер Apache предоставляет удобный способ поиска PID основного процесса Web-сервера. PID записан в файл, указанный в директиве PidFile. Это PID основного процесса httpd. Не пытайтесь удалить дочерние процессы вручную один за другим, поскольку основной процесс будет воссоздавать их по мере надобности.

Директивы конфигурации web-сервера Apache. Контексты использования директив конфигурации

Директивы – это команды для web-сервера, которые сообщают ему, что необходимо выполнить определенную задачу определенным образом. Они содержатся в конфигурационном файле /etc/httpd/conf/httpd.conf.

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

Основные контексты использования директив:

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

<имя_контейнера>

директива

</имя_контейнера>

Контейнеры используются для ограничения области действия директив.

  •  контекст каталога – директивы хранятся в файле внутри каталога. Обычно такой файл имеет имя .htaccess. Это текстовый файл, содержащий одну или несколько директив, которые применяются только к текущему каталогу. Эти директивы можно также заключать в контейнер <Limit> или <Files>. Имя файла, содержащего директивы конфигурации для каталога, можно переопределить с помощью директивы AccessFileName имя_файла.

Директива AllowOverride сообщает серверу, какие директивы, объявленные в файле .htaccess, могут изменять значения, определенные директивами в файле конфигурации сервера или принятые по умолчанию. Если директива AllowOverride установлена в None, то сервер не читает файл конфигурации каталога, что ускоряет работу сервера.

 Если нужно разрешить управление с помощью файла конфигурации каталога, следует указать одну или несколько следующих опций:

  •  AuthConfig – разрешает использование директив аутентификации и управления доступом;
  •  FileInfo – разрешает использование директив, управляющих типами документов;
  •  Indexes – разрешает использование директив, управляющих индексами каталогов;
  •  Limit – разрешает использование директив, управляющих доступом к узлам;
  •  Options – разрешает использование директив, управляющих определенными свойствами каталогов.

Контейнерные директивы Apache

<Limit> - Ограничивает область действия внутренних директив указанными методами HTTP. Используется в основном для управления доступом и аутентификации.

 <Limit GET POST OPTIONS>

 Order deny,allow

 Deny from all

 Allow from 127.0.0.1 192.168

</Limit>

<LimitExcept> - Применяется по отношению к методам HTTР, не указанным в списке методов, в том числе к расширенным и нестандартным методам, которые не описаны в протоколе НТТР.

<LimitExcept GET>

 Require valid-user

</LimitExcept>

<Directory> - Директивы внутри контейнера применяются только по отношению к данному каталогу и его подкаталогам.

 <Directory /home/www/*>

 AllowOverride All

</Directory>

<DirectoryMatch> – выполняет те же действия, что и <Directory>, но вместо имени каталога она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера

<DirectoryMatch ″^/www/dir[1-3]″>

 

</DirectoryMatch>

будут выполняться для каталогов с именами /www/dir1, /www/dir2 и /www/dir3. 

<Files> - Аналогично <Directory>, но устанавливает соответствие для файлов. Разрешена внутри <Directory> и <Location>, что позволяет ограничить часть файловой системы, с которой работает директива.

 <Directory /home/www/gallery>

 <Files *.gif>

  SetHandler /cgi-bin/process-image.cgi

 </Files>

</Directory>

<FilesMatch> – выполняет те же действия, что и <Files>, но вместо имени файла она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера

<FilesMatch ″\.(doc|txt$)″>

 

</FilesMatch>

будут выполняться для файлов с расширениями txt и doc. 

 <Location> - Аналогично <Directory>, но применяется не к физической области хранения файлов, а к указателям URL. Директивы, разрешенные в <Directory>, действуют и в <Location>, хотя некоторые (например Options FollowSymLinks) логически бессмысленны и игнорируются.

 <Location /server-info>

 SetHandler server-info

</Location>

<LocationMatch> – выполняет те же действия, что и <Location>, но вместо URL она принимает регулярное выражение.

 <VirtualHost> - Позволяет описывать дополнительные виртуальные хосты. У каждого из них должны быть имя, IP-адрес, журналы ошибок и доступа.

 <VirtualHost 192.168.1.2>

 ServerName www.beta.com

 ServerAdmin admin@beta.com

 CustomLog /logs/beta_access_log common

 ErrorLog /logs/beta_error_log

 DocumentRoot /home/www/beta

</VirtualHost>

Правила при использовании контейнеров:

  •  контейнер <VirtualHost> не может находиться внутри любого другого контейнера;
  •  контейнер <Limit> с самым узким контекстом не может содержать вложенных контейнеров;
  •  контейнер <Files> может содержать  только контейнер <Limit>;  
  •  контейнеры <Directory> и <Location> нельзя смешивать, то есть использовать один внутри другого.

Контейнер с более узкой областью действия перекрывает контейнер с более широко областью действия.

Условная конфигурация

В конфигурационных файлах Apache могут присутствовать разделы, используемые только при определенных условиях. При ограничении разделов конфигурации директивами <IfDefine> и <IfModule> Apache будет игнорировать или подключать некоторые из них.

Контейнер <IfDefine> позволяет создавать конфигурацию по условию.

<IfDefine HAVE_PERL>

AddModule mod_perl.c

</IfDefine>

HAVE_PERL - определитель, который передается Apache при запуске с ключом -D.

Символ ! перед определителем означает, что директиву нужно выполнить тогда, окгда определителя не существует.

Контейнер <IfModule> используется в том случае, когда есть директивы конфигурации модуля, который может не присутствовать в установленной конфигурации сервера Apache.

<IfModule mod_perl.c>

Alias /perl/ /www/perl/

</IfModule>

Если нужна конструкция условия, действие которой прямо противоположно предыдущей, перед именем модуля ставится символ !.

Использование динамических модулей

Apache при загрузке загружает все скомпилированные модули. Однако, он также поддерживает динамическую загрузку и выгрузку модулей, представленных в виде DSO (Dynamic Shared Objects - динамические разделяемые объекты). При использовании следующих директив можно изменить список активных модулей без перекомпилирования сервера:

Директива AddModule используется для включения скомпилированного модуля, который в данный момент не активен. Сервер может содержать в своем составе модули, которые не используются. Данная директива позволяет активизировать эти модули. Сервер загружается со списком директив AddModule имя_модуля. При этом модули, указанные ниже по списку, имеют более высокий приоритет: динамический модуль, зпгружаемый последним, является первым, к кому обращается Apache.

Список активных модулей можно очистить с помощью директивы ClearModuleList. При ее использовании все активные модули запрещаются и их нужно включать по новому с помощью директивы AddModule для достижения правильного порядка выполнения модулей.

Директива LoadModule используется для загрузки модуля, скомпилированного как DSO.

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

Для получения списка статических (уже встроенных и поэтому всегда доступных модулей) используется команда httpd -l.

Ограничительные директивы Apache

Данные директивы ограничивают размер запросов НТТР, выдаваемых клиентами, что препятствует нерациональному расходованию клиентами ресурсов сервера и возникновению проблем типа "Отказ в обслуживании".

LimitRequestBody значение - ограничивает размер тела НТТР-запроса, посылаемого методом POST. По умолчанию установлено значение 0, что соответствует неограниченному размеру (максимальное значение - 2Гбайта). Если клиент посылает запрос, размер тела которого превышает допустимое значение, сервер отвечает сообщением об ошибке.

LimitRequestFields значение - ограничивает число дополнительных заголовков, которые могут быть посланы клиентом в НТТР-запросе. Обычно приемлемое число заголовков, которые отправляет клиент, составляет около 20. Большое число заголовков иногда указывает на то, что клиент непреднамеренно передает серверу неверные запросы.

LimitRequestSize значение - ограничивает максимальную длину отдельного заголовка НТТР, посылаемого клиентом, включая имя заголовка. Максимальное значение - 8190 символов.

LimitRequestLine значение - ограничивает максимальную длину самого запроса НТТР, включая метод запроса, URL и протокол. Значение должно быть таким, чтобы клиенты могли обращаться ко всем достоверным URL сервера с учетом строки запроса, устанавливаемой методом GET.

Директива  Options

Директива Options управляет выбором свойств сервера, которые будут активными в определенном каталоге.  Она учитывается только в контейнере <Directory> или в файле .htaccess.

Параметры директивы Options :

All – разрешает все опции, кроме MultiViews;

None – запрещает все опции;

  •  ExecCGI – разрешает выполнение CGI-сценариев;
  •  FollowSymLinks – сервер будет обращаться к файлам или каталогам через символьные ссылки (не действует внутри контейнера <Location>);
  •  SymLinksIfOwnerMatch – сервер будет обращаться к файлам или каталогам только через те символьные ссылки, целевой файл или каталог которых принадлежит тому же пользователю, что и сама ссылка;
  •  Includes – разрешает выполнение команд SSI;
  •  IncludesNOEXEC – разрешает выполнение команд SSI, кроме команд exec и include;
  •  Indexes – если запрашивается URL, указывающий на каталог, а для каталога не определена директива DirectoryIndex, сервер возвращает форматированный список содержимого каталога;
  •  MultiViews – разрешает согласование содержимого, основанное на языке документа. Если клиент не указывает информацию о языковых предпочтениях файла (НТТР-заголовок AcceptLanguage), сервер пытается найти наиболее подходящие совпадения на языках согласно приоритету, заданному директивой LanguagePriority.

Если директива Options не указана для каталога явно, то она наследуется от каталога, находящегося на уровень выше.

Для включения и выключения опций директивы Options используются модификаторы + (добавить в текущий список опций) и (удалить из текущего списка опций). Если же модификаторы не используются, то значения опций для контейнера полностью заместят все предыдущие значения директивы Options.

Основные директивы конфигурации Apache

Директива ServerName определяет имя сервера, которое пересылается клиенту вместе с другими параметрами запроса. Используется в случае, если сервер имеет несколько имен (синонимов). Например:

ServerName Indy.cnit.nsu.ru

Директива ServerAdmin определяет адрес электронной почты администратора сервера. При возникновении каких-либо ошибок в работе сервера, он выдает клиенту сообщение с просьбой проинформировать о них администратора сервера по указанному E-mail. Например:


ServerAdmin fancy@nsu.ru 

Директива ServerRoot определяет абсолютный путь к каталогу сервера. Она сообщает серверу, где находятся все ресурсы и файлы конфигурации. По умолчанию, это /etc/httpd. Например:

 

ServerRoot /etc/httpd

Директива DocumentRoot определяет каталог локальной файловой системы, от которого начинается отсчет виртуального пути URL. Например:


DocumentRoot /var/www/html

Директива UserDir определяет название публичного подкаталога пользователей. WWW-сервер позволяет обеспечить внешний доступ к гипертекстовым документам пользователей базовой операционной системы. Для этого пользователям необходимо создать в своем домашнем каталоге подкаталог с именем, определяемым параметром UserDir. После этого все обращения по URL:

http://<имя_сервера>/~<имя_пользователя>

будут транслироваться в реальный путь до подкаталога, определенного параметром UserDir в домашнем каталоге пользователя <имя_пользователя>. Например:


UserDir public_html

При этом при обращении по URL

http://www.nsu.ru/~fancy/index.html

сервер будет искать файл index.html в подкаталоге public_html домашнего каталога пользователя fancy.

Директивы User и Group определяют имя пользователя и группу, права которого получает сервер при обработке запросов. Изменение прав сервера производится с целью предотвращения доступа WWW-клиентов к файлам операционной системы, не являющимися общедоступными. Например:

User nobody

Group nobody

Директива Port определяет порт TCP, по которому сервер принимает запросы клиентов. Стандартный порт для WWW-сервера - 80. Пример:


Port 80

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

Listen 80

Также Listen может использоваться для определения прослушиваемых IP-адресов (через двоеточие указан прослушиваемый порт).

Listen 192.168.1.15:81

ScoreBoardFile logs/apache_runtime_status - определяет путь к файлу, который используется для обмена информацией между процессами о своем состоянии.

LockFile - определяет путь к файлу блокировки. Обычно применяется блокировка в памяти и данный файл не создается.

UseCanonicalName On - заставляет Apache создавать все внутренние адреса в формате %ServerName%:%Port%. При указании значения Off Apache использует имя узла и номер порта из заголовка запроса для создания адреса. При указании значения dns Apache будет выполнять обратный поиск DNS по IP-адресу сервера при определении имени узла для обращения к внутренним адресам.

TypesConfig /etc/mime.types - задает расположение конфигурационного файла MIME-типов.

DefaultType text/html - устанавливает тип содержимого по умолчанию. Таким образом, когда Apache получает запрос на файл с неизвестным типом (не может определить тип по расширению файла), то он использует предопределенный данной директивой тип. Apache устанавливает заголовок Content-Type при передаче файла неизвестного типа в %DefaultType%.

MIMEMagicFile conf/magic - позволяет серверу определить MIME-тип файла на основании его содержимого, сравнивая несколько байтов из данного файла с образцами, хранящимися в указанном данной директивой файле.

HostNameLookups Off|On - запрещает или разрешает распознавание имен с помощью DNS для каждого запроса. Если распознавание разрешено, то Apache хранит имя системы в переменной окружения REMOTE_HOST каждого запущенного процесса CGI и SSI. Рекомендуется значение Off для уменьшения времени на ответ сервера и сокращения DNS-трафика в сети.

AddDefaultCharset On|Off [Charset] - устанавливает набор символов по умолчанию для заголовка Content-Type, который Apache отправляет браузеру. Если значение директивы установлено в On, то, если дополнительно не указан набор символов, Apache посылает набор символов iso-8859-1 как набор символов по умолчанию. Значения параметра Charset: Windows-1251, ISO-8859-15, CP850, KOI8-R и т.п.

Директивы производительности Apache 

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

Управление процессами

Директивы MinSpareServers и MaxSpareServers регулируют размером пула серверов. Сервер Apache динамически приспосабливается к загрузке, то есть он пытается поддерживать достаточное число серверных процессов, чтобы справиться с текущей нагрузкой, а также несколько запасных серверов, чтобы справиться с пиками нагрузки (например, с несколькими одновременными запросами). Он выполняет это, периодически проверяя, сколько серверов ждут поступления запроса. Если их меньше, чем MinSpareServers, он создает новый резервный серверный процесс. Если их больше, чем MахSpareServers, некоторые резервные серверные процессы аннулируются.

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

 MinSpareServers 5 – устанавливает минимальное количество свободных дочерних процессов Apache, которые должны быть запущены в любой момент времени. Если количество свободных дочерних процессов меньше минимального, то Apache создает новые процессы с частотой 1 процесс в секунду.

 MaxRequestsPerChild 1000 – устанавливает количество запросов, которые может обслужить дочерний процесс до прекращения своего существования. После этого дочерний процесс должен завершиться, чтобы избежать проблем, возникающих при его продолжительной работе.

NumServers 2 – устанавливает количество одновременно создаваемых процессов Apache.

Управление потоками

 StartThreads 5 – устанавливает начальное количество потоков на процесс.

 MaxSpareThreads 10 – устанавливает максимальное количество свободных потоков:

1) потоковый МРМ – если число свободных потоков становится больше, чем указано в данной директиве, то Apache уничтожает дочерние процессы до тех пор, пока не будет достигнуто нужное значение; 2) МРМ с фиксированным числом дочерних процессов – если дочерний процесс содержит больше потоков, чем указано в данной директиве, то сервер уничтожает потоки внури дочернего процесса.

MinSpareThreads 5 – устанавливает минимальное количество свободных потоков:

1) потоковый МРМ – если число свободных потоков становится меньшим, чем указано в данной директиве, то Apache создает новые дочерние процессы до тех пор, пока не будет достигнуто нужное значение; 2) МРМ с фиксированным числом дочерних процессов – если дочерний процесс содержит меньше потоков, чем указано в данной директиве, то сервер создает новые потоки внури дочернего процесса.

ThreadsPerChild 50 – сообщает серверу, сколько потоков он должен использовать.

MaxThreadsPerChild 64 – устанавливает максимальное количество потоков для дочернего процесса.

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

 StartServers 8 - определяет число дочерних процессов Apache, которые создаются при первоначальном его запуске. Количество процессов, необходимое в определенный момент времени, изменяется динамически.

MaxClients 150 – задает предел числа одновременно работающих серверов, то есть предел числа клиентов, которые могут подключаться одновременно. После достижения этого предела клиенты будут заблокированы, поэтому значение данного параметра не должно быть слишком низким. Он должен служить в качестве страховки, чтобы сервер, вышедший из-под контроля, в своем падении не увлек за собой систему.

ListenBacklog 511 – устанавливает максимальную длину очереди запросов.

Постоянные соединения

До постоянных соединений для каждого НТТР-запроса устанавливалось отдельное TCP соединение, что увеличивало нагрузку на web-сервера и вызывало загрузку Интернета. Использование встроенных изображений и других связанных данных часто требует от клиента делать несколько запросов к одному серверу за короткий промежуток времени.

Преодолеть эти недостатки поможет использование устойчивых соединений, когда одно ТСР-соединение может использоваться для передачи нескольких объектов. Для устойчивых соединений необходимо заранее знать размер передаваемых данных. Так как многие CGI-сценарии, SSI-команды и другие типы динамически генерируемого содержимого не имеют определенного размера до передачи, они не могут пользоваться преимуществами устойчивых соединений.

Постоянные HTTP соединения имеют ряд преимуществ:

  •  Открытие и закрытие меньшего количества TCP соединений экономит время центрального процессора и память, используемую для управляющих блоков протокола TCP.
  •  HTTP запросы и ответы может быть конвейеризованы в соединении. Конвейерная обработка позволяет клиенту делать множество запросов, не ожидая ответа на каждый, следовательно, одиночное TCP соединение, использование которого намного более эффективно, теряет меньше времени.
  •  Загрузка сети уменьшается с уменьшением числа пакетов, вызванных открытием TCP соединений, и, следовательно, дает протоколу TCP достаточное время для определения состояния загрузки сети.

Директива KeepAlive On|Off позволяет активировать и деактивировать использование устойчивых соединений ТСР в Apache.

Директива Timeout 300 устанавливает время (в секундах), в течение которого Apache должен ждать определенный пакет данных. Это максимальное время ожидания Apache перед тем, как разорвать соединение.

Директива KeepAliveTimeout 15 – если директива KeepAlive включена, то данную директиву можно использовать для ограничения времени, в течение которого Apache будет ждать следующего запроса до разрыва соединения. После получения запроса применяется значение, установленное директивой Timeout.

Директива MaxKeepAliveRequests 200 ограничивает количество запросов в одном соединении при включенной директиве KeepAlive.

Псевдонимы

Псевдонимы позволяют преобразовывать URL для указания другой области действия без уведомления об этом клиента.

Alias URL "путь" - определяет отображение пути на произвольное место файловой системы сервера.

Alias /icons/ "/var/www/icons"

AliasMatch регулярное_выражение "путь" - директива подобна Alias, но использует регулярные выражения.

AliasMatch ^data(.*) "/web/data$1"  # отображает URL

# www.site.com/data/index.html на

# /web/data/index.html

ScriptAlias псевдоним "путь" - создает псевдоним пути к физическому каталогу. Кроме того, любое имя файла, присутствующее в запросе, рассматривается как CGI-сценарий, который сервер попытается выполнить.

ScriptAlias /cgi-bin/ "/home/*/public_html/cgi-bin"

ScriptAliasMatch регулярное_выражение "путь" - директива подобна ScriptAlias, но использует регулярные выражения.

Конфигурация типа содержимого

Языки файлов

Определяя язык файла, Apache посылает в ответе заголовок Content-Language.

Языки свзываются с расширениями файлов следующим образом:

AddLanguage en .en .english

Файлы, которые не имеют расширения, указанного в AddLanguage, саязываются с языком по умолчанию:


AddDefaultLanguage en

Приоритеты языков сервера:

LanguagePriority en de fr

Если есть одинаковый документ (например index.html) на разных языках (index.html.en, index.html.de, index.html.fr), то если клиент не укажет предпочтения (заголовок Accept-Language) сервер вернет документ на языке согласно указанному приоритету. Данный механизм реализуется с помощью директивы

Options Multiviwes

Кодирование файлов – описывается формат, в котором посылается данный ресурс.

AddEncoding MIME-тип расширение_файла – ставит в соответствие одному или нескольким расширениям определенную схему MIME-кодирования.

AddEncoding x-gzip .gz  

Типы файлов

AddType MIME-тип расширение_файла – ставит в соответствие одному или нескольким расширениям определенный MIME-тип. В результате, когда серверу встречаются файлы с указанными расширениями, он знает, какой для них необходимо использовать MIME-тип.

AddType text/html .htm .html

ForceType MIME-тип – переопределяет MIME-тип для всех файлов каталога.

<Directory /www/docs>

ForceType text/html

</Directory>

Обработчики

AddHandler обработчик расширение_файла – задает обработчик для одного или нескольких расширений файлов.

AddHandler cgi-script .cgi .pl

SetHandler обработчик – задает обработчик для определенного каталога или URL (для всех файлов внутри каталога).

<Location /bin/>

Options ExecCGI

SetHandler cgi-script

</Location>

RemoveHandler обработчик – отменяет обработчик, назначенный для определенного каталога или URL.

SetHandler cgi-script

<Directory /www/special>

RemoveHandler cgi-script

</Directory>

Наборы символов

AddCharset таблица_кодировки расширение_файла – ставит в соответствие одному или нескольким расширениям файлов определенный набор символов MIME.

AddCharset UTF-8 .utf8

Активизация механизма CGI

CGI - Common Gateway Interface является стандартом интерфейса (связи) внешней прикладной программы с информационным сервером типа HTTP, Web сервер.

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

Программа-шлюз запускается WWW сервером в реальном масштабе времени. WWW сервер обеспечивает передачу запроса пользователя шлюзу, а она в свою очередь, используя средства прикладной системы, возвращает результат обработки запроса на экран пользователя. Программа-шлюз может быть создана на языках C/C++, Fortran, Perl, TCL, Unix Shell, Visual Basic, Apple Script, РНР. Как выполнимый модуль, она записывается в поддиректории с именем cgi-bin WWW сервера.

Функциональные возможности CGI обеспечиваются модулем mod_cgi и активизируются следующим образом:

  •  с помощью ScriptAlias – помечает каталог как содержащий исполняемые сценарии;
  •  с помощью указания параметра ExecCGI в директиве Options.

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

ScriptAlias  /cgi-bin/  "/usr/local/apache/cgi-bin/"

 В результате Apache интерпретирует любой входящий URL типа http://www.domain.com как запрос на выполнение сценариев CGI.

Повышение уровня безопасности каталогов для ScriptAlias. Применяется контейнер <Directory>, предотвращающий использование файлов .htaccess, которые могут ослабить защиту сервера.

<Directory  /usr/local/apache/cgi-bin/>

 AllowOverride None

 Options None

 Order allow,deny

 Allow from all

</Directory>

Установка каталога CGI с помощью ExecCGI.

Alias  /cgi-bin/  "/usr/local/apache/cgi-bin/"

<Directory  /usr/local/apache/cgi-bin/>

 AllowOverride None

 Options ExecCGI

 SetHandler cgi-script

</Directory>

Описание сценариев CGI по расширению. Директива SetHandler внутри <Directory> вызывает обработчик для любого файла в указанном каталоге. Директива AddHandler позволяет указать одно или несколько расширений файлов, которые будут считаться сценариями CGI.

AddHandler  cgi-script  .cgi  .pl  .pm  .exe  .bat

Для выполнения данной директивы необходимо указать еще и ExecCGI. Единственная директива, разрешающая CGI без указания ExecCGIScriptAlias.

Описание сценариев CGI по типу среды. Директива AddType позволяет связывать расширения файлов с MIME-типами:

AddType  application/x-http-cgi  .cgi

Активизация механизма SSI

SSI расшифровывается как Server Side Includes. SSI – это набор команд, позволяющий включить в страницу информацию, недоступную для включения средствами HTML, такую как вывод программ, значения переменных окружения или статистику по файлам (размер, дата создания и др.).

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

Для указания Web-серверу, какие документы считать содержащими SSI-директивы, в файле конфигурации сервера Apache /etc/httpd/conf/httpd.conf надо указать:

AddType text/html .shtml         # описание расширения .shtml

AddHandler server-parsed .shtml    # сопоставление расширения файла с

# обработчиком

После этого все документы с расширением .shtml будут проверяться на SSI-директивы. Но удобнее было бы определить, чтобы все .html-файлы могли содержать SSI. Это делается добавлением в файл конфигурации следующих строчек:

AddType text/html .html

AddHandler server-parsed .html

Теперь надо разрешить выполнение SSI в каталоге, в котором лежат ваши файлы. Для этого необходимо найти описание каталога, в котором они находятся, и добавить в его Options директиву Includes (разрешение использования SSI):

Options Indexes    #было так

Options Indexes Includes    #стало так

Переадресация

Директива Redirect [код_состояния] старый_URL новый_URL переадресовывает запрос к одному URL в запрос к другому URL. Если какой-либо раздел web-узла был перенесен в другой каталог или даже на новый web-узел, то эта директива гарантирует, что пользователи, запомнившие координаты старой страницы, смогут найти ее по новому адресу.

Коды состояния:

  •  Permanent (301) - сообщает клиенту, что переадресация является постоянной.
  •  Temp (302) - сообщает клиенту, что переадресация является временной.
  •  Seeother (303) - возвращает состояние, указывающее на то, что ресурс был замещен.
  •  Gone (410) - возвращает состояние, указывающее на то, что ресурс был окончательно удален. При использовании этого состояни аргумент URL не указывается.

Redirect permanent /archive http://host.com/arch #при запросе

# http://host.com/archive/file.html будет произведена

#  переадресация на http://host.com/arch/file.html

RedirectMatch [код_состояния] регулярное_выражение новый_URL - директива подобна Redirect, но использует регулярные выражения.

Аутентификация

Если web-сервер нуждается в контроле доступа, то в настоящее время (в HTTP/1.1) имеется две возможности. Первая (basic) - предполагает традиционный ввод и передачу по сети имени клиента и пароля. Эта схема проста, но допускает перехват параметров доступа (а между клиентом и сервером может быть достаточно много промежуточных узлов). Вторая схема (digest) для пользователя выглядит аналогично, но вводимое имя и пароль не передаются по сети непосредственно. На их базе формируется дайджест MD5, который пересылается по сети и используется для идентификации клиента.

Алгоритм аутентификации:

  1.  Аутентификация начинается в тот момент, когда пользователь запрашивает URL, защищенный схемой НТТР-аутентификации.
  2.  Web-сервер возвращает код состояния 401 и заголовок WWW-Authenticate, что говорит о том, что для доступа требуется аутентификация. Заголовок WWW-Authenticate содержит тип аутентификации и имя области доступа.
  3.  Появляется диалоговое окно Web-браузера, запрашивающее имя пользователя и пароль.
  4.  Пользователь вводит имя и пароль, которые вместе с запрошенным ранее URL пересылаются серверу. Сервер проверяет достоверность имени и пароля.

5. а) Если имя пользователя и пароль правильны, сервер возвращает запрашиваемую страницу.

б) Если имя пользователя и пароль неверны, сервер возвращает код состояния 401 и посылает браузеру прежний заголовок WWW-Authenticate.

 В каждом последующем запросе на протяжении сеанса работы браузера с тем же сервером браузер будет посылать пару «имя пользователя – пароль», чтобы сервер не генерировал код состояния 401 при обращениях к той же области узла.

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

Пример содержимого файла .htaccess

AuthUserFile /otherdir/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic

<Limit GET>
require user pumpkin
</Limit>

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

Limit GET ограничивает доступ по методу GET, предоставляя его только пользователю pumpkin. Для ограничения других методов доступа (например, в каталогах CGI) используется перечисление всех методов:

<Limit GET POST PUT>
require user pumpkin
</Limit>

Для создания файла паролей необходимо воспользоваться утилитой htpasswd, входящей в состав дистрибутива сервера:

htpasswd -c /otherdir/.htpasswd pumpkin

После запуска она дважды запросит пароль для пользователя pumpkin и создаст файл паролей /otherdir/.htpasswd.

Все последующие пользователи создаются без ключа .

Использование нескольких пар имя/пароль

Использование нескольких пар имя/пароль достигается путем описания группы, в которую входят несколько пользователей, и указания имени группы в директиве Limit.

  1.  Необходимо создать несколько записей в файле паролей. Этого можно достичь, не указывая ключа -c для htpasswd:

htpasswd /otherdir/.htpasswd peanuts
htpasswd /otherdir/.htpasswd almonds
htpasswd /otherdir/.htpasswd walnuts

  1.  Создать файл описания группы, назвав его, например, /otherdir/.htgroup со следующим содержимым:

my-users: pumpkin peanuts almonds walnuts

где my-users - имя группы, pumpkin, peanuts, almonds, walnuts - список пользователей, входящих в группу.

  1.  Изменить файл .htaccess следующим образом:

AuthUserFile /otherdir/.htpasswd
AuthGroupFile /otherdir/.htgroup
AuthName ByPassword
AuthType Basic
<Limit GET>
require group my-users
</Limit>

Все документы данного каталога будут доступны всем членам группы my-users после проведения процедуры аутентификации (ввода пароля).

Использование индексных файлов. Индексирование каталогов

Когда у Apache запрашивается URL, указывающий не на файл, а на каталог, и в каталоге нет индексного файла, задающегося директивой DirectoryIndex, сервер автоматически создает перечень файлов каталога, если это не было запрещено директивой Options –Indexes, и отображает его клиенту. Apache позволяет изменять вид автоматически генерируемого перечня файлов каталога.

Параметры индексирования каталога задаются с помощью директивы IndexOptions значение, где значение:

  •  FancyIndexing – включает расширенную индексацию (Icon, Name, LastModified, Size, Description)
  •  IconHeight=пиксели – высота значков
  •  IconWidth=пиксели – ширина значков
  •  IconsAreLinks – связывает значок с именем файла (только при расширенной индексации)
  •  ScanHTMLTitles – извлекает из HTML заголовки <TITLE> для описания файлов
  •  SupressColumnSorting – отменяет ссылки из названий столбцов, при нжатии на которые можно сортировать информацию в столбце
  •  SupressHTML Preamble – отменяет генерацию тегов <HTML>, <HEAD> и <BODY> при наличии файла заголовка (указанного в директиве HeaderName)
  •  SupressDescription, SupressSize, SupressLastModified – отменяет соответственно столбцы  Description, Size и LastModified в расширенных индексах
  •  None – запрещает расширенную индексацию и выдает простой неупорядоченный список файлов

Добавление файла заголовка (идет в индексе до списка файлов):

HeaderName HEADER.html

Добавление файла справки (идет в индексе после списка файлов):

ReadmeName README.html

Если необходимо, чтобы некоторые файлы не были видны в перечне файлов, применяется директива IndexIgnore Файл1 Файл2

Добавление значков:

  •  AddIcon значок имя_файла имя_файла - позволяет присваивать значки файлам и именам каталогов
  •  AddAlt “текст” имя_файла имя_файла… – задает альтернативный текст, выводимый вместо значка, ассоциированного с одним или несколькими расширениями файлов
  •  AddIconByType значок MIME-тип MIME-тип … - ассоциирование значка с одним или несколькими MIME-типами
  •  AddAltByType “текст” MIME-тип MIME-тип … – задает альтернативный текст, выводимый вместо значка, ассоциированного с одним или несколькими MIME-типами
  •  AddIconByEncoding значок MIME-кодировка MIME-кодировка … - ассоциирование значка с одним или несколькими MIME-кодировками
  •  AddAltByEncoding “текст” MIME-кодировка MIME-кодировка … – задает альтернативный текст, выводимый вместо значка, ассоциированного с одним или несколькими MIME-кодировками
  •  AddDescription “текст” имя_файла имя_файла… - при включенной FancyIndexing задает описание для файла, представленного именем, расширением или шаблоном имени.

Управление доступом

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

Order deny,allow | allow,deny – управляет порядком обработки сервером директив Allow и Deny. В случае указания deny,allow доступ со стороны всех запрещается, затем разрешается для некоторых компьютеров. В случае указания allow,deny  доступ со стороны всех разрешается, затем запрещается для некоторых компьютеров.

Allow from all | доменное_имя_хоста | IP-адрес хоста – указывает список компьютеров, которым разрешен доступ к определенному каталогу. Значение all указывает разрешение доступа всем компьютерам.

Deny from all | доменное_имя_хоста | IP-адрес хоста – указывает список компьютеров, которым запрещен доступ к определенному каталогу. Значение all указывает запрещение доступа всем компьютерам.

<Directory "/var/www/html">

   Options Indexes FollowSymLinks

   AllowOverride None

   Order deny,allow 

   Allow from www.host1.ru www.host2.ru

</Directory>

Виртуальный хостинг

Существуют следующие способы создания виртуальных web-узлов с помощью сервера Apache:

  •  На основе имен. Такая конфигурация требует существования множества имен, указывающих на одну систему. Поскольку этот метод не использует IP-адресов в конфигурации сервера Apache, то его можно легко перенастроить на другой сервер, изменив IP-адрес web-сервера;
  •  На основе IP-адресов. Этот метод требует указания IP-адресов в конфигурации сервера Apache, что усложняет перенастройку при необходимости изменения IP-адресов.

Виртуальные узлы на основе имен. Здесь требуется только один IP-адрес, чтобы обеспечить поддержку для тысяч виртуальных web-узлов. Допустим, у вас есть адрес 192.168.1.100 и вы хотите создать узлы vhost1.domain.com и vhost2.domain.com на одном и том же сервере. Для этого необходимо:

  •  создать соответствующие записи на сервере DNS, указывающие для имен vhost1.domain.com и vhost2.domain.com на адрес 192.168.1.100;
  •  создать в файле httpd.conf конфигурационный сегмент, подобный следующему:

NameVirtualHost 192.168.1.100

<VirtualHost 192.168.1.100>

ServerName vhost1.domain.com

ServerAdmin root@ vhost1.domain.com

DocumentRoot “/www/vhost1/docs”

 #здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.100>

ServerName vhost2.domain.com

ServerAdmin root@ vhost2.domain.com

DocumentRoot “/www/vhost2/docs”

 #здесь вы можете задать любые необходимые директивы

</VirtualHost>

  •  перезагрузить сервер Apache.

Виртуальные узлы на основе IP-адресов. Данный метод требует использования различных IP-адресов для создания виртуальных узлов. Такие IP-адреса должны быть заданы в файле настройки в каждом из дескрипторов контейнеров <VirtualHost>. Этот метод не имеет преимуществ в сравнении с методом, описанным выше. В примере показаны три виртуальных узла на основе IP-адресов.

<VirtualHost 192.168.1.1>

ServerName vhost1.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.2>

ServerName vhost2.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

<VirtualHost 192.168.1.3>

ServerName vhost3.server.com

#здесь вы можете задать любые необходимые директивы

</VirtualHost>

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

  •  ServerAdmin
  •  ServerRoot
  •  DocumentRoot
  •  ErrorLog
  •  CustomLog

Директивы, не имеющие значения для виртуальных узлов:

  •  ServerType
  •  StartServers
  •  MaxSpareServers
  •  MinSpareServers
  •  MaxRequestsPerChild
  •  BindAddress
  •  Listen
  •  ServerRoot
  •  PidFile
  •  TypesConfig
  •  NameVirtualHost

Виртуальные хосты наследуют все директивы, определенные в области главного сервера.

Обработка ошибок

Директива ErrorDocument код_ошибки имя_файла | сообщение | URL – предназначается  для создания собственных сообщений об ошибках.

ErrorDocument 404 ″Извините, это неверный запрос

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

ErrorDocument 404 /errors/404.html

В данном случае HTML-файл может иметь вид:

<html>

<head>

<title>Файл не найден</title>

</head>

<body>

<h1><font color=”red”>Файл не найден</font></h1>

</body>

</html>

Можно также автоматически перенаправить пользователя на другой узел, указав вместо имени файла адрес:

ErrorDocument 404 http://www/newsite.com/moved.html

Коды ошибок:

  •  301 Moved Permanently – запрошенному ресурсу назначен новый URL;
  •  400 Bad Request – неверный синтаксис запроса;
  •  401 Unauthorized – необходима аутентификация;
  •  403 Forbidden – доступ запрещен;
  •  405 Mrthod Not Allowed – неприемлемый метод запроса;
  •  500 Internal Server Error – ошибка конфигурации сервера или внешней программы.

Протокол SSL

SSL (Secure Socket Layer, Протокол (или уровень) защищенных сокетов) спроектирован для обеспечения конфиденциальности обмена между двумя прикладными процессами клиента и сервера. Он предоставляет возможность аутентификации сервера и, опционно, клиента. SSL и требует применения надежного транспортного протокола (например, TCP).

SSL – это коммуникационный протокол с шифрованием, применяемый для передачи защищенной информации по Internet. Преимуществом SSL является то, что он независим от прикладного протокола. Протоколы приложения, такие как HTTP, FTP, TELNET и т.д. могут работать поверх протокола SSL совершенно прозрачно.

Взаимодействие SSL с приложениями:

SSL действует как промежуточный протокол между TCP/IP и протоколами прикладных уровней и, когда клиент устанавливает защищенное соединение, невидимо осуществляет кодирование и декодирование информации.

Основой SSL является шифрование. В SSL используется метод шифрования, называемый криптографией открытых ключей, когда серверная сторона соединения посылает клиенту открытый ключ для шифрования информации, дешифровать которую может только сервер с помощью хранимого им личного ключа. Клиент использует открытый ключ для шифрования и посылки серверу своего собственного ключа, который однозначно идентифицирует его на сервере и не позволяет наблюдающим за линией связи между двумя системами имитировать сервер или клиента.

Протокол SSL предоставляет "безопасный канал", который имеет три основные свойства:

  •  Канал является частным. Шифрование используется для всех сообщений после простого диалога, который служит для определения секретного ключа.
  •  Канал аутентифицирован. Серверная сторона диалога всегда аутентифицируется, в то время как клиентская – аутентифицируется опционно.
  •  Канал надежен. Транспортировка сообщений включает в себя проверку целостности.

Сертификат представляет собой зашифрованную информацию, которая связывает открытый ключ шифрования с удостоверением подлинности личности, сервера или другой сущности, известной как субъект. Издателем сертификата является бюро сертификации (Certification AuthorityCA). Сертификат содержит:

  •  имя объекта,
  •  название организации, с которой связан объект,
  •  отдел организации, с которой связан объект,
  •  название города или района, в котором находится объект,
  •  название штата или области, в котором находится объект,
  •  название страны, в которой находится объект,
  •  серийный номер сертификата,
  •  время действия сертификата.

Самые известные СА – это Verisign и Thawte. Они исследуют различные юридические документы организаций, которые хотят установить свою аутентичность в Internet и после независимой проверки подписывают (заверяют) сертификат собственным открытым ключом.

Сертификат обычно передается в бинарном или кодированном текстовом формате.

Пример транзакции SSL:


 

Для того, чтобы web-сервер Apache реагировал на соединения SSL, нужно убедиться в том, что он прослушивает порт 443 – стандартный порт для SSL. Указать это можно в директиве

Listen 443

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

Включение механизма SSL:

SSLEngine On

Личный ключ сервера:

SSLCertificateKeyFile conf/ssl/www.server.com.key

Сертификат для личного ключа:

SSLCertificateFile conf/ssl/www.server.com.crt

При динамической загрузке SSL эти директивы нужно размещать после директив

LoadModule/AddModule

чтобы Apache их понимал. Если указать директивы на уровне сервера, SSL будет разрешен для всего сервера и обычные НТТР-соединения не будут работать ни по какому порту. Если же расположить их в виртуальном хосте на основе IP-адресов, SSL будет разрешен только для одного хоста, выделенного для порта 443.

<VirtualHost 192.168.1.1:443>

 ServerName server.com

 DocumentRoot /www/docs

 …

 SSLCertificateKeyFile conf/ssl/www.server.com.key

 SSLCertificateFile conf/ssl/www.server.com.crt

</VirtualHost>

Реализация SSL в отдельной области:

<Directory /home/www/secure/>

 SSLrequireSSL

</Directory>

Ведение журналов ошибок и передачи данных

Серверные журналы содержат ценную информацию о том, кто работал с Web-узлом, к каким страницам обращались клиенты и какие ошибки происходили на сервере.

Область хранения журнала ошибок задается директивой

ErrorLog /var/log/httpd/error_log

 

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

LogLevel <уровень>

Уровни и их назначение:

  •  emerg – система нестабильна
  •  alert – требуется немедленное действие
  •  crit – критическая ошибка
  •  error – некритическая ошибка
  •  warn – предупреждение
  •  notice – все нормально, но стоит обратить внимание
  •  info – информационное сообщение
  •  debug – уровень отладки

Опасно поднимать уровень протоколирования выше error, так как можно упустить из вида серьезные недостатки в работе системы.

Область хранения журнала передачи данных задается директивой

TransferLog /var/log/httpd/access_log

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

Общий формат журналов:

host

ident

authuser

date

request

status

bytes

имя или адрес

клиента

идентифи-кационная информация

идентифи-катор пользователя

дата и время

запроса

строка

запроса

код

состояния

количество байтов

Директива CustomLog объединяет  TransferLog и LogFormat в одной директиве:

CustomLog  файл_журнала  формат | мнемоническое_имя

Например:

CustomLog /logs/referer_log “%Refereri -> %U” # журнал ссылок

CustomLog /logs/agent_log “%User-Agenti -> %U” # журнал браузеров

LogFormat “%Refereri -> %U” referer-log

CustomLog /logs/referer_log referer-log

Специальные переменные для журналов:

%a

IP-адрес клиента

%A

IP-адрес сервера

%B

переданные байты, кроме НТТР-заголовков

%c

состояние соединения после ответа на запрос: х – соединение было прервано клиентом до завершения получения ответа, t – если клиент использует постоянные соединения, - – если соединение было закрыто после ответа на запрос

%D

количество времени в микросекундах, которое занял ответ на запрос

%{var}e

содержимое переменной окружения var

%f

имя запрашиваемого файла

%h

имя компьютера, передавшего запрос

%H

версия протокола запроса

%{Header}I

содержимое строки заголовка в запросе, переданном на сервер

%l

информация аутентификации, переданная клиентом

%m

метод запроса

%{Header}O

содержимое строки заголовка в ответе сервера

%p

порт, через который был обслужен запрос

%P

идентификатор дочернего процесса, обслужившего запрос

%q

строка запроса

%r

первая строка запроса

%s

состояние, которое сервер вернул в ответ на запрос

%t

время поступления запроса

%T

время, которое понадобилось серверу для обслуживания запроса (в секундах)

%u

имя пользователя при аутентификации

%U

запрошенный URL

%v

имя сервера или виртуального узла, к которому поступил запрос

%V

имя сервера согласно директиве UseCanonicalName


Определяет контрольную су
мму данных ID, отправленных сервером

Контрольная сумма данных ID, полученная от сервера

Используя открытый ключ сервера, расшифровывает контрольную сумму данных ID сервера

Использует известный открытый ключ СА для декодирования отправленного сервером сертификата и извлечения из него открытого ключа сервера

Клиент

      Сервер возвращает

  1.  Заверенный сертификат сервера
  2.  Открытый текст с данными идентификации (ID)
  3.  Контрольную сумму данных ID, зашифрованных с помощью секретного ключа сервера

Клиент

Сервер

Сервер

Запрос на SSL-соединение

Клиент

Протокол транспортного уровня

TCP/IP

Протокол защищенных сокетов

SSL

Протоколы прикладного уровня

HTTP  FTP  SMTP  …

Приложения

браузер    web-сервер

Подлинность сервера подтверждена (контрольные суммы совпадают)

Сравнение контрольных сумм

Контрольная сумма данных ID, вычисленная клиентом

Обнаружена попытка мошенничества (контрольные суммы не совпадают)

Состояние 401: “Authorization Required”      (в случае неудачи)     (5б)

file.html в (в случае успеха)     (5а)

(Заголовок ответа теперь включает имя пользователя и пароль)

GET file.html     (4)

(3)

остояние 401: “Authorization Required”     (2)

GET file.html     (1)

Аутентификация

Web-сервер

Всплывающее диалоговое окно

Пароль

Имя

Web-браузер

Web-сервер

Web-браузер


 

А также другие работы, которые могут Вас заинтересовать

504. Разработка приложений в среде VBA IDE 155.5 KB
  Составление программы обработки табличных данных. Программа может работать по принципу меню. Меню может содержать следующие пункты: ввод данных, корректировка данных, расчет таблицы, запись данных на магнитный диск, чтение данных с магнитного диска, построение диаграммы, выход.
505. Создание базы данных футбольной команды с помощью СУБД Microsoft Access 251 KB
  Создание базы данных футбольной команды. Нахождение самого результативного футболиста в этом сезоне. Создание формы в виде сводной таблицы. Диаграмма с данными о забитых голах защитниками и нападающими.
506. Основы теории систем управления 194.29 KB
  Математическое описание системы. Передаточная функция. Переходные процессы в системе. Качество управления. Временные динамические характеристики.
507. Разработка финансового плана предприятия в сфере строительства Бетон – 35 277.5 KB
  Методические основы составления текущего финансового планирования организации. Расчет объема реализации и себестоимости реализованной продукции организации. Расчет оптимального размера прибыли на основе эффекта операционного рычага. Баланс денежных поступлений и расходов организации.
508. Моделювання потоку маршрутних транспортних засобів 1.76 MB
  Модель розподілу пасажиропотоку між маршрутами міського пасажирського транспорту. Задача оптимізації інтенсивності міського пасажирського транспорту з урахуванням втрат системи місто. Узагальнення задачі для розгалуженої маршрутної мережі міського пасажирського транспорту.
509. Общественное здание. Гостиница 125 KB
  Проект Гостиница разработан на основе задания по архитектурному проектированию. Категория и класс в зависимости от вида предоставляемых услуг в соответствии с принятой в стране системной стандартов. Благоустроенные площадки перед входами в помещения общественного и жилого назначения.
510. Особенности налоговой политики в современной России 131.5 KB
  Понятие, сущность и основные виды налоговой политики. Изучение теоретических аспектов налоговой политики, а также определение основных направлений и механизма реализации налоговой политики в Российской Федерации.
511. Масштабирование и растеризация. Составление программы по алгоритму Брезенхема на языке Phyton 226 KB
  Составление программы по алгоритму Брезенхема на языке Phyton. Рассмотрение координаты в ГМ и окне отображения на экране относительно левой нижней точки соответствующего окна. Рисование линий по алгоритму Брезенхема.
512. Формирование цен на продукцию растениеводства в СПК Полтавский Полтавского района Омской области 221 KB
  Ценовая политика предприятия СПК Полтавский Полтавского района Омской области. Краткая природная и экономическая характеристика. Механизм ценообразования на сельскохозяйственную продукцию. Формирование цен на предприятии СПК Полтавский.