- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
开头:之前做了个文档转换的小项目,想部署在安卓手机上,自己可以随时看看,所以才有了下面这篇文章,内容或有瑕疵,望请批正。文末放我自己部署文档转换网址,仅供大家参考,谢谢! 。
选择: Termux 还是 Linux Deploy 还是 AidLinux ?
我自己的情况就是:linux deploy安装ram方式以后,每次重启手机后就无法启动ssh(水平有限解决不了就放弃了);aidlinux安装了商店一打开就闪退,听说是root过了才会这样,当然网上有root过以后怎么安装aidlinux的方法,我偷懒没去深究,就放弃了。 最后选择了Termux 。
1、下载F-Droid这个软件,然后在这个软件商城里面搜索Termux,安装就行.
新安装的Termux配置可以参考国光大大的教程: Termux 高级终端安装使用配置教程 | 国光 (sqlsec.com) 。
首先先说明一下,Termux不管root没root过都能用,root过的可以使用tsu命令转成root用户(谨慎操作),没root的使用termux-chroot.
#没执行termux-chroot命令之前,你打开Termux后pwd的目录是这样的:
~ $ pwd
/data/data/com.termux/files/home
#而执行termux-chroot命令之后,pwd的目录就变成这样:
~ $ termux-chroot
~ $ pwd
/home
注意! 。
我个人的建议是,像nginx、redis、或你的jar包这些的运行最好是在执行termux-chroot命令切换之后再跑起来,因为像我写的文档转换,就会因为找不到系统字体而报错无法进行转换(无论是把windows字体迁过来后也一样报错),而且整个环境在路径上,有时候你不得不使用绝对路径加上前面这串/data/data/com.termux/files/...才能识别,而执行过termux-chroot之后,你的java程序里面写/home是完全能够识别的,而不会报找不到路径这种错... 。
安装之前需要注意的事情:
apt update
apt upgrade
2、我们先记住一个命令:pkg files xxx 这个命令可以看你安装后的软件的路径,包括配置文件等,有利于你自己查找并修改配置文件的内容.
termux的方便之处就在于你安装即配置,前提条件是你安装已有的,比如jdk17,一个安装命令就能安装并配置系统环境变量,但如果你安装的是jdk8或者其它非17的版本,你需要自己去配置环境变量(看个人) 。
3、特别注意:我以下的启动方式都是在执行termux-chroot命令之后 。
输入直接安装 。
pkg install nginx
**输入可以直接启动 ** nginx 。
安装完成后,可以修改配置文件,查看安装的位置 pkg files nginx 。
aarch版本 。
Java Downloads | Oracle 。
jdk-8u351-linux-aarch64.rpm 。
apt install openjdk-17
直接可以查看java版本 。
java -version
在Termux上有相应的ARM版本的Redis安装包或二进制文件,并且很好安装 。
1、安装Redis 。
$ pkg install redis
2、&是以守护进程方式启动redis服务,启动后可以ctrl+c关闭,并不会关闭程序 。
$ redis-server &
3、登录redis客户端 。
$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
4、设置登录口令(密码) Redis没有设置口令时,如果向公网暴露6379端口,就很有可能被黑客劫持 设置密码的方式有两种:第一种是登录客户端设置 。
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "" //默认为空
127.0.0.1:6379> config set requirepass [passwd] //pwd就是设置的口令
127.0.0.1:6379> ping //未验证口令进行心跳反馈
(error) NOAUTH Authentication required
127.0.0.1:6379> auth [passwd] //验证口令
第二种是在配置文件中修改 Windows在安装目录下打开redis.windows.conf文件,大约在443行 Linux在/usr/etc/目录下打开redis.conf文件,大约在507行 找到requirepass字段,取消注释,将后面的字符串修改为要设置的口令 。
requirepass [passwd]
保存退出 。
关闭redis,指定配置文件重新启动, 重新登录客户端验证口令 。
$ redis-server /etc/redis.conf &
$ redis-cli
127.0.0.1:6379> auth [passwd]
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> exit
可以带口令/IP/端口登录客户端 。
$ redis-cli -h [host] -p [port] -a [passwd]
127.0.0.1:[port]> ping
PONG
127.0.0.1:[port]> exit
MySQL数据库没有在ARM平台的二进制安装文件/源码包,而其重要分支也是目前主要的MySQL替代产品MariaDB有在手机等ARM平台的安装包/源码包. 下面开始在安卓手机Termux终端中安装数据库 。
1、安装MariaDB(即mysql) 。
pkg install mariadb
切换到 etc 目录查看是否有 my.cnf.d 目录 。
$ cd /data/data/com.termux/files/usr/etc
$ ls
没有就新建一个 。
$ mkdir my.cnf.d
配置MariaDB 。
$ mysql_install_db
如果提示mysql.user table已经存在,则配置 。
$ mysql_upgrade
启动MySQL/MariaDB服务 。
$ mysqld &
或 。
$ mysqld_safe -u root &
mysqld 是mysql数据库的守护进程,而 mysqld_safe 相当于是mysqld的守护进程, & 是让进程后台运行,不占用终端,如果没加, Ctrl + C 等方式退出进程重新加上 & ,或另起一个终端. 。
1、登录数据库 由于MariaDB默认没有密码,提示输密码时直接回车 。
$ mysql -uroot -p
或者不加参数 。
$ mysql
或 。
$ mariadb
2、查看数据库是否有'mysql'这个数据库 。
MariaDB [(none)]> show databases;
(如果没有则请使用上面的命令重新安装) 3、再看mysql数据库里是由有'user'这个表 。
MariaDB [(none)]> use mysql;
MariaDB [(mysql)]> show tables;
(有mysql数据库就一般有user表,没有也重新安装) 4、 查看表信息 。
MariaDB [(mysql)]> select * from user;
可以看到安装后有两个用户,'root'和'a0_****',两个用户默认都没有密码. 。
如果密码执行mysql_secure_installation命令更新root密码报错:Access denied for user 'root'@'localhost' 。
就先把mysqld的进程杀了,重启执行:mysqld --skip-grant-tables & 。
如果要输入密码,直接回车,然后切换到mysql数据库:use mysql 。
然后执行修改密码的命令:alter user 'root'@localhost identified by '你的密码',
如果报错: The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement,则执行flush privileges,然后再重新执行上面的修改密码的命令,再flush privileges;就可以了 。
5、为用户设置密码 。
MariaDB [(mysql)]> alter user 'root'@'localhost' identified by 'xxx';
6、设置远程登录的权限 。
输入命令编辑 。
vi ~/.bash_profile
如果出现syntax error near unexpected token `fi',则有可能编码有问题。使用cat -v ~/.bash_profile命令可以看到每一行的结尾都带着^M 明显不对,因为^M是window的换行符,不是linux的 。
vi ~/.bash_profile
:set ff #查看发现是dos
:set ff=unix #设置为unix模式
:wq #保存退出即可
if pgrep -x "sshd" >/dev/null
then
echo "ssh-service运行中..."
else
sshd >/dev/null &
echo "ssh-service已开启..."
fi
注意,.bashrc脚本是每当有一个新会话就会执行里面的命令,而.bash_profile脚本是一个用户登录就会执行,不管后面有多少个新会话使用这个用户都不会再执行 。
这个定时执行的脚本我是用来定时巡检自己的软件有没有宕机的,如果有宕机了则重新启动这样 。
1、安装 pkg install cronie 。
2、指令集 crond [options] 。
-h print this message打印此消息
-i deamon runs without inotify support在没有inotify支持的情况下运行
-m <comm> off, or specify preferred client for sending mails在没有inotify支持的情况下运行
-n run in foreground在前台运行
-f run in foreground, the same as -n在前台运行,与-n相同
-p permit any crontab允许任何crontab
-P inherit PATH from environment instead of using default value of "/data/data/com.termux/files/usr/bin"从环境继承PATH,而不是使用默认值
-s log into syslog instead of sending mails我们登录syslog而不是发送邮件
-V print version and exit打印版本并退出
-x <flag> print debug information打印调试信息
Usage:
crontab [options] file
crontab [options]
crontab -n [hostname]
Options:
-e edit user's crontab
-l list user's crontab
-r delete user's crontab
-i prompt before deleting
-T <file> test a crontab file syntax
-V print version and exit
-x <mask> enable debugging
3、常用命令,在crontab命令编辑界面输入crontab命令: * * * * * date >> /home/date1.txt (前面五个* * * * *表示时间是每隔一分钟 date命令就是得到当前的系统时间, >> 命令表示将结果累加到文件后面 > 命令则表示将结果覆盖文件 ) 。
#添加定时执行任务按ctrl+其它提示键操作、编辑内容
crontab -e
#查看已添加的任务调度列表
crontab -l
#开启
crond start
感谢大家的观看,最后在这里附上我写的免费文档转换的小网站(希望可爱的你不要攻击我的小网站,拜托🙏/(ㄒoㄒ)/~~) http://www.mitchconvert.top 。
最后此篇关于安卓部署Java项目的文章就讲到这里了,如果你想了解更多关于安卓部署Java项目的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 *.sql 文件中得到了我的数据库转储(表、函数、触发器等)。此时我正在通过 jenkins 部署它们,通过传递执行 shell 命令: sudo -u postgres psql -d my_
我正在使用网络部署 API 来部署网络包(.zip 文件,由 MSDeploy.exe 创建)以编程方式将包发布到服务器(在发布包之前我们需要做一些其他事情这就是为什么我们不使用 MSDeploy.e
我们正在使用 Web Deploy 3 的(几乎完全未记录的)“公共(public) API”来创建我们网站的 .zip 包,然后将其同步到服务器: DeploymentBaseOptions des
将 clojure 应用程序制作成可执行文件的最简单方法是什么,例如 http://rawr.rubyforge.org/ ruby 吗? (exe 和 app 文件也是) 最佳答案 使用 leini
是否可以下载 Android 源代码并针对任何设备进行编译? 我想做的是尝试 GSM 代码部分并编译操作系统并将其部署到我的摩托罗拉手机上。 谢谢! 最佳答案 是的,但这很难,因为大多数手机不共享驱动
我正在考虑用 c/c++ 编写需要在大多数个人计算机上运行的 nbody 样式模拟。本质上是一个 O(n^2) 粒子模拟器。 因为这需要相当用户友好,所以我希望有 1 个不需要用户安装任何东西的 Wi
需要了解 kubernetes 部署中 kube_deployment_status_replicas 和 kube_deployment_spec_replicas 指标的区别 最佳答案 简而言之,
我正在尝试使用分类器部署 Maven Artifact 。由于我需要源代码和 JAR(我从 GWT 使用它),我想获得 artifact-version-classifier.jar 和 artifa
我设置部署以将我的项目代码与存储我的网站的 FTP 服务器上的项目同步。 但是,每次尝试同步时,我总是必须登录。 我什至检查了记住,但它不起作用! 我正在使用最新的 PhpStorm 2017.1.4
我在 Visual Studio 2008 中开发了一个 ASP.NET 网站。现在我想在其他机器上部署它。我怎样才能做到这一点??就像我们为 Windows 应用程序制作安装包一样,我们可以为 AS
将 QT 框架添加到我的 .app 包中 我正在关注 Qt 站点上关于部署的文档。 我创建了一个名为 HTTPClient.app 的应用程序 我在 Contents 下创建了 Framework 文
这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the h
我正在研究改变我目前创建营销网站的策略。目前,我完全用 PHP 从头开始构建网站,使用一个简单的包含系统。所有代码(以及内容)都存储在文件(而不是数据库)中,允许我使用 Subversion 进行
我有一个长期运行的服务(在 while 1 循环中)并通过 GCloud pub/sub 处理有效负载,之后它将结果写入数据库。 该服务不需要监听任何端口。 Kind=Deployment 的声明性
似乎部署已停滞不前。我该如何进一步诊断? kubectl rollout status deployment/wordpress Waiting for rollout to finish: 2 ou
我正在Dart中使用前端的Angular和后端的Shelf构建一个客户端/服务器应用程序。当我执行pub build时,它会按预期生成Dart文件的javascript,但不会替换HTML文件中的Da
我在 Azure 部署中心的下拉列表中看不到我的所有 Github 组织存储库。 Azure 很久以前就已经被授权了,下拉列表正确地显示了所有的存储库,直到上周我在 DevOps 中玩游戏时,不得不再
我认为标题几乎说明了一切...对于 Deployd 来说是全新的,所以任何关于如何最好地实现这一点的指示都值得赞赏。 最佳答案 要获取用户创建的集合中的对象(我假设您使用的是 javascript 库
我有一个试图用于CD服务器的部署脚本,但是在编写bash脚本以完成一些所需的步骤(例如运行npm和迁移命令)时遇到了问题。 我将如何从该脚本进入容器bash,运行下面的命令,然后退出以完成对更改的提取
我想在使用 kubectl 时将参数传递给 Kubernetes 部署命令应用部署文件。 示例:在我的部署 .yaml 中,我有如下参数,我想在使用 kubectl apply - f .yaml 运
我是一名优秀的程序员,十分优秀!