Archive

Posts Tagged ‘DirectAdmin’

Установка eAccelerator на CentOS с DirectAdmin

February 16th, 2010

Перед установкой вам может понадобиться php-devel, autoconf. Тогда просто ставим их через yum

yum install php-devel
yum install autoconf
cd /usr/local/src
mkdir eAccelerator
cd eAccelerator
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6.tar.bz2
tar -xvjf eaccelerator-0.9.6.tar.bz2
cd eaccelerator-0.9.6
export PHP_PREFIX="/usr/local"
$PHP_PREFIX/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make
make install
cd /tmp
mkdir eaccelerator
chmod 0777 eaccelerator

Теперь правим php.ini. Например, при установленных ZendOptimizer, ionCube и eAccelerator он должен быть примерно таким (порядок подключения модулей важен!):

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

[eAccelerator]
extension="eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="100"
eaccelerator.shm_prune_period="1800"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"

[Zend]
zend_extension = /usr/lib64/ioncube/ioncube_loader_lin_5.2.so
zend_extension_manager.optimizer=/usr/local/Zend/lib/Optimizer-3.3.3
zend_extension_manager.optimizer_ts=/usr/local/Zend/lib/Optimizer_TS-3.3.3
zend_optimizer.version=3.3.3
zend_extension=/usr/local/Zend/lib/ZendExtensionManager.so
zend_extension_ts=/usr/local/Zend/lib/ZendExtensionManager_TS.so

Теперь проверяем и релоадим апач:

php -i |grep eacc
/etc/init.d/httpd reload

linux, php ,

Расследование странного глюка с HTTP Basic авторизацией

February 10th, 2010

Иногда бывают такие ситуации, когда несколько глюков наложившись один на другой составляют проблему весьма и весьма загадочную на первый взгляд.
Ситуация была такая:
Проводился перенос сайтов с ВПС-а (на LAMP платформе) на дедик с таким же LAMP только еще с DirectAdmin-ом. Контент сайтов и базы данных были перенесены на новый хост. На одном из сайтов был установлен WordPress и в подпапке /st/ некий скрипт доступ к которому был ограничен в файле .htaccess лежащем в той же папке. Вот содержимое того .htaccess

Order allow,deny
Allow from all
AuthType Basic
AuthName "admin"
AuthUserFile /home/username/domains/domain.com/public_html/st/.htpasswd
Require valid-user

Вроде все очень просто и правильно. Но, при попытке доступа к domain.com/st/ мы стабильно получаем ошибку “404 – File Not Found” и отсутствие какого либо запроса на авторизацию. В логах этого виртуалхоста никаких ошибок, только 404 ответы. Все пути проверены и перепроверены. Авторизационные модули апача точно присутствуют:

apachectl -M |grep auth
 authn_file_module (static)
Syntax OK
 authn_default_module (static)
 authz_host_module (static)
 authz_groupfile_module (static)
 authz_user_module (static)
 authz_default_module (static)
 auth_basic_module (static)

В конфигах апача точно разрешено переопределение директив для этой папки AllowOverride All.
Расследование вывело на .htaccess лежащий в корне этого сайта и строки от вордпресса:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Комментируя последнюю строчку мы получали работающую авторизацию. Но при чем тут она?! =)
Пытался отключать наследование работы mod_rewrite прописывая в “нижний” .htaccess директив RewriteEngine Off – не помогало. Да и на старом ВПС-е все работало. Очень странно.
Для уточнения работы правил реврайта пришлось в виртуалхост добавить директивы:

RewriteLog "/var/log/httpd/rewrite.log"
RewriteLogLevel 3

Оказалось, что при открытии проблемного УРЛ mod_rewrite пытался преобразовать адрес uri ‘401.shtml’. Что и указало на суть проблемы. А проблема на самом деле была в том, что при переносе сайта из ДиректАдминовского каталога /public_html были удалены дефолтные файлы – обработчики ошибок:
400.shtml, 401.shtml, 403.shtml … которые были назначены в конфиге апача обработчиками соответствующих ошибок. И происходило следующее: при запросе проблемного урла апач отвечал 401 – как и должен был, и пытался отдать страницу 401.shtml, но так как она была удалена .htaccess из корня сайта преобразовывал запрос на вордпрессовый index.php отдавая 404 из-за отсутствующего 401.shtml.
Возвращение на место *.shtml файлов вернуло все в работающее состояние.
Мораль: изменять дефолтные настройки всяких сложных панелей нужно очень аккуратно.

Apache

Установка mod_geoip на Linux/FreeBSD сервер с DirectAdmin

October 17th, 2009

В случае c Linux:

yum install GeoIP GeoIP-devel
cd /root
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar zxvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a -L/usr/lib -I/usr/include -lGeoIP -c mod_geoip.c

В /etc/httpd/conf/httpd.conf добавляем:

LoadModule geoip_module /usr/lib/apache/mod_geoip.so
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
/etc/init.d/httpd restart

В случае с FreeBSD:

cd /usr/ports/net/GeoIP && make install
cd /root
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar zxvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

Добавление в конфиг апача аналогично.

FreeBSD, linux ,

Проблемы со статистикой (webalizer) в DirectAdmin

August 13th, 2009

Иногда бывает, что ДиректАдмин по каким-то причинам не считает статистику по доменам. Вот несколько пунктов по которым это может происходить:

  • отсутствует библиотека GD. Симптом: “ebalizer: error while loading shared libraries: libgd.so.2: cannot open shared object file: No such file or directory”. Чтобы починить:
    yum install gd
  • Не установлен или не работает crond. Чтобы починить:
    yum -y install vixie-cron
    service crond start
    chkconfig crond on
  • Не прописан создатель домена. Например, в общем случае, в /usr/local/directadmin/data/users/admin/users.list должны быть прописаны все пользователи DirectAdmin-а
  • Сам webalizer не корректно собран. Для проверки просто запускаем webalizer и смотрим не появятся ли ошибки.
  • Анализ логов отключен в directadmin.conf. Чтобы починить ищем и исправляем в directadmin.conf строки:
    webalizer=0
    rotation=0
  • Какие либо проблемы в самом webalizer. Чтобы проверить это запускаем обсчет статистики вручную для конкретного домена:
    /usr/bin/webalizer -p -n domain -o /home/user/domains/domain.com/stats /var/log/httpd/domains/domain.com.log
  • Логи апача по каким-либо причинам не пишутся для этого домена. Проверяем здесь /var/log/httpd/domains/domain.com.log

Чтобы проверить статистику делаем:

echo "action=tally&value=all" >> /usr/local/directadmin/data/task.queue

и смотрим /var/log/directadmin/system.log & /var/log/directadmin/error.log

Еще фишка с настройками вебалайзера. По дефолту, используются умолчальные настройки и они забиты в бинарник ДиректАдмина.
Чтобы кастомизировать настройки webalizer надо создать конфиг в /usr/local/directadmin/data/templates/custom/webalizer.conf и поместить туда директивы, которые должны отличаться от дефолтных, например:

AllReferrers    yes

Apache ,

Обновление DirectAdmin вручную

July 30th, 2009
cd /usr/local/directadmin
wget -O update.tar.gz https://www.directadmin.com/cgi-bin/daupdate?uid=111&lid=222
tar xvzf update.tar.gz
./directadmin p
cd scripts
./update.sh
service directadmin restart

Uncategorized ,

Установка nginx на сервер с DirectAdmin

April 29th, 2009

Иногда бывает необходимо поставить nginx перед апачем на сервере с уже установленным DirectAdmin-ом. И тут есть несколько варинтов:

  • Перевесить апач на 127.0.0.1, а nginx на все внешние адреса. Но для этого прийдется править конфиги всех сайтов + темплейты для создания новых хостов в ДиректАдмине (шаблоны лежат тут $DIRECTADMIN_HOME/data/templates/). Так же этот вариант опасен тем, что если что-то пойдет не так, то сайты будут не доступны некоторое время.
  • Перевесить апач на другой порт, а nginx на 80. В этом варианте тоже прийдется править шаблоны.
  • Ну и самый удобный вариант это просто добавить новый ip на сервер, но не добавлять его в ДиректАдмин. Повесить на этот ип nginx и уже на него перевести днс-ы тех доменов, которые больше всего грузят сервер. После добавления ип-а и
    /etc/init.d/network restart

    не забыть сделать

    /etc/init.d/startips start

И в /etc/httpd/conf/httpd.conf заменить

Listen 80

на

Listen 1.1.1.1:80
Listen 1.1.1.2:80

Apache, nginx , ,

Установка модулей в php собранном из сорцов

March 18th, 2009

Например, может понадобиться добавить модуль для PHP, который поставлен DirectAdmin-ом (т.е. из исходников). Сделаем это на примере модуля для memcached (предварительно надо убедиться что в системе установлен autoconf):

cd /usr/local/directadmin/custombuild/php-5.2.8/ext
wget http://pecl.php.net/get/memcache-2.2.5.tgz
tar xvf ./memcache-2.2.5.tgz
cd ./memcache-2.2.5
phpize
./configure
make && make install

Осталось прописать extension=memcache.so в php.ini. Проверяем присутствие модуля:

php -i |grep memcache
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => consistent => consistent
memcache.max_failover_attempts => 20 => 20
Registered save handlers => files user sqlite memcache

php , ,

Включение и переинициализация квот (linux)

February 11th, 2009
yum install -y quota
/sbin/quotaoff -a
/sbin/quotacheck -avugm
/sbin/quotaon -a

ЗЫ. Это помогает если в DirectAdmin не создаются пользователи с руганью: “Error with system Quotas sh: /usr/sbin/setquota: No such file or directory”

linux , ,