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

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

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

    Процедура установки волнового сервера подробно и с картинками описана по-английски. Есть также русский перевод этой инструкции (сделал Иво Димитров aka Darwin).
    Но установка под Windows имеет некоторые особенности, о которых я и хочу написать.

    Подробности — под катом.

    p.s. Если интересует Волна — заходите к нам в группу «Google Wave Россия».

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



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

    а1. исходные тексты FedOne.

    Их можно посмотреть и получить здесь.

    a1.1. Mercurial

    Поскольку исходники хранятся в системе управления исходными кодами Mercurial, то для их скачивания мне пришлось установить программу-клиент TortoiseHg под Windows.
    В настоящее время это версия 0.8.1. — TortoiseHg-0.8.1-hg-1.3.1.exe (14.4Mb)

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

    а2. Openfire

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

    a3. OpenSSL

    Он понадобится нам для создания сертификатов нашего сервера. Я взял Windows-версию OpenSSL. А именно Light версию (весит 1Mb, есть еще 7-мегабайтная версия для разработчиков софта, но для наших целей сейчас она излишня).

    a3.1.Visual C++ 2008 Redistributables

    При установке оно потребовало установить Visual C++ 2008 Redistributables, пришлось скачать и установить еще и этот пакет (1.7Mb). Для этого идем на сервер Microsoft.
    Замечу, что после установки VCR и перезагрузки системы инсталлятор OpenSSL все равно ругался и уверял, что VСR в системе не установлен и без него он работать не будет. Но после нажатия «OK» прекрасно все установил и заработал.

    a4. Java

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

    a4.1. JavaJDK

    Актуальная на данный момент версия Java6 Update14 (75Mb) доступна для закачки. (Можно взять и тут).

    a5. Java-утилита Ant для сборки

    Я скачивал версию 1.7.1. (10Mb).

    С 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, пожалуй, самая простая часть установки сервера. Запускаете инсталлятор и следуете указаниям инструкции. По-английски или по-русски.

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

    b2. Генерация сертификатов

    По-английски описано здесь.

    Все элементарно, Ватсон. Идем в 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. Тоже черно-белое досовское окно с какими-то малопонятными значками. А вы чего ждали? :)

    Можно полюбоваться на скриншоты. Ну вот один для примера в начале этого текста (в 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, чтобы сделать что-то свое. Например, какой-нибудь гуевый интерфейс к нему. Удачи!

    Если интересует Волна — заходите к нам в группу «Google Wave Россия».
    Поделиться публикацией
    Похожие публикации
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 23
    • +7
      Добавите кармы — перенесу в блог «Google».

      p.s. Уважаемая хабра-администрация, дайте открыть коллективный блог Google Wave, как только снова появится эта возможность. Есть много чего сообщить на эту тему.
    • НЛО прилетело и опубликовало эту надпись здесь
      • –3
        К слову: когда уже выдет Денвер 4?
        • +1
          Кому необходимо работать, сам его давно подтюнил под свои надобности, обновил версии ПО до нужных и прочее, прочее…
          Так что, выйдет хорошо, не выйдет…
        • +6
          я волна, новая волна…
        • +1
          Как, в своё время, показали мои опыты с сервером OpenFire нормально работает только Spark, что, в общем-то, и не удивительно. Остальные клиенты не могли использовать все возмоможности сервера.

          Так что забавляться с клиентом командной строки, конечно, весело, но бесполезно. Нужено расширение Spark поддерживающее Wave.
          • 0
            Корпоративный IM сделан на базе OpenFire, все работает, все клиенты поддерживаются
            • 0
              Подключаться-то они подключаться, но все расширения не пашут.
          • 0
            Отдельный блог не помешал бы, тема очень интересная.
            • 0
              А нужно ли это?
              • 0
                мне например интересно будет потрогать-потестить на своей windows-машине, что же это за волна такая и с чем её едят, я думаю для популяризации это очень нужно!
              • 0
                Спасибо
                • 0
                  Спасибо, интересно. Что еще можно почитать/посмотреть, если интересует Волна?
                  • +3
                    Я постарался собрать ссылки на интересные и полезные материалы по Google Wave на специальной странице нашей гуглогруппы "Google Wave Россия". Страница называется «Внимание! Полезные ссылки» (документация, популярные статьи, GW-сообщества, инструментарий разработчиков, критика GW, интеграция в CMS и т.п. материалы на любой вкус).

                    Стараниями гуглогруппы "Habratranslation" на русский язык переведены субтитры к презентации Волны на Google I/O (это вообще то видео, с которого надо начинать знакомство с Волной) и текст документации по протоколу взаимодействия между волновыми серверами. Почти завершена работа над субтитрами к видео «Google Wave: под капотом». Я перевел также два слайдшоу: по разработке роботов и по разработке гаджетов для волны.

                    В общем, что говорить — читайте блог "Google Wave по-русски" и наш твиттер.
                    Буквально вчера открылся специализированный блог Иво Димитрова "Разработка для Google Wave".

                    Те, кто уже имеет доступ к «песочнице», могут начинать с русскоязычной волны «Русские идут!». В волне уже больше 100 участников.
                    В ней же есть ссылки на несколько переведенных мною справочных документов по работе в Волне. Скоро, надеюсь, будут и другие оригинальные (непереводные) русские материалы.

                    Идей и работы много. Пора уже не просто читать/смотреть, но и открывать собственные проекты по использованию волновой технологии.
                • +2
                  После изображения в начале статьи сразу настроился на комментарий а-ля: «поменяйте в заголовке Windows на Ubuntu Linux» :)
                  • НЛО прилетело и опубликовало эту надпись здесь
                    • 0
                      Я так издалека глянул. У меня возникло впечатление что ему просто XMPP сервер нужен, потому как Wave идёт отдельным процесом.
                      Судя из фразы «In the examples below we show how to install the Wave Federation Prototype Server as an extension to the Openfire XMPP server, but it should run against any XEP-0114 compliant server.» ejabberd тоже должен работать.
                      • 0
                        На логинку не смог зайти. Был включен Noscript, когда разрешил, ошибка слишком много попыток логина, хотя попытка только вторая.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.