Пошаговое руководство: Установка ISPManager 5 на сервер с CentOS 6.5 для сайтов на системе управления 1С Битрикс

К написанию этой статьи меня подтолкнула задача поставленная перед Новым годом моим партнером и то, что в интернете мне не удалось найти нормально мануала для «не подготовленного» админа, все собирал урывками в течении нескольких дней. Мы, в своей веб студии использовали 5 аккаунтов shared хостинга одного из хостеров для размещения сайтов клиентов на битриксе. В месяц набегала порядочная сумма 4125 рублей, на эти деньги можно было взять целый выделенный сервер у того же Hetzner'а. К тому же я хотел опробовать свой опыт в администрировании сервера для хостинга. Всем кому интересно прошу под кат.

Описание задачи


  • Нужен выделенный сервер с большим количество ОЗУ и SSD дисками (от 32 GB ОЗУ, от 240 GB SSD);
  • Нужна панель управления хостингом, для «не админов», чтобы можно было создать сайт, базу данных, выполнить простейшие операции;
  • Нужна настройка, похожая настройке веб окружения битрикса, чтобы сайты на этой платформе нормально работали.

Итак поехали:


Я буду рассказывать от своего лица, и так, как если бы я читал, мог бы еще раз настроить такой сервер.

Выбираем сервер


Пожалуй я много времени потратил на то, чтобы найти подходящий выделенный сервер за нормальные деньги. И на мой взгляд цена/качество — это взять сервер у Hetzner'а. Я уже использую 2 сервера полгода — «полет нормальный». Техническая поддержка реагирует быстро, правда на английском языке и нет возможности работать с НДС, ну и ладно (зато налог не платим VAT). Я взял этот сервер. Описание регистрации у Hetzner и оформление заказа я опускаю, там ничего сложного нет — английский понимать нужно в любом случае. Нужна карта для оплаты VISA или MASTERCARD, и скан первой страницы паспорта (попросят им прислать по e-mail). С момента оформления заказа (30.12.13 в 23:41) до момент получения доступа к серверу (31.12.13 в 13:04) прошло всего 13 часов 25 минут.

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


После получения root доступа я решил не использовать soft'овый raid и ставил через installimage (скрипт hetzner'а в bash), но столкнулся с проблемой, с которой сталкивался и с первыми двумя серверами. После успешной установки и перезагрузке, сервер перестает пинговаться. В итоге попросил тех. поддержку установить без raid (дал им акцепт в письме). Установили в течении 2х часов и я получил свой сервер с root'ом и 1 подключенным ssd диском, второй нужно было монтировать. Я просмотрел разделы и диски подключенные:
fdisk -l
Создал папку в которую буду подключать второй ssd диск:
mkdir /sdb
Да, кстати объяснения по поводу не желания использовать RAID массив софтовый — были прецеденты, когда из-за рейда было больше проблем, чем счастья, предпочитаю бекапы на несколько источников.
Подключаемся ко второму диску:
fdisk /dev/sdb
Создаем раздел в ext4:
mkfs.ext4 /dev/sdb1
Монтируем раздел в папку /sdb:
mount /dev/sdb1 /sdb
Проверяем на ошибки:
fsck /dev/sdb1
Создаем тестовый файл, проверка на запись:
touch /sdb/test
Дальше у Hetzner при аренде выделенного сервера дается бесплатное бекап хранилище на 100 ГБ, доступное из локальной сети провайдера, я решил смонтировать его в папку на сервере для удобства сохранения бекапов площадки и сайтов. Создаем папку /backup:
mkdir /backup
И нам нужен будет дополнительный софт:
yum install glib2-devel fuse-devel libcurl-devel -y
yum install curlftpfs
yum install gcc
В папку tmp сейчас скачаем еще одну программу:
cd /tmp
Скачиваем последнюю версию сurlftpfs: (нужна для монтирования фтп ресурсов)
wget http://sourceforge.net/projects/curlftpfs/files/latest/download
Распаковываем скачанный архив:
tar xvzf curlftpfs-0.9.2.tar.gz
Заходим в разархивированную папку:
cd curlftpfs-0.9.2
Указываем место установки:
./configure --prefix=/opt/curlftpfs
Собираем:
make
make install
Такой командой мы можем смонтировать удаленную ftp дирректорию в папку:
/opt/curlftpfs/bin/curlftpfs name:password@u8******.your-backup.de /backup
Затем нам нужно добавить в автозагрузку монтирование второго диска и этой ftp папки: (поправьте если не так делаю, есть файл /etc/rc.local, который запускает команды при загрузке, в него я прописал)
/opt/curlftpfs/bin/curlftpfs name:password@u8******.your-backup.de /backup
mount /dev/sdb1 /sdb
Теперь у меня при перезагрузке сервера все папки на месте.

Установка ISPmanager 5


Причины установки именно ISPmanager 5 — долго выбирал, больше всего нравится интерфейс, новую версию взял, т.к. по заверению компании «написали с нуля» и «полностью переработали».
Идем к ним на сайт, регистрируемся, и в личном кабинете оформляем тестовую версию на 2 недели ISPmanager 5 версии, нас просят указать ip адрес нашего сервера для активации. Его мы можем взять из письма, присланного от Hetzner'а.
После этого скачиваем установочный скрипт ядра ISPmanager:
wget http://download.ispsystem.com/install.5.sh
Выполняем скрипт:
sh install.5.sh
Действуем по готовой инструкции
Там же, в разделе документации, можно ознакомиться с первичной настройкой ISPmanager'а
Расскажу на моменты, на которые нужно обратить внимание. Один из таких моментов ns сервера (указываются у регистратора домена), поскольку мы делаем сервер для хостинга сайтов, нам нужны свои ns сервера, я реализовал это так. Допустим домен нашей веб студии такой: www.example.com и я хочу, чтобы наши ns сервера выглядели так: ns1.example.com и ns2.example.com. Для этого нужно в личном кабинете сервера Hetzner'а добавить услугу Nameserver Robot, она бесплатная для тех, кто берет выделенный сервер. Спустя час, в моем кабинете появилась ссылка DNS entries, там я один раз для своего домена example.com задаю айпишник своего сервера, чтобы иметь возможность у регистратора указать ns сервера hetzner'а и выполнить таким образом базовую настройку. Добавить нужно через New DNS entry. Дальше у регистратора своего домена example.com указываем ns сервера Hetzner'а:
ns1.first-ns.de
robotns2.second-ns.de
robotns3.second-ns.com
И еще нужно в панели управления ISPmanager у своего домена (Меню: Домены -> Доменные имена) создать A записи, по аналогии с созданными вида:
ns1.example.com.
ns2.example.com.
IP адрес указать нашего сервера. То, что адрес у обоих серверов одинаковый, как меня заверила техническая поддержка hetzner'а — это нормально. После этого у остальных доменов, которые мы хотим привязать к нашему хостингу нужно указывать ns сервера уже наши ns1.example.com. и ns2.example.com.
В разделе (Меню: Настройка -> Программное обеспечение) я установил еще Веб-сервер Nginx, Веб-интерфейс для работы с электронной почтой AfterLogic (его в моей версии пришлось, поставить, удалить, затем нажать кнопку настроить, затем нажать кнопку настроить у SMTP и POP и IMAP — в разделе программного обеспечения — тогда все заработало нормально), Веб-интерфейс для администрирования MySQL (phpMyAdmin).

Настройка сервера для работы с сайтами на 1С Битрикс:


ISPmanager использует open_basedir модуль php, нужно установить Apache MPM-ITK и еще одну программу:
yum install apache2-mpm-itk
yum install php-devel
yum groupinstall "Development Tools"
После этого в /etc/httpd/conf в файлах *.conf (в том числе и в папке vhosts) нужно комментировать строку вида:
# php_admin_value open_basedir "/var/www/example/data:."
Тем самым попугаем в мониторе производительности битрикса становится больше — не знаю правда ли влияет, разработчики битрикса утверждают что влияет-влияет.
Теперь давайте поставим eaccelerator (Его я нашел как ставить, а Zend Optimizer+ который хвалят разработчики битрикса — нет).
В папку tmp сейчас скачаем: (пишем последовательно команды в bash)
cd /tmp
wget http://acelnmp.googlecode.com/files/eaccelerator-0.9.6.1.tar.bz2
tar xvjf eaccelerator-0.9.6.1.tar.bz2
cd eaccelerator-0.9.6.1
/usr/bin/phpize
./configure --enable-eaccelerator=shared --with-php-config=/usr/bin/php-config --with-eaccelerator-shared-memory
make
make install
mkdir /var/cache/eaccelerator
chmod 777 /var/cache/eaccelerator
touch /etc/php.d/eaccelerator.ini
Дальше редактируем созданный файл:
mcedit /etc/php.d/eaccelerator.ini
Находим и заменяем, если нет добавляем:
extension="eaccelerator.so"
eaccelerator.shm_size = "256"
eaccelerator.cache_dir = "/var/cache/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_ttl = "120"
eaccelerator.shm_prune_period = "1800"
eaccelerator.shm_only = "0"
eaccelerator.allowed_admin_path = ""
eaccelerator.shm_max="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"
Да и удобно все это добавлять подключившись через filezilla например через протокол SFTP под root'ом. Открыв на редактирование файл в блокноте. (многие мучаются через консоль в putty добавляют)
Сохраняем. Перезагружаем apache и nginx
service httpd restart
service nginx restart
Затем установим memcached:
yum install libevent libmemcached libmemcached-devel
yum install memcached
После чего в файле /etc/sysconfig/memcached заменить строку OPTIONS на OPTIONS="-l 127.0.0.1"
Добавляем в автозагрузку:
chkconfig memcached on
Стартуем службу:
service memcached start
Вот эти штуки по инструкциям других людей я делал, сейчас уже не помню для чего:
pecl install memcache
yum install php-pear
pecl install memcache
echo "extension=memcache.so" > /etc/php.d/memcache.ini
service httpd restart
php -m | grep memcache
yum -y install php-pecl-memcache

Завершением, устанавливаем битрикс на одном из доменов, проверяем в мониторе производительности данные, проверяем с помощью bitrix_server_test.php готовность вашего сервера для работы с Битрикс. Все тесты должны проходиться. Я не знаю пока как выключить при создании домена добавление строчки с open_basedir в *.conf файлы. я ее пока в ручную комментирую. Как найду, сделаю апдейт статьи.

Результат


На выходе мы получили настроенный сервер под хостинг сайтов с нормальной панелью управления, с рабочим функционалом и все это работает с сайтами на битриксе без веб окружения. Клиентам можно создавать пользователей и давать доступ. И самим разделить клиентов по разным пользователям своего хостинга. Есть ньансы. Я пока еще не знаю как оптимизировать сервер под «высокие нагрузки». Но сделаю апдейт статьи как настрою и опробую на нормальной нагрузке. И еще один нюанс, я не указал свои текущие настройки php.ini, там я поправил некоторые данные для битрикса. См. ниже те строки, в которые я вносил изменения:
output_buffering = 4096
safe_mode = Off
safe_mode_gid = Off
open_basedir =
realpath_cache_size = 4096k
max_execution_time = 600
max_input_time = 60
memory_limit = 1024M
display_errors = Off
post_max_size = 50M
file_uploads = On
upload_max_filesize = 50M
default_socket_timeout = 600
max_file_uploads = 50
max_input_time = 600
mbstring.internal_encoding = UTF-8
mbstring.func_overload = 2

Отдельно хотел бы вынести важные комментарии


Битриксу нужна работа файлов .htaccess для этого в httpd.conf и подобных файлах в /etc/httpd/ должно быть выставлено AllowOverride ALL (вместо NONE)

У сервера нужно правильно выставить время, я это сделал так:
mv /etc/localtime /etc/localtime-old
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
date
Проверяем время:
hwclock --show

root пароль от mysql при установке ispmanager можно посмотреть тут (Настройка -> Серверы баз данных -> нажимем на Mysql и кнопку изменить, там он записан)

При добавлении веб сайтов в панели указываете работу PHP как модуль Apache
Tags:
битрикс, хостинг, администрирование linux-систем, ispmanager, centos 6

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.