使用 Java Service Wrapper 将 java 程序作为 linux 服务并且开机自动启动
安装及使用 java wrapper service
一.从http://wrapper.tanukisoftware.org/doc/english/download.jsp
下载 wrapper-linux-x86-64-3.5.45.tar(请使用Community版本,因Professional和Standard版本需要购买Licenses);
下载是个 压缩包 wrapper-linux-x86-64-3.5.45.tar.gz
二、解压缩后 如图:
三、在windows上 创建一个名为 app 目录 ,在这个目录下 再建 bin,conf,lib,logs 四个目录
四、复制文件 至 app 目录下
1. 拷贝 wrapper-linux-x86-64-3.5.45\bin\wrapper(为二进制文件) 到 app\bin\ 目录下
2.拷贝 wrapper-linux-x86-64-3.5.45\src\bin\sh.script.in 到 app\bin\ 目录下 并改名为 app.sh (注:将 .in 去掉 )
将自己编写的 java程序用到的配置文件都拷贝到该目录下 包括.ini,.xml;
3.拷贝 wrapper-linux-x86-64-3.5.45\src\conf\wrapper.conf.in 到 app\conf\目录下 并改名为wrapper.conf (注:将 .in 去掉 )
4.拷贝 wrapper-linux-x86-64-3.5.45\lib\wrapper.jar,libwrapper.so 到 app\lib\目录下
将自己编写的 java程序,及用到的jar包也拷贝到该目录下
如图 app目录
app\bin 目录
app/conf 目录
app/lib 目录 SinaServer.jar 是自己编写的java程序,其它四个.jar是从 wrapper压缩包中复制过来的。
app/logs 目录 这个目录运行前是空的 wrapper.log 是 wrapper 自动创建的日志
五. 配置 app.sh , 设置应用程序的名称等(编辑时请使用NotePad2或EditPlus) 打开app.sh搜索 APP_NAME=
# Application
APP_NAME="MailSender"
APP_LONG_NAME="MailSender Application"
六. 配置 wrapper.conf
# Java Application
# Locate the java binary on the system PATH:
#wrapper.java.command=java
# Specify a specific java binary:
#set.JAVA_HOME=/java/path
wrapper.java.command=%JAVA_HOME%/bin/java
# Java Main class. This class must implement the WrapperListener interface
# or guarantee that the WrapperManager class is initialized. Helper
# classes are provided to do this for you. See the Integration section
# of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp #默认使用
# Java Classpath (include wrapper.jar) Add class path elements as
# needed starting from 1
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/classes12.jar #其它引入jar
wrapper.java.classpath.3=../lib/activation.jar #其它引入jar
wrapper.java.classpath.4=../lib/mail.jar #其它引入jar
wrapper.java.classpath.5=../lib/App.jar #当前应用jar
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib #Windows 版本使用Wrapper.DLL,Linux版本使用libwrapper.so
# Application parameters. Add parameters as needed starting from 1
wrapper.app.parameter.1=com.wisdom.mail.Main #app应用启动类
#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=AppName Application
我用的是 %JAVA_HOME%/bin/java 环境变量
没变,使用默认
SinaServer.jar为自己编写的程序
没变,使用默认
在IDEA中
七、将 app目录(包括目录下所有文件) 上传 到 linux 服务器的 /usr/local 下
八、分别执行 下面命令 目的:赋于 权限
chmod 755 /usr/local/app
cd /usr/local/app/bin
sudo chmod 755 app.sh
sudo chmod 755 wrapper
注:sudo chmod 755 app.sh 这句 app.sh 一定要加 .sh
九、启动服务
如果要检查服务是否执行正常,可先使用console参数,如果正常就可以使用start来启动服务了。
先执行检查
/usr/local/app/bin/app.sh console
启动服务
/usr/local/app/bin/app.sh start
PID:2354 为程序运行的 ID
查看当前现在执行的 java 进程
ps -ef | grep java
下面是 app.sh 的参数
/usr/local/app/bin/app.sh [ console | start | stop | restart | condrestart | status | install | remove | dump ]
Commands:
console Launch in the current console.
start Start in the background as a daemon process.
stop Stop if running as a daemon or in another console.
restart Stop if running and then start.
condrestart Restart only if already running.
status Query the current status.
install Install to start automatically when system boots.
remove Uninstall.
dump Request a Java thread dump if running.
十、我在部署时,遇到的问题及解决方法
1.目录不对
linux的命令
cd .. 返回上一级目录 注意 cd 后面有个 空格
ls 查看目录下的所有文件
2.没有 赋于 权限
解决方法:重新 执行 第 八 步
3. app.sh 的执行 参数 不能 同时执行多个 ,应分开执行 如: /usr/local/app/bin/app.sh console
4. \bin\logs 目录没有 创建
5.自己编写的 Java程序 放错位置。 (注:Java程序所用到的 所有 .jar 也应放到这个目录下 )
应 放到 /app/lib/ 目录下
感谢:
zljjava
https://blog.csdn.net/zljjava/article/details/7894617
https://blog.csdn.net/zljjava/article/details/8279410