Неполадки в работе веб-сервера | ISPserver Перейти к основному содержанию

Помощь

Неполадки в работе веб-сервера

Если ваш сайт не открывается, то проверьте работу служб веб-сервера. Зайдите в панель управления ISPmanager по ссылке

https://<IP_вашего_сервера>:1500/ispmgr или

https://<IP_вашего_сервера>/manager/ispmgr или

https://<IP_вашего_сервера>/ispmgr

В панели управления ISPmanager зайдите в раздел «Мониторинг и журналы» — «Службы». Проверьте, что около служб nginx и httpd включены лампочки, в противном случае выделите нужную службу и нажмите кнопку «Старт».

Если не удается включить эти службы через ISPmanager, то подключитесь к серверу по ssh и запустите веб-сервер командами консоли, приведенными ниже в таблице.

Команда запуска веб-сервера

Запустить Web-cервер Apache

FreeBSD: /usr/local/etc/rc.d/apache22 start

Debian/Ubuntu: systemctl start apache2

Centos: systemctl start httpd

Запустить Web-cервер Nginx

FreeBSD: /usr/local/etc/rc.d/nginx start

Debian/Ubuntu/Centos: systemctl start nginx

Веб-сервер Apache

При запуске Apache возможны следующие ошибки, которые отобразятся в командной строке.

bad user name

apache2: bad user name usertest

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

Apache-mpm-ITK использует AssignUserID
Apache-mpm-Prefork использует SuexecUserGroup.

Чтобы узнать вашу версию Apache, выполните команду

apache2ctl -V | grep -i 'Server MPM'

или

apachectl -V | grep -i 'Server MPM'

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

<VirtualHost 127.0.0.1:80 >
       ServerName domain.ru
       CustomLog /var/www/httpd-logs/1.rootina.fvds.ru.access.log combined
       DocumentRoot /var/www/user/data/www/1.rootina.fvds.ru
       ErrorLog /var/www/httpd-logs/domain.ru.error.log
       ServerAdmin webmaster@domain.ru
       ServerAlias www.domain.ru
       SuexecUserGroup usertest user
       AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
       AddType application/x-httpd-php-source .phps
       php_admin_value open_basedir "/var/www/user/data:."
       php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f webmaster@domain.ru"
       php_admin_value upload_tmp_dir "/var/www/user/data/mod-tmp"
       php_admin_value session.save_path "/var/www/user/data/mod-tmp"
</VirtualHost>

Перезапустите веб-сервер после внесения изменений.

Syntax error

Syntax error on line 310 of /etc/apache2/apache2.conf:
Invalid command 'helpers', perhaps misspelled or defined by a module not included in the server configuration

Это сообщение о синтаксической ошибке, допущенной в указанном файле и указанной команде. Откройте файл с ошибкой, в данном примере это /etc/apache2/apache2.conf, но в вашем случае это может быть любой другой файл, используемый Apache. Найдите в файле строку с ошибкой (в примере это 310 строка) и неправильно написанную команду (в примере - helpers). Исправьте ошибку либо закомментируйте строку, поставив знак # в ее начало.

Invalid command 'php_admin_value', perhaps misspelled or defined by a module not included in the server configuration

Проверьте, установлен ли PHP на сервере, при помощи команды

php -v

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

PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Далее проверьте, подключен ли PHP-модуль к веб-серверу Apache, при помощи команд:

Команда

Ответ

FreeBSD

grep -R -i "LoadModule php5_module" /usr/local/etc/apache22/

#  grep -R -i "LoadModule php5_module" /usr/local/etc/apache22/

/usr/local/etc/apache22/httpd.conf:LoadModule php5_module        libexec/apache22/libphp5.so

Debian\Ubuntu

grep -R -i "LoadModule php5_module" /etc/apache2/

#  grep -R -i "LoadModule php5_module" /etc/apache2/

/etc/apache2/mods-available/php5.load:LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

/etc/apache2/mods-enabled/php5.load:LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Centos

grep -R -i "LoadModule php5_module" /etc/httpd/

# grep -R -i "LoadModule php5_module" /etc/httpd/

/etc/httpd/conf.d/php.conf.rpmsave:  LoadModule php5_module modules/libphp5.so

/etc/httpd/conf.d/php.conf.rpmsave:  LoadModule php5_module modules/libphp5-zts.so

/etc/httpd/conf.d/php.conf:  LoadModule php5_module modules/libphp5.so

/etc/httpd/conf.d/php.conf:  LoadModule php5_module modules/libphp5-zts.so

/etc/httpd/conf.d/php.conf:  LoadModule php5_module modules/libphp5.so

Для ОС Debian\Ubuntu модуль PHP подключен только в случае загрузки его из директории, выделенной жирным шрифтом в таблице выше.
Для ОС Centos проверьте, что модуль PHP указан в файле /etc/httpd/conf.d/php.conf для вашей версии Apache. В случае Apache-Prefork запись имеет вид:

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>

в случае Apache-ITK:

<IfModule itk.c>
   LoadModule php5_module modules/libphp5.so
</IfModule>

Если вы получили в результате выполнения команды ответ

/usr/local/etc/apache22/httpd.conf:#LoadModule php5_module

то это значит, что модуль PHP прописан, но строка закомментирована. Зайдите в указанный в ответе файл (в данном случае это /usr/local/etc/apache22/httpd.conf) и уберите знак #.

Если PHP не был установлен на веб-сервер, выполните его установку приведенными ниже командами.

Операционная система Команда
FreeBSD cd /usr/ports/www/mod_php55; make install clean
Debian\Ubuntu apt-get install libapache2-mod-php5

В случае ОС Centos модуль PHP отдельно устанавливать не нужно. Проверьте, есть ли на сервере библиотека PHP при помощи команды:

ls /etc/httpd/modules/libphp5.so

При положительном ответе системы вы получите ответ:

# ls /etc/httpd/modules/libphp5.so
/etc/httpd/modules/libphp5.so

Это означает, что библиотека есть, и вам нужно выполнить настройку файла /etc/httpd/conf.d/php.conf, как описано выше.

Если библиотеки PHP на сервере нет, то выполните установку PHP командой:

yum install php

Обратите внимание, что если PHP все же установлен, а вы все-равно выполняете эту команду, то результате может быть выполнена установка новой версии PHP!

Перезапустите веб-сервер Apache после внесения изменений.

Server reached MaxClients setting

server reached MaxClients setting, consider raising the MaxClients setting

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

Для FreeBSD это

/usr/local/etc/apache22/extra/httpd-mpm.conf

Для Debian/Ubuntu это

/etc/apache2/apache2.conf
Версия Apache <IfModule mpm_itk_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients <Нужное значение>
MaxRequestsPerChild 0
</IfModule>
Apache Prefork <IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients <Нужное значение>
MaxRequestsPerChild 0
</IfModule>

Для Centos это

/etc/httpd/conf/httpd.conf
Версия Apache <IfModule itk.c>
StartServers 8
MinSpareServers 8
MaxSpareServers 10
MaxClients <Нужное значение>
MaxRequestsPerChild 1000
</IfModule>
Apache Prefork <IfModule prefork.c >
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients <Нужное значение>
MaxRequestsPerChild 0
</IfModule>

Оптимальное <Нужное значение> параметра MaxClients рассчитывается по формуле:

MaxClients=(M-30%)/H,

где М - объем оперативной памяти на сервере, Н - память, которую требует служба httpd.

Например, пусть при 2 Гб оперативной памяти (М=2Гб=2048Мб) httpd занимает 35 Мб. Тогда по формуле (2048-30%)/35=40,96~41. MaxClients=41 - это оптимальное значение, которое гарантирует нормальную работу сервера.Перезапустите веб-сервер Apache после внесения изменений.

Out of memory

Fatal error: Out of memory

Ошибка возникает, если на сервере не хватает оперативной памяти для загрузки сайта. Можно уменьшить значение MaxClients, как описано выше, но это одна из возможных причин нехватки памяти. Нужен детальный анализ причины возникновения этой ошибки.

Веб-сервер Nginx

При запуске Nginx возможны следующие ошибки, которые отобразятся в консоли.

Restarting nginx: nginx: [emerg] unknown directive "Basic" in /etc/nginx/nginx.conf:13
nginx: configuration file /etc/nginx/nginx.conf test failed
 

Unknown directive

Ошибка возникает, если в конфигурационном файле указана неизвестная директива. Путь к файлу указан в ошибке, в данном примере это /etc/nginx/nginx.conf. Зайдите в эту директорию, откройте nginx.conf и исправьте ошибку либо закомментируйте строку. В данном примере нужно найти 13 строку указанного файла, в ней найти неизвестную директиву “Basic” и исправить ошибку. Чтобы закомментировать строку, поставьте в ее начале знак #.

Could not build the server_names_hash

nginx: [emerg] could not build the server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size:64
 

Если возникла такая ошибка, то нужно уменьшить длину доменного имени или количество имен серверов, поскольку эти величины ограничены значениями параметров. Можно также увеличить значение этих параметров:

server_names_hash_bucket_size  128;
server_names_hash_max_size 1024;

Не доступен IP адрес(bind() to failed)

nginx: [emerg] bind() to 128.11.11.11:80 failed (49: Can't assign requested address)

Эта ошибка говорит о том, что не доступен IP-адрес, который указан в конфигурационном файле. В данном примере это 128.11.11.11, которого на самом деле не существует ни на одном интерфейсе сервера. Зайдите в конфигурационный файл Nginx (/etc/nginx/nginx.conf), найдите секцию server и исправьте некорректный IP-адрес. Если домен с таким адресом не найден в nginx.conf, то создайте домен через панель ISPmanager.

Назад к категории