使用 Nginx Unit 部署 JavaWebApp
使用 Nginx Unit 部署 JavaWebApp
从源码构建和安装 NginxUnit
主要参考:http://unit.nginx.org/installation/#source-code
# 下载源码
git clone https://github.com/nginx/unit
cd unit
# 配置路径前缀
./configurate --prefix=/apps/unit
# 配置 java 模块
./configurate java
# 生成应用并安装到 /apps/unit
make && make install
启动和停止 NginxUnit
cd /apps/unit
# 查看命令行使用帮助
./sbin/unitd --help
# 使用命令行形式启动控制台,IP:127.0.0.1,端口:7777
./sbin/unitd --no-daemon --control 127.0.0.1:7777
# 停止命令行运行,Ctrl+C 即可终止命令行的执行
对于非命令行执行,即没有使用 --no-daemon
的运行方式,需要查询端口号并使用 kill 命令杀死进程的方式,在 MacBookPro 下,操作如下:
lsof -i tcp:7777
MacBook-Pro:$ lsof -i tcp:7777
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unitd 51926 nobody 4u IPv4 0xee618302c41ebef9 0t0 TCP localhost:cbt (LISTEN)
unitd 51928 nobody 4u IPv4 0xee618302c41ebef9 0t0 TCP localhost:cbt (LISTEN)
unitd 51929 nobody 4u IPv4 0xee618302c41ebef9 0t0 TCP localhost:cbt (LISTEN)
unitd 51930 nobody 4u IPv4 0xee618302c41ebef9 0t0 TCP localhost:cbt (LISTEN)
# 执行如下命令即可 (pid需要更换为自己查询到的进程pid)
kill -9 51926 51928 51929 51930
如何配置 Java 应用程序
创建配置文件 /apps/unit/unit.json
{
"config": {
"listeners": {
"*:8300": {
"application": "fxz"
}
},
"applications": {
"fxz": {
"type": "java",
"webapp": "/data/workspace/mine/fengxinzi/fxz-api/web"
}
}
}
}
发布配置到 NginxUnit
curl -X PUT -d@/apps/unit/unit.json '127.0.0.1:7777/config'
{
"success": "Reconfiguration done."
}
“success”表示配置成功。此时执行下述命令时将看到的内容与 unit.json 配置文件内容一致
curl 127.0.0.1:7777
通过 tail -n 200 -f /apps/unit/unit.log
或查看控制台输出可知 JavaWebApp 已经启动成功!
配置主要参考:http://unit.nginx.org/configuration/
Java 应用程序
属性 | 说明 |
---|---|
classpath | 应用程序所需库的路径数组(可能指向目录或.jar 文件) |
options | 定义 JVM 运行时选项的字符串数组 |
webapp (必需) | 应用程序的打包或未打包.war 文件的路径名 |
例:
{
"type": "java",
"classpath": ["/www/qwk2mart/lib/qwk2mart-2.0.0.jar"],
"options": ["-Dlog_path=/var/log/qwk2mart.log"],
"webapp": "/www/qwk2mart/qwk2mart.war"
}
最为简短的配置,只需要 2 行:
{
"type": "java",
"webapp": "/www/qwk2mart/qwk2mart.war"
}
或
{
"type": "java",
"webapp": "/www/qwk2mart/qwk2mart"
}
即可。
注意:目前的配置方式不支持 Jndi 的数据库配置方式。暂未找到设置的方法。