2 августа 2009 г.

Установка сервера FedOne на локальной машине под Windows

Итак, захотелось мне попробовать Google Wave Federation Prototype Server (FedOne) и решил я установить его на свой ноутбук под управлением Windows XP SP2.

Зачем? Ну, у меня уже был опыт комфортной разработки сайтов на своем "локальном интернете" (пакет Denwer включает Apache, PHP, MySQl и т.д.). Почему бы не поработать таким же образом с локальным волновым сервером, подумал я?
Сказано-сделано и вот, что у меня получилось. На все про все ушло часа три, причем большую часть этого времени занимала возня с установкой дополнительного программного обеспечения.

Процедура установки волнового сервера подробно и с картинками описана по-английски здесь -http://code.google.com/p/wave-protocol/wiki/Installation. Есть также русский перевод этой инструкции (сделал Иво Димитров aka Darwin) - http://groups.google.com/group/google-wave-russia/web/fedone-google-wave-server.
Но установка под Windows имеет некоторые особенности, о которых я и хочу написать.

A. Необходимое программное обеспечение

Сразу скажу, что для установки волнового сервера мне понадобилось скачать:

а1. исходные тексты FedOne.
Их можно посмотреть и получить здесь - http://code.google.com/p/wave-protocol/source/browse/

a1.1. Mercurial
Поскольку исходники хранятся в системе управления исходными кодами Mercurial, то для их скачивания мне пришлось установить программу-клиент TortoiseHg под Windows (http://bitbucket.org/tortoisehg/stable/downloads/)
В настоящее время это версия 0.8.1. - http://bitbucket.org/tortoisehg/stable/downloads/TortoiseHg-0.8.1-hg-1.3.1.exe (14.4Mb)

После установки в контекстном меню виндовского Проводника появляется субменю TortoiseHg. Создайте папку у себя на диске, установите на нее курсор, нажмите правую кнопку мыши и объявите эту папку локальным репозиторием (хранилищем) исходных кодов. Затем синхронизируйте ее с онлайновым репозиторием кодов FedOne - в Repository Settings укажите онлайновый адрес http://code.google.com/p/wave-protocol/source и закачайте файлы. И, наконец, сделайте рабочую копию этих кодов. Для этого выберите пункт Clone Repository, укажите в какую папку выложить исходники.

а2. Openfire
Это кросс-платформенный сервер взаимодействия в реальном времени, основанный на протоколе XMPP (Jabber).
Для Windows в настоящее время есть версия 3.6.4. (http://www.igniterealtime.org/downloads/index.jsp).
Предлагается для загрузки два варианта, я выбрал тот, в который включена Java RE (openfire_3_6_4.exe, 20.9Mb). Но можно, наверное, скачать и более компактный (7.49Mb) архив без JRE (а Java установить отдельно на следующем этапе).

a3. OpenSSL
Он понадобится нам для создания сертификатов нашего сервера. Я взял Windows-версию OpenSSL отсюда -http://www.slproweb.com/products/Win32OpenSSL.html. А именно Light версию (http://www.slproweb.com/download/Win32OpenSSL_Light-0_9_8k.exe) (весит 1Mb, есть еще 7-мегабайтная версия для разработчиков софта, но для наших целей сейчас она излишня).

a3.1.Visual C++ 2008 Redistributables
При установке оно потребовало установить Visual C++ 2008 Redistributables, пришлось скачать и установить еще и этот пакет (1.7Mb). Для этого идем на сервер Microsoft по ссылке http://www.microsoft.com/downloads/details.aspx?familyid=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF.
Замечу, что после установки VCR и перезагрузки системы инсталлятор OpenSSL все равно ругался и уверял, что VСR в системе не установлен и без него он работать не будет. Но после нажатия "OK" прекрасно все установил и заработал.

a4. Java
JavaRE6 была у меня в системе вместе с Eclipse (возможно обновилась при установке OpenFire). Но при сборке исходных кодов Ant потребовал еще файл tools.jar (около 13Mb). Он, как выяснилось, приходит вместе с пакетом для разработчиков JavaJDK. Что ж, поставим и JavaJDK.

a4.1. JavaJDK
Актуальная на данный момент версия Java6 Update14 (75Mb) доступна для закачки отсюда -http://javadl.sun.com/webapps/download/AutoDL?BundleId=33403. (Можно взять и тут - http://cleansofts.org/download/java-runtime-environment.html)

a5. Java-утилита Ant для сборки
Я скачивал версию 1.7.1. (10Mb) отсюда - http://ant.apache.org/bindownload.cgi.

С Ant пришлось повозиться по той причине, что ему, как я писал выше, потребовался tools.jar. Кроме того, я работаю в Windows под аккаунтом "Вадим", написанным кириллицей. Соответственно и каталоги для этой учетной записи Windows делает с кириллическими (русскими) названиями. Ant при сборке считал эти пути ошибочными и никак не хотел собирать проект.
Решил эту проблему установкой "правильных" путей (без "крокозябр") в переменных ANT_HOME, JAVA_HOME и т.п. Кстати, в доках рекомендовано установить в config.sys такую строку для работы с длинными путями: shell=c:\command.com c:\ /p /e:32768
Переменные в Windows можно установить так: правой кнопкой мыши по иконке "Мой компьютер", выбираем "Свойства". Вкладка "Дополнительно", кнопка "Переменные среды".

B. Итак, теперь собственно об установке волнового сервера.

Весь процесс разбивается на четыре этапа:
b1. настройка и запуск XMPP-сервера OpenFire
b2. генерация сертификатов OpenSSL
b3. установка волнового расширения для OpenFire, т.е. собственно настройка вашей копии сервера FedOne и его сборка
b4. запуск сервера и клиента к нему

Пройдем этот путь:
b1. Установка и настройка сервера OpenFire
Настройка OpenFire, пожалуй, самая простая часть установки сервера. Запускаете инсталлятор и следуете указаниям инструкции. По-английски здесь - http://code.google.com/p/wave-protocol/wiki/Installation. По-русски здесь - http://groups.google.com/group/google-wave-russia/web/fedone-google-wave-server

Поэтому повторяться не буду, но для нашего случая есть две тонкости - а) в качестве домена своего XMPP-сервера укажите "localhost", b) запомните, как назвали субдомен, используемый вашим FedOne (я назвал его "wave"), и секретное слово (shared secret) к нему (в моем примере - "foobar"). Это нам понадобится при компиляции и запуске сервера.

b2. Генерация сертификатов
По-английски описано здесь - http://code.google.com/p/wave-protocol/wiki/Certificates

Все элементарно, Ватсон. Идем в C:\OpenSSL\bin\ и запускаем openssl.exe с параметрами (см. ниже). Нужно будет ответить на несколько вопросов - код страны, название города и т.п. и получить в итоге 2 файла.

Можно сделать такой genss.bat-файл:
openssl genrsa 1024 | openssl pkcs8 -topk8 -nocrypt -out %1.key
openssl req -new -x509 -nodes -sha1 -days 365 -key %1.key -out %1.cert
и запускать его так: genssl.bat wave, где wave - имя для генерируемых файлов ключей и сертификата (wave.cert и wave.key).
Кладем сгенерированные файлы в каталог с исходниками волнового сервера.

b3. Компиляция сервера и клиента
Просто перейдите в папку с исходниками сервера и скажите: "ant". (Можно предварительно прогнать тест - "ant test").
Если у вас правильно указаны переменные и пути, то после компиляции вы получите 2 файла (fedone-0.2.jar и fedone-client-0.2.jar) в папке /dist

b4. Запуск вашего сервера и клиента к нему
Волнующий момент. :) Сделайте 2 bat-файла, для запуска сервера run-server.bat и для запуска клиента run-client.bat.

run-server.bat:
java -jar dist/fedone-0.2.jar --client_frontend_hostname=127.0.0.1 --client_frontend_port=9876 --xmpp_component_name=wave --xmpp_server_hostname=localhost --xmpp_server_ip=localhost --xmpp_server_port=5275 --xmpp_server_secret "foobar" --xmpp_server_ping="" --certificate_private_key=wave.key --certificate_files=wave.cert --certificate_domain=localhost --waveserver_disable_verification=true

p.s. Несколько пояснений: вот и пригодились нам "localhost" (наш локальный домен), "wave" (имя расширения для OpenFire) и "foobar" (секретное слово).

run-client.bat:
java -jar dist/fedone-client-0.2.jar %1@localhost 127.0.0.1 9876

Запуск клиента: run-client.bat имя_пользователя, например: run-client.bat vadbars

Итак, все готово? Он сказал, "Поехали!"

Раз. Запускаем OpenFire. В трее - желтая лампочка.
Два. Запускаем run-server. Досовское окно с протоколом запуска. Посмотрите в сообщениях, что сервер нашел OpenFire и подключился к нему. Можно посмотреть это же в админке самого OpenFire (раздел "Extentions").
Три. Запускаем run-client. Тоже черно-белое досовское окно с какими-то малопонятными значками. А вы чего ждали? :)

Полюбоваться на скриншоты можно здесь - http://code.google.com/p/wave-protocol/wiki/ConsoleClient
Ну вот один для примера (в Windows все это выглядит еще менее гламурно, поскольку нет цвета, а вместо него есть управляющие коды "раскраски текста" для юникс-консоли, выглядят как "стрелочки и цифры").


C. Работа с волнами на своем сервере и со своим клиентом

В данный момент (август 2009 года) FedOne поддерживает всего несколько команд (да-да, пока нет никакого GUI!):

/connect user@domain server port Cоединиться с server:port как участник user@domain
/open entry open Открыть волну, которая есть у вас во Входящих. Надо указать номер волны (от 0). Например: /open 1
/new Создать и открыть новую волну
/add participantId Добавить участника к волне
/remove participantId Удалить участника из волны (хе-хе, этого пока нет в клиенте Gogoole Wave Sandbox! Наш сервер круче. :)
/quit Завершить работу клиента

Вуаля. Теперь можно погонять волну, запустив несколько клиентов с разными участниками, а затем перейти к изучению исходного кода FedOne, чтобы сделать что-то свое. Например, какой-нибудь гуевый интерфейс к нему. Удачи!

2 комментария:

  1. При выполнении run-server.bat происходит следующее:
    D:\Wave\wave-protocol>java -jar dist/fedone-server-0.2.jar --client_frontend_hos
    tname=127.0.0.1 --client_frontend_port=9876 --xmpp_component_name=wave --xmpp_se
    rver_hostname=localhost --xmpp_server_ip=localhost --xmpp_server_port=5275
    --xmpp_server_secret=robo --xmpp_server_ping="" --certificate_private_key=robo.
    key --certificate_files=robo.cert --certificate_domain=localhost --waveserver_
    disable_verification=true
    usage: must supply waveserver_disable_signer_verification
    --certificate_domain CERTIFICATE_DOMAIN

    --certificate_files CERTIFICATE_FILES
    comma separated WITH NO SPACES.
    --certificate_private_key CERTIFICATE_PRIVATE_KEY
    .....и т.д.

    //*
    Я так понимаю что задаю неверные параметры,ткните пальцем пожалуйста!!!!!!!!
    *//

    ОтветитьУдалить
  2. run-server.bat из HOW TO не отрабатывал((Грешу на компоновку ant из под Eclipse.Win методом ant ругался на выше описанный tools.jar.Пропись Java_home в переменную среду не помогла.Может кому-то пригодится мой рабочий run-server.bat,немного отличается от примера.
    Всего доброго.Спасибо за внимание)))

    SET PRIVATE_KEY_FILENAME=robo.key
    SET CERTIFICATE_FILENAME_LIST=robo.cert
    SET CERTIFICATE_DOMAIN_NAME=localhost
    SET XMPP_SERVER_HOSTNAME=%CERTIFICATE_DOMAIN_NAME%
    SET XMPP_SERVER_IP=%XMPP_SERVER_HOSTNAME%
    SET XMPP_SERVER_SECRET=robo

    java -jar dist/fedone-server-0.2.jar --xmpp_server_hostname %XMPP_SERVER_HOSTNAME% --waveserver_disable_signer_verification true --waveserver_disable_verification true --client_frontend_hostname 127.0.0.1 --client_frontend_port 9876 --xmpp_component_name wave --xmpp_server_ip %XMPP_SERVER_IP% --xmpp_server_port 5275 --xmpp_server_secret %XMPP_SERVER_SECRET% --xmpp_server_ping "" --certificate_private_key %PRIVATE_KEY_FILENAME% --certificate_files %CERTIFICATE_FILENAME_LIST% --certificate_domain %CERTIFICATE_DOMAIN_NAME%

    ОтветитьУдалить