Измените ExecStop
на /bin/kill
и укажите PIDFile
на файл .pid
:
[Unit]
Description=Zookeeper Distributed Coordination Server
Documentation=http://zookeeper.apache.org
After=network.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
WorkingDirectory=/opt/zookeeper
Environment=ZOO_LOG_DIR=/var/log/zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start
PIDFile=/var/lib/zookeeper/zookeeper_server.pid
ExecStop=/bin/kill $MAINPID
SuccessExitStatus=1 143
Restart=on-failure
[Install]
WantedBy=multi-user.target
Не забудьте изменить SuccessExitStatus
на код 1 143
.
Как правило, API для моих приложений действительно основаны на тех же ресурсах, которые составляют интерфейс HTML. Для некоторых (не меня), который мог бы просто использовать код, который выходит из генератора лесов — но независимо от того, пишу ли я это пользовательский или позволяю генератору обработать его, существует очень немного экземпляров, где я выставляю ресурсы только программному API и не конечному пользователю просматриваю.
Управление версиями не было проблемой для приложений, которые я создал до сих пор, но я могу думать о двух способах реализовать его.
1) Вы могли добавить маршруты с префиксом 'v1', 'v2', и т.д., которые устанавливают параметр, к которому можно затем получить доступ в контроллере для определения обработки для появления:
в routes.rb:
map.resources :posts, :path_prefix => '/:version'
в posts_controller.rb
class PostsController < ApplicationController
def index
respond_to do |format|
format.xml do
if params[:version] == 'v1'
# ...
else
# ...
end
end
end
end
end
2) Вы могли бы также рассмотреть добавление пользовательского формата ответа для каждой версии
в initializers/mime_types.rb
Mime::Type.register_alias "application/xml", :v1
Mime::Type.register_alias "application/xml", :v2
в posts_controller.rb
class PostsController < ApplicationController
def index
respond_to do |format|
format.v1 do
# ...
end
format.v2 do
# ...
end
end
end
end
Первый дал бы Вам URL как example.com/v1/posts.xml и example.com/v2/posts.xml; последний дал бы Вам URL как example.com/posts.v1 и example.com/posts.v2