Skip to content

Commit

Permalink
添加rpm和deb打包
Browse files Browse the repository at this point in the history
  • Loading branch information
heavyrian2012 committed Oct 22, 2022
1 parent 813de44 commit cf0bf7e
Show file tree
Hide file tree
Showing 9 changed files with 199 additions and 4 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,11 @@
> 本工程为Demo工程,实际使用时需要把对应功能移植到您的应用服务中。如果需要直接使用,请按照后面的说明解决掉性能瓶颈问题。
#### 编译
由于```distribution/pom.xml```中使用了生成RPM包的plugin,所以需要本地安装有rpm。如果不需要RPM包,可以删除掉```distribution/pom.xml```文件中的RPM plugin。

在安装RPM后或者删除```pom.xml```文件中的RPM plugin后,执行下面命令:
```
mvn package
mvn clean package
```

#### 短信资源
Expand Down
10 changes: 10 additions & 0 deletions deb/control/control
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Package: app-server
Version: [[version]]
Section: misc
Priority: optional
Architecture: all
Maintainer: Wildfirechat <[email protected]>
Description: App Server
Distribution: development
Depends: openjdk-8-jre-headless
Homepage: https://wildfirechat.cn
2 changes: 2 additions & 0 deletions deb/control/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
mv -f /usr/local/app-server/app-*.jar /usr/local/app-server/app-server.jar
systemctl daemon-reload
3 changes: 3 additions & 0 deletions deb/control/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
rm -rf /usr/local/app-server
rm -rf /usr/lib/systemd/system/app-server.service
systemctl daemon-reload
4 changes: 2 additions & 2 deletions Dockerfile → docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM openjdk:8-jre-alpine

COPY ./target/app-*.jar /opt/app-server/app.jar
COPY ./config /opt/app-server/config
COPY ../target/app-*.jar /opt/app-server/app.jar
COPY ../config /opt/app-server/config

WORKDIR /opt/app-server

Expand Down
2 changes: 1 addition & 1 deletion docker_readme.md → docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
mvn clean package
```

然后编译镜像
然后进入到docker目录编译镜像
```
sudo docker build -t wildfire_app .
```
Expand Down
124 changes: 124 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,130 @@
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>

<plugin>
<artifactId>jdeb</artifactId>
<groupId>org.vafer</groupId>
<version>1.8</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jdeb</goal>
</goals>
<configuration>
<controlDir>${project.basedir}/deb/control</controlDir>
<skipPOMs>false</skipPOMs>
<deb>${project.build.directory}/app-server-${project.version}.deb</deb>
<dataSet>
<data>
<src>${project.build.directory}/${project.name}-${project.version}.jar</src>
<type>file</type>
<mapper>
<type>perm</type>
<prefix>/usr/local/app-server</prefix>
</mapper>
</data>
<data>
<src>${project.basedir}/config</src>
<type>directory</type>
<mapper>
<type>perm</type>
<prefix>/usr/local/app-server/config</prefix>
</mapper>
</data>
<data>
<src>${project.basedir}/systemd/app-server.service</src>
<type>file</type>
<mapper>
<type>perm</type>
<prefix>/usr/lib/systemd/system</prefix>
</mapper>
</data>
</dataSet>
</configuration>
</execution>
</executions>
</plugin>

<!-- RPM Plugin 开始-->
<!-- 打包RPM 包需要本地有rpm命令才可以,linux和mac都可以安装rpm。如果是windows需要cygwin安装rpm才可以,如果不需要rpm包,可以把这个plugin注释掉-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.2.0</version>
<executions>
<execution>
<id>generate-rpm</id>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>

<configuration>
<group>Applications/Chat</group>
<name>app-server</name>
<needarch>noarch</needarch>
<targetOS>linux</targetOS>
<prefix>/usr/local/app-server</prefix>
<defineStatements>
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
</defineStatements>
<copyTo>
target/app-server-${project.version}.rpm
</copyTo>
<requires>
<require>java-1.8.0-openjdk-headless</require>
</requires>

<mappings>
<mapping>
<directory>/usr/local/app-server</directory>
<filemode>755</filemode>
<sources>
<source>
<location>${project.build.directory}/${project.name}-${project.version}.jar</location>
</source>
</sources>
</mapping>
<mapping>
<directory>/usr/local/app-server/config</directory>
<filemode>755</filemode>
<sources>
<source>
<location>${project.basedir}/config</location>
</source>
</sources>
</mapping>

<mapping>
<directory>/usr/lib/systemd/system</directory>
<filemode>644</filemode>
<username>root</username>
<groupname>root</groupname>
<directoryIncluded>false</directoryIncluded>
<sources>
<source>
<location>${project.basedir}/systemd/app-server.service</location>
</source>
</sources>
</mapping>
</mappings>
<postinstallScriptlet>
<script>
mv -f /usr/local/app-server/app-*.jar /usr/local/app-server/app-server.jar ; echo "Im server installed in /usr/local/app-server" ; systemctl daemon-reload
</script>
</postinstallScriptlet>
<postremoveScriptlet>
<script>
echo "Remove files..." ; cd /usr/local/app-server ; rm -rf * ; rm -rf /usr/lib/systemd/system/app-server.service ; systemctl daemon-reload
</script>
</postremoveScriptlet>
</configuration>
</plugin>
<!-- RPM Plugin 结束-->

</plugins>
</build>

Expand Down
27 changes: 27 additions & 0 deletions systemd/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Linux Service 方式运行
除了命令行方式直接执行APP服务外,还可以以linux systemd service方式来运行,注意以这种方式运行,APP服务的配置还是需要按照常规方法来配置。

## 获取软件包
下载野火release或则会自己源码编译,得到Jar包```app-${version}.jar```

## 部署软件包
创建```/usr/local/app-server```目录,把Jar包```app-${version}.jar```改名为```app-server.jar```;把config目录也拷贝到```/usr/local/app-server```目录下。

## 放置Server File
```app-server.service```放到```/usr/lib/systemd/system/```目录下。

## 管理服务
* 刷新配置,当安装或者更新后需要执行: ```sudo systemctl daemon-reload```
* 启动服务: ```sudo systemctl start app-server.service```
* 停止服务: ```sudo systemctl stop app-server.service```
* 重启服务: ```sudo systemctl restart app-server.service```
* 查看服务状态:```sudo systemctl status app-server.service```
* 设置开机自启动:```sudo systemctl enable app-server.service```
* 禁止开机自启动:```sudo systemctl disable app-server.service```
* 查看控制台日志: ```journalctl -f -u app-server.service```

## 日志
日志主要看制台日志。如果需要看日志,请使用命令```journalctl -f -u app-server.service```来查看日志。

## 配置
需要对APP服务配置来达到最好的执行效果,配置文件在````/usr/local/app-server/config````目录下。另外还可以设置服务的内存大小,修改```/usr/lib/systemd/system/app-server.service```文件,在java命令中添加```-Xmx```参数。
26 changes: 26 additions & 0 deletions systemd/app-server.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[Unit]
Description=WildfirechatAPP
Documentation=https://docs.wildfirechat.cn
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/usr/local/app-server
ExecStart=/usr/bin/java -server -jar app-server.jar 2>&1

# Let systemd restart this service always
Restart=always
RestartSec=5

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

0 comments on commit cf0bf7e

Please sign in to comment.