Apache + http/2 на centos 7

Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана

Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом.
Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С).
На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков).
Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres.
А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL).
Если, конечно, статья придется вам по вкусу.

История создания Apache

Apache — это сокращение от «a patchy server», что переводится как сервер с патчами. Такое название появилось из-за происхождения программы. Все началось с разработки веб-сервера CERN HTTPd и NCSA HTTPd в Национальном центре суперкомпьютерных приложений (NCSA). Позднее к проекту подключились другие авторы, которые стали накладывать свои патчи. Патч ― это информация, кусок кода или программный модуль, который исправляет недочёты разработчиков. Их ещё называют заплатки. В 1995 году Брайан Белендорф объединил все патчи и создал команду разработчиков, которая выпустила первую версию Apache. Релиз Apache 1.0 прошёл в декабре 1995 года, но популярной эта программа стала только через год. Далее группа разработчиков расширялась, и они создали Apache для различные операционные системы (Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS).

В 1998 году появилась версия Apache 1.3, а в 1999 году была создана некоммерческая организация Apache Software Foundation. В марте 2000 года состоялась первая конференция для разработчиков ApacheCon. На ней была представлена версия Apache 2.0. Она отличалась новой модульной структурой. Это предоставило широкие возможности для функционала программы. На данный момент последней версией является Apache 2.4.

Log Files and Troubleshooting

As an Apache HTTP Server administrator, your most valuable assets are
the log files, and, in particular, the error log. Troubleshooting any
problem without the error log is like driving with your eyes closed.

The location of the error log is defined by the directive, which may be set globally,
or per virtual host. Entries in the error log tell you what went wrong,
and when. They often also tell you how to fix it. Each error log message
contains an error code, which you can search for online for even more
detailed descriptions of how to address the problem. You can also
configure your error log to contain a log ID which you can then
correlate to an access log entry, so that you can determine what request
caused the error condition.

News

June 8, 2021 — Apache CXF 3.4.4 and 3.3.11 released!

The Apache CXF team is proud to announce the availability of our latest patch releases!  Over 26 JIRA issues were fixed for 3.4.4, many back ported to 3.3.11.

These releases contain a fix for a security issue, please see the security advisories page for more information:

Apache CXF Denial of service vulnerability in parsing JSON via JsonMapObjectReaderWriter (CVE-2021-30468)

Downloads are available here.

March 22, 2021 — Apache CXF 3.4.3 and 3.3.10 released!

The Apache CXF team is proud to announce the availability of our latest patch releases!  Over 22 JIRA issues were fixed for 3.4.3, many back ported to 3.3.10.

Downloads are available here.

Features

CXF includes a broad feature set, but it is primarily focused on the following areas:

  • Web Services Standards Support: CXF supports a variety of web service standards including SOAP, the WS-I Basic Profile, WSDL, WS-Addressing, WS-Policy, WS-ReliableMessaging, WS-Security, WS-SecurityPolicy, WS-SecureConverstation, and WS-Trust (partial).
  • Frontends: CXF supports a variety of «frontend» programming models.

CXF implements the JAX-WS APIs. CXF JAX-WS support includes some extensions to the standard that make it significantly easier to use, compared to the reference implementation: It will automatically generate code for request and response bean classes, and does not require a WSDL for simple cases.

It also includes a «simple frontend» which allows creation of clients and endpoints without annotations. CXF supports both contract first development with WSDL and code first development starting from Java.

For REST, CXF also supports a JAX-RS frontend.

  • Ease of use: CXF is designed to be intuitive and easy to use. There are simple APIs to quickly build code-first services, Maven plug-ins to make tooling integration easy, JAX-WS API support, Spring 2.x XML support to make configuration a snap, and much more.
  • Binary and Legacy Protocol Support: CXF has been designed to provide a pluggable architecture that supports not only XML but also non-XML type bindings, such as JSON and CORBA, in combination with any type of transport.

Advanced SSI techniques

In addition to spitting out content, Apache SSI gives you
the option of setting variables, and using those variables in
comparisons and conditionals.

Setting variables

Using the directive, you can set variables
for later use. We’ll need this later in the discussion, so
we’ll talk about it here. The syntax of this is as follows:

In addition to merely setting values literally like that, you
can use any other variable, including environment variables or the variables
discussed above (like , for example) to
give values to your variables. You will specify that something is
a variable, rather than a literal string, by using the dollar sign
($) before the name of the variable.

To put a literal dollar sign into the value of your
variable, you need to escape the dollar sign with a
backslash.

Finally, if you want to put a variable in the midst of a
longer string, and there’s a chance that the name of the
variable will run up against some other characters, and thus be
confused with those characters, you can place the name of the
variable in braces, to remove this confusion. (It’s hard to
come up with a really good example of this, but hopefully
you’ll get the point.)

Conditional expressions

Now that we have variables, and are able to set and compare
their values, we can use them to express conditionals. This
lets SSI be a tiny programming language of sorts.
provides an ,
, ,
structure for building conditional statements. This allows you
to effectively generate multiple logical pages out of one
actual page.

The structure of this conditional construct is:

A test_condition can be any sort of logical
comparison — either comparing values to one another, or testing
the «truth» of a particular value. (A given string is true if
it is nonempty.) For a full list of the comparison operators
available to you, see the
documentation.

For example, if you wish to customize the text on your web page
based on the time of day, you could use the following recipe, placed
in the HTML page:

Any other variable (either ones that you define, or normal
environment variables) can be used in conditional statements.
See Expressions in Apache HTTP Server for
more information on the expression evaluation engine.

Rewrite Rules in .htaccess files

When using in
files, be aware that the per-directory context
changes things a bit. In particular, rules are taken to be relative to
the current directory, rather than being the original requested URI.
Consider the following examples:

# In httpd.conf
RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"

# In .htaccess in root dir
RewriteRule "^images/(.+)\.jpg" "images/$1.png"

# In .htaccess in images/
RewriteRule "^(.+)\.jpg" "$1.png"

In a in your document directory, the leading
slash is removed from the value supplied to , and in the
subdirectory, is removed from
it. Thus, your regular expression needs to omit that portion as
well.

Как работает Apache

Основная
роль Apache связана с коммуникацией по сетям и использует протокол TCP / IP
(протокол управления передачей / интернет-протокол, который позволяет
устройствам с IP-адресами в одной сети взаимодействовать друг с другом).

Сервер
Apache настроен для работы через файлы конфигурации, в которые добавляются
директивы для управления его поведением. В
своем состоянии ожидания Apache прослушивает IP-адреса, указанные в его файле
конфигурации (HTTPd.conf). Всякий раз, когда он получает запрос, он анализирует
заголовки, применяет правила, указанные для него в файле Config, и принимает
меры.

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

Поскольку
IP-адреса трудно запомнить, мы, как посетители определенных сайтов, обычно
вводим соответствующие им имена доменов в поле URL-адреса в наших браузерах. Затем
браузер подключается к DNS-серверу, который переводит имена доменов на их
IP-адреса. Затем
браузер берет возвращаемый IP-адрес и подключается к нему.  Браузер
также отправляет Host header с запросом, чтобы, если сервер размещает несколько сайтов, он будет знать, какой из них должен обслуживать.

Например, ввод текста на www.google.com в поле адреса вашего
браузера может отправить следующий запрос на сервер по этому IP-адресу:

Первая
строка содержит несколько фрагментов информации.  Во-первых, существует метод (в данном случае это GET), URI,
который указывает, какую страницу нужно извлечь или какую программу нужно
запустить (в этом случае это корневой каталог, обозначенный /), и, наконец,
есть HTTP-версия (которая в данном случае является HTTP 1.1).

HTTP —
это протокол без ответа. Это
набор правил, регулирующих связь между клиентом и сервером. Клиент
(обычно, но не обязательно веб-браузер) делает запрос, сервер отправляет ответ,
а связь прекращается. Сервер
не ожидает дополнительной связи, как в случае с другими протоколами, которые
остаются в состоянии ожидания после завершения запроса.

Если
запрос выполнен успешно, сервер возвращает код состояния 200 (что означает, что
страница найдена), заголовки ответов вместе с запрошенными данными.  .
Заголовок ответа сервера Apache может выглядеть примерно так:

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

Migrating a name-based vhost to an IP-based vhost

The name-based vhost with the hostname
(from our example, setup 2) should get its own IP
address. To avoid problems with name servers or proxies who cached the
old IP address for the name-based vhost we want to provide both
variants during a migration phase.

The solution is easy, because we can simply add the new IP address
() to the
directive.

Listen 80
ServerName www.example.com
DocumentRoot "/www/example1"

<VirtualHost 172.20.30.40 172.20.30.50>
    DocumentRoot "/www/example2"
    ServerName www.example.org
    # ...
</VirtualHost>

<VirtualHost 172.20.30.40>
    DocumentRoot "/www/example3"
    ServerName www.example.net
    ServerAlias *.example.net
    # ...
</VirtualHost>

Apache: преимущества и недостатки

Веб-сервер Apache может быть прекрасным выбором для запуска вашего сайта на стабильной и универсальной платформе

Но у него есть и свои недостатки, на которые стоит обратить внимание

Преимущества:

  1. Бесплатный даже для использования в коммерческих целях.
  2. Надёжный, стабильное программное обеспечение.
  3. Часто обновляемый, регулярные патчи безопасности.
  4. Гибкий благодаря своей модульной структуре.
  5. Легко настраиваемый, дружелюбный для начинающих.
  6. Кроссплатформенный (работает одинаково хорошо на Unix и на Windows серверах).
  7. Работает для сайтов на WordPress сразу после установки без дополнительных настроек.
  8. Большое сообщество и легко доступная поддержка в случае любой проблемы.

Недостатки:

  1. Проблемы производительности на сайтах с большим трафиком.
  2. Слишком много параметров конфигруации могут привести к уязвимостям в безопасности.

Running Apache as a Service ¶

Apache comes with a utility called the Apache Service Monitor.
With it you can see and manage the state of all installed Apache
services on any machine on your network. To be able to manage an
Apache service with the monitor, you have to first install the
service (either automatically via the installation or manually).

You can install Apache as a Windows NT service as follows from
the command prompt at the Apache subdirectory:

If you need to specify the name of the service you want to
install, use the following command. You have to do this if you
have several different service installations of Apache on your
computer. If you specify a name during the install, you have to
also specify it during any other -k operation.

If you need to have specifically named configuration files for
different services, you must use this:

If you use the first command without any special parameters except
, the service will be called
and the configuration will be assumed to be .

Removing an Apache service is easy. Just use:

The specific Apache service to be uninstalled can be specified by using:

Normal starting, restarting and shutting down of an Apache
service is usually done via the Apache Service Monitor, by using
commands like and or via normal Windows service management. Before
starting Apache as a service by any means, you should test the
service’s configuration file by using:

You can control an Apache service by its command line switches,
too. To start an installed Apache service you’ll use this:

To stop an Apache service via the command line switches, use
this:

or

You can also restart a running service and force it to reread
its configuration file by using:

By default, all Apache services are registered to run as the
system user (the account). The
account has no privileges to your network
via any Windows-secured mechanism, including the file system, named
pipes, DCOM, or secure RPC. It has, however, wide privileges locally.

Never grant any network privileges to
the account! If you need Apache to be able
to access network resources, create a separate account for Apache as
noted below.

It is recommended that users create a separate account for running
Apache service(s). If you have to access network resources via Apache,
this is required.

  1. Create a normal domain user account, and be sure to
    memorize its password.
  2. Grant the newly-created user a privilege of and . On Windows NT 4.0 these privileges are granted via
    User Manager for Domains, but on Windows 2000 and XP you probably
    want to use Group Policy for propagating these settings. You can
    also manually set these via the Local Security Policy MMC snap-in.
  3. Confirm that the created account is a member of the Users
    group.
  4. Grant the account read and execute (RX) rights to all document
    and script folders ( and
    for example).
  5. Grant the account change (RWXD) rights to the
    Apache directory.
  6. Grant the account read and execute (RX) rights to the
    binary executable.

It is usually a good practice to grant the user the Apache
service runs as read and execute (RX) access to the whole Apache2.5
directory, except the subdirectory, where the
user has to have at least change (RWXD) rights.

If you allow the account to log in as a user and as a service,
then you can log on with that account and test that the account has
the privileges to execute the scripts, read the web pages, and that
you can start Apache in a console window. If this works, and you
have followed the steps above, Apache should execute as a service
with no problems.

Error code 2186 is a good indication that
you need to review the «Log On As» configuration for the service,
since Apache cannot access a required network resource. Also, pay
close attention to the privileges of the user Apache is
configured to run as.

When starting Apache as a service you may encounter an error
message from the Windows Service Control Manager. For example,
if you try to start Apache by using the Services applet in the
Windows Control Panel, you may get the following message:

You will get this generic error if there is any problem with
starting the Apache service. In order to see what is really causing
the problem you should follow the instructions for Running Apache
for Windows from the Command Prompt.

Настройка модулей Apache

Как я уже говорил, Apache — модульная программа, ее функциональность можно расширять с помощью модулей. Все доступные модули загрузчики и конфигурационные файлы модулей находятся в папке /etc/apache/mods-available. А активированные в /etc/apache/mods-enable.

Но вам необязательно анализировать содержимое этих папок. Настройка Apache 2.4 с помощью добавления модулей выполняется с помощью специальных команд. Посмотреть все запущенные модули можно командой:

Включить модуль можно командой:

А отключить:

После включения или отключения модулей нужно перезагрузить apache:

Во время выполнения одной из этих команд создается или удаляется символическая ссылка на файл модуля с расширением load в директории mods-available. Можете посмотреть содержимое этого файла, там только одна строка. Например:

Это к тому, что активировать модуль можно было просто добавив эту строчку в файл apache2.conf. Но принято делать именно так, чтобы избежать путаницы.

Настройки модулей находятся в той же папке, только в файле с расширением .conf вместо load. Например, посмотрим настройки того же модуля для сжатия deflate:

Файлы в папке conf-available, это такие же модули, только они установлены отдельно от apache, это может быть конфигурационные файлы для включения модуля php или любого другого языка программирования. Здесь работает все точно так же, только команды для включения и отключения этих модулей немного другие:

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

Модули expires и headers уменьшают нагрузку на сервер. Они возвращают заголовок Not Modified, если документ не изменился с последнего запроса. Модуль expiries позволяет устанавливать время, на которое браузер должен кэшировать полученный документ. Rewrite позволяет изменять запрашиваемые адреса на лету, очень полезно при создании ЧПУ ссылок и т д. А последний для включения поддержки шифрования по SSL. Не забудьте перезагрузить apache2 после завершения настроек.

Сжатие и кэширование HTTP

Сжатие HTTP применяется для ускорения работы серверов Apache. Сервер применяет к телу ответа шифрование gzip или deflate перед тем, как отправить его клиенту. Затем клиент распаковывает полученные данные. Данные сжимаются только если браузер запрашивает сжатие. Сжатие HTTP включается в Apache с помощью модуля ‘mod_deflate’.

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

Модули mod_expires и mod_headers для настройки кэша через HTTP- заголовки, присылаемые с сервера. С помощью директив cache-control можно управлять правилами кэширования, чтобы ускорить работу Apache.

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

Clients, Servers, and URLs

Addresses on the Web are expressed with URLs — Uniform Resource Locators
— which specify a protocol (e.g. ), a servername (e.g.
), a URL-path (e.g.
), and possibly a query
string (e.g. ) used to pass additional
arguments to the server.

A client (e.g., a web browser) connects to a server (e.g., your Apache HTTP Server),
with the specified protocol, and makes a request for a resource using the
URL-path.

The URL-path may represent any number of things on the server. It may
be a file (like ) a handler (like server-status) or some kind of program
file (like ). We’ll discuss this more below in
the section.

The server will send a response consisting of a status
code and, optionally, a response body.
The status code indicates whether the request was successful, and, if not, what
kind of error condition there was. This tells the client what it should
do with the response. You can read about the possible response codes in
HTTP Server
wiki.

Как работает Apache

Apache использует технологию мультипроцессинга. Каждое соединение с сервером помещается в отдельный поток и проходит все этапы операции шаг за шагом. Поток можно сравнить с тропинкой, по которой может идти только один человек. Второй человек может пройти по той же тропинке только тогда, когда первый окажется в конечной точке. У такой схемы работы есть один существенный минус — высокий риск перегрузки. Количество потоков ограничено, поэтому, если пользователей слишком много, работоспособность программы снижается. Новое соединение не начнется, пока предыдущая операция не завершится и не освободит поток.

Общая структура

Как
уже упоминалось ранее, Apache может быть установлен в различных операционных
системах. Независимо от используемой платформы, размещенный веб-сайт, как правило, имеет четыре основных каталога: htdocs, conf, logs, cgi-bin.

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

conf — это каталог, в котором расположены все файлы конфигурации сервера.  Файлы
конфигурации в основном представляют собой текстовые файлы, в которых
добавляются директивы для управления поведением и функциональностью
веб-сервера.  Каждая
директива обычно помещается в отдельную строку, а хеш (#) указывает
комментарий, поэтому строка, пройденная им, игнорируется.

logs — это каталог, в котором хранятся журналы сервера, журналы доступа Apache и журналы ошибок. HTTP-сервер
Apache предоставляет множество различных механизмов для регистрации всего, что
происходит на нем, от первоначального запроса через процесс сопоставления
URL-адресов до окончательного разрешения соединения, включая любые ошибки,
которые могли произойти в процессе. В
дополнение к этому сторонние модули могут предоставлять возможности ведения
журнала или вводить записи в существующие файлы журналов, а приложения, такие
как скрипты PHP или другие обработчики, могут отправлять сообщения в журнал
ошибок сервера.

cgi-bin — это каталог, в котором хранятся скрипты CGI. CGI
(Common Gateway Interface) определяет способ взаимодействия веб-сервера с
внешними программами создания контента, которые часто называются
CGI-программами или CGI-скриптами. Это
программы или сценарии оболочки, которые написаны для выполнения Apache от
имени своих клиентов.

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

Лицензирование

Кодовая база Apache HTTP Server была перелицензирована на лицензию Apache 2.0 (из предыдущей лицензии 1.1) в январе 2004 года, и Apache HTTP Server 1.3.31 и 2.0.49 были первыми выпусками, использующими новую лицензию.

OpenBSD проект не сделал , как изменения и продолжал использовать до версии 2.0 , Apache, эффективно разветвление Apache 1.3.x для своих целей. Первоначально они заменили его на Nginx , а вскоре после этого сделали свою замену OpenBSD Httpd на основе проекта relayd.

Версии

Версия 1.1: Лицензия Apache 1.1 была одобрена ASF в 2000 г .: Основное изменение по сравнению с лицензией 1.0 находится в «рекламном пункте» (раздел 3 лицензии 1.0); производные продукты больше не обязаны включать указание ссылки в своих рекламных материалах, только в их документацию.

Apache и другие веб-сервера

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

Apache или NGINX

Nginx произносится как Engine-X, это более новое веб-серверное программное обеспечение с первым релизом в 2004 году. Как на сегодня он добился большой популярности среди владельцев сайтов. Nginx был создан для решения так называемой проблемы c10k – проблемы 10 тысяч соединений, что означает, что веб-сервера, использующие потоки не могут обрабатывать запросы пользователей более, чем с 10 000 подключений одновременно.

  1. Так как Apache использует структуру основанную на потоках, владельцы сайтов с высоким трафиком могли столкнуться с проблемой производительности. Nginx один из веб-серверов, который был нацелен на решение проблемы c10k и возможно это одно из самых успешных решений.
  2. Nginx имеет событийно ориентированную архитектуру, которая не создаёт новый процесс для каждого запроса. Вместо этого он обрабатывает каждый входящий запрос в едином потоке. Этот главный процесс управляет несколькими рабочими процессами, которые выполняют непосредственную обработку запросов. Модель Nginx, основанная на событиях распространяет запросы пользователей среди рабочих процессов эффективным путём, что приводит к лучшей масштабируемости.
  3. Если вам нужно обслуживание сайта с высокой посещаемостью, то Nginx – отличный выбор, поскольку он может сделать это, затратив минимальные ресурсы. И не случайно он используется сайтами с большим количеством показов, такими как: Netflix, Hulu, Pinterest и Airbnb.
  4. Однако для мелких и средних игроков, Apache имеет несколько преимуществ в сравнении с Nginx, среди которых: более простая настройка, множество модулей и среда дружественная для начинающих.

Apache или Tomcat

Tomcat – это веб-сервер также разработанных Apache Software Foundation, поэтому его официальное название Apache Tomcat. Это тоже HTTP-сервер, однако он обрабатывает приложения Java вместо статических сайтов. Tomcat может запускать несколько Java спецификаций, таких как: Java Servlet, Java Server Pages (JSP), Java EL и WebSocket.

  1. Tomcat был разработан специально для приложений на Java, в то время как Apache позиционируется как HTTP-сервер. Вы можете использовать Apache совместно с другими языками программирования (PHP, Python, Perl и т.д.) с помощью специального модуля Apache (mod_php, mod_python, mod_perl и др.).
  2. Хотя вы и можете использовать сервер Tomcat для статических веб-страниц, но это будет менее эффективно, чем использование Apache. Например, Tomcat заранее загружает виртуальную машину Java и другие Java-библиотеки, которые могут быть ненужными для работы вашего сайта.
  3. Tomcat также хуже настраиваемых в сравнении с другими веб-серверами. Например, для запуска WordPress, лучшим выбором будет стандартный HTTP-сервер, такой как Apache или NGINX.

Running Apache as a Console Application

Running Apache as a service is usually the recommended way to
use it, but it is sometimes easier to work from the command line,
especially during initial configuration and testing.

To run Apache from the command line as a console application,
use the following command:

Apache will execute, and will remain running until it is stopped
by pressing Control-C.

You can also run Apache via the shortcut Start Apache in Console
placed to during the installation.
This will open a console window and start Apache inside it. If you
don’t have Apache installed as a service, the window will remain
visible until you stop Apache by pressing Control-C in the console
window where Apache is running in. The server will exit in a few
seconds. However, if you do have Apache installed as a service, the
shortcut starts the service. If the Apache service is running
already, the shortcut doesn’t do anything.

If Apache is running as a service, you can tell it to stop by opening another console
window and entering:

Running as a service should be preferred over running in a
console window because this lets Apache end any current operations
and clean up gracefully.

But if the server is running in a console window, you can
only stop it by pressing Control-C in the same window.

You can also tell Apache to restart. This forces it to reread
the configuration file. Any operations in progress are allowed to
complete without interruption. To restart Apache, either press
Control-Break in the console window you used for starting Apache,
or enter

if the server is running as a service.

Note for people familiar with the Unix version of Apache:
these commands provide a Windows equivalent to and . The
command line option used, , was chosen as a reminder
of the command used on Unix.

If the Apache console window closes immediately or unexpectedly
after startup, open the Command Prompt from the Start Menu —>
Programs. Change to the folder to which you installed Apache, type
the command , and read the error message. Then
change to the logs folder, and review the
file for configuration mistakes. Assuming httpd was installed into
,
you can do the following:

Then wait for Apache to stop, or press Control-C. Then enter the
following:

When working with Apache it is important to know how it will
find the configuration file. You can specify a configuration file
on the command line in two ways:

  • specifies an absolute or relative path to
    a particular configuration file:

    or

  • specifies the installed Apache service
    whose configuration file is to be used:

In both of these cases, the proper
should be set in
the configuration file.

If you don’t specify a configuration file with
or , Apache will use the file name compiled into the
server, such as . This built-in path
is relative to the installation directory. You can verify the compiled
file name from a value labelled as when
invoking Apache with the switch, like this:

Apache will then try to determine its by trying the following, in this order:

  1. A directive
    via the command line switch.
  2. The switch on the command line.
  3. Current working directory.
  4. A registry entry which was created if you did a binary
    installation.
  5. The server root compiled into the server. This is by default, you can verify it by using and looking for a value labelled as
    .

If you did not do a binary install, Apache will in some
scenarios complain about the missing registry key. This warning can
be ignored if the server was otherwise able to find its
configuration file.

Additional examples

Following are some specific examples of things you can do in
your HTML documents with SSI.

When was this document
modified?

Earlier, we mentioned that you could use SSI to inform the
user when the document was most recently modified. However, the
actual method for doing that was left somewhat in question. The
following code, placed in your HTML document, will put such a
time stamp on your page. Of course, you will have to have SSI
correctly enabled, as discussed above.

Of course, you will need to replace the
with the actual name of the file that
you’re referring to. This can be inconvenient if you’re just
looking for a generic piece of code that you can paste into any
file, so you probably want to use the
variable instead:

For more details on the format, go to
your favorite search site and look for . The
syntax is the same.

Including a standard footer

If you are managing any site that is more than a few pages,
you may find that making changes to all those pages can be a
real pain, particularly if you are trying to maintain some kind
of standard look across all those pages.

Using an include file for a header and/or a footer can
reduce the burden of these updates. You just have to make one
footer file, and then include it into each page with the
SSI command. The
function can determine what file to include with either the
attribute, or the
attribute. The attribute is a file path,
relative to the current directory. That means that it
cannot be an absolute file path (starting with /), nor can it
contain ../ as part of that path. The
attribute is probably more useful, and should specify a URL
relative to the document being served. It can start with a /,
but must be on the same server as the file being served.

Useful tools to debug HTTP/2

The first tool to mention is of course curl. Please make sure that
your version supports HTTP/2 checking its :

    $ curl -V
    curl 7.45.0 (x86_64-apple-darwin15.0.0) libcurl/7.45.0 OpenSSL/1.0.2d zlib/1.2.8 nghttp2/1.3.4
    Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3  
    Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP HTTP2
    

Mac OS homebrew notes

brew install curl —with-openssl —with-nghttp2

And for really deep inspection wireshark.

The nghttp2 package also includes clients, such as:

  • nghttp — useful to visualize the HTTP/2 frames and get a better idea of the protocol.
  • h2load — useful to stress-test your server.

Basic SSI directives

SSI directives have the following syntax:

It is formatted like an HTML comment, so if you don’t have
SSI correctly enabled, the browser will ignore it, but it will
still be visible in the HTML source. If you have SSI correctly
configured, the directive will be replaced with its
results.

The function can be one of a number of things, and we’ll talk
some more about most of these in the next installment of this
series. For now, here are some examples of what you can do with
SSI

Today’s date

The function just spits out the value of a
variable. There are a number of standard variables, which
include the whole set of environment variables that are
available to CGI programs. Also, you can define your own
variables with the function.

If you don’t like the format in which the date gets printed,
you can use the function, with a
attribute, to modify that formatting.

Including the results of a CGI program

This is one of the more common uses of SSI — to output the
results of a CGI program, such as everybody’s favorite, a «hit
counter.»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector