【IPFS应用开发】安卓应用自治管理平台发布

1.目的

1.特点:去中心化的应用下载平台;去中心化的软件更新机制;去中心化apk管理平台,使用ipns作为发布密令。为Android应用软件开发做好铺垫。
2.成果
管理后台界面,界面长得丑了点,功能已经完成。
在这里插入图片描述
用户扫描后的效果
在这里插入图片描述

2.食用方式

git地址:https://github.com/bill080307/ipfs_apk.git
在ubuntu18上运行

git clone https://github.com/bill080307/ipfs_apk.git
cd ipfs_apk/api
# 根据自己的情况填写配置
vim config.json
# 安装
./install.sh

3.配置说明

目录结构

ipfs_apk/
├── admin        # 后台管理界面的前端VUE项目
├── api
│   ├── admin-api.py     # 后台API主程序
│   ├── config.json     # 后台API服务配置
│   ├── install.sh     # 安装脚本
│   ├── ipfsapk.conf     # 后台网页显示 Nginx配置
│   ├── ipfsapk.service     #  后台API服务配置文件
│   └── requirements.txt     # 后台API程序依赖库
├── LICENSE
├── README.md
└── webui           # 前台下载界面的前端VUE项目

15 directories, 36 files

config.json

{
  "projectName": "VideoShare",  # 项目名称
  "service": {   # 后台服务绑定端口和参数
    "host": "127.0.0.1",
    "port": 5050,
    "workers": 1
  },
  "ipfsApi": "/ip4/172.16.7.1/tcp/5001",  # ipfs-api
  "ipfsGW": "http://172.16.0.60:8082/ipfs/:hash",  # ipfs-gateway
  "localStorage": "/data/",  # 本地储存路径,用于共享储存,Filestore
  "StorageSubPath": "apk", # 本地储存子路径
  "redisCacheServer": [ # redis服务缓存地址,使用多个,必须配置一个,有效数据以第一个为准,配合ipns缓冲器使用:https://blog.csdn.net/weixin_43668031/article/details/100174147
    {"host": "172.16.0.60", "port": 6379}
  ],
  "uiTemplate": "QmQBQP2V8qo3VGXs8pZA685wB3gkbcmcdcEv2UwcUAJPWq" # 前端模板地址,即webui编译后的前端上传至ipfs的结果,运行`./install.sh ui`自动替换
}

ipfsapk.conf

server {
       listen 81;
       server_name _;
       # 后端程序所放目录,如修改,需要同步修改在install.sh中
       root /var/www/ipfsapk/;
       index index.html;

       location / {
               try_files $uri $uri/ =404;
       }
       # 后端API程序的代理设置,修改路径需要同步修改到admin前端项目,修改后台服务绑定端口和参数需要在这里同步修改
       location /api/ {
               proxy_set_header Host $http_host;
               proxy_pass http://127.0.0.1:5050/;
       }

}

ipfsapk.service

[Unit]
Description=ipfsapkapi
[Service]
# 后台API程序运行路径,运行`./install.sh api` 自动替换
ExecStart=PYTHON3_SCRIPT
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target

4.安装命令说明

install.sh
子命令
./install.sh ui
编译下载界面,上传到ipfs空间上,自动将前端的hash替换到config.json模板中

./install.sh admin
编译后台界面,放置到nginx目录

./install.sh api
注册ipfsapk服务,根据config.json服务ip和端口启动api服务,默认为127.0.0.1:5050,反向代理至nginx里,默认为为后台前端的/api/路径。
注册的服务名为ipfsapk
可以通过systemctl status ipfsapk.service查看服务状态
可以通过systemctl start ipfsapk.service开启服务状态
可以通过systemctl stop ipfsapk.service关闭服务状态

扫描二维码关注公众号,回复: 11202528 查看本文章

./install.sh
以上项目全部运行

5.未完善的地方

1.ipns的发布还没有完善,ipns的发布需要比较长的时间,打算在python中再拉起一个线程运行,无需返回结果。
2.目前配置第一个redis服务器来缓存ipfs的hash结果,配合之前做的ipns加速器,完成应用调试之类的任务完全没问题。
3.关于apk的update方法,缓存请求较慢,并且会获取到旧值,有待解决。
4.apk存放在本地路径(共享挂载路径)要求在ipfs节点上也挂载在ipfspath同级目录下,使用Filestore来上传到ipfs空间上,这样可以节省很多磁盘资源。
5.adminUI仅有功能,不够美观。
6.上图中二维码均为样例,无实际意义。发布应用后在下载界面的二维码的作用是:截图发朋友圈可以长按来获取应用。
7.至少需要一个可以使用的ipfs的网关地址,以给用户提供下载服务。

原创文章 29 获赞 21 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43668031/article/details/105025245