Установка 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. Для этого добавьте следующие строки в конфигурационный файл<tt> /etc/apache2/sites-available/default</tt>. Каталогом для сервера данных служит <tt>/srv/http/ZoteroDataServer/</tt>.

NameVirtualHost *:85 <VirtualHost *: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
<Directory "/srv/http/ZoteroDataServer/htdocs">
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
AllowEncodedSlashes On

</VirtualHost>

Сделайте доступными следующие модули:

$ sudo a2enmod rewrite $ sudo a2enmod vhost_alias

Включите в Apache прослушивание порта 85, который указывает на виртуальный хост Zotero, путем добавления слующих строк в файл <tt>/etc/apache2/ports.conf</tt>:

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 нуждаются информации о логине и пароле. Скрипт получает эту информацию из файла <tt>/etc/mysql/my.cnf</tt>. Внесите следующие изменения в этот файл:

[client] user=root password=SecurePassword

Измените часовой пояс MySQL на UTC путем внесения измений файл <tt>/etc/mysql/my.cnf:</tt>

[mysqld] ... default-time-zone = '+0:00'

Установите phpMyAdmin, удобный инструмент для администрирования MySQL с использованием веб-интерфейса:

$ sudo aptitude install phpmyadmin

Перезапустите Apache:

$ sudo service apache2 restart

Настройка Zotero Data Server

Основные настройки хранятся в файле: <tt>ZoteroDataServer/include/config/config.inc.php</tt>

...

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 доступным для синхронизации с любой ЭВМ, подключенной к вашей локальной сети.

Если вы решите изменить корневой каталог сервера данных, изменив значение переменной <tt>$CLI_DOCUMENT_ROOT </tt>не забудьте добавить завершающий слэш «/» в конце пути к каталогу.

Взаимодейстие с MySQL сервер производит используя сведения о root пароле, который хранится в файле <tt>ZoteroDataServer/include/config/config.inc.php</tt>. Вы можете изменить пароль по умолчанию («SecurePassword»), редактируя этот файл.

Запуск Zotero Data Server

Запустите MySQL. Запустите Apache. Убедитесь, что оба сервера запустились без ошибок.

$ sudo service mysql start $ sudo service apche2 start

Установите систему кэширования памяти «memcached», которая позволит повысить быстродействие и отказоустойчивость веб-сервисов, запущенных на ЭВМ:

$ sudo aptitude install memcached

Перейдите в каталог <tt>/srv/http/ZoteroDataServer/misc</tt>

$ cd /srv/http/ZoteroDataServer/misc

Запустите скрипт <tt>test_reset</tt>, который удалит все сущеествующие базы данных 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

Вы должны увидеть сообщение <tt>«Reset is successfull. Now run ./test_setup»</tt>. Сейчас вы можете запустить скрипт <tt>test_setup, </tt>который добавит некоторые записи в базу данных <tt>zoterotest1</tt>:

$ sudo ./test_setup

Если вы увидете сообщение <tt>«Test setup is successfull.», </tt>то это означает что необходимые записи были добавлены в базу данных.

Измените права доступа к каталогу 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. Чтобы предотвратить это, можно изменить параметр <tt>wait_timeout </tt>в файле /<tt>etc/mysql/my.cnf</tt> на максимальное значение — 1 год (31536000 seconds):

[mysqld] ... wait_timeout = 31536000

Альтернативным (и более надежным) решением является установка пакета «daemontools»:

$ sudo aptitude install daemontools

Затем в каждом из каталогов запустите утилиту <tt>supervise</tt>:

В первом терминале:

$ cd /srv/http/ZoteroDataServer/processor/upload/ $ sudo supervise .

В втором терминале:

$ cd /srv/http/ZoteroDataServer/processor/download/ $ sudo supervise .

В третьем терминале:

$ cd /srv/http/ZoteroDataServer/processor/error/ $ sudo supervise .

Программа <tt>supervise</tt> будет автоматически запускать файл <tt>./run</tt> в каждой из директорий и перезапускать его в случае аварийного завершения.

Тестирование 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

Этот запрос должен вернуть ответ, похожий на этот:

<?xml version=«1.0»?> <response version=«9» timestamp=«1341134959»>

<sessionID>
da802280ce0bfc2e90cb1ad0747ff642
</sessionID>

</response>

Теперь, используя идентификатор сессии <tt>«sessionID»</tt> вы можете отправить запрос <tt>«updated»</tt>:

$ curl -X POST -d «version=9&sessionid=da802280ce0bfc2e90cb1ad0747ff642&lastsync=1» http://127.0.0.1:85/updated

ответ будет примерно таким:

<?xml version=«1.0»?> <response version=«9» timestamp=«1341135305» userID=«1»

defaultLibraryID="1" updateKey="43d4eaa497ab8cbfc8f4d201d955fd70"
earliest="1341131740">

<updated/> </response> $ 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

Добавьте следующую строку в конфигурационный файл: <tt>/etc/apache2/sites-available/default:</tt>

DavLockDB /srv/http/DAVLock/DAVLockDB

Поместите следущие строки в файл /etc/apache2/sites-available/default ниже раздела <tt><VirtualHost *:80></tt>

DocumentRoot /srv/http <Directory «/srv/http/zotero»>

Dav On
Order Allow,Deny
Allow from all
AllowOverride None
AuthType Digest
AuthName "WebDAV"
AuthUserFile "/var/www/.DAVlogin"
AuthDigestProvider file
Require user "testuser"

</Directory>

Теперь необходимо создать MD5 хэш для пользователя «testuser», выбрав какой либо пароль, и сохранить его в файле /<tt>etc/httpd/conf/extra/AuthWebDAV.passwd :</tt>

$ 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 сервер установите пакет <tt>«cadaver»</tt>:

$ 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 = В каталоге <tt>ZoteroDataServer/misc/</tt> находится несколько версий клиента Zotero (только в форме дополенений к браузеру Firefox), с «заплатками», позволяющими указать произвольный адрес сервера Zotero Data Server. Рекомендуется установить версию браузера Firefox», не требующую инсталляции в системе — Firefox Portable (http://portableapps.com/apps/internet/firefox_portable) и уже в нем установите «проопатченную» версию дополнения Zotero. Введите на странице «Синхронизация» адрес вашего сервера и порта (например: http://172.19.1.1:85), имя пользователя и пароль (по умолчанию: testuser/testuser)