====== Система управления библиографической информацией ИБ Коми НЦ УрО РАН на основе программного продукта «Zotero». Руководство администратора ======
===== Установка Zotero Data Server на Debian Linux =====
Авторы: Altynbek Isabekov, Eric Fernandez (20.06.2013)
Перевод (с дополнениями) Иван Чадин (11.10.2014)
===== Реферат =====
Данное руководство посвящено процессу установки сервера данных Zotero на ЭВМ, работающей под управлением Debian Wheezy (7.0RC1)
===== Установка Zotero Data Server =====
==== Получение исходных кодов ====
Создайте каталог для установки Zotero Data Server и перейдите в него
$ mkdir /srv/http
$ cd /srv/http/
Загрузите исходный код Zotero Data Server из репозитория github:
$ sudo git clone —recursive https://github.com/Panzerkampfwagen/dataserver.git
Переименуйте каталог (важно! наименование каталога используется в исходном коде)
$ sudo mv dataserver ZoteroDataServer
Загрузите php-фреймворк Zend
$ sudo wget -vc "http://framework.zend.com/releases/ZendFramework -1.12.3/ZendFramework-1.12.3.tar.gz"
Распакуйте часть архива php-фреймворка Zend (ZendFramework-1.12.2/library/Zend) в каталог «include» (''/srv/http/ZoteroDataServer/include/Zend''):
$ sudo tar -xvf ZendFramework-1.12.3.tar.gz --strip=3 -C "/srv/http/ZoteroDataServer/include/Zend" "ZendFramework-1.12.3/library/Zend"
==== Настройка веб-сервера Apache и PHP ====
Установите сервер Apache и PHP
$ sudo aptitude install apache2 php5
Создайте виртуальный хост для сервера данных Zotero. Для этого добавьте следующие строки в конфигурационный файл '' /etc/apache2/sites-available/default''. Каталогом для сервера данных служит ''/srv/http/ZoteroDataServer/''.
NameVirtualHost *:85
ServerName *:85
DocumentRoot "/srv/http/ZoteroDataServer/htdocs"
ErrorLog "${APACHE_LOG_DIR}/Zotero-Data-Server-Error.log"
CustomLog "${APACHE_LOG_DIR}/Zotero-Data-Server-Access.log" common
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
AllowEncodedSlashes On
Сделайте доступными следующие модули:
$ sudo a2enmod rewrite
$ sudo a2enmod vhost_alias
Включите в Apache прослушивание порта 85, который указывает на виртуальный хост Zotero, путем добавления слующих строк в файл ''/etc/apache2/ports.conf'':
NameVirtualHost *:85
Listen 85
Запустите Apache и убедитесь, что он успешно запускается:
$ sudo service apache2 start
== Настройка MySQL ==
Установите MySQL:
$ sudo aptitude install php5-mysql mysql-server
Сервер данных Zotero настроен на использование пароля 'SecurePassword' в качестве пароля пользователя root. Для того, чтобы установить этот пароль остановите демон MySQL, если он запущен:
$ sudo service mysql stop
Перезапустите MySQL с пропуском системы атентификации:
$ sudo mysqld_safe --skip-grant-tables &
Запустите консольный клиент mysql
$ sudo mysql -u root mysql
Поменяйте root пароль:
mysql> UPDATE mysql.user SET Password=PASSWORD('SecurePassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> EXIT
Скрипты, которые создают базу данных Zotero нуждаются информации о логине и пароле. Скрипт получает эту информацию из файла ''/etc/mysql/my.cnf''. Внесите следующие изменения в этот файл:
[client]
user=root
password=SecurePassword
Измените часовой пояс MySQL на UTC путем внесения измений файл ''/etc/mysql/my.cnf:''
[mysqld]
...
default-time-zone = '+0:00'
Установите phpMyAdmin, удобный инструмент для администрирования MySQL с использованием веб-интерфейса:
$ sudo aptitude install phpmyadmin
Перезапустите Apache:
$ sudo service apache2 restart
==== Настройка Zotero Data Server ====
Основные настройки хранятся в файле: ''ZoteroDataServer/include/config/config.inc.php''
...
public static $SYNC_DOMAIN = '127.0.0.1:85';
...
public static $CLI_PHP_PATH = '/usr/bin/php';
public static $CLI_DOCUMENT_ROOT = "/srv/http/ZoteroDataServer/";
...
Адрес сервера Zotero предустановлен локальный (127.0.0.1:85), таким образом он не принимает соединения с других IP адресов. Но на этом этапе нашей задачей является добиться работоспособности сервера на локальном хосте. Позднее, когда сервер начнет работать корректно, необходимо будет поменять локальный IP адрес на IP адрес ЭВМ вашей локальной сети, чтобы сделать сервер Zotero доступным для синхронизации с любой ЭВМ, подключенной к вашей локальной сети.
Если вы решите изменить корневой каталог сервера данных, изменив значение переменной ''$CLI_DOCUMENT_ROOT ''не забудьте добавить завершающий слэш «/» в конце пути к каталогу.
Взаимодейстие с MySQL сервер производит используя сведения о root пароле, который хранится в файле ''ZoteroDataServer/include/config/config.inc.php''. Вы можете изменить пароль по умолчанию ("SecurePassword"), редактируя этот файл.
==== Запуск Zotero Data Server ====
Запустите MySQL. Запустите Apache. Убедитесь, что оба сервера запустились без ошибок.
$ sudo service mysql start
$ sudo service apche2 start
Установите систему кэширования памяти «memcached», которая позволит повысить быстродействие и отказоустойчивость веб-сервисов, запущенных на ЭВМ:
$ sudo aptitude install memcached
Перейдите в каталог ''/srv/http/ZoteroDataServer/misc''
$ cd /srv/http/ZoteroDataServer/misc
Запустите скрипт ''test_reset'', который удалит все сущеествующие базы данных Zotero data server и создаст новые базы данных с нуля.
$ sudo ./test_reset
Deleting databases
Creating databases
Deleting users
Creating users
Updating user privileges
Filling databases with default fields
Reset is successfull. Now run ./test_setup
Вы должны увидеть сообщение ''"Reset is successfull. Now run ./test_setup"''. Сейчас вы можете запустить скрипт ''test_setup, ''который добавит некоторые записи в базу данных ''zoterotest1'':
$ sudo ./test_setup
Если вы увидете сообщение ''"Test setup is successfull.", ''то это означает что необходимые записи были добавлены в базу данных.
Измените права доступа к каталогу tmp Zotero data server:
$ sudo chmod 777 /srv/http/ZoteroDataServer/tmp
Теперь можно открыть три терминала и запустить демоны, управляющие загрузкой, скачиванием и отслеживанием ошибок процесса синхронизации:
В первом терминале:
$ cd /srv/http/ZoteroDataServer/processor/upload/
$ php daemon.php
Во втором терминале:
$ cd /srv/http/ZoteroDataServer/processor/download/
$ php daemon.php
В третьем терминале:
$ cd /srv/http/ZoteroDataServer/processor/error/
$ php daemon.php
Проверьте, что каждый из демонов запустился успешно (в данном случае, демон «download»):
2013-06-20 11:16:48.5637 Starting download processor daemon
2013-06-20 11:16:48.5754 0 processors, 0 queued processes
В случае возникновения ошибки, демоны остановятся и Zotero data server будет недоступен для синхронизции до тех пор, пока демоны не будут перезапущенны вручную. В частности, демоны закрузки и скачивания аварийно завершат работу если период ожидания доступа к базам данных MySQL превысит лимит 8 часов, установленный по умолчанию настройках MySQL. Чтобы предотвратить это, можно изменить параметр ''wait_timeout ''в файле /''etc/mysql/my.cnf'' на максимальное значение — 1 год (31536000 seconds):
[mysqld]
...
wait_timeout = 31536000
Альтернативным (и более надежным) решением является установка пакета «daemontools»:
$ sudo aptitude install daemontools
Затем в каждом из каталогов запустите утилиту ''supervise'':
В первом терминале:
$ cd /srv/http/ZoteroDataServer/processor/upload/
$ sudo supervise .
В втором терминале:
$ cd /srv/http/ZoteroDataServer/processor/download/
$ sudo supervise .
В третьем терминале:
$ cd /srv/http/ZoteroDataServer/processor/error/
$ sudo supervise .
Программа ''supervise'' будет автоматически запускать файл ''./run'' в каждой из директорий и перезапускать его в случае аварийного завершения.
== Тестирование Zotero Data Server ==
Установите утилиту curl:
$ sudo aptitude install curl
Для проверки аутентификации на сервере, отправьте на него следующий запрос:
$ curl -X POST -d "version=9&username=testuser&password=testuser" http://127.0.0.1:85/login
Этот запрос должен вернуть ответ, похожий на этот:
da802280ce0bfc2e90cb1ad0747ff642
Теперь, используя идентификатор сессии ''"sessionID"'' вы можете отправить запрос ''"updated"'':
$ curl -X POST -d "version=9&sessionid=da802280ce0bfc2e90cb1ad0747ff642&lastsync=1" http://127.0.0.1:85/updated
ответ будет примерно таким:
$ cadaver http://127.0.0.1/zotero
Authentication required for WebDAV on server `127.0.0.1':
Username: testuser
Password:
dav:/zotero/> ls
Listing collection `/zotero/': succeeded.
3QBQSD38.prop 117 Aug 12 13:21
3QBQSD38.zip 465149 Aug 12 13:21
5BA5I3IP.prop 117 Aug 12 13:21
5BA5I3IP.zip 809 Aug 12 13:21
8IF963XB.prop 117 Aug 12 13:21
8IF963XB.zip 860702 Aug 12 13:21
lastsync 1 Aug 12 13:21
dav:/zotero/>
===== Установка Zotero Attachment Server =====
Для того, чтобы получить возможность загружать на сервер и скачивать оттуда файлы, приложенные пользователями к библиографическим описаниям необходимо обеспечить клиент Zotero доступом к серверу WebDAV. Для того, чтобы запустить свой WebDAV сервер сделайте доступными серверу Apache следующие модули:
$ sudo a2enmod auth_digest
$ sudo a2enmod dav
$ sudo a2enmod dav_fs
$ sudo a2enmod dav_lock
Теперь создайте WebDAV lock каталог и файл:
$ sudo mkdir /srv/http/DAVLock
$ sudo chmod -R 777 /srv/http/DAVLock
$ sudo chown -R www-data:www-data /srv/http/DAVLock
Создайте каталог для хранения файлов-приложений Zotero:
$ sudo mkdir /srv/http/zotero
$ sudo chown -R www-data:www-data /srv/http/zotero
$ sudo chmod -R 777 /srv/http/zotero
Добавьте следующую строку в конфигурационный файл: ''/etc/apache2/sites-available/default:''
DavLockDB /srv/http/DAVLock/DAVLockDB
Поместите следущие строки в файл /etc/apache2/sites-available/default ниже раздела ''''
DocumentRoot /srv/http
Dav On
Order Allow,Deny
Allow from all
AllowOverride None
AuthType Digest
AuthName "WebDAV"
AuthUserFile "/var/www/.DAVlogin"
AuthDigestProvider file
Require user "testuser"
Теперь необходимо создать MD5 хэш для пользователя «testuser», выбрав какой либо пароль, и сохранить его в файле /''etc/httpd/conf/extra/AuthWebDAV.passwd :''
$ sudo htdigest -c /etc/httpd/conf/extra/AuthWebDAV.passwd WebDAV testuser
Adding password for testuser in realm WebDAV.
New password:
Re-type new password:
Перезапустите сервер Apache:
$ sudo service apache2 restart
Для того, чтобы протестировать ваш WebDAV сервер установите пакет ''«cadaver»'':
$ sudo aptitude install cadaver
Теперь подключитесь к вашему WebDAV серверу:
$ cadaver http://127.0.0.1/zotero
Authentication required for WebDAV on server `127.0.0.1':
Username: testuser
Password:
dav:/zotero/> mkcol SomeCollection
Creating `SomeCollection': succeeded.
dav:/zotero/>
==== Установка клиента Zotero ====
В каталоге ''ZoteroDataServer/misc/'' находится несколько версий клиента Zotero (только в форме дополенений к браузеру Firefox), с «заплатками», позволяющими указать произвольный адрес сервера Zotero Data Server.
"Пропатчить" свежую версию клиента Zotero можно с помощью утилиты patch и файла patch_4.0.20.2.txt:
unzip zotero-4.0.20.2.xpi -d ./zotero-4.0.20.2-patched
cd zotero-4.0.20.2-patched
patch -p1 < ../patch_4.0.20.2.txt
zip -rq ../zotero-4.0.20.2-patched.xpi *
Рекомендуется установить версию браузера Firefox», не требующую инсталляции в системе — Firefox Portable (http://portableapps.com/apps/internet/firefox_portable) и уже в нем установите «проопатченную» версию дополнения Zotero. Введите на странице «Синхронизация» адрес вашего сервера и порта (например: http://172.19.1.1:85), имя пользователя и пароль (по умолчанию: testuser/testuser).