Помощь

Все разделы помощи → Вопросы по Linux VPS

Установка mod_rpaf

При работе связки nginx+apache, HTTP запросы сначала обрабатываются с помощью nginx, а потом передаются apache. В этом случае HTTP запрос происходит с IP адреса, на котором расположен nginx, а не с IP, с которого на самом деле пришёл запрос. Это создаёт определённые неудобства: в скриптах форумов/блогов/гостевых книг/etc IP пользователей, оставивших ответ на странице, указываются как IP сервера.

mod_rpaf служит для того, чтобы восстановить настоящий IP после обработки запроса nginx'ом.

Как установить mod_rpaf:

1. Устанавливаем пакет httpd-devel:

yum -y install httpd-devel

2. Скачиваем и устанавливаем mod_rpaf:

cd /usr/local/src
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

3. Далее нужно создать файл конфигурации mod_rpaf - /etc/httpd/conf.d/rpaf.conf

и добавить в него следующие строки:

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFproxy_ips 127.0.0.1 xx.xx.xx.xx yy.yy.yy.yy

где xx.xx.xx.xx и yy.yy.yy.yy - IP адреса вашего сервера. Если на сервере более двух IP, добавьте их по той же аналогии.

Далее требуется перезапустить Apache, для этого выполните команду

service httpd restart

4. В nginx внутри блока http {} должны быть указаны строки:

proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

если модифицируется nginx.conf, следует перезапустить nginx:

/etc/init.d/nginx stop
/etc/init.d/nginx start

5. Как проверить, работает ли установленный модуль.

На любом из доменов, которые расположены на Вашем сервере, разместите файл test.php с содержимым:

<?
echo $_SERVER['REMOTE_ADDR'];
?>

Далее зайдите по ссылке http://domain.tld/test.php, где domain.tld - имя вашего домена. Если как результат отображается IP, отличающийся от IP вашего сервера, модуль работает корректно.

Параметр MaxClients и установка nginx

Если вы являетесь владельцем виртуального выделенного севера(VPS), и столкнулись с проблемой недоступности ваших сайтов (невозможно зайти на сайт через броузер), но при этом на вашем сервере показатели нагрузки являются минимальными, а перезапуск веб-сервера Apache (httpd в панели управления сервером Parallels) возобновляет работу сайтов только на некоторое время, причиной подобной ситуации может быть слишком большое количество одновременных обращений к вашим сайтам. В логе ошибок (error.log) веб-сервера Apache Вы можете увидеть:

[error] server reached MaxClients setting, consider raising the MaxClients setting

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

Мы рекомендуем следующий способ решения данной проблемы:

Метод заключается в установке дополнительного веб-сервера nginx, который будет осуществлять акселерацию http соединений (http acceleration).

Некоторые панели управления сервером позволяют сконфигурировать nginx в автоматическом режиме.

Панель управления ISPManager поддерживает подобную функцию. Для установки nginx потребуется выполнить следующие действия:

1. Зайдите на сервер по SSH под пользователем root (для работы с ssh мы рекомендуем программу Putty, которую можно скачать с сайта производителя: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)

2. Если Ваш сервер работает под управлением ОС CentOS, через ssh выполните следующие команды:

  wget http://download.fedora.redhat.com/pub/epel/5/i386/nginx-0.6.39-5.el5.i386.rpm

rpm -i nginx-0.6.39-4.el5.i386.rpm
/usr/local/ispmgr/sbin/pkgctl -D cache

3. После того, как команды выполнятся, зайдите в ISPManager

4. Далее в главном меню (находится с левой стороны), в разделе "Настройки сервера" нажмите на ссылку "Возможности"

5. В открывшемся разделе выберите из списка "Nginx - быстрый и лёгкий WWW сервер для кэширования", и нажмите на иконку "Включить"

Nginx установлен, и готов к работе. Теперь он будет осуществлять акселерацию HTTP соединений, а также будет обрабатывать запросы к статической информации (изображения, файлы стилей CSS, медиа-файлы mp3/mpeg/avi, архивы zip/gz/rar), что существенно снизит количество обращений к Apache.

Если на Вашем сервере установлена другая панель управления, nginx нужно будет устанавливать вручную. Способы установки и конфигурирования данного ПО Вы можете посмотреть на официальном сайте производителя - http://sysoev.ru/nginx/download.html.

Если установка вызывает у вас затруднения, наши специалисты могут установить nginx на ваш сервер на основе услуги почасового администрирования.

Внимание!

Если после установки nginx, при добавлении домена, пропадает доступ к сайтам по протоколу http, вам необходимо внести следующие изменения в файле /etc/init.d/nginx

Найти строку:

killproc $prog -QUIT

Удалить из этой строки: "-QUIT"

Скрипт для создания резервных копий MySQL баз

В ходе работы с VPS сервером может возникнуть необходимость создания резервных копий баз данных не зависимо от данной функции в панели управления сервером. Для этого можно воспользоваться следующим скриптом:

  #!/bin/bash

  DBACCESS="-u root -pPASSWORD"
  BASES=`/bin/echo "SHOW DATABASES" | /usr/bin/mysql $DBACCESS | /bin/grep -v Database`
  TODAY=`/bin/date '+%Y-%m-%d_%H-%M-%S'`
  KEEP=10

  BACKUP_PATH=/var/backup

  BASES_PATH=$BACKUP_PATH/bases

  for base in $BASES; do
   if [ `/bin/ls -1 /var/lib/mysql/$base | /bin/grep -v db.opt | /usr/bin/wc -l` -gt 0 ]; then
   /bin/mkdir -p $BASES_PATH/$base
   /bin/echo -n "Dumping $base... "
   /usr/bin/mysqldump --default-character-set=utf8 -f $DBACCESS $base | gzip > $BASES_PATH/$base/$base.$TODAY.sql.gz
  
   /bin/echo "done"
   COUNT=`/bin/ls -1 $BASES_PATH/$base/$base* | /usr/bin/wc -l`
   while [ $COUNT -gt $KEEP ]; do
   OLD=`/bin/ls -1 $BASES_PATH/$base/$base* | /bin/sort | /usr/bin/head -1`
   /bin/rm $OLD
   COUNT=`/bin/ls -1 $BASES_PATH/$base/$base* | /usr/bin/wc -l`
  
   done
   fi
  done

1. Сохраняем данный скрипт в директории /etc/cron.daily/ под именем backupbases.sh

2. Делаем данный скрипт исполняемым:

-bash-3.1# chmod a+x backupbases.sh

Резервные копии будут делаться каждую ночь и сохраняться в директории /var/backup/

Ниже указано в каких файлах хранятся root-пароли к MySql:

1) Если установлена панель управления сервером Plesk (Parallels)

Пароль хранится в файле /etc/psa/.psa.shadow

пользователь - admin

2) Если установлена панель управления сервером ISPManager

ISPManager -> Настройки сервера -> Серверы баз данных -> MySQL -> Пароль

пользователь - root

3) Если установлена панель управления сервером DirectAdmin

Пароль хранится в файле /usr/local/directadmin/conf/mysql.conf , параметр passwd

пользователь - da_admin

4) Если установлена панель управления сервером cPanel

Пароль хранится в файле /root/.my.cnf

пользователь - root

*Пользователь указывается в строке:

DBACCESS="-u root -pPASSWORD"

параметр -u

Установка Zend Optimizer

1. Переходим в директорию /tmp:

# cd /tmp 

2. Загружаем дистрибутив с сайта производителя http://zend.com

# wget http://downloads.zend.com/optimizer/3.0.0/ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz

3. Распаковываем архив:

# tar -xzf ZendOptimizer-3.0.0-linux-glibc21-i386.tar.gz

4. Переходим в нужную нам директорию ZendOptimizer-3.0.0-linux-glibc21-i386:

# cd ZendOptimizer-3.0.0-linux-glibc21-i386 

5. Начинаем установку:

# ./install>

На экране приветствия необходимо нажать Enter, после того как ознакомимся с лицензионным соглашением, нажимаем Enter, принимаем соглашение нажатием Y.

В качестве директории размещения указываем /usr/local/Zend и нажимаем OK, на следующем экране указываем размещение php.ini, по умолчанию это /etc.

На вопрос «Вы используете Apache» отвечаем No.

6. Перезапускаем Apache командой:

# service httpd restart

Важно! При наличие иных акселераторов они должны быть установлены в /etc/php.ini ранее, чем ZendOptimizer. Большинство последних панелей Plesk устанавливает автоматически IonCube, что не позволит запуститься Apache после установки ZendOptimizer.

Для отключения IonCube перейдите в /etc/php.d/ioncube-loader.ini и поставьте # в первой строке файла перед zend_extension и перезапустите apache.

Установка и использование eAccelerator

eAccelerator это свободно-распространяемый PHP акселератор, оптимайзер и средство для кеширования динамического контента. Он увеличивает производительность PHP скриптов за счет их кеширования в скомпилированном состоянии, тем самым предотвращая их постоянную перекомпиляцию. В результате происходит увеличение скорости их выполнения. eAccelerator обычно уменьшает нагрузку на сервер и увеличивает скорость исполнения PHP кода на величину от 1 до 10 раз.

Скачиваем последний дистрибутив с сайта-разработчика http://eaccelerator.net/

cd /root/
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.zip
unzip eaccelerator-0.9.5.3.zip
cd eaccelerator-0.9.5.3

Затем необходимо установить дополнительно ПО:

autoconf
automake
libtool
php-devel

На примере CentOS, Fedora:

yum install autoconf automake libtool php-devel

Когда установка данных пакетов закончится, выполняем комманду:

phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config
make
make install

Находим файл php.ini (whereis php)

Добавляем в конец файла:

extension="eaccelerator.so"
eaccelerator.shm_size = "160"
eaccelerator.cache_dir = "/var/cache/php-eaccelerator"
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.debug = 0
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.name_space = ""
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "3600"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "none"
eaccelerator.sessions = "none"
eaccelerator.content = "none"
eaccelerator.allowed_admin_path = ""

Если используется Zend Optimizer:

zend_extension="/Путь_к_расширениям_php/eaccelerator.so" (Для php4 /usr/lib/php4/eaccelerator.so, для php5 /usr/lib/php/modules/eaccelerator.so)
eaccelerator.shm_size = "160" - Размер кэша совместно используемой памяти, устанавливается в мегабайтах.
eaccelerator.cache_dir = "/var/cache/php-eaccelerator" директория для дискового кэша. eAccelerator сохраняет в указанной директории бинарное представление кода, сессии и другие данные.
eaccelerator.enable = "1" С помощью этой опции можно отключать и включать eAccelerator. Значение 1 - включено, 0 - выключено.
eaccelerator.optimizer = "1"
eaccelerator.debug = 0
eaccelerator.log_file = "/var/log/httpd/eaccelerator_log"
eaccelerator.name_space = ""
eaccelerator.check_mtime = "1"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "3600" Указывает в секундах время, по истечении которого давно не используемый код должен быть удален из совместно используемой памяти при превышении объема выделяемой памяти.По умолчанию эта опция отключена, мы рекомендуем устанавливать значение от 60 до 300 при большом количестве файлов и от 900 до 1800 при малом количестве файлов.
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "none"
eaccelerator.sessions = "none"
eaccelerator.content = "none"
eaccelerator.allowed_admin_path = ""

Затем создаем каталог для временных файлов:

mkdir /var/cache/php-eaccelerator
chmod 777 /var/cache/php-eaccelerator

И перегружаем web-сервер apache

service httpd restart