跳转主页

给服务器装个监控运行小工具吧

·1944 字·4 分钟
Ward
目录
申明 本文依旧不作为教程,而是作为踩坑复建进行记录……

教程推荐下面三篇:

一个简约高颜值的监控面板——Ward的构建与部署

Ward服务器监控工具搭建

【VPS折腾记录】Docker部署Ward实时监控

附项目源码:

https://github.com/AntonyLeons/Ward.git


Ward是一款用java写的服务器监控工具,支持单台服务器运行。用Dockers安装步骤会简洁很多。我这里没装docker,需要从安装java、配置环境起步。

折腾完java环境后,我由衷推荐大家使用docker……

服务器说明

  • 系统:Ubuntu 20.04
  • 主运行pleroma服务

安装java

  • 装Openjdk和Maven
apt install default-jdk maven
  • 验证安装
java –version
maven –version

我这里在maven –version出问题了。

The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
  • 去配置环境
sudo nano /etc/profile.d/maven.sh

粘贴一下

export JAVA_HOME=/usr/lib/jvm/default-java 
export M2_HOME=/opt/maven 
export MAVEN_HOME=/opt/maven 
export PATH=${M2_HOME}/bin:${PATH}

给执行权限

sudo chmod +x /etc/profile.d/maven.sh

重新加载环境变量

source /etc/profile.d/maven.sh

再次验证

mvn -version

安装ward

进入安装目录

cd /opt

拉取源码并构建

git clone https://github.com/AntonyLeons/Ward.git
cd Ward
mvn clean package

查询版本号,注意Ward文件夹首字母大写

cd /opt/Ward/target
ls

查看到ward-2.3.1.jar

开放4000端口

sudo ufw allow 4000

运行

java -jar ward-2.3.1.jar 

提示4000端口被占用。

Description: Web server failed to start. Port 4000 was already in use. 
Action: Identify and stop the process that's listening on port 4000 or configure this application to listen on another port

解决默认4000端口被占用

我问chatgpt该怎么办

答曰

  1. 找到占用端口4000的进程
  2. 停止占用端口4000的进程 kill -9 <PID>
  3. 修改应用程序监听的端口

很好,我照搬。lsof -i :4000

查询到:

COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 30707 pleroma   43u  IPv4 693766      0t0  TCP localhost:4000 (LISTEN)

我问chatgpt beam.smp是什么

答曰:beam.smp 是与 Erlang 虚拟机(Erlang Virtual Machine,简称 BEAM)相关的一个进程。BEAM 是用于运行 Erlang 和 Elixir 等编程语言的虚拟机。beam.smp 进程是 BEAM 虚拟机的一个核心组成部分,负责执行 Erlang 和 Elixir 代码。

巴拉芭拉

总之,beam.smp 进程是 Erlang 和 Elixir 编程环境的核心组成部分,它使这些语言能够实现高度并发、容错性和分布式计算等特性。它在构建可靠、高效的应用程序方面发挥了关键作用。

kill -9 30707 试图杀掉

果真杀不死……

will, i go die.

最终,我,灵光一闪,想到了一个方法。

Ward首次运行时,默认使用端口4000,在浏览器打开 ip:4000 网址后,会让重新修改端口。

那我把它源码里的默认端口改掉不就好了吗。 于是,我去github项目里查询4000,找到文件路径,对照着把所有的4000端口改掉了,再重新构建一次。


【更好的处理方法是:

Ward有个配置文件setup.ini,若端口不一致,会优先使用配置文件中的端口。

所以只要去配置中修改端口就行,这是读完README.md就能知道的。

我没读,我可真是愚蠢的小机灵鬼呢

解决了端口问题,重新运行ward,提示成功,浏览器内打开 ip:端口,就可以看到了~~

ok,先暂停服务,进入后续配置

systemctl stop ward

配置文件

刚刚说到setup.ini,就顺嘴再一提,路径/opt/Ward/target/setup.ini,进入文件后如下内容:

[setup]
serverName = my-server
theme = dark
port = 4000

可修改名称,主题支持light和dark,端口自定义。

配置子域名及反代

为了方便自己查看,再来给它配上域名吧~

翻出之前建站的文档,照猫画猫。

  • cloudflare 添加域名解析

登录 cloudflare,在DNS下新增一条A记录,指向服务器ip地址。

  • 申请证书

*将【< mysubdomain >】 对应替换,后不赘述。

certbot certonly --standalone --preferred-challenges http -d <mysubdomain>

提示申请成功

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/<mysubdomain>/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/<mysubdomain>/privkey.pem
   Your cert will expire on 2023-12-16. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

暂停nginx

systemctl stop nginx

新建nginx配置

【备注】我的处理方式:每一个子域名网站用独立的配置文件分别储存在/etc/nginx/sites-available/文件夹下;再创建对应软链。

cd /etc/nginx/sites-available
nano ward.conf

添加以下内容

server {
    listen 443 ssl;
    server_name <mysubdomain>;     #域名
    ssl_certificate /etc/letsencrypt/live/<mysubdomain>/fullchain.pem;     #获取到的证书    ssl_certificate_key /etc/letsencrypt/live/<mysubdomain>/privkey.pem;     #证书私钥

    location / {
      proxy_pass http://localhost:5000;    #对应ward端口
    }
}

#http自动跳转https
server {
    listen 80;
    server_name <mysubdomain>;     #域名
    return 301 https://$host$request_uri;
}

检查nginx配置

nginx -t

添加软链

ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf

启动 nginx

systemctl start nginx

启动ward

systemctl start ward

浏览器打开,可以看到了。


另外在在 Nginx 中配置二级域名 这篇文章下,看到了另一种配置方式。

后续有机会尝试以下这种,看起来更方便一些。

在添加好域名解析、配好新项目的nginx后,使用Certbot 会自动检测已部署在 Nginx 的域名,并确认哪个域名需要激活 HTTPS

sudo certbot --nginx
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: subdomain1
2: subdomain2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

输入数字选择后,Certbot 会向 Let’s Encrypt 申请新的证书。


其他参考:https://yonglun.me/certbot/


ok , 结束。