====== Система управления библиографической информацией ИБ Коми НЦ УрО РАН на основе программного продукта «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).