Skip to content
Aleksandr Kartashov edited this page Mar 25, 2011 · 26 revisions

Сборка проекта

Пока предварительно!

Внешние зависимости

  • WebHarvest — библиотеки проекта должны располагаться в каталоге common/lib/web-harvest/. Их можно скачать здесь
  • Интерфейс JDBC для MySQL — должен располагаться в каталоге common/lib/.
  • Библиотеки проекта Apache для доступа к данным. Пока используется эта и эта. Эти библиотеки должны располагаться в каталоге common/lib.
  • Модуль по работе с JSON. Должен располагаться в каталоге common/lib.
  • Spring Framework. Из архива следует извлечь каталог dist и разместить его содержимое в каталоге common/lib/spring.
  • HTTP-сервер Jetty. Содержимое каталога lib/ дистрибутива следует разместить в каталоге common/lib/jetty.
  • Библиотека сериализации XStream. Содержимое каталога lib/ дистрибутива следует разместить в каталоге common/lib/xstream.
  • Интерфейс демона Sphinx. Его следует разместить в каталоге common/lib.

Для снижения нагрузки на внешние серверы предлагаю использовать кэширующий прокси-сервер SQUID. Пользователи Linux-дистрибутива, основанного на Debian, могут установить его командой

apt-get install squid

Конфигурация по умолчанию вполне подходит для локального использования. Сервер будет слушать порт 3128 на всех интерфейсах.

Настройка

Предварительные шаги

Перед запуском модулей сбора информации из внешних источников следует запустить скрипт common/script/initdb.sh. Этот скрипт создаст необходимую структуру базы данных.

Перед запуском любых модулей следует проинициализировать переменные окружения с помощью команды source init_env.sh, которую следует выполнить в корне репозитория.

Скрипты запуска модудя располагаются по адресу <название модуля>/script/run.sh.

Майнер

Конфигурационный файл должен располагаться в каталоге miner/src/config/

Пример конфигурационного файла для майнера:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName">
  <!--Database configuration-->
  <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/excursion_organizer?characterEncoding=utf8"/>
    <property name="username" value="exorg"/>
    <property name="password" value=""/>
  </bean>
  
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate" lazy-init="false">
    <constructor-arg ref="dataSource"/>
  </bean>

  <bean id="poi" class="eo.common.POI">
    <constructor-arg ref="jdbcTemplate"/>
  </bean>

  <bean id="miner" class="eo.miner.Main">
    <property name="POI" ref="poi"/>
    <property name="config" value="ilovepetersburg-ru-culture.cfg.xml;ilovepetersburg-ru-monuments.cfg.xml"/>
    <property name="proxy" value="127.0.0.1:3128"/>
  </bean>
</beans>

Свойство config указывает положение сценариев для сбора информации из внешних источников.

Свойство proxy указывает, какой прокси-сервер должен использовать майнер для обращения к внешним ресурсам. Если прокси-сервер не испольуется, то эту строчку можно удалить.

Модуль процессинга

Конфигурационный файл должен располагаться в каталоге processing/src/config/

Пример конфигурационного файла модуля процессинга:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName">
  <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="false">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/excursion_organizer?characterEncoding=utf8"/>
    <property name="username" value="root"/>
    <property name="password" value=""/>
  </bean>
  
  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate" lazy-init="false">
    <constructor-arg ref="dataSource"/>
  </bean>

  <bean id="poi" class="eo.common.POI">
    <constructor-arg ref="jdbcTemplate"/>
  </bean>

  <bean id="processingDaemon" class="eo.processing.Main">
    <property name="POI" ref="poi"/>
    <property name="proxy" value="127.0.0.1:3128"/>
  </bean>
</beans>

HTTP-сервер

Конфигурационный файл должен располагаться в каталоге http_server/src/config/

Пример конфигурационного файла HTTP-сервера:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
        "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-autowire="byName">
  <bean id="serverDaemon" class="eo.frontend.httpserver.Main">
    <property name="interface" value="localhost:8080"/>

    <property name="handler">
      <bean class="eo.frontend.httpserver.POIService" />
    </property>
  </bean>
</beans>

Свойство interface указывает, какой сетевой интерфейс и какой порт на нем должен прослушивать сервер.

Перед запуском HTTP-сервера следует проиндексировать базу данных. Для этого следует запустить скрипт common/script/index.py.

Организация репозитория

  • исходный файлы модуля проекта лежат в каталоге <название модуля>/src/java/,
  • скомпилированные файлы классов складываются в каталог <название модуля>/build/classes/,
  • готовые модули складываются (в виде JAR-архивов) в каталог common/lib/,
  • пути к скриптам запуска модулей: <название модуля>/src/script/run.sh

Clone this wiki locally