Commit 5ee59f99 authored by Stefan Galinski's avatar Stefan Galinski 🎮
Browse files

[TASK] Complete refactoring for the new solr version

parent bff51cd1
Description
===========
**This is alpha software! It is used in production, but it is not guaranteed to work with your setup!***
This chef cookbook is based on the shell-scripts which are distributed with the EXT:solr (thank you Ingo Renner!). The
cookbook offers two LWRPs which should be enough to setup a solr app with unlimited solr cores.
Since version 2.0 the cookbook works only with the TYPO3 Solr 7+.
Requirements
============
......@@ -15,15 +15,6 @@ Platform:
The following Opscode cookbooks are dependencies:
* tomcat
If you want to user this cookbook with EXT:solr >= 3.0 you have to install java 7 on your system. When using the
java-cookbook, you need to override this attribute:
```ruby
node[:java][:jdk_version] = "7"
```
Attributes
==========
......@@ -70,22 +61,47 @@ typo3_solr_core "de-TestWeb-123-de_DE" do
end
```
Important information
=====================
The TYPO3 solr project has moved the sources to github. So we also need to fetch the information from github.
We only handle this if you use the extension in version 3.1 or higher.
For the older versions we just use the files from forge.typo3.org.
Integration Example
===================
``` ruby
if node['typo3_site']['solr']['init']
include_recipe 'java'
include_recipe 'typo3_solr'
typo3_solr_app 'solr' do
solr node['typo3_site']['solr']['version_solr']
extension node['typo3_site']['solr']['version_extension']
tika_server node['typo3_site']['solr']['version_tika_server']
plugin_access node['typo3_site']['solr']['version_plugin_access']
plugin_utils node['typo3_site']['solr']['version_plugin_utils']
plugin_lang node['typo3_site']['solr']['version_plugin_lang']
languages node['typo3_site']['solr']['languages']
end
node['typo3_site']['solr']['cores'].each do |core_data|
typo3_solr_core core_data['name'] do
language core_data['language']
app 'solr'
action :add
end
end
execute 'solr-updateConnections' do
command "php #{node['typo3_site']['webroot']}/#{node['typo3_site']['hostname']}/#{node['typo3_site']['web_directory']}/typo3/cli_dispatch.phpsh solr updateConnections || true"
user 'vagrant'
group data_bag['groupId']
action :run
end
end
```
License and Author
==================
Author: Stefan Galinski (<stefan@sgalinski.de>)
Author: Philipp Bergsmann (<p.bergsmann@opendo.at>)
Copyright: 2014 opendo GmbH (http://opendo.at)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
......
if node['platform_version'] == '16.04'
default['tomcat']['base_version'] = 8
default['java']['jdk_version'] = 8
else
default['tomcat']['base_version'] = 6
default['java']['jdk_version'] = 7
default['java']['install_flavor'] = 'oracle'
default['java']['oracle']['accept_oracle_download_terms'] = true
end
default['java']['jdk_version'] = 8
default['tomcat']['base_instance'] = "tomcat#{node['tomcat']['base_version']}"
default['tomcat']['packages'] = ["tomcat#{node['tomcat']['base_version']}"]
default['tomcat']['deploy_manager_packages'] = ["tomcat#{node['tomcat']['base_version']}-admin"]
default['tomcat']['user'] = "tomcat#{node['tomcat']['base_version']}"
default['tomcat']['group'] = "tomcat#{node['tomcat']['base_version']}"
default['tomcat']['home'] = "/usr/share/tomcat#{node['tomcat']['base_version']}"
default['tomcat']['base'] = "/var/lib/tomcat#{node['tomcat']['base_version']}"
default['tomcat']['config_dir'] = "/etc/tomcat#{node['tomcat']['base_version']}"
default['tomcat']['log_dir'] = "/var/log/tomcat#{node['tomcat']['base_version']}"
default['tomcat']['tmp_dir'] = "/tmp/tomcat#{node['tomcat']['base_version']}-tmp"
default['tomcat']['work_dir'] = "/var/cache/tomcat#{node['tomcat']['base_version']}"
default['tomcat']['context_dir'] = "#{node['tomcat']['config_dir']}/Catalina/localhost"
default['tomcat']['webapp_dir'] = "/var/lib/tomcat#{node['tomcat']['base_version']}/webapps"
default['typo3_solr']['solr']['solr_home'] = '/srv/solr'
default['typo3_solr']['solr']['tika_home'] = '/srv/tika'
default['typo3_solr']['solr']['solr_home'] = '/opt/solr'
default['typo3_solr']['solr']['tika_home'] = '/opt/tika'
default['typo3_solr']['solr']['systemd'] = '/lib/systemd/system'
\ No newline at end of file
......@@ -4,10 +4,8 @@ maintainer_email 'stefan@sgalinski.de'
license 'All rights reserved'
description 'Installs/Configures TYPO3 EXT:solr'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version '1.3.0'
recipe 'typo3_solr::default', 'Installs/Configures TYPO3 EXT:solr'
version '2.0.0'
issues_url 'https://gitlab.sgalinski.de/chef-cookbooks/typo3_solr/issues'
source_url 'https://gitlab.sgalinski.de/chef-cookbooks/typo3_solr'
depends 'apt'
depends 'tomcat', '~> 1.3.0'
\ No newline at end of file
use_inline_resources
action :add do
uri = URI.parse("https://raw.githubusercontent.com/TYPO3-Solr/ext-solr/release-#{new_resource.extension}.x/README.md")
# Install requirements
package 'lsof'
request = Net::HTTP.new(uri.host, uri.port)
request.use_ssl = true
request.verify_mode = OpenSSL::SSL::VERIFY_NONE
response = request.request_head uri.request_uri
if response.code.to_i == 200
remote_branch = "release-#{new_resource.extension}.x"
else
remote_branch = 'master'
end
resources_path = 'Resources/Solr'
ext_solr_uri = "https://raw.githubusercontent.com/TYPO3-Solr/ext-solr/#{remote_branch}/#{resources_path}"
plugin_uri = "https://github.com/TYPO3-Solr/solr-typo3-plugin/releases/download/release-#{new_resource.plugin}"
tika_server_uri = "http://mirror.dkd.de/apache/tika"
service 'tomcat' do
service_name node['tomcat']['base_instance']
supports :restart => true, :reload => true, :status => true
# Create the solr user
user 'solr' do
comment 'Solr User'
home node['typo3_solr']['solr']['solr_home']
shell '/bin/bash'
# openssl passwd -1 "mypassword"
password '$1$YwUKq1QX$qIVeFlybWqOKJjRLed29j'
end
# Fetch and unpack the wanted solr release from our deploy server
# TODO Add a fallback to an official server if the release is not available on our server
bash 'Fetch Solr' do
user 'vagrant'
timeout 3000000
action :run
only_if {
not ::File.exists?("#{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}.tar.gz")
}
......@@ -37,245 +28,98 @@ action :add do
--no-o --no-g deploy@deploy.sgalinski.de:~/solr/solr-#{new_resource.solr}.tgz \
"#{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}.tar.gz";
EOF
action :run
end
execute "decompress-solr-archive - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "tar -xzf apache-solr-#{new_resource.solr}.tar.gz"
creates "#{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}/dist/apache-solr-#{new_resource.solr}.war"
end
# copy solr war-file
execute "rename-solr-dir - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "mv solr-#{new_resource.solr} apache-solr-#{new_resource.solr}"
creates "#{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}"
end
execute "copy-solr-app - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "cp apache-solr-#{new_resource.solr}/dist/solr-#{new_resource.solr}.war #{node['tomcat']['webapp_dir']}/#{new_resource.name}.war"
creates "#{node['tomcat']['webapp_dir']}/#{new_resource.name}.war"
end
execute "copy-solr-libs - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "cp apache-solr-#{new_resource.solr}/example/lib/ext/*.jar #{node['tomcat']['home']}/lib/"
only_if { Gem::Version.new(new_resource.solr) >= Gem::Version.new('4.0.0') }
end
execute "chmod - #{new_resource.name}" do
command "chmod -R 777 #{node['tomcat']['home']}/lib/"
end
execute "copy-log4j-properties - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "cp apache-solr-#{new_resource.solr}/example/resources/log4j.properties #{node['tomcat']['home']}/lib/log4j.properties"
creates "#{node['tomcat']['home']}/lib/log4j.properties"
only_if { Gem::Version.new(new_resource.solr) >= Gem::Version.new('4.0.0') }
end
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf" do
owner node['tomcat']['user']
group 'root'
mode 0775
action :create
recursive true
end
execute "copy-solr-files - #{new_resource.name}" do
cwd Chef::Config['file_cache_path']
command "cp -r apache-solr-#{new_resource.solr}/example/solr/* #{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/"
creates
end
new_resource.languages.each do |language|
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/#{language}" do
owner node['tomcat']['user']
group 'root'
mode 0775
action :create
end
%w{ protwords.txt schema.xml synonyms.txt }.each do |file|
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/#{language}/#{file}" do
source "#{ext_solr_uri}/typo3cores/conf/#{language}/#{file}"
action :create_if_missing
owner node['tomcat']['user']
mode 0644
end
end
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/#{language}/_schema_analysis_stopwords_#{language}.json" do
source "#{ext_solr_uri}/typo3cores/conf/#{language}/_schema_analysis_stopwords_#{language}.json"
action :create_if_missing
owner node['tomcat']['user']
mode 0644
end
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/#{language}/german-common-nouns.txt" do
source "#{ext_solr_uri}/typo3cores/conf/#{language}/german-common-nouns.txt"
action :create_if_missing
owner node['tomcat']['user']
mode 0644
only_if { language === 'german' }
end
end
%w{ elevate.xml general_schema_fields.xml general_schema_types.xml solrconfig.xml }.each do |file|
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/#{file}" do
source "#{ext_solr_uri}/typo3cores/conf/#{file}"
action :create_if_missing
owner node['tomcat']['user']
mode 0664
end
end
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3cores/conf/currency.xml" do
source "#{ext_solr_uri}/typo3cores/conf/currency.xml"
action :create_if_missing
owner node['tomcat']['user']
mode 0644
only_if { Gem::Version.new(new_resource.extension) >= Gem::Version.new('2.8.0') }
end
# Move solr and adjust permissions to the final destination
bash 'Move Solr' do
user 'vagrant'
timeout 3000000
action :run
only_if {
not ::File.exists?("#{node['typo3_solr']['solr']['solr_home']}/README.txt")
}
file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/solr.xml" do
action :delete
code <<-EOF
cd #{Chef::Config['file_cache_path']};
tar -xzf apache-solr-#{new_resource.solr}.tar.gz;
mv solr-#{new_resource.solr} #{node['typo3_solr']['solr']['solr_home']};
chown solr:root -R #{node['typo3_solr']['solr']['solr_home']};
EOF
end
template "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/solr.xml" do
source 'solr.xml.erb'
#variables(:cores => node['typo3_solr'][:cores][new_resource.extension])
owner node['tomcat']['user']
# Add systemd starter script
template "#{node['typo3_solr']['solr']['systemd']}/solr.service" do
source 'solr.service.erb'
variables(:app => new_resource.solr)
mode 0644
cookbook 'typo3_solr'
end
execute 'systemctl enable solr'
%w{ bin conf data }.each do |directory|
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/#{directory}" do
action :delete
recursive true
end
end
file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/README.txt" do
action :delete
end
# Fetch the solr TYPO3 extension
bash 'Fetch Solr' do
user 'vagrant'
timeout 3000000
action :run
only_if {
not ::File.exists?("#{Chef::Config['file_cache_path']}/ext-solr-#{new_resource.extension}.tgz")
}
template "#{node['tomcat']['context_dir']}/#{new_resource.name}.xml" do
source 'tomcat_solr.xml.erb'
variables(:app => new_resource.name)
owner node['tomcat']['user']
mode 0644
cookbook 'typo3_solr'
code <<-EOF
rsync --delete -auvz --progress -e "ssh -o StrictHostKeyChecking=no" \
--no-o --no-g deploy@deploy.sgalinski.de:~/solr/ext-solr-#{new_resource.extension}.tgz \
"#{Chef::Config['file_cache_path']}/ext-solr-#{new_resource.extension}.tgz";
EOF
end
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/dist" do
action :create
mode 0775
end
# Unpack and copy directories to the final location
bash 'Move Solr' do
user 'vagrant'
timeout 3000000
action :run
only_if {
not ::File.exists?("#{Chef::Config['file_cache_path']}/ext-solr/README.md")
}
execute "copy-dist - #{new_resource.name}" do
command "cp -r #{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}/dist #{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/"
code <<-EOF
cd #{Chef::Config['file_cache_path']};
tar -xzf ext-solr-#{new_resource.extension}.tgz;
cd #{node['typo3_solr']['solr']['solr_home']};
rm -rf server/solr/configsets/ && cp -a #{Chef::Config['file_cache_path']}/ext-solr/Resources/Private/Solr/configsets server/solr/configsets/;
cp -a #{Chef::Config['file_cache_path']}/ext-solr/Resources/Private/Solr/solr.xml server/solr/;
cp -a #{Chef::Config['file_cache_path']}/ext-solr/Resources/Private/Solr/cores server/solr/;
chown solr:root -R #{node['typo3_solr']['solr']['solr_home']};
EOF
end
execute "copy-contrib - #{new_resource.name}" do
command "cp -r #{Chef::Config['file_cache_path']}/apache-solr-#{new_resource.solr}/contrib #{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/"
end
# start solr
execute 'systemctl start solr'
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3lib" do
# Setup Tika server
directory node['typo3_solr']['solr']['tika_home'] do
owner 'root'
group 'root'
mode 0770
action :create
mode 0775
end
# old typo3 solr plugin
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3lib/solr-typo3-plugin-#{new_resource.plugin}.jar" do
source "#{plugin_uri}/solr-typo3-plugin-#{new_resource.plugin}.jar"
mode 0644
notifies :restart, 'service[tomcat]', :immediately
only_if { Gem::Version.new(new_resource.plugin) > Gem::Version.new('0.0.0') }
end
# new typo3-solr plugins
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3lib/solr-typo3-access-#{new_resource.plugin_access}.jar" do
source "http://www.typo3-solr.com/fileadmin/files/solr/Solr4x/solr-typo3-access-#{new_resource.plugin_access}.jar"
mode 0644
notifies :restart, 'service[tomcat]', :immediately
only_if { Gem::Version.new(new_resource.plugin_access) > Gem::Version.new('0.0.0') }
end
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3lib/solr-typo3-utils-#{new_resource.plugin_utils}.jar" do
source "http://www.typo3-solr.com/fileadmin/files/solr/Solr4x/solr-typo3-utils-#{new_resource.plugin_utils}.jar"
mode 0644
notifies :restart, 'service[tomcat]', :immediately
only_if { Gem::Version.new(new_resource.plugin_utils) > Gem::Version.new('0.0.0') }
end
remote_file "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}/typo3lib/commons-lang3-#{new_resource.plugin_lang}.jar" do
source "http://www.typo3-solr.com/fileadmin/files/solr/Solr4x/commons-lang3-#{new_resource.plugin_lang}.jar"
mode 0644
notifies :restart, 'service[tomcat]', :immediately
only_if { Gem::Version.new(new_resource.plugin_lang) > Gem::Version.new('0.0.0') }
remote_file "#{node['typo3_solr']['solr']['tika_home']}/tika-server-#{new_resource.tika_server}.jar" do
source "http://mirror.dkd.de/apache/tika/tika-server-#{new_resource.tika_server}.jar"
mode 0550
owner 'root'
only_if {
not ::File.exists?("#{node['typo3_solr']['solr']['tika_home']}/tika-server-#{new_resource.tika_server}.jar")
}
end
# tika server
template "#{node['typo3_solr']['solr']['systemd']}/tika-server.service" do
source 'tika-server.service.erb'
variables(:app => new_resource.tika_server)
mode 0644
cookbook 'typo3_solr'
end
execute 'systemctl enable tika-server'
remote_file "#{node['typo3_solr']['solr']['tika_home']}/tika-server-#{new_resource.tika_server}.jar" do
source "#{tika_server_uri}/tika-server-#{new_resource.tika_server}.jar"
mode 0550
owner node['tomcat']['user']
only_if { Gem::Version.new(new_resource.tika_server) > Gem::Version.new('0.0.0') }
end
execute "enable tika-server" do
command "systemctl enable tika-server.service"
end
# reset directory access restrictions
execute "chown - #{new_resource.name}" do
command "chown -R #{node['tomcat']['user']}:#{node['tomcat']['group']} #{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name} && chmod -R o+rw #{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}"
end
new_resource.updated_by_last_action(true)
end
action :remove do
service 'tomcat' do
service_name node['tomcat']['base_instance']
supports :restart => true, :reload => true, :status => true
end
directory "#{node['typo3_solr']['solr']['solr_home']}/#{new_resource.name}" do
action :delete
recursive true
end
file "#{node['tomcat']['context_dir']}/#{new_resource.name}.xml" do
action :delete
end
file "#{node['tomcat']['webapp_dir']}/#{new_resource.name}.war" do
action :delete
end
directory "#{node['tomcat']['webapp_dir']}/#{new_resource.name}" do
action :delete
recursive true
notifies :restart, 'service[tomcat]', :immediately
end
# done
new_resource.updated_by_last_action(true)
end
\ No newline at end of file
......@@ -2,24 +2,14 @@ use_inline_resources
action :add do
new_resource.updated_by_last_action(false)
status_url = "http://127.0.0.1:8080/#{new_resource.app}/admin/cores?action=STATUS&core=#{new_resource.name}&wt=json"
puts status_url
status_response = Net::HTTP.get_response(URI.parse(status_url))
status = JSON.parse(status_response.body)
#unless status['status'][new_resource.name].has_key?('dataDir')
create_url = "http://127.0.0.1:8080/#{new_resource.app}/admin/cores?action=CREATE&name=#{new_resource.name}&instanceDir=typo3cores&schema=#{new_resource.language}/schema.xml&dataDir=data/#{new_resource.name}"
# execute "#{node['typo3_solr']['solr']['solr_home']}/bin/solr create -c #{new_resource.name}"
create_url = "http://localhost:8983/solr/admin/cores?action=CREATE&name=#{new_resource.name}&configSet=#{new_resource.config_directory}&schema=#{new_resource.language}/schema.xml&dataDir=dataDir=../../data/#{new_resource.name}"
puts create_url
Net::HTTP.get_response(URI.parse(create_url))
new_resource.updated_by_last_action(true)
#end
end
action :remove do
delete_url = "http://127.0.0.1:8080/#{new_resource.app}/admin/cores?action=UNLOAD&core=#{new_resource.name}&deleteIndex=true"
Net::HTTP.get_response(URI.parse(delete_url))
execute "#{node['typo3_solr']['solr']['solr_home']}/bin/solr delete -c #{new_resource.name}"
new_resource.updated_by_last_action(true)
end
\ No newline at end of file
#
# Cookbook Name:: typo3_solr
# Recipe:: default
#
# Copyright sgalinski Internet Services
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
include_recipe 'tomcat'
directory node['typo3_solr']['solr']['solr_home'] do
owner node['tomcat']['user']
group 'root'
mode 0770
action :create
end
directory node['typo3_solr']['solr']['tika_home'] do
owner node['tomcat']['user']
group 'root'
mode 0770
action :create
end
\ No newline at end of file
actions :add, :remove
actions :add
attribute :name, :kind_of => String, :name_attribute => true
attribute :solr, :kind_of => String, :default => '3.6.2'
attribute :tika_server, :kind_of => String, :default => '1.14'
attribute :extension, :kind_of => String, :default => '2.8'
attribute :plugin, :kind_of => String, :default => '0.0.0'
attribute :plugin_access, :kind_of => String, :default => '0.0.0'
attribute :plugin_utils, :kind_of => String, :default => '0.0.0'
attribute :plugin_lang, :kind_of => String, :default => '0.0.0'
attribute :languages, :kind_of => Array, :default => %w{ english }
attribute :solr, :kind_of => String, :default => '6.3.0'
attribute :tika_server, :kind_of => String, :default => '1.16'
attribute :extension, :kind_of => String, :default => '7.0'
def initialize(*args)
super
......
actions :add, :remove
attribute :name, :kind_of => String, :name_attribute => true
attribute :language, :kind_of => String, :default => "english"
attribute :app, :kind_of => String
attribute :language, :kind_of => String, :default => 'english'
attribute :config_directory, :kind_of => String, :default => 'ext_solr_7_0_0'
def initialize(*args)
super
......
[Unit]
Description=Apache Solr Server
After=syslog.target network.target remote-fs.target nss-lookup.target
Requires=network.target
[Service]
Restart=on-failure
PIDFile=<%= node['typo3_solr']['solr']['solr_home'] %>/bin/solr-8983.pid
ExecStart=<%= node['typo3_solr']['solr']['solr_home'] %>/bin/solr -m 1G -noprompt
User=solr
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="true">