Debian GNU Linux — Установка/миграция eGroupWare

Итак, у меня новая задача — перенести программу eGroupWare со старого сервера на новый. Тем кому нужно заинсталить с нуля — тоже статья пригодится … хоть и ничего сложного в этом нет 🙂
Старая версия 1.8.003 установлена на Debian, база в mysql
Новая версия доступная в репозитарии 1.8.005, ее и будем подымать на новом сервере. Hostname нового сервера — cr.mycom.loc

Делается миграция очень просто:
1. На новом сервере устанавливаем с нуля самую новую версию mysql-server и EGW
2. На старом сервере делаем дамб базы данных и переносим его на новый сервер
3. На новом сервере восстанавливаем базу с дампа в «рабочую базу» свежеустановленного EGW
4. На новом сервере делаем Upgrade EGW (Через WEB интерфейс)
5. При желании, немного оптимизации

Поехали ….

1. На новом сервере заинсталил Debian Wheezy (ver.7), после этого добавил вот такой репозиторий EGW:

root@new:~# cat /etc/apt/sources.list.d/egroupware.list
### =< eGroupWare >= #
deb http://download.opensuse.org/repositories/server:/eGroupWare/Debian_7.0/ ./

Установил mysql-server:

root@new:~# apt-get install mysql-server

Теперь можно установить и саму eGroupWare последней версии (в моем случае это была 1.8.005)

root@new:~# apt-get install egroupware

Отвечаем на вопросы про админов и вводим root-овый пас на mysql, в конце видим вот такое:

..................................
EGroupware successful installed
===============================

Please note the following user names and passwords:

Setup username:      admin
      password:      123456

EGroupware username: sysadmin
           password: 1234567890

You can log into EGroupware by pointing your browser to http://localhost/egroupware/
Please replace localhost with the appropriate hostname, if you connect remote.

EGroupware install log saved to /root/egroupware-install.log
Reloading web server config: apache2.
root@new:~#

Теперь проверяем что установка прошла нормально и начисто установленный EGW функционирует как надо. Для этого браузером переходим на URL нашего EGW:
http://cr.mycom.loc/egroupware/
Должно появиться стандартное окно авторизации:
eGroupWare Clear Installed

После этого рекомендую посетить web раздел setup, возможно еще в web режиме чтолибо нужно доустановить/настроить:
http://cr.mycom.loc/egroupware/setup/
Если все установлено верно, мы сможем увидеть авторизацию для setup и header админок, входим в setup админку и видим такое:
eGroupWare Setup Admin Page
Если все так как у меня на скриншоте — это отлично! Значит программу мы установили полностью и правильно.

2. Теперь нам нужен бекап старой базы, там же столько полезной инфы 🙂 Заранее предупредите пользователей о проведении работ. Перед дампом базы обязательно уложите apache2 — это убережет вас от ситуации когда ктото из пользователей все таки чтолибо внесет в старую программу, а в новой оно естессно не появится 🙂 Поэтому рекомендую начать с такой команды:

root@old:~# service apache2 stop

Дальше собственно дамп:

mysqldump --user='root' --password='my_passwd_here' egroupwaredb > egw_db-`date +%F`.sql

Получившийся файлик egw_db-2014-11-22.sql переносим на новый сервер с помощью scp, rsync или флешки (шутка!)

root@old:~# scp egw_db-2014-11-22.sql someuser@cr.mycom.loc:~

Спросит пароль …. вводим, ждем окончания копирования и топаем на новый сервак шаманить с базой!

3. Свежеустановленная eGroupWare нам интересна как почва для миграции, поэтому я в существующую свеженькую базу egroupware залил бэкап со старого сервера:

root@new:~# mysql -p egroupware < /home/someuser/egw_db-2014-11-22.sql
Enter password:
root@new:~#

Вводим рутовый пароль для mysql и ждем пока команда отработает, если все пройдет без ошибок — мы полностью восстановили базу, можно продолжать …

4. Опять идем браузером в раздел Setup и логинимся в раздел Header Admin:
http://cr.mycom.loc/egroupware/setup/
Увидим мы вот что:
eGroupWare - Setup after restore MySQL
убираем галочку «create a backup before upgrading the DB» и жмем кнопочку чуть ниже этой галки — «Upgrade»
дожидаемся пока отработает и поидее увидим вот такое …
eGroupWare - Setup after Upgrade
тут жмем «Re-Check My Installation» и все галочки должны стать зелеными … тоесть — все вери гуд!
Выходим отсюда и поехали дальше …
Итак, база со старого сервера залита и теперь все наши настройки и данные есть на новом сервере.
Миграция закончена!

5. Всегда есть место оптимизации!
Ломать не строить! Я решил не останавливаться на этом, а еще и слегка изменить конфигурацию веб-сервера. Apache2, который устанавливается как необходимая зависимость вместе с eGroupWare, меня не очень устраивает по причине ресурсоемкости. Виртуалка на которой я все это розместил очень скромная по ресурсам, поэтому я решил связку Apache2 + mod_php5 заменить на более легковесную nginx + php-fpm. Тем кого устраивает апач или отказаться от него нету возможности — можете дальше не читать, вы и так справились с задачей! А я продолжаю колбасить …
Для начала остановим apache2, так как после установки nginx нам понадобится свободный 80-й порт 🙂

root@new:~# service apache2 stop

а также выключим его из автозагрузки:

root@new:~# update-rc.d apache2 disable

Теперь можно установить необходимые пакеты:

root@new:~# apt-get install php5-fpm
root@new:~# apt-get install nginx-light

В конфиге /etc/nginx/nginx.conf оставил все как было, розкоментил только опции по сжатию статических файликов (чуть грузит CPU, но зато экономит трафик):

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Теперь создадим конфиг server для нашей EGW:

root@new:~# touch /etc/nginx/sites-available/my.egw.loc

И добавляем туда вот что:

server {

        root /usr/share/egroupware;
        index index.php;

        server_name cr.mycom.loc www.cr.mycom.loc;

        location / {
                try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name$fastcgi_script_name;
                fastcgi_index index.php;
                include fastcgi_params;
        }

        location ~ /\.ht {
                deny all;
        }
}

Включаем данный конфиг в nginx:

root@new:~# cd /etc/nginx/sites-enabled/
root@new:/etc/nginx/sites-enabled# ln -s ../sites-available/my.egw.loc my.egw.loc

Теперь подготовим PHP-FPM:
Как оказалось ничего править не нужно — стандартные конфиги вполне подходили, но на всяк случай могу привести:
php5-fpm.conf

root@new:~# cd /etc/php5/fpm/
root@new:/etc/php5/fpm# cat php-fpm.conf |grep -v ^\;
[global]
pid = /var/run/php5-fpm.pid
error_log = /var/log/php5-fpm.log
include=/etc/php5/fpm/pool.d/*.conf
root@new:/etc/php5/fpm#

конфиг пула www.conf

root@new:/etc/php5/fpm# cat pool.d/www.conf
[www]
user = www-data
group = www-data
listen = /var/run/php5-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
root@new:/etc/php5/fpm#

Конфиги проверенные, рабочие 100%, но если вдруг сервисы при запуске будут выдавать ошибки — смотрите логи, возможно гдето закралась обшибочка!
Теперь перезапустим сервисы php5-fpm и nginx:

root@new:~# service nginx restart
root@new:~# service php5-fpm restart

Добавим сервисы nginx и php5-fpm в автозагрузку:

root@new:~# update-rc.d php5-fpm enable
root@new:~# update-rc.d nginx enable

Ну и окончательный контроль через web-ку. У меня все побежало на ура!
После недельки-второй использования рекомендую также оптимизировать конфиг mysql-server, для этого есть perl скриптик на просторах инета. Также можно использовать web-приложения для создания конфига … например от percona.

Хай щастить!

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?