在Termux中部署一个简单的服务导航页

之前的文章中, 谈到了怎样将Android手机改造为Linux服务器, 并且可以部署各种服务, 但是每个Web服务都占用一个单独的端口号, 多了之后怎么记得住呢?

我们可以再部署一个Web服务, 显示一个服务导航页, 每次需要什么服务通过导航页就可以快速抵达, 无需记住繁杂的端口号

实现过程

先安装一个http服务, 我选择了darkhttpd, 一个很轻量的工具

bash 复制代码
pkg install darkhttpd
darkhttpd --help

创建导航页

bash 复制代码
mkdir -p ~/www/
cd ~/www
nano index.html

页面内容如下, 需要导航的服务可以自行更改services定义部分

bash 复制代码
<!doctype html>
<html lang="en-US">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="shortcut icon" href="#" />
    <title>Services List</title>
  </head>
  <body>
    <div class="container">
      <h1>Services List</h1>
      <div id="services" class="list-group">
      </div>
    </div>
  
    <script>
      let services = [
        ["VSCode", 8101, ""],
        ["Siyuan", 6806, ""],
        //["Cloudreve", 5212, ""],
      ];
      let container = document.querySelector("#services");
      let hostname = window.location.hostname;
      let content = "";
      services.forEach((service) => {
        content += "<a class=\"list-group-item list-group-item-action\" "
                + "target=\"_blank\" "
                + "href=\"http://"
                + hostname + ":"
                + service[1]
                + service[2]
                + "\">"
                + service[0]
                + "</a>\n";
      })
      container.innerHTML = content;
    </script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
  </body>
</html>

绑定80端口号

测试一下启动服务, 注意: 仅root用户可以绑定1024以下的端口号, 若要绑定80端口, 必须使用root身份执行

bash 复制代码
su -c "/data/data/com.termux/files/usr/bin/darkhttpd /data/data/com.termux/files/home/www --port 80"

运行正常, 访问正常, 现在将它服务化, 实现开机自启动

bash 复制代码
mkdir -p $PREFIX/var/service/darkhttpd
cat << 'EOF' > $PREFIX/var/service/darkhttpd/run
#!/data/data/com.termux/files/usr/bin/sh
# 使用绝对路径调用系统 su,并将所有输出写入home目录的 log 文件中
exec /data/data/com.termux/files/usr/bin/su -c "/data/data/com.termux/files/usr/bin/darkhttpd /data/data/com.termux/files/home/www --port 80" > /data/data/com.termux/files/home/log/darkhttpd.log 2>&1
EOF

chmod +x $PREFIX/var/service/darkhttpd/run
sv-enable darkhttpd
sv up darkhttpd
sv status darkhttpd

访问Web, 一个简单的导航页就实现了, 需要新增导航服务时修改一下html即可, 以下services部分, 第一个参数是URL标题, 第二个是服务对应端口号, 第三个是后面的默认路径

javascript 复制代码
      let services = [
        ["VSCode", 8101, ""],
        ["Siyuan", 6806, ""],
        //["Cloudreve", 5212, ""],
      ];
相关推荐
Ruiery7 分钟前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
欧米欧27 分钟前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery38 分钟前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
qetfw1 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
前端精髓2 小时前
调用大模型API
运维·服务器·microsoft
逆风的蚂蚁3 小时前
linux服务器性能调整怎么落地?我把 CPU 调度、I/O 优先级和内核参数这几个旋钮都拧了一遍
linux·运维·服务器
ESDWAN3 小时前
企业网络监控应该监测哪些目标?网关、网络节点还是业务系统?
服务器·网络·php
发光小北5 小时前
EtherNet/IP 转 ModbusTCP 网关现场应用中会遇到什么问题?
服务器·网络·tcp/ip
程序猿老A5 小时前
轻量云服务器总是卡,内存占比高?
运维·服务器
沫璃染墨7 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html