Зачем? Ну, у меня уже был опыт комфортной разработки сайтов на своем "локальном интернете" (пакет 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, чтобы сделать что-то свое. Например, какой-нибудь гуевый интерфейс к нему. Удачи!
При выполнении 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
.....и т.д.
//*
Я так понимаю что задаю неверные параметры,ткните пальцем пожалуйста!!!!!!!!
*//
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%