Показаны сообщения с ярлыком whm/cpanel. Показать все сообщения
Показаны сообщения с ярлыком whm/cpanel. Показать все сообщения

13 ноября 2013

Протестируйте свою WHM/cPanel после обновления до 11.40

На прошлой неделе вышло обновление WHM/cPanel до версии 11.40. С этим обновлением связаны две проблемы, которые мне пришлось решать в понедельник, возможно сей пост кому-то сэкономит время.

У нас есть самописный плагин для cPanel, который автоматизирует установку и конфигурирование сайтов на основе magento для отдела QA. И после обновления этот плагин прекратил нормально работать.

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

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

Попробовал пересобрать конфигурацию веб-сервера

# /scripts/rebuildhttpdconf

Но в ответ выдает ругань вида

[Mon Nov 11 10:31:36 2013] [crit] (EAI 9)Address family for hostname not supported: alloc_listener: failed to set up sockaddr for ::

Configuration problem detected on line 170 of file /usr/local/apache/conf/httpd.conf.work.PsABU7IkikfQtoi0:     Listen setup failed

        --- /usr/local/apache/conf/httpd.conf.work.PsABU7IkikfQtoi0 ---

Ругается на ipv6 опцию и конфиг сервера не перезагружается. В новом релизе появилась поддержка IPv6 и следовательно, где-то нужно дать пинка, чтобы заработало. Немного пробежавшись по форумам cpanel нашел, что нужно просто пересобрать текущую конфигурацию в EasyApache.

# /scripts/easyapache

После завершения сборки все начинает работать.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

22 апреля 2013

WHM/cPanel: There are no databases associated with your account

Столкнулся с тем, что для некоторых пользователей в cPanel в разделе "MySQL Databases" стало долго думать, а затем выдавать ошибку "There are no databases associated with your account.".

Гугл выдает аналогичные проблемы и много вариантов решений, но мне ни одно не помогло. Базы видны в phpMyAdmin, но в cPanel с ними работать не удается.

Пока дебажил, заметил в процессах такую связку

cpsrvd (SSL) - waiting for c --llu=1366639891 --listen=3,4,5,6,7,8
 \_ cpaneld - serving 117.65.29 --llu=1366639891 --listen=3,4,5,6,7,8
    \_ /usr/local/cpanel/cpanel ./frontend/x3/sql/index.html
       \_ /usr/local/cpanel/bin/cpmysqlwrap
          \_ /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/bin/cpmysqladmin

Если подключиться к последнему процессу через strace, то видно что он ожидает на вызове read. Поскольку название скрипта намекает на связь с mysql, то смотрю список активных запросов

...
select TABLE_SCHEMA as DB,SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) AS SPACEUSED from information_schema.ta
...

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

Если несколько раз обновить страницу, то становится заметно, что ошибка появляется примерно через 2 минуты. Начинаю смотреть код скрипта и в первых строках нахожу причину

29 
30 $SIG{'ALRM'} = sub { die "Timeout: Alarm"; };
31 
32 alarm 120;
33 

Получается, что скрипт взводит "будильник" на 2 минуты и именно он мешает скрипту выполниться до конца. Меняю в 30 строке alarm 120 на alarm 300.

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

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

21 февраля 2013

mod_fcgid: read data timeout in 40 seconds

Сегодня обнаружилось, что на одном из серверов PHP скрипты падают с различными ошибками. В логах нашлось следующее

[Thu Feb 21 13:43:48 2013] [warn] [client 192.168.1.117] mod_fcgid: read data timeout in 40 seconds
[Thu Feb 21 13:43:48 2013] [error] [client 192.168.1.117] Premature end of script headers: install.php

Поскольку на сервере стоит cPanel, то проблема решается так:
  • увеличить лимит ожидания ответа (я выставил 3600 секунд), для этого нужно добавить в
    /usr/local/apache/conf/includes/pre_virtualhost_global.conf
    <IfModule mod_fcgid.c>
        FcgidIOTimeout 3600
    </IfModule>

  • обновить конфигурацию apache
    /scripts/rebuildhttpdconf

  • перезапустить apache
    service httpd restart

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

08 ноября 2012

Per-user конфигурация php в WHM/cPanel

SUPHP


Если вы используете suphp в cPanel, то у вас может возникнуть проблема, когда для разных сайтов потребуется различная конфигурация. Из коробки в cPanel конфигурация PHP берется из /usr/local/lib/php.ini. Чтобы создать per-user конфиг нужно:

  • создать файл /home/username/php.ini и добавить в него нужные переопределения относительно общего конфига /usr/local/lib/php.ini. Я туда дописал

    max_execution_time = 7200
  • создать файл /home/username/public_html/.htaccess и добавить в него

    SetEnv PHPRC /home/username/php.ini

Аналогично можно сделать, если иные настройки php нужно сделать не для всех хостов пользователя, а только для одного или нескольких субдоменов. В последнем случае .htaccess нужно положить в соответствующем docroot'е.

CGI/FastCGI


Если на сервере PHP работает в режиме CGI/FastCGI, то начиная с PHP 5.3.0 появилась поддержка INI-файлов в стиле .htaccess на уровне каталога. Для изменения параметров интерпретатора нужно:

  • создать файл .user.ini (имя файла зависит от значения параметра user_ini.filename) в docroot'e сайта.

    xdebug.remote_enable = On
    xdebug.remote_host = 192.168.1.115
    xdebug.remote_port = 9000
    xdebug.remote_mode = req
  • подождать пока истечет период обновления (зависит от значения user_ini.cache_ttl) или перезагрузить веб-сервер.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

06 ноября 2012

[ipcheck] Problem with DNS setup on cpanel

Дошли руки разобраться с письмами "которые нельзя игнорировать", которыми спамит свежеустановленная WHM/cPanel. Письма выглядят так:

Subject: [ipcheck] Problem with DNS setup on cpanel

IMPORTANT: Do not ignore this email.

Your hostname (cpanel) could not be resolved to an IP address. This
means that /etc/hosts is not set up correctly, and/or there is no
dns entry for cpanel. Please be sure that the contents of
/etc/hosts are configured correctly, and also that there is a
correct 'A' entry for the domain in the zone file.
Some or all of these problems can be caused by /etc/resolv.conf
being setup incorrectly. Please check that file if you believe
everything else is correct.

You may be able to automatically correct this problem by using the
'Add an A entry for your hostname' option under 'Dns Functions' in
your Web Host Manager.

Суть письма сводится к тому, что скрипт /scripts/ipcheck не может выполнить преобразование hostname в ipaddress. Данный экземпляр cPanel крутится в CentOS 6.x контейнере под управлением OpenVZ.

Сначала появилась мысль, что слетел hostname. Проверил догадку:

# hostname
cpanel

# hostname --fqdn
cpanel.srv.example.com

# dnsdomainname.
srv.example.com

# hostname -i
1.2.3.4

На первый взгляд все правильно. Полез в сам скрипт, чтобы узнать как выполняется преобразование. Из кода видно, что скрипт пытается получить ip для $hostname = Cpanel::Sys::Hostname::gethostname() и судя по письму $hostname равен "cpanel", а не "cpanel.srv.example.com". Т.е. выполняется gethostbyname($hostname).

Чтобы исправить эту ситуацию достаточно подкрутить резолвер (правильно установить параметр search в /etc/resolv.conf). В случае с контейнером OpenVZ это выглядит так:

# vzctl set 300 --searchdomain srv.example.com

Осталось проверить правильность новых настроек, запустив /scripts/ipcheck, если все в порядке, то скрипт не вернет никакого вывода.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

29 августа 2012

Как получить доступ к серверу через SSH, имея только виртуальный FTP аккаунт

Сегодня попался довольно интересный случай в саппорте, где пришлось отлаживать работу приложения на PHP, имея только виртуальный FTP аккаунт. В качестве примера я буду называть сайт www.example.com и FTP аккаунт supportuser@example.com, ограниченный корневой директорией исходников сайта. Сервер, на котором расположен сайт, работает под управлением WHM/cPanel.

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

14 марта 2012

Перенос почтовых аккаунтов и форвардеров в WHM/сPanel

Сегодня очередной раз переносил почтовые аккаунты с одного сервера на другой (оба под управлением WHM/cPanel). Потому сделаю себе пометку, чтобы не забыть в будущем как это делается.

Аккаунты и пароли переносятся на новый сервер простым копированием пользовательских ~/etc и ~/mail. Я это делаю через FTP. Чтобы перенести почтовые форвардеры, нужно копировать содержимое /etc/valiases. Обычно там больше, чем реально нужно, поэтому можно ограничиться нужными доменами.

Привязку unix юзера к домену в cPanel можно глянуть в /etc/domainusers.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

07 декабря 2011

Custom virtual host config in WHM/cPanel

Today one our customer asked to separate error logs for the different virtual hosts on the server which controlled with WHM/cPanel. Default setup stores domain logs in /usr/local/apache/domlogs/ and one common error log in /usr/local/apache/logs/error_log. This makes customer unhappy because he wants to see logs by FTP.

Direct edit of apache config prohibited because cPanel will rewrite it after any change in virtual host admin panel. I google around and find useful doc which describes how to add custom part to any level of apache config.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

05 декабря 2011

Синхронизация паролей в WHM/cPanel

  После массовой смены паролей (посредством passwd %username%) на сервере под управлением WHM/cPanel перестало пускать по FTP.

  Для решения этой проблемы нужно синхронизировать пароли пользователей с их ftp аккаунтами запустив /scripts/ftpupdate

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.