Pull to refresh

Пошаговое руководство: Установка 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:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.