開頭:之前做了個檔案轉換的小專案,想部署在安卓手機上,自己可以隨時看看,所以才有了下面這篇文章,內容或有瑕疵,望請批正。文末放我自己部署檔案轉換網址,僅供大家參考,謝謝!
選擇: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版本
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
感謝大家的觀看,最後在這裡附上我寫的免費檔案轉換的小網站(希望可愛的你不要攻擊我的小網站,拜託