Android サーバ化計画 ( UserLAnD )
Android 端末をUserLAnDでサーバ構築してみる.
とりあえずWebアプリ動かすとこまで.
手順
2. Python/flask 入れてPCから接続確認
使うもの
Android端末:Galaxy note3 (Android 5.0)
PC: SSHする端末
Linux環境構築
root化なしで,Play Store でインストールするだけでLinux環境を構築できるUsrLandを試します.
それぞれPCからSSHするとこまで試します.
UserLAnD
ディストリやLinuxのソフトウェアを動かすことができる.
仕組み自体はよくわかってないが,TermuxみたいなターミナルのエミュレータではなくOSの仮想化に近い感じがする.OSSなので,コード見るのも面白そう.誰か解説してくれるとありがたい.
使い方などは以下記事がわかりやすいと思う
UIわかりやすいので画面などは割愛.
流れとして,キーボードが使いづらいので一旦パスワード認証でログインしてSCPでファイル転送する.
1. アプリインストール・起動
Apps: 使用できるOS/ソフトウェア
Sessions: 起動中のOS/ソフトウェア
Filesystems: ダウンロード済みのOS/ソフトウェア
2. OSダウンロード・設定
Appsから好きなOSを選択すると,ユーザ名・パスを入力を促される.入力し終わるとダウンロードが始まる(数分程度)
本稿では,OSをにUbuntuを選択.
3. OS起動
ダウンロードが終わると起動し,パスワードを入れるとシェルに入れる.
あとは`sudo apt update`,`sudo apt upgrade`しとく
4. SSH設定
sudo apt update
sudo apt upgrade
sudo apt install vim openssh-server
5. SSH起動
sudo vim /etc/ssh/sshd_config # Port 2022 に編集
sudo service ssh restart
6. PCからSSHできるか確認
ssh user-name@192.168.xx.xx -p 2022
7. 公開鍵生成
PC側で鍵生成してSCPでファイルを送る
Ed25519で試したがなぜかできずecdsaの521bitを使用した
ファイル名はid_userlandで作成.
SCPで送るときにauthorized_keysにリネームしとくと楽.
$ ssh-keygen -t ecdsa
$ scp ~/.ssh/id_userland.pub user-name:~/.ssh/authorized_keys
8. ssh で確認
パスワードを聞かれずログインできたら成功
$ ssh user-name@192.168.xx.xx -p 2022 -i ~/.ssh/id_userland
Python/flask 導入しPCから接続確認
python3は入ってたがpipがないのでインストール
$ python3 -V
Python 3.6.8
aptでpipを入れるとエラーで動かない.以下URLと同じ感じ.
https://mem-archive.com/2018/10/28/post-996/
なので,aptと別で入れる
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python3 get-pip.py
環境構築用にpipenvを入れる.
$ pip install pipenv
flask試すようのディレクトリ生成/移動
$ mkdir flask
$ cd flask/
pipenv でflask入れてサンプル動かす
$ pipenv install flask
するとロケールが推奨でないなど言われるたので,エラーの指定通りに設定
$ export LC_ALL=C.UTF-8; export LANG=C.UTF-8
$ pipenv install flask
インストールできた.
次にflaskで使うファイルを編集
$ vim app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello World!'
app.run(host='0.0.0.0')
Webサーバ起動
$ pipenv run python app.py
PCからcurlで「Hello World!」が返って来てたらOK!
$ curl http://192.168.11.14:5000/
まとめ
今回は,UserLAnD使ってflaskでサーバ立ててアクセスするとこまでした.
基本的にLinux操作と変わらず進められて,Pythonも入ったし今後色々できそう.
ただTermux と比較してOS選べるのは利点だが,インストールなどは結構時間がかかるので色々試すには向かないかも.