LINUX.ORG.RU
ФорумAdmin

Мучения с настройкой apache

 ,


0

1

Вылазят различные косяки при настройке apache. В инете найти решения не получается. Прошу советов. И такой момент, прошу отвечать только тех кто по apache реально собаку съел, если ваши знания поверхностны, то лучше воздержитесь от ответов.

1. Что делать, чтобы уменьшить потребление оперативной памяти? Стоит ли отключать некоторые включённые по умолчанию модули и прописывать какие директивы в httpd.conf? Я отключил cgi_module и cgid_module, сайтов, требующих cgi, у меня всё равно нет. Но вот запускаю я htop и вижу, что у меня висят в памяти 5 процессов httpd, каждый из которых жрёт около 25000 оперативной памяти и 500M виртуальной и это при нулевой нагрузке. Зачем так? Мне казалось сколько клиентов подключены к серверу столько и процессов должно быть, ну ещё должны быть резервные процессы запущены, чтобы как только подключится новый клиент, чтобы сайт у него тут же грузился без ожидания пока запустится новый процесс. О мультипроцессинговых моделях слово, заметил что по умолчанию стоит worker, если версия apache старая то itk, а какая модель лучше: itk, worker, prefork или event? Так сайтов у меня сейчас 5, захожу на них только я, но один будет раскручиваться, планируется нагрузка 10-50 хитов в минуту. И вообще достаточно ли VDS с 512 Мбайт памяти для развёртывания на нём LAMP или нужно минимум гигабайт? А так я, прочитав некоторые статьи в Интернете и руководствуясь собственными измышлениями, прописал некоторые директивы для worker, насколько так правильно?

KeepAlive On
KeepAliveTimeout 30
StartServers 1
MinSpareServers 1
MaxSpareServers 4
Serverlimit 4
MaxClients 4
MaxRequestsPerChild 30

2. Бывает клиент запрашивает один сайт, а ему выдаётся другой, при этом запрос возвращает нормальный код 200. Например клиент заходит не по имени виртуального хоста, а по ip-адресу, ему в этом случае должна выдаваться страница-заглушка, но вместо этого ему выдаётся сайт, чьё имя первое в алфавитном порядке. Я уже спрашивал о том как с этим бороться здесь Apache. Запретить вход на сайт по IP мне посоветовали создать виртуальный хост с именем 000-default и страницу-заглушку расположить на нём. Я так и сделал, хотя считаю этот метод костылём, ведь по правильному путь к странице-заглушке должен быть указан в директиве DocumentRoot, расположенной вне блоков <VirtualHost> до них и всё должно работать. Сегодня обнаружился ещё один косяк, я создал поддомен, но при попытке зайти на него - грузится основной сайт. Для пояснения выкладываю фрагменты конфигов:
/etc/httpd/conf/httpd.conf:

IncludeOptional conf.d/*.conf
/etc/httpd/conf.d/m????????????.info.conf:
<VirtualHost *:80>
   ServerName m????????????.info
   ServerAlias www.m????????????.info
   DocumentRoot "/var/www/m????????????.info/html"
   DirectoryIndex index.html index.htm index.php
   AddDefaultCharset UTF-8
   ErrorLog "/var/www/m????????????.info/error.log"
   CustomLog "/var/www/m????????????.info/access.log" common
   <Directory "/var/www/m????????????.info/html">
      AllowOverride All
      Options -Indexes
   </Directory>
</VirtualHost>
/etc/httpd/conf.d/ver21022018.m????????????.info.conf:
<VirtualHost *:80>
   ServerName ver21022018.m????????????.info
   DocumentRoot "/var/www/ver21022018.m????????????.info/html"
   DirectoryIndex index.html index.htm index.php
   AddDefaultCharset UTF-8
   ErrorLog "/var/www/ver21022018.m????????????.info/error.log"
   CustomLog "/var/www/ver21022018.m????????????.info/access.log" common
   <Directory "/var/www/ver21022018.m????????????.info/html">
      AllowOverride All
      Options -Indexes
   </Directory>
</VirtualHost>
То есть я захожу на ver21022018.m????????????.info, а грузится контент сайта m????????????.info.

Кто что подскажет?

★★★★★

Последнее исправление: sunny1983 (всего исправлений: 2)

Мне казалось сколько клиентов подключены к серверу столько и процессов должно быть

AFAIK так работает IIS, у Apache другой принцип...

Shulman
()

Версия апача и дистрибутива - в студию. И дай полные конфиги апача

Я так и сделал, хотя считаю этот метод костылём, ведь по правильному путь к странице-заглушке должен быть указан в директиве DocumentRoot, расположенной вне блоков <VirtualHost>

Апач умеет работать в двух режимах - без виртуалхостов ВООБЩЕ и с виртуалхостами. Во втором случае все настройки сайтов за пределами виртуалхостов - игнорируются(если они не глобальные типа настройки воркеров или модулей). Если работа идет с виртуалхостами, то очевидно, что заглушка ТОЖЕ должна быть виртуалхостом.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Версия апача и дистрибутива - в студию.

CentOS 7.4
httpd-2.4.6

sunny1983 ★★★★★
() автор топика

Патамушта надо ns у себя хостить, как делали деды в 2000 году. И не иметь никаких проблем.

Eof
()

Знание-сила. Ф. Бэкон.

Учиться, учиться и учиться. В. И. Ленин (Ульянов).

anonymous
()
Ответ на: комментарий от Pinkbyte

И дай полные конфиги апача

/var/named/myself-myself.info.zone :

ServerRoot "/etc/httpd"

Listen 0.0.0.0:80
Listen 0.0.0.0:443 https
User apache
Group apache

Include conf.modules.d/*.conf
TypesConfig /etc/mime.types
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
MIMEMagicFile conf/magic
AddDefaultCharset UTF-8
ErrorLog syslog
LogLevel info
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
CustomLog "logs/access_log" combined
EnableSendfile on
KeepAlive On
KeepAliveTimeout 30
StartServers 1
MinSpareServers 1
MaxSpareServers 4
Serverlimit 4
MaxClients 4
MaxRequestsPerChild 30

<Directory />
    AllowOverride none
    Require all denied
</Directory>
<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>
<Files ".ht*">
    Require all denied
</Files>

IncludeOptional conf.d/*.conf

/etc/httpd/conf.modules.d/00-base.conf :

LoadModule access_compat_module modules/mod_access_compat.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_socache_module modules/mod_authn_socache.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_dbd_module modules/mod_authz_dbd.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule data_module modules/mod_data.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule dir_module modules/mod_dir.so
LoadModule dumpio_module modules/mod_dumpio.so
LoadModule echo_module modules/mod_echo.so
LoadModule env_module modules/mod_env.so
LoadModule expires_module modules/mod_expires.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule filter_module modules/mod_filter.so
LoadModule headers_module modules/mod_headers.so
LoadModule include_module modules/mod_include.so
LoadModule info_module modules/mod_info.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule remoteip_module modules/mod_remoteip.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_memcache_module modules/mod_socache_memcache.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule status_module modules/mod_status.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule version_module modules/mod_version.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
/etc/httpd/conf.modules.d/00-lua.conf :
LoadModule lua_module modules/mod_lua.so
/etc/httpd/conf.modules.d/00-mpm.conf :
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
/etc/httpd/conf.modules.d/00-proxy.conf :
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
/etc/httpd/conf.modules.d/00-ssl.conf :
LoadModule ssl_module modules/mod_ssl.so
/etc/httpd/conf.modules.d/00-systemd.conf :
LoadModule systemd_module modules/mod_systemd.so

sunny1983 ★★★★★
() автор топика

ведь по правильному путь к странице-заглушке должен быть указан в директиве DocumentRoot

Откуда такие мысли?
Глобальный DocumentRoot используется только тогда, когда запрос пришел на IP-адрес и порт, не совпадающий ни с одним IP-адресом/портом в <VirtualHost>. Например, если у тебя <VirtualHost 1.1.1.1:80>, а запрос пришел на 2.2.2.2:80, то будет использован глобальный DocuementRoot.
А тебя стоит VirtualHost *:80. Звездочка совпадает с любым IP-адресом, т.е. у тебя глобальный DocumentRoot не будет использоваться вообще никогда, забудь про него. Первый виртуальный хост - дефолтный, он будет обрабатывать все запросы с несовпадающими ServerName или ServerAlias.

bigbit ★★★★★
()
Последнее исправление: bigbit (всего исправлений: 1)

реально собаку съел

Я уж думал подсказать.

Прости, не ем собак.

telikan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.