思路就是编写启动和停止的 shell 脚本,然后编写 systemd 配置文件。

我以我之前写的微博热搜实时推送前后端程序为?️。欢迎关注我的 微博热搜实时推送 tg 推送频道。 url is https://t.me/weibo_hot_search GitHub: https://github.com/hellodk34/weibo_hot_search

该 Java 应用是这样运行的

java -jar xxx.jar > /dev/null 2>&1 &

该 react应用是这样运行的

serve -s build > /dev/null 2>&1 &

Java 应用

编写 start-wb-hotsearch.sh 文件

注意 jar 文件的绝对路径

#!/bin/bash
/usr/local/java/jdk1.8/bin/java -jar /xxx/wb_hotsearch/wb-hotsearch-2021-12-22.jar > /dev/null 2>&1 &
echo $! > /var/run/wbhotsearch.pid

编写 stop-wb-hotsearch.sh 文件

#/bin/bash
PID=$(cat /var/run/wbhotsearch.pid)
kill -9 $PID
rm -rf /var/run/wbhotsearch.pid

编写 systemd service 文件

/usr/lib/systemd/system/ 下创建 wbhotsearch.service 文件,内容如下。注意两个shell文件的绝对路径要写对,下面给出的是假的路径

[Unit]
Description=Weibo hot search back end
After=network.target

[Service]
Type=forking
ExecStart=/xxx/wb_hotsearch/start-wb-hotsearch.sh
ExecStop=/xxx/wb_hotsearch/stop-wb-hotsearch.sh

[Install]
WantedBy=multi-user.target

配置 systemd

先执行

systemctl daemon-reload

再 enable 然后 start 即可。下面的 status 和 is-enabled 可以帮助查看服务状态

systemctl enable wbhotsearch
systemctl start wbhotsearch
systemctl status wbhotsearch
systemctl is-enabled wbhotsearch

React 应用

殊途同归,React 应用也是如此,下面简要写一下

编写 start-wbhotsearch-front.sh 文件

#!/bin/bash
/usr/bin/serve -s /xxx/wb_hotsearch/wb-hotsearch-front-end/build > /dev/null 2>&1 &
echo $! > /var/run/wbhotsearchfront.pid

编写 stop-wbhotsearch-front.sh 文件

#/bin/bash
PID=$(cat /var/run/wbhotsearchfront.pid)
kill -9 $PID
rm -rf /var/run/wbhotsearchfront.pid

编写 systemd service 文件

/usr/lib/systemd/system/ 下创建 wbhotsearch-front.service 文件,内容如下。注意两个shell文件的绝对路径要写对,下面给出的是假的路径

[Unit]
Description=Weibo hot search front end service
After=network.target

[Service]
Type=forking
ExecStart=/xxx/wb_hotsearch/wb-hotsearch-front-end/start-wbhotsearch-front.sh
ExecStop=/xxx/wb_hotsearch/wb-hotsearch-front-end/stop-wbhotsearch-front.sh

[Install]
WantedBy=multi-user.target

配置 systemd

先执行

systemctl daemon-reload

再 enable 然后 start 即可。下面的 status 和 is-enabled 可以帮助查看服务状态

systemctl enable wbhotsearch-front
systemctl start wbhotsearch-front
systemctl status wbhotsearch-front
systemctl is-enabled wbhotsearch-front

ok了,这下重启机器,我的这些服务将能够自动启动。

之所以没有用 docker,是因为太占空间了,我的 vps 存储空间告急,昨天已经另外申请了 10GB ssd 了,付款了12美元。

done~~~