安卓Termux搭建web服务器【公网远程手机Android服务器】

2023-11-07

概述

Termux是一个Android终端仿真应用程序,用于在 Android 手机上搭建一个完整的Linux 环境,能够实现Linux下的许多基本操作,不需要root权限Termux就可以正常运行。

Apache是一个开源网页服务器软件,由于其跨平台和安全性,被广泛使用,是最流行的 Web 服务器软件之一。我们可以在Android手机上使用Termux来搭建Web服务器,同时做内网穿透,实现公网用户也可以访问,将Android变成小型的云服务器。

下面介绍在安卓Termux上搭建apache服务创建个人站点并且结合cpolar内网穿透工具实现公网访问。

1.搭建apache

执行命令安装apache,安装相对简单,一键安装即可

pkg install apache2

然后启动apache

apachectl start

启动的时候如出现以下问题

image-20230510150038202

解决方法,修改配置文件,如果没有安装vim,执行命令安装一下

pkg install vim

编辑修改配置文件

vim $PREFIX/etc/apache2/httpd.conf

找到ServerName解开注释,www.example.com改为127.0.0.1:8080,端口号可以自己改成自己喜欢的

image-20230510151133736

修改后再次启动,即可

image-20230510151344686

打开浏览器,输入http://127.0.0.1:8080,即可看到apahe欢迎页面,

image-20230510151540948

停止apache

apachectl stop

重启apache

apachectl restart

2.安装cpolar内网穿透

cpolar官网:https://www.cpolar.com

成功创建了运行站点的一个apache容器后,我们接下来用cpolar做内网穿透来实现公网环境下的访问。

cpolar它是一个安全的内网穿透云服务,支持http/https/tcp协议,可以永久免费使用还不限制流量,支持映射80/443端口。它可以通过创建安全隧道,将本地服务暴露到公网上,让公网用户也可以正常访问内网服务,不需要公网IP,也不用设置路由器。

创建一个sources.list.d的文件夹:

mkdir -p $PREFIX/etc/apt/sources.list.d

添加cpolar下载源文件

echo "deb [trusted=yes] http://termux.cpolar.com termux extras" >> $PREFIX/etc/apt/sources.list.d/cpolar.list

更新仓库

pkg update

安装cpolar

pkg install cpolar

安装termux服务

注意:安装完成后记得关闭重启一下termux 才生效!!

pkg install termux-services

重启完termux后,然后启动cpolar

sv up cpolar

设置开机自启

sv-enable cpolar

这个是停止cpola服务

sv down cpolar

cpolar.yml主配置文件路径位置

$PREFIX/etc/cpolar/cpolar.yml

然后在手机浏览器我们输入http://localhost:9200即可看到cpolar管理界面,使用在cpolar官网注册的邮箱账号即可登陆

image-20230509155942139

3.公网访问配置

手机浏览器打开cpolar web ui管理界面,我们点击左侧仪表盘的隧道管理——创建隧道,由于apache上面我们修改配置文件是8080端口(文章是8080,具体端口号以自己的端口为准),因此我们要来创建一条http隧道,指向8080端口:

  • 隧道名称:可自定义,注意不要重复
  • 协议:http
  • 本地地址:8080
  • 域名类型:选择随机域名
  • 地区:选择China VIP

点击创建

image-20230510153916787

创建成功后打开在线隧道列表,可以看到公网访问的地址,有两种访问方式,一种是http,一种是https

image-20230510155122769

我们使用http方式,在浏览器输入公网地址,即可访问成功

image-20230510163512036

4.固定公网地址

由于上面创建的是免费随机隧道,所生成的公网地址会在24小时内随机变化,为了方便长久稳定连接,我们可以固定这个公网地址,配置一个cpolar固定的二级子域名【无需备案】,或者也可以配置使用你自己的域名来访问,这里我们以配置固定的二级子域名来举例。

需升级至基础套餐或以上才支持配置二级子域名

登录cpolar官网后台,点击左侧仪表盘的预留,找到保留二级子域名,为http隧道保留一个二级子域名。

  • 地区:选择服务器地区
  • 名称:填写您想要保留的二级子域名(可自定义)
  • 描述:即备注,可自定义填写

image-20230510171738839

本例保留一个名称为mywebsitetest的二级子域名。子域名保留成功后,我们将子域名复制下来,接下来需要将其配置到隧道中去。

image-20230510171806128

登录cpolar web ui管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到需要配置二级子域名的隧道,点击右侧的编辑

image-20230510171929758

修改隧道信息,将二级子域名配置到隧道中:

  • 域名类型:改为选择二级子域名
  • Sub Domain:填写我们刚刚所保留的二级子域名(本例为mywebsitetest

修改完成后,点击更新

image-20230510172124742

隧道更新成功后,点击左侧仪表盘的状态——在线隧道列表,可以看到隧道的公网地址,已经更新为二级子域名了.

image-20230510172216408

固定后我们使用固定的公网地址,在浏览器中打开,即可看到apache默认页面,这样一个固定的公网地址访问就设置好了

image-20230510172352811

5.添加站点

上面我们访问的页面是apache默认页面,不是我们希望的页面,我们可以把自己喜欢的页面放上去,进入apache htdocs文件夹

cd $PREFIX/share/apache2/default-site/htdocs

安装下载工具wget

pkg install wget

这里做演示,我们下载一个测试站点

wget https://www.cpolar.com/static/downloads/meditation-app-master.tar.gz

下载好后解压

tar xzf meditation-app-master.tar.gz

然后我们在浏览器上面输入上面我们的公网地址加上资源路径/meditation-app-master/index.html,就可看到我们的个人站点啦。

现在只要保持隧道为正常在线状态,公网用户就可以通过这个固定公网地址来访问到我们在termux上搭建的web站点。

image-20230510182040632

转载自cpolar极点云的文章:【手机建站】Termux+Cpolar内网穿透,搭建可以被外网访问的网站

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

安卓Termux搭建web服务器【公网远程手机Android服务器】 的相关文章

  • 如何为ScrollView放置固定图像背景?

    我应该想要滚动视图滚动 而不是背景中的图像 将图像添加到滚动视图框架之前的视图层次结构的较高位置
  • 找不到参数的方法 dependencyResolutionManagement()

    我正在尝试使用老师给我的一个项目 但它显示了一个错误 Settings file Users admin AndroidStudioProjects HTTPNetworking settings gradle line 1 A probl
  • 如何清除所有WebView存储的信息?

    我有一个 Android 浏览器 我可以选择清除缓存 存储 cookie 等 代码如下所示 webView clearCache true webView clearFormData webView clearHistory webView
  • Android Studio 3.0 Canary 9 - 无法解析包

    我在 Android Studio 3 0 Canary 9 中遇到几个错误 这些错误是 无法解析 android 软件包 下面列出了一些错误 我刚刚安装了 SDK 的所有额外软件包 但仍然收到 gradle 构建错误 Error 82 1
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 找不到 com.google.firebase:firebase-core:9.0.0 [重复]

    这个问题在这里已经有答案了 在遵循有些不一致的指示之后here https firebase google com docs admob android quick start name your project and here http
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • CardView 圆角获得意想不到的白色

    When using rounded corner in CardView shows a white border in rounded area which is mostly visible in dark environment F
  • 如何以编程方式检查 AndroidManifest.xml 中是否声明了服务?

    我正在编写一个库 该库提供了一项服务 其他开发人员可以通过将其包含在他们的项目中来使用该服务 因此 我无法控制 AndroidManifest xml 我在文档中解释了要做什么 但一个常见的问题是人们忽略了将适当的 标记添加到其清单中 或者
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 在gradle插件中获取应用程序变体的包名称

    我正在构建一个 gradle 插件 为每个应用程序变体添加一个新任务 此新任务需要应用程序变体的包名称 这是我当前的代码 它停止使用最新版本的 android gradle 插件 private String getPackageName
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 如何默认在 ActionOpenDocument 意图中显示“内部存储”选项

    我需要用户选择一个自定义文件类型的文件 并将其从 Windows 文件资源管理器拖到 Android 设备上 但默认情况下内部存储选项不可用 当我使用以下命令启动意图时 var libraryIntent new Intent Intent
  • Android Studio - Windows 7 上的 Android SDK 问题

    我对 Google i o 2013 上发布的最新开发工具 Android Studio 有疑问 我已经成功安装了该程序并且能够正常启动 我可以导入现有项目并对其进行编辑 但是 当我尝试单击 SDK 管理器图标或 AVD 管理器图标时 或者
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • 一次显示两条Toast消息?

    我希望在一个位置显示一条 Toast 消息 并在另一位置同时显示另一条 Toast 消息 多个 Toast 消息似乎总是按顺序排队和显示 是否可以同时显示两条消息 是否有一种解决方法至少可以提供这种外观并且不涉及扰乱活动布局 Edit 看来
  • 实现滚动选择 ListView 中的项目

    我想使用 ListView 您可以在其中滚动列表来选择一个项目 它应该像一个 Seekbar 但拇指应该是固定的 并且您必须使用该栏来调整它 我面临的一个问题是 我不知道这种小部件是如何调用的 这使得我很难搜索 所以我制作了下面这张图片 以
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 强制 Listview 不重复使用视图(复选框)

    我做了一个定制Listview 没有覆盖getView 方法 Listview 中的每个项目都具有以下布局 联系布局 xml

随机推荐

  • 多输出数据的回归:随机森林回归和多输出元估计器回归效果对比

    多输出数据的回归 随机森林回归和多输出元估计器回归效果对比 在机器学习中 我们常常需要预测多个输出变量 例如 在房产市场上 我们可能需要预测一个房子的价格 面积 位置等多个属性 这就是所谓的多输出数据的回归问题 本文将介绍两种流行的多输出回
  • Mysql的基本操作-增删改查

    目录 一 分类 1 DDL 2 DML 3 DCL 二 数据库的四个命令 1 数据库操作 2 常用数据类型 2 1 数值类型 2 2 字符串类型 2 3 期类型 三 表的使用 1 表的操作 3 1创建表 3 2删除表 3 3查看表结构 3
  • 设计师都去哪些网站找样机素材

    在当今的设计领域 3D样机素材已经成为一个重要的领域 3D样机素材可以让设计师更好地展示他们的设计理念和概念 也可以帮助客户更好地理解设计 为了帮助设计师更容易地创建3D样机素材 以下是我推荐的10个易于使用的3D样机素材网站 即时设计资源
  • 一篇文章教你顺利入门和开发chrome扩展程序(插件)

    前言 关于chrome extension的开发经验总结或说明文档等资料很多 很多人在写 然而 我也是一员 但是 也许这篇文章 可能给你一些不一样的感受 这里介绍的是80 你要开发扩展会碰到的问题 前面部分大多数是一些基础介绍 和别人的资料
  • 如何快速学习Java语言

    除了一般性的建议 比如制定学习计划 学教程 看书 使用IDE等等 还有一些特殊的方法可以帮助您更快速高效地学习Java语言 以下是一些特殊的学习方法 项目驱动学习 选择一个小型的实际项目 并利用Java来实现它 这样的项目可以是一个简单的命
  • Java Web应用开发 考试题库 答案

    一 选择题 共10小题 每小题2分 共20分 1 以下哪种情况是出现500报错的原因 A jsp页面出现语法错误导致无法编译 B 表单中的action地址与处理该表单的servlet映射地址不一致 C 用户访问的url地址不对或不存在 D
  • MongoDB去重

    对MongoDB的数据中某一列进行去重 可直接使用aggregate聚合函数和distinct去重函数 table aggregate match group id id1 sort count 1 table distinct id1 Q
  • 数字化发展的三个阶段

    数字化发展主要经历的概念变迁包括 数字转换 digitization 数字化 digitalization 数字化转型 digital transformation 1 数字转换 数字转换 digitization 最早出现在1954年 是
  • centos7换源

    1 首先备份系统自带yum源配置文件 etc yum repos d CentOS Base repo mv etc yum repos d CentOS Base repo etc yum repos d CentOS Base repo
  • MyEclipse无法打开server视图的解决办法

    解决办法 1 首先打开MyEclipse工作空间 2 然后删除工作空间下的 metadata plugins org eclipse core runtime settings com genuitec eclipse ast deploy
  • python中的for循环搭配else

    经常会看到for循环和else一起搭配的情形 这不是你的代码缩进不对 而是本身就有这种语法结构 for i in range 100 else for i in range n if s index s i t index t i retu
  • Docker 配置 MySQL

    文章目录 前言 正文 检查是否存在 MySQL 镜像 删除已经安装的 MySQL 镜像 拉取指定版本的镜像 运行MySQL镜像并设置密码 查看MySQL镜像是否运行 进入运行的容器 进入 MySQL 服务 查看数据文件位置 外部连接MySQ
  • 【计算机网络】IP地址详解

    计算机网络 IP地址详解 Shadow丶S的博客 CSDN博客 计算机网络ip
  • Linux下c和cuda混合编译,并生成动态链接库.so和使用

    Linux下c和cuda混合编译 并生成动态链接库 so和使用 2016 08 27 14 27 98人阅读 评论 0 收藏 举报 分类 Linux 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 梗概 如果要生成动态链接库 就需
  • 经典嵌入式开发学习网站推荐

    原文地址 http blog csdn net david luyang article details 6621065 1 EG3 关于嵌入式开发的站点 提供非常多关于嵌入式开发的资料 包括开发公司 技术文档 免费资源等等 版面包括bus
  • Vue项目实战 —— 哔哩哔哩移动端开发—— 第一篇

    目录 前言完 效果图 登录含签权 注册带正则 个人中心 下拉加载更多主页 修改个人中心 视频播放加关注 收藏 评论盖楼A回复B B回复C C回复A类似 项目开始 封装登录 注册 封装登录 从零到一开发一个 哔哩哔哩移动端App 包括后面的打
  • (python实现)最长公共子序列-2022-12-16

    算法思想 算法解释参考 算法图解 ISBN 978 7 115 44763 0 详细求解参考 算法 最长公共子序列 输出所有最长公共子序列 Python实现 主要利用了动态规划思想 从小问题着手 算法举例解释 代码实现 由上图的思路总结 可
  • git上传项目和拉取项目

    一 git上传项目和拉取项目 github创建仓库完成后 默认有两个仓库分别是main和master 默认拉取和上传操作针对于main仓库 是可以更改默认仓库的 至于如何更改默认仓库详情百度 1 在github上创建仓库 之前没有创建仓库的
  • 【猿人学WEB题目专解】猿人学第6题

    据说 看我文章时 关注 点赞 收藏 的 帅哥美女们 心情都会不自觉的好起来 前言 作者简介 大家好我是 user from future 意思是 来自未来的用户 寓意着未来的自己一定很棒 个人主页 点我直达 在这里肯定能找到你想要的 专栏介
  • 安卓Termux搭建web服务器【公网远程手机Android服务器】

    文章目录 概述 1 搭建apache 2 安装cpolar内网穿透 3 公网访问配置 4 固定公网地址 5 添加站点 概述 Termux是一个Android终端仿真应用程序 用于在 Android 手机上搭建一个完整的Linux 环境 能够