Apache + http/2 на centos 7

Содержание

Два слова о протоколе HTTPS

HTTPS — это протокол обмена данными, который полностью описывается фразой «HTTP поверх SSL/TLS». Когда пользователь набирает в браузере адрес сайта, например, «https://www.site.com/info.html», происходит следующее:

  1. Веб-браузер посредством DNS-запроса определяет IP-адреса сервера «www.site.com». Если не используется технология DNSCrypt, этот запрос происходит в открытом виде, без шифрования.
  2. Между веб-браузером и веб-сервером устанавливается защищённый канал передачи данных SSL/TLS.
  3. По защищённому каналу осуществляется обмен между веб-браузером и веб-сервером по протоколу HTTP.

При установке HTTPS-соединения веб-браузеры проверяют подлинность сервера с использованием сертификата, выданного ему удостоверяющим центром. Сертификат — это подписанные секретным ключом удостоверяющего центра открытый ключ веб-сервера и информация о сервере. Если сертификат недействителен или данные, указанные в сертификате, не совпадают с реквизитами сервера, пользователю будет выдано предупреждение с рекомендацией отказаться от работы с этим сервером.

Чтобы с веб-сервером Apache можно было взаимодействовать по протоколу HTTPS, понадобится:

  1. Сгенерировать криптографические ключи веб-сервера.
  2. Получить сертификат веб-сервера.
  3. Настроить веб-сервер на работу по протоколу HTTPS.

В дальнейшем изложении предполагается, что установка и настройка веб-сервера выполнена в соответствии с рекомендациями, изложенными в статье «Параметрическая настройка Apache 2.4 под Windows».

Step 4 – Enabling the Changes in Apache

Now that we’ve made our changes and adjusted our firewall, we can enable the SSL and headers modules in Apache, enable our SSL-ready Virtual Host, and restart Apache.

We can enable , the Apache SSL module, and , needed by some of the settings in our SSL snippet, with the command:

Next, we can enable our SSL Virtual Host with the command:

We will also need to enable our file, to read in the values we set:

At this point, our site and the necessary modules are enabled. We should check to make sure that there are no syntax errors in our files. We can do this by typing:

If everything is successful, you will get a result that looks like this:

The first line is just a message telling you that the directive is not set globally. If you want to get rid of that message, you can set to your server’s domain name or IP address in . This is optional as the message will do no harm.

If your output has in it, your configuration file has no syntax errors. We can safely restart Apache to implement our changes:

4: Создание виртуальных хостов

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

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

Затем нужно внести в каждый файл приведенные ниже конфигурации, которые представляют собой упрощенную версию двух конфигурационных файлов: конфигурационного файла виртуального сервера по умолчанию (/etc/apache2/sites-available/default) и конфигураций SSL по умолчанию (/etc/apache2/sites-available/default-ssl).

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

приведенный ниже код не ссылается на такой сертификат.

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

В данном коде нужно отредактировать несколько строк:

ServerAdmin: введите адрес электронной почты вебмастера;

ServerName: укажите доменное имя

Обратите внимание: домен нужно указывать без www;

DocumentRoot: укажите каталог, в котором хранится информация сайта. В настоящее время код указывает на каталог Apache по умолчанию

Скорее всего, на сервере будет два разных root-каталога для двух различных виртуальных хостов;

SSLCertificateFile: данная директива указывает на расположение файла сертификата. Сертификат для каждого сайта хранится в созданном ранее отдельном каталоге (см. раздел 1);

SSLCertificateKeyFile: эта директива указывает на расположение ключа сертификата. Ключ для каждого сертификата хранится в одном каталоге с самим сертификатом.

Перенаправить HTTP на HTTPS с помощью .htaccess

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

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

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

Чтобы перенаправить весь HTTP-трафик на HTTPS, откройте корневой файл и добавьте в него следующий код:

Вот что означает код:

  • — включает возможности перезаписи.
  • — проверяет наличие HTTP-соединения, и если условие выполняется, выполняется следующая строка.
  • — перенаправить HTTP на HTTPS с кодом статуса 301 (перемещен навсегда). Убедитесь, что вы изменили доменное имя.

В приведенном ниже примере есть дополнительное условие, которое проверяет, начинается ли запрос с . Используйте его, чтобы заставить всех посетителей использовать HTTPS-версию сайта без www:

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

Configuration

Is it possible to provide HTTP and HTTPS
from the same server?

Yes. HTTP and HTTPS use different server ports (HTTP binds to
port 80, HTTPS to port 443), so there is no direct conflict between
them. You can either run two separate server instances bound to
these ports, or use Apache’s elegant virtual hosting facility to
create two virtual servers, both served by the same instance of Apache
— one responding over HTTP to requests on port 80, and the other
responding over HTTPS to requests on port 443.

Which port does HTTPS use?

You can run HTTPS on any port, but the standards specify port 443, which
is where any HTTPS compliant browser will look by default. You can force
your browser to look on a different port by specifying it in the URL. For
example, if your server is set up to serve pages over HTTPS on port 8080,
you can access them at

How do I speak HTTPS manually for testing purposes?

While you usually just use

for simple testing of Apache via HTTP, it’s not so easy for
HTTPS because of the SSL protocol between TCP and HTTP. With the
help of OpenSSL’s command, however, you can
do a similar check via HTTPS:

Before the actual HTTP response you will receive detailed
information about the SSL handshake. For a more general command
line client which directly understands both HTTP and HTTPS, can
perform GET and POST operations, can use a proxy, supports byte
ranges, etc. you should have a look at the nifty
cURL tool. Using this, you can
check that Apache is responding correctly to requests via HTTP and
HTTPS as follows:

Why does the connection hang when I connect
to my SSL-aware Apache server?

This can happen when you try to connect to a HTTPS server (or virtual
server) via HTTP (eg, using instead of
). It can also happen when trying to
connect via HTTPS to a HTTP server (eg, using
on a server which doesn’t support HTTPS,
or which supports it on a non-standard port). Make sure that you’re
connecting to a (virtual) server that supports SSL.

Why do I get «Connection Refused» messages,
when trying to access my newly installed Apache+mod_ssl server via HTTPS?

Why are the variables
not available to my CGI & SSI scripts?

How can I switch between HTTP and HTTPS in relative
hyperlinks?

Usually, to switch between HTTP and HTTPS, you have to use
fully-qualified hyperlinks (because you have to change the URL
scheme). Using however, you can
manipulate relative hyperlinks, to achieve the same effect.

RewriteEngine on
RewriteRule   "^/(.*)_SSL$"   "https://%{SERVER_NAME}/$1" 
RewriteRule   "^/(.*)_NOSSL$" "http://%{SERVER_NAME}/$1"  

Как попробовать

Вы можете запустить собственный веб-сервер прямо на своём компьютере за пять минут. Самый простой способ — скачать MAMP: это пакет для веб-разработчика, в который встроен менеджер баз данных, веб-сервер, движок PHP и другие полезные для веба штуки. Работает так:

  1. Скачиваете MAMP для своей операционки.
  2. Устанавливаете.
  3. Запускаете программу и в ней говорите Start.
  4. MAMP скажет вам, что сервер запущен, откликается по такому-то адресу и смотрит в такую-то директорию на вашем компе (всё это можно настроить, а можно оставить так). Скорее всего, ваш веб-сервер начнёт откликаться из браузера по запросу http://localhost. 
  5. Зайдите на http://localhost/MAMP/ — там будет вся информация о вашем сервере вплоть до ключей от базы данных и ссылки на запуск инструмента администрирования БД phpMyAdmin.

Далее можно, например, скачать дистрибутив Вордпресса, распаковать его в папку, где работает ваш сервер, и попробовать эту штуку установить. Придётся создавать БД через phpMyAdmin, но об этом в другой раз. 

Обратите внимание: MAMP — это локальный сервер. Из внешнего интернета его не видно

Если хотите настроить видимый из внешнего интернета сайт, это несколько сложнее.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Встречается в статьях

Инструкции:

  1. Использование playbook и роли в Ansible на примере установки NGINX
  2. Как настроить связку Apache + HTTP/2 на Linux CentOS 7
  3. Как установить и настроить связку Asterisk + FreePBX на CentOS 8
  4. Настройка веб-сервера на CentOS 7 со всем необходимым для правильной работы
  5. Настройка веб-сервера на CentOS 8 со всем необходимым для правильной работы
  6. Инструкция по установке и использованию GLPI на Linux CentOS
  7. Как вручную настроить сервер хостинга на CentOS 7
  8. Как установить и настроить iRedMail на Linux CentOS
  9. Настройка почтового сервера iRedMail на Ubuntu
  10. Установка и настройка кластера Kubernetes на Linux Ubuntu
  11. Как настроить почту для корпоративной среды на CentOS 8
  12. Как настроить почту для корпоративной среды на Ubuntu Server
  13. Настройка веб-сервера на Ubuntu со всем необходимым для правильной работы
  14. Как настроить почту на базе Postfix для корпоративной среды
  15. Установка и настройка файлового сервера Samba на CentOS 8
  16. Установка и настройка файлового сервера Samba на Ubuntu
  17. Как установить и настроить прокси-сервер Squid на Ubuntu Server
  18. Настройка портала TeamPass для совместного хранения паролей
  19. Установка Nginx + PHP + MySQL на Astra Linux
  20. Установка веб-сервера Apache на FreeBSD
  21. Установка и настройка почтового сервера Zimbra на Linux
  22. Как собрать свой собственный deb-пакетов с нуля под Linux Debian

Мини-инструкции:

  1. Как пользоваться командой systemctl
  2. Как установить и работать с Redis на сервере под управлением Linux Ubuntu
  3. Установка и настройка memcached на CentOS 7 и 8
  4. Установка и настройка XCache на CentOS 7
  5. Настройка поддержки Firebird в PHP на CentOS и Ubuntu
  6. Как настроить Apache для работы по HTTPS (SSL)
  7. Как установить PHP 7 на Linux CentOS 7
  8. Установка и базовая настройка vsFTPd на Ubuntu Server
  9. Инструкция по установке и настройке PostfixAdmin на CentOS 7
  10. Получение бесплатного сертификата Lets Encrypt
  11. Настройка logrotate в примерах
  12. Установка и настройка OwnCloud на CentOS 7 или 8
  13. Xibo сервер на Linux Ubuntu — установка и настройка
  14. Как управлять процессами в операционной системе Linux
  15. Инструкция по установке и настройке phplist
  16. Как и где настраивать время сессии PHP
  17. Инструкция по переходу на новую версию GLPI
  18. Как установить и настроить сервер Haproxy на Linux CentOS 7
  19. Анализ и мониторинг нагрузки веб-сервера на базе Linux
  20. Установка и настройка умного дома от MajorDoMo
  21. Установка и настройка Nextcloud + NGINX на Ubuntu
  22. Обновления портала базы знаний phpMyFAQ до последней версии
  23. Инструкция по обновления веб-приложения phpMyAdmin на Linux
  24. Установка и настройка SAMS для управления Squid на CentOS 7
  25. Установка и настройка сервера Redmine + Apache + passenger
  26. Установка панели управления ISPmanager на Ubuntu или CentOS
  27. Использование Roundcube для нескольких почтовых серверов
  28. Как создать свой собственный образ для Docker
  29. Инструкция по развертыванию Nextcloud с Apache на Ubuntu
  30. Добавление еще одной версии PHP в Apache на CentOS 7
  31. Установка и настройка CRM Битрикс24 от 1С на Linux CentOS
  32. Установка веб-интерфейса phpMyAdmin на CentOS для управления MySQL
  33. Установка платформы .NET Framework на Linux Ubuntu
  34. Установка и настройка сервера 1С + PostgreSQL на Linux Ubuntu
  35. Настройка сервера видеоконференцсвязи OpenMeetings на Linux CentOS 8
  36. Инструкция по установке и настройке phplist на Linux Ubuntu
  37. Установка и настройка сервера NextCloud на CentOS 8
  38. Установка и настройка модуля PageSpeed для NGINX и Apache
  39. Установка и использование почтового клиента WebMail Lite на Linux CentOS
  40. Настройка сервера мониторинга Zabbix 5 на Linux CentOS 8
  41. Организация сервиса календаря и адресной книги на базе Baikal
  42. Настройка аутентификации доменных пользователей в Nextcloud
  43. Примеры настройки сервисов и их установки с помощью ролей в Ansible
  44. Публикация баз 1С как веб-приложение в Apache на операционной системе Windows
  45. Настройка Runner в GitLab CI/CD для загрузки изменений проекта на веб-серверы после коммита
  46. Как установить веб-сервер Tomcat на Linux Ubuntu Server
  47. Установка и настройка системы CI/CD Teamcity на Linux Ubuntu Server
  48. Как настроить свой приватный репозиторий для хранения образов Docker
  49. Как установить, настроить и подключиться к MongoDB на Linux Ubuntu
  50. Шпаргалка по работе с системой управления конфигурациями Ansible
  51. Как установить на CentOS и выполнить пробный запуск программы jmeter

Шаг 2 – Создание сертификата SSL

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

Мы можем создать ключ SSL и файлы сертификата с помощью команды :

После ввода команды откроется диалоговое окно, где вы можете ввести информацию о своем сайте. Прежде чем перейти к этому шагу, посмотрим, что делает отправляемая нами команда:

  • : это инструмент командной строки, предназначенный для создания сертификатов, ключей и других файлов OpenSSL и управления ими.
  • : указывает, что мы хотим использовать управление запросами на подписание сертификатов X.509 (CSR). X.509 — это инфраструктура открытых ключей, используемая стандартами SSL и TLS для управления ключами и сертификатами.
  • : предписывает OpenSSL пропустить опцию защиты нашего сертификата кодовой фразой. Для чтения этого файла при запуске сервера без вмешательства пользователя нам потребуется Apache. Кодовая фраза предотвратит это, поскольку в ином случае нам пришлось бы вводить ее после каждого перезапуска.
  • : эта опция устанавливает период действия сертификата. Здесь мы устанавливаем срок действия в один год. Многие современные браузеры отклоняют любые сертификаты, срок действия которых превышает один год.
  • : указывает, что мы хотим сгенерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть предписывает создать ключ RSA длиной 2048 бит.
  • : эта строка указывает OpenSSL, где разместить генерируемый файл закрытого ключа.
  • : указывает OpenSSL, где разместить создаваемый сертификат.

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

Важно, чтобы значение в этом поле совпадало с вводимыми в адресную строку браузера данными для доступа к сайту, поскольку несоответствие приведет к дополнительным ошибкам безопасности

Полный список диалогов будет выглядеть примерно так:

Оба созданных вами файла будут помещены в соответствующие подкаталоги в каталоге .

Затем мы обновим конфигурацию Apache для использования нового сертификата и ключа.

Настройка кэширования

В общих сведениях настроек nextcloud мы получим предупреждение, если не настроим кэширование.

Сначала устанавливаем memcached и php-apcu:

apt-get install memcached php-memcached php-apcu

После разрешаем автозапуск и запускаем сервис кэширования:

systemctl enable memcached

systemctl start memcached

Перезапускаем apache:

systemctl restart apache2

Отредактируем конфигурационный файл nextcloud:

vi /var/www/nextcloud/config/config.php

Добавляем:


  ‘memcache.local’ => ‘\OC\Memcache\APCu’,
  ‘memcache.distributed’ => ‘\OC\Memcache\Memcached’,
  ‘memcached_servers’ => ,
  ],

Создание виртуального хоста с поддержкой ssl

Далее необходимо либо создать новый виртуальный хост apache, либо отредактировать существующий в файле /etc/httpd/conf/httpd.conf. Добавляем в конец файла:

<VirtualHost *:443>
 SSLEngine on
 SSLCertificateFile /root/cert/zeroxzed.ru.crt
 SSLCertificateKeyFile /root/cert/zeroxzed.ru.kye
 <Directory /var/www/vhosts/zeroxzed.ru/www>
 AllowOverride All
 </Directory>
 DocumentRoot /var/www/vhosts/zeroxzed.ru/www
 ServerName zeroxzed.ru
 </VirtualHost>

После сохранения проверяем конфигурацию apache:

# httpd -t

Если появляется предупреждение:

 _default_ VirtualHost overlap on port 443, the first has precedence

То ищем в /etc/httpd/conf/httpd.conf строчку NameVirtualHost *:80 и добавляем после нее NameVirtualHost *:443

Снова проверяем. Если ошибок нет, перезапускаем апач и заходим на сайт, прописав в адресной строке https, вместо http. Теперь ваш сайт доступен по протоколу https. Но пользователи сайта могут об этом не знать. Было бы разумным сделать переадресацию с открытого протокола на защищенный. Сделаем это.

Шаг 1 – Создание сертификата SSL

Протоколы TLS и SSL используют сочетание открытого сертификата и закрытого ключа. Секретный ключ SSL хранится на сервере. Он используется для шифрования отправляемых на клиентские системы данных. Сертификат SSL находится в открытом доступе для всех, кто запрашивает этот контент. Его можно использовать для расшифровки контента, подписанного соответствующим ключом SSL.

Мы можем создать самоподписанный ключ и пару сертификатов OpenSSL с помощью одной команды:

Вам будет предложено ответить на ряд вопросов. Прежде чем перейти к этому шагу, посмотрим, что делает отправляемая нами команда:

  • openssl: это базовый инструмент командной строки для создания и управления сертификатами OpenSSL, ключами и другими файлами.
  • req: данная субкоманда указывает, что мы хотим использовать управление запросами подписи сертификатов X.509 (CSR). X.509 — это стандарт инфраструктуры открытых ключей, используемый SSL и TLS для управления ключами и сертификатами. Вы хотим создать новый сертификат X.509, и поэтому используем эту субкоманду.
  • -x509: это дополнительно изменяет предыдущую субкоманду, сообщая утилите, что мы хотим создать самоподписанный сертификат, а не сгенерировать запрос на подпись сертификата, как обычно происходит.
  • -nodes: этот параметр указывает OpenSSL пропустить опцию защиты сертификата с помощью пароля. Для чтения этого файла при запуске сервера без вмешательства пользователя нам потребуется Apache. Кодовая фраза может предотвратить это, поскольку нам придется вводить ее после каждого перезапуска.
  • -days 365: данный параметр устанавливает срок, в течение которого сертификат будет считаться действительным. Здесь мы устанавливаем срок действия в один год.
  • -newkey rsa:2048: указывает, что мы хотим генерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть указывает, что мы создаем ключ RSA длиной 2048 бит.
  • -keyout: эта строка указывает OpenSSL, где мы разместим создаваемый закрытый ключ.
  • -out: данный параметр указывает OpenSSL, куда поместить создаваемый сертификат.

Как мы указывали выше, эти опции создают и файл ключа, и сертификат. Нам будет задано несколько вопросов о нашем сервере, чтобы правильно вставить информацию в сертификат.

Укажите подходящие ответы. Самая важная строка — это строка, где запрашивается . Вам нужно ввести доменное имя, связанное с вашим сервером или, что более вероятно, публичный IP-адрес вашего сервера.

В целом диалоги выглядят примерно так:

Оба созданных вами файла будут помещены в соответствующие подкаталоги в каталоге .

Копирование числовых ячеек из 1С в Excel Промо

Решение проблемы, когда значения скопированных ячеек из табличных документов 1С в Excel воспринимаются последним как текст, т.е. без дополнительного форматирования значений невозможно применить арифметические операции. Поводом для публикации послужило понимание того, что целое предприятие с более сотней активных пользователей уже на протяжении года мучилось с такой, казалось бы на первый взгляд, тривиальной проблемой. Варианты решения, предложенные специалистами helpdesk, обслуживающими данное предприятие, а так же многочисленные обсуждения на форумах, только подтвердили убеждение в необходимости описания способа, который позволил мне качественно и быстро справиться с ситуацией.

Step 1 – Creating the SSL Certificate

TLS/SSL works by using a combination of a public certificate and a private key. The SSL key is kept secret on the server. It is used to encrypt content sent to clients. The SSL certificate is publicly shared with anyone requesting the content. It can be used to decrypt the content signed by the associated SSL key.

We can create a self-signed key and certificate pair with OpenSSL in a single command:

You will be asked a series of questions. Before we go over that, let’s take a look at what is happening in the command we are issuing:

  • openssl: This is the basic command line tool for creating and managing OpenSSL certificates, keys, and other files.
  • req: This subcommand specifies that we want to use X.509 certificate signing request (CSR) management. The “X.509” is a public key infrastructure standard that SSL and TLS adheres to for its key and certificate management. We want to create a new X.509 cert, so we are using this subcommand.
  • -x509: This further modifies the previous subcommand by telling the utility that we want to make a self-signed certificate instead of generating a certificate signing request, as would normally happen.
  • -nodes: This tells OpenSSL to skip the option to secure our certificate with a passphrase. We need Apache to be able to read the file, without user intervention, when the server starts up. A passphrase would prevent this from happening because we would have to enter it after every restart.
  • -days 365: This option sets the length of time that the certificate will be considered valid. We set it for one year here.
  • -newkey rsa:2048: This specifies that we want to generate a new certificate and a new key at the same time. We did not create the key that is required to sign the certificate in a previous step, so we need to create it along with the certificate. The portion tells it to make an RSA key that is 2048 bits long.
  • -keyout: This line tells OpenSSL where to place the generated private key file that we are creating.
  • -out: This tells OpenSSL where to place the certificate that we are creating.

As we stated above, these options will create both a key file and a certificate. We will be asked a few questions about our server in order to embed the information correctly in the certificate.

Fill out the prompts appropriately. The most important line is the one that requests the . You need to enter the domain name associated with your server or, more likely, your server’s public IP address.

The entirety of the prompts will look something like this:

Both of the files you created will be placed in the appropriate subdirectories under .

1С:Предприятие Бухгалтерия переход с редакции 2.0 на 3.0. Практика перевода информационной базы для работы в управляемом приложении. Промо

Из информационного выпуска 1С № 16872 от 08.07.2013г. стало известно об относительно скором необходимом переходе на редакцию 1С:Бухгалтерия 3.0. В данной публикации будут разобраны некоторые особенности перевода нетиповой конфигурации 1С:Бухгалтерия 2.0 на редакцию 3.0, которая работает в режиме «Управляемое приложение».
Публикация будет дополняться по мере подготовки нового материала. Публикация не является «универсальной инструкцией».

Update 3. Права доступа. 14.08.2013
Update 4. Добавлен раздел 0. Дополнен раздел 4. Добавлен раздел 7. Внесены поправки, актуализирована информация. 23.11.2013.

1 стартмани

5 шагов для ускорения работы Apache

Ускорить работу Apache можно на двух основных стадиях:

  • Во время компиляции – настройки при установке сервера.
  • Во время выполнения — установка параметров, влияющих на сервер во время его работы.

Настройки для ускорения Apache во время компиляции

Нужно выбирать вариант установки Apache, исходя из ваших требований. Это поможет создать быстрый и эффективный веб-сервер.

Загружайте только нужные модули

В Apache функциональность реализуется путем добавления модулей. Они бывают двух типов: статические и динамические (общие).

Чтобы посмотреть список модулей, поддерживаемых вашим сервером, используйте команду apachectl -M. Статические модули компилируются в бинарные файлы httpd, а динамические загружаются непосредственно во время выполнения.

Статические и динамические модулиключевые различия

Статические модули Динамические модули
Компилируются в бинарные файлы Добавляются во время выполнения
Требуют перекомпиляции кода Перекомпиляция не требуется
Быстро загружаются Замедляют веб-сервер

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

Но большое количество динамических или общих модулей может замедлить работу сервера Apache и сайта

Поэтому при выборе модулей требуется соблюдать осторожность

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

Выберите правильный MPM

В Apache используются MPM (мульти-процессинговые модули), которые обрабатывают запросы, приходящие на сервер. Они прослушивают сетевые порты сервера, принимая запросы и создавая дочерние процессы.

MPM бывают двух типов: Prefork и Worker. В MPM Prefork каждый процесс httpd обрабатывает один сетевой запрос. Это более безопасно по сравнению с MPM Worker, но требует большего количества памяти и ресурсов.

MPM – Prefork и Worker

MPM Prefork MPM Worker
Один поток Несколько потоков
Использует больше ресурсов Использует меньше памяти
Отказоустойчив Справляется с большим трафиком

При использовании MPM Worker Apache работает в режиме многопоточного сервера, где каждый отвечает за свой запрос. Этот вариант подходит для обработки большего трафика при ограниченных мощностях сервера.

По умолчанию большинство установок Apache используют модуль Prefork. Он применяется для обработки больших объемов трафика. Вы можете проверить, какой модуль MPM использует ваш сервер при помощи следующей команды:

Определение типа MPM на вашем веб—сервере Apache

В Apache 2.4 появилась поддержка э MPM модуля Event, который может обрабатывать множественные запросы внутри одного потока. Поэтому он работает даже быстрее, чем модуль Worker.

Архитектура Apache

Apache состоит из ядра и модулей. Ядро выполняет основные функции: обработка конфигурационных файлов, работа с протоколом HTTP, система загрузки модулей. Оно может работать самостоятельно без модулей, но тогда функционал программы будет крайне ограничен. Ядро создала команда компании Apache Software Foundation без вмешательства сторонних разработчиков.

Как можно расширить функционал веб-сервера? Для этого выпускаются модули. Модуль — это код, который расширяет функционал ядра. Они бывают статические и динамические. Статические добавляются к ядру ещё до загрузки программы, то есть пользователь выбирает программу определенной сборки. Динамические можно добавить на этапе загрузки программы при помощи встроенного модуля mod_so.

Модули отвечают за определенные возможности программы. Это может быть поддержка различных языков программирования, повышение безопасности, аутентификация пользователя, исправление ошибок и другие дополнительные функции. Таким образом, Apache — это конструктор, который можно собрать так, как нужно пользователю. Для этой программы существует более 500 модулей. Например, Multi-Processing Module (MPM) — модуль системного уровня. С его помощью можно оптимизировать Apache в условиях конкретной операционной системы.

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

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