Testado no Ubuntu Server 14.04
Instalando java e maven3
sudo apt-add-repository ppa:andrei-pozolotin/maven3
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install maven3 oracle-java8-installer
Instalar solr e conceder permissões de pasta
git clone git://github.com/ksclarke/solr-jetty-maven.git
sudo mv solr-jetty-maven /opt/solr
sudo chown -R www-data:www-data /opt/solr
Executando solr como serviço
Antes de qualquer coisa, certifique-se de abrir o arquivo /opt/solr/etc/init.d/solr
e
alterar o valor da variável SOLR_HOME
na linha 31 para "/opt/solr"
.
Em seguida, execute os seguintes comandos:
sudo cp etc/init.d/solr /etc/init.d/solr
sudo update-rc.d -f solr start 80 2 3 4 5 . stop 30 0 1 6 .
Agora, você deve ser capaz de iniciar e interromper o serviço:
sudo service solr start
sudo service solr stop
Configurando o aplicativo Rails
Primeiro, você precisa adicionar sunspot
joias ao Gemfile
e executar bundle install
:
# Gemfile
...
gem 'sunspot_rails'
gem 'sunspot_solr'
...
Em seguida, execute o seguinte comando para criar o arquivo na pasta e as configurações específicas do solr:sunspot.yml
config
rake sunspot_rails:install
Certifique-se de adicionar as seguintes entradas ao :.gitignore
# Solr
/solr/data
/solr/default
/solr/development
/solr/pids
/solr/test
/solr/conf/_rest_managed.json
/solr/core.properties
Agora, no lado do servidor, para cada aplicativo, você deve criar um núcleo solr,
que irá separar os índices de cada aplicativo. Para fazer isso, substitua o conteúdo do arquivo por:/opt/solr/src/main/resources/solr/solr.xml
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="project01Core" instanceDir="/path_to_project_01/solr" dataDir="default"/>
<core name="projectNCore" instanceDir="/path_to_project_n/solr" dataDir="default"/>
</cores>
</solr>
Agora, abra o arquivo em seu aplicativo rails e altere a propriedade de produção de acordo com a configuração do seu servidor.config/sunspot.yml
production:
solr:
hostname: localhost
port: 8983
path: /solr/default
log_level: WARNING
Se você estiver usando o Figaro ou outra gema .env, certifique-se de adicionar a variável .WEBSOLR_URL='http://localhost:8983/solr/yourCoreName'
Outra solução é criar um inicializador.
# config/initializers/sunspot.rb
if Rails.env.production?
ENV['WEBSOLR_URL'] = 'http://localhost:8983/solr/yourCoreName'
end
Para fazer outro aplicativo rails usar a mesma instância solr, adicione outra entrada principal no arquivo /opt/solr/src/main/resources/solr/solr.xml
, conforme descrito acima, e defina as propriedades de acordo com o caminho do aplicativo.
Boas pesquisas!