You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by al...@apache.org on 2017/08/30 14:34:51 UTC

nifi-minifi git commit: MINIFI-344: Enabling running as a windows service.

Repository: nifi-minifi
Updated Branches:
  refs/heads/master 40cb28e62 -> 05ad9679c


MINIFI-344: Enabling running as a windows service.

This closes #86.

Signed-off-by: Aldrin Piri <al...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi/commit/05ad9679
Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi/tree/05ad9679
Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi/diff/05ad9679

Branch: refs/heads/master
Commit: 05ad9679c162dd3bf38632c7c81762ce3cd3de0e
Parents: 40cb28e
Author: jzonthemtn <jz...@apache.org>
Authored: Tue Jun 27 14:58:44 2017 -0400
Committer: Aldrin Piri <al...@apache.org>
Committed: Wed Aug 30 10:34:07 2017 -0400

----------------------------------------------------------------------
 minifi-assembly/NOTICE                          |   5 ++
 .../src/main/assembly/dependencies.xml          |   2 +-
 .../apache/nifi/minifi/bootstrap/RunMiNiFi.java |   2 +-
 .../nifi/minifi/bootstrap/WindowsService.java   |  42 ++++++++++
 .../src/main/markdown/System_Admin_Guide.md     |  10 +++
 .../minifi-framework/minifi-resources/NOTICE    |  11 +++
 .../src/main/resources/bin/delete-service.bat   |  23 ++++++
 .../src/main/resources/bin/install-service.bat  |  76 +++++++++++++++++++
 .../src/main/resources/bin/minifi.exe           | Bin 0 -> 103936 bytes
 .../src/main/resources/bin/minifiw.exe          | Bin 0 -> 104448 bytes
 .../src/main/resources/conf/bootstrap.conf      |   2 +
 11 files changed, 171 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-assembly/NOTICE
----------------------------------------------------------------------
diff --git a/minifi-assembly/NOTICE b/minifi-assembly/NOTICE
index 50b2dde..170f4b5 100644
--- a/minifi-assembly/NOTICE
+++ b/minifi-assembly/NOTICE
@@ -70,6 +70,11 @@ The following binary components are provided under the Apache Software License v
       Original source copyright:
       Copyright (c) 2008 Alexander Beider & Stephen P. Morse.
 
+  (ASLv2) Apache Commons Daemon
+    The following NOTICE information applies:
+      Apache Commons Daemon
+      Copyright 2002-2013 The Apache Software Foundation  
+
   (ASLv2) Apache HttpComponents
     The following NOTICE information applies:
       Apache HttpClient

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-assembly/src/main/assembly/dependencies.xml
----------------------------------------------------------------------
diff --git a/minifi-assembly/src/main/assembly/dependencies.xml b/minifi-assembly/src/main/assembly/dependencies.xml
index 0605f23..71b0ff4 100644
--- a/minifi-assembly/src/main/assembly/dependencies.xml
+++ b/minifi-assembly/src/main/assembly/dependencies.xml
@@ -107,7 +107,7 @@
             </includes>
             <unpack>true</unpack>
             <unpackOptions>
-                <filtered>true</filtered>
+                <filtered>false</filtered>
                 <includes>
                     <include>bin/*</include>
                 </includes>

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java
index b46f312..6c55260 100644
--- a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/RunMiNiFi.java
@@ -275,7 +275,7 @@ public class RunMiNiFi implements QueryableStatusAggregator, ConfigurationFileHo
         }
     }
 
-    private static File getBootstrapConfFile() {
+    public static File getBootstrapConfFile() {
         String configFilename = System.getProperty("org.apache.nifi.minifi.bootstrap.config.file");
 
         if (configFilename == null) {

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/WindowsService.java
----------------------------------------------------------------------
diff --git a/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/WindowsService.java b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/WindowsService.java
new file mode 100644
index 0000000..137e610
--- /dev/null
+++ b/minifi-bootstrap/src/main/java/org/apache/nifi/minifi/bootstrap/WindowsService.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.nifi.minifi.bootstrap;
+
+import java.io.IOException;
+import java.io.File;
+
+public class WindowsService {
+
+    private static RunMiNiFi bootstrap;
+
+    public static void start(String[] args) throws IOException, InterruptedException {
+
+        final File bootstrapConfigFile = RunMiNiFi.getBootstrapConfFile();
+
+        bootstrap = new RunMiNiFi(bootstrapConfigFile);
+        bootstrap.start();
+
+    }
+
+    public static void stop(String[] args) throws IOException, InterruptedException {
+
+        bootstrap.setAutoRestartNiFi(false);
+        bootstrap.stop();
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-docs/src/main/markdown/System_Admin_Guide.md
----------------------------------------------------------------------
diff --git a/minifi-docs/src/main/markdown/System_Admin_Guide.md b/minifi-docs/src/main/markdown/System_Admin_Guide.md
index 9c7115a..ce25cc6 100644
--- a/minifi-docs/src/main/markdown/System_Admin_Guide.md
+++ b/minifi-docs/src/main/markdown/System_Admin_Guide.md
@@ -650,6 +650,16 @@ NiFi Properties Overrides:
   nifi.database.directory: ./database_repository_override
 ```
 
+# Running as a Windows Service
+
+MiNiFi can run as a Windows service. To do so, you must modify the `conf/bootstrap.conf` to set absolute paths for some properties. The properties are:
+
+* `lib.dir`
+* `conf.dir`
+* `nifi.minifi.config`
+
+You can now install the MiNiFi service by running the `install-service.bat` script. To remove the service run the `delete-service.bat` file. 
+
 # Example Config File
 
 Below are two example config YAML files. The first tails the minifi-app.log, send the tailed log and provenance data back to a secure instance of NiFi. The second uses a series of processors to tail the app log, routes off only lines that contain "WriteAheadFlowFileRepository" and puts it as a file in the "./" directory.

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/NOTICE
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/NOTICE b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/NOTICE
index 24d24c7..cfbf867 100644
--- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/NOTICE
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/NOTICE
@@ -3,3 +3,14 @@ Copyright 2014-2017 The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
+
+===========================================
+Apache Software License v2
+===========================================
+
+The following binary components are provided under the Apache Software License v2
+
+  (ASLv2) Apache Commons Daemon
+    The following NOTICE information applies:
+      Apache Commons Daemon
+      Copyright 2002-2013 The Apache Software Foundation  
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/delete-service.bat
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/delete-service.bat b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/delete-service.bat
new file mode 100644
index 0000000..cbd0b58
--- /dev/null
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/delete-service.bat
@@ -0,0 +1,23 @@
+@echo off
+rem
+rem    Licensed to the Apache Software Foundation (ASF) under one or more
+rem    contributor license agreements.  See the NOTICE file distributed with
+rem    this work for additional information regarding copyright ownership.
+rem    The ASF licenses this file to You under the Apache License, Version 2.0
+rem    (the "License"); you may not use this file except in compliance with
+rem    the License.  You may obtain a copy of the License at
+rem
+rem       http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem    Unless required by applicable law or agreed to in writing, software
+rem    distributed under the License is distributed on an "AS IS" BASIS,
+rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem    See the License for the specific language governing permissions and
+rem    limitations under the License.
+rem
+
+set SERVICE_NAME="minifi"
+set SRV_BIN=%SERVICE_NAME%.exe
+ 
+REM Remove service
+%SRV_BIN% //DS//%SERVICE_NAME%
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/install-service.bat
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/install-service.bat b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/install-service.bat
new file mode 100644
index 0000000..96ecbda
--- /dev/null
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/install-service.bat
@@ -0,0 +1,76 @@
+@echo off
+rem
+rem    Licensed to the Apache Software Foundation (ASF) under one or more
+rem    contributor license agreements.  See the NOTICE file distributed with
+rem    this work for additional information regarding copyright ownership.
+rem    The ASF licenses this file to You under the Apache License, Version 2.0
+rem    (the "License"); you may not use this file except in compliance with
+rem    the License.  You may obtain a copy of the License at
+rem
+rem       http://www.apache.org/licenses/LICENSE-2.0
+rem
+rem    Unless required by applicable law or agreed to in writing, software
+rem    distributed under the License is distributed on an "AS IS" BASIS,
+rem    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+rem    See the License for the specific language governing permissions and
+rem    limitations under the License.
+rem
+
+call minifi-env.bat
+
+set CONF_DIR=%MINIFI_ROOT%conf
+
+set BOOTSTRAP_CONF_FILE=%CONF_DIR%\bootstrap.conf
+set SRV_BIN=%cd%\minifi.exe
+set SVC_NAME=minifi
+set SVC_DISPLAY="Apache MiNiFi"
+set SVC_DESCRIPTION="Apache MiNiFi"
+set JVM=auto
+set PR_JVMMS=12
+set PR_JVMMX=24
+set PR_JVMSS=4000
+set START_MODE=jvm
+set STOP_MODE=jvm
+set STOP_TIMEOUT=10
+set STARTUP=auto
+set JAVA_ARGS=-Dorg.apache.nifi.minifi.bootstrap.config.log.dir="%MINIFI_LOG_DIR%";-Dorg.apache.nifi.minifi.bootstrap.config.pid.dir="%MINIFI_PID_DIR%";-Dorg.apache.nifi.minifi.bootstrap.config.file="%BOOTSTRAP_CONF_FILE%"
+set START_CLASS=org.apache.nifi.minifi.bootstrap.WindowsService
+set START_METHOD=start
+set STOP_CLASS=org.apache.nifi.minifi.bootstrap.WindowsService
+set STOP_METHOD=stop
+REM START_PARAMS=-verbose
+set START_PARAMS=
+REM STOP_PARAMS=-verbose
+set STOP_PARAMS=
+set CLASS_PATH="%CONF_DIR%";"%MINIFI_ROOT%lib\*";"%MINIFI_ROOT%lib\bootstrap\*"
+set LOG_PATH="%MINIFI_ROOT%\logs"
+set LOG_PREFIX=minifi.log
+
+"%SRV_BIN%" //IS//%SVC_NAME% ^
+--DisplayName=%SVC_DISPLAY% ^
+--Description=%SVC_DESCRIPTION% ^
+--Install="%SRV_BIN%" ^
+--Jvm="%JVM%" ^
+--JvmMs="%PR_JVMMS%" ^
+--JvmMx="%PR_JVMMX%" ^
+--JvmSs="%PR_JVMSS%" ^
+--StartMode="%START_MODE%" ^
+--StopMode="%STOP_MODE%" ^
+--Startup="%STARTUP%" ^
+--StartClass="%START_CLASS%" ^
+--StopClass="%STOP_CLASS%" ^
+--StartParams="%START_PARAMS%" ^
+--StopParams="%STOP_PARAMS%" ^
+--StartMethod="%START_METHOD%" ^
+--StopMethod="%STOP_METHOD%" ^
+--StopTimeout="%STOP_TIMEOUT%" ^
+--Classpath="%CLASS_PATH%" ^
+--JvmOptions="%JAVA_ARGS%" ^
+--LogLevel=ERROR ^
+--LogPath="%LOG_PATH%" ^
+--LogPrefix="%LOG_PREFIX%" ^
+--StdOutput=auto ^
+--StdError=auto
+
+REM Start the service after installation
+"%SRV_BIN%" //ES//%SVC_NAME%

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifi.exe
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifi.exe b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifi.exe
new file mode 100644
index 0000000..dab7def
Binary files /dev/null and b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifi.exe differ

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifiw.exe
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifiw.exe b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifiw.exe
new file mode 100644
index 0000000..7302404
Binary files /dev/null and b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/bin/minifiw.exe differ

http://git-wip-us.apache.org/repos/asf/nifi-minifi/blob/05ad9679/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/bootstrap.conf
----------------------------------------------------------------------
diff --git a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/bootstrap.conf b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/bootstrap.conf
index 85204cc..5147759 100644
--- a/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/bootstrap.conf
+++ b/minifi-nar-bundles/minifi-framework-bundle/minifi-framework/minifi-resources/src/main/resources/conf/bootstrap.conf
@@ -22,6 +22,7 @@ java=java
 run.as=${minifi.run.as}
 
 # Configure where MiNiFi's lib and conf directories live
+# When running as a Windows service set full paths instead of relative paths
 lib.dir=./lib
 conf.dir=./conf
 
@@ -29,6 +30,7 @@ conf.dir=./conf
 graceful.shutdown.seconds=20
 
 # The location for the configuration file
+# When running as a Windows service use the full path to the file
 nifi.minifi.config=./conf/config.yml
 
 # Notifiers to use for the associated agent, comma separated list of class names