bosq.log

ざっくばらんに記録する

Android サーバ化計画 ( UserLAnD )

Android 端末をUserLAnDでサーバ構築してみる.

とりあえずWebアプリ動かすとこまで.

  

手順

1. Linux 環境構築:PCからSSHできるとこまで

2. Python/flask 入れてPCから接続確認

 

使うもの

Android端末:Galaxy note3 (Android 5.0)

PC: SSHする端末 

 

Linux環境構築

root化なしで,Play Store でインストールするだけでLinux環境を構築できるUsrLandを試します.

それぞれPCからSSHするとこまで試します.

 

UserLAnD

https://userland.tech

ディストリや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選べるのは利点だが,インストールなどは結構時間がかかるので色々試すには向かないかも.