ngx3m 是一个使用Python开发的自动查找、安装Tengine/nginx的工具,目前功能尚不完善。ngx3m包括三个主要组件:模块资源库、命令行工具、模块发布工具。主要设计思想见:设计思想
使用
部署
pip install githubpy
pip install markdown
git clone https://code.csdn.net/lyt_44/ngx3m.git
切换目录至ngx3m/ngx3m下便可以使用命令行工具。
命令行工具选项
python ngx3m.py [options] [cmds]
options
以下选项可一次指定多个。
- -p/--prefix
指定tengine的prefix,可以是已经安装的tengine,也可以是待安装的。该选项使用一次后,ngx3m会记录下来,下一次可不需指定。 - -n/--ngx_src
如果要使用源码进行编译,必须指定tengine源码目录。 该选项只需要指定一次。 - -a/--arguments
如果有其他的config选项,通过该选项来指定。 - -d
明确要求使用dso tool进行安装。
cmds
以下命令一次只能指定一个。
- install(模块安装)
python ngx3m.py install module_name
- search(模块搜索)
python ngx3m.py search module_name
- upgrade(模块升级)
python ngx3m.py upgrade module_name
- update(资源库更新)
python ngx3m.py update
- reset(复位,仅供测试)
python ngx3m.py reset
无法获取代码
ngx3m会通过github的api从github上获取模块源代码,如果出现网络连接的问题
- 检查系统/etc/hosts文件中是否有api.github.com对应项,如果有的话,请删除。
- 使用代理或VPN,免费代理推荐goagent(请设置系统全局代理).
资源库
需要安装依赖:
pip install githubpy
ngx3m/resources中resource.py是获取资源的主要文件。本地可以直接执行一下命令获取:
python resource.py
如果要部署到其他平台,可以导入resource中的Resource类进行操作。
如果出现github Limit,那么需要在resource.py中输入github账户和密码。
发布工具
暂未实现,平台搭建之后会完善。
ngx3m的问题
目前ngx3m已经可以使用了,但是我自认为代码写得比较烂,不过总算解决了从无到有的问题。这一个多月的开发基本上都集中在命令行工具上,然而这只是整个系统的一部分。
命令行工具
- 目前实现的ngx3m架构比较混乱(我自己目前能力只能这样了,正在修炼中....),之后需要重构。
- Nginx模块安装中需要超级权限,于是要求使用sudo,但是正常流程中./configure 和make 阶段是不需要超级权限的,这样导致一个问题:使用ngx3m编译模块后的源码目录里创建的文件也都必须使用超级权限来操作。千言万语汇成一句话------>Python怎么灵活控制权限呢?
资源库
目前的资源库是用Python脚本从Nginx的wiki和github上爬取来的,脚本运行也非常依赖网络状况(GFW限制,sae上基本没办法正常运行),因此后期会自己做一个资源库,包含自己的数据库和网页。
发布工具
因为目前没有一个平台来支撑,所有发布工具实际上基本没有怎么实现,在平台搭建完成之后这部分会完成的。
未来
目前ngx3m比较粗糙,可能bug也很多,后期会找些小伙伴重写,打算构架一个模块发布和部署平台。
感谢
感谢陈传文老师的耐心指导。