# MiOpsLuaApi **Repository Path**: mickeybee/MiOpsLuaApi ## Basic Information - **Project Name**: MiOpsLuaApi - **Description**: No description available - **Primary Language**: Lua - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-24 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiOpsLuaApi 运维基于Lua开发的Api功能 ### 该项目是本人在公司前期写的一个运维系统RESTful接口,抽出部分功能开源: - 数据库MYSQL的业务Api接口: 该接口主要功能是使用Web Api收集生产环境的数据或者给产品研发团队调用接口获取数据。 在系统前期阶段,产品根据业务发展整理需求给运维同事,数据库经常要根据需求做表扩展,代码也随之做大量的增删改。 为了减少编码工作,在Post接口做了动态拼接SQL语句的判断。使用方法如下: * 数据库的表扩容,增加新表和主表的主键绑定: ```mysql CREATE TABLE `app_domain` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_id` int(11) NOT NULL, `domain` varchar(255) NOT NULL, `type` varchar(25) NOT NULL, `default_domain` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`), KEY `app_domain_09847825` (`app_id`), CONSTRAINT `app_id_refs_id_b8f14cdc` FOREIGN KEY (`app_id`) REFERENCES `app_info` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=16383 DEFAULT CHARSET=utf8; ``` * 在配置文件`lua/miops_conf.lua`中增加针对`request`的`json`数据字段`type`做表的映射关系: ```lua miops_tables_type = { app = "app_info", domain = "app_domain", -- type['domain']的对应数据库表是"app_domain" } -- skip_tables_field 是忽略json数据中的字段,主要担心重要字段被删改。 skip_tables_field = { "id", "fixed_ip", "type", "status" } ``` * 加载配置`reload nginx`: * 参考以下指令写客户端工具上传数据到数据库: ```shell curl -X POST -k --user "${user}:${password}" "http://192.168.1.121/apiv2/cmopsPostDataFromJson" -d \ "{\"type\":\"domain\", \"domain\":\"${DOMAIN}\" }" ``` - 基于文件上传存储到本地的接口: - 在`nginx.conf`添加如下配置,通过不同的URL指定不通的目录,通过调用URL上传文件到指定的文件夹: ```nginx location /backup { set $fb_root_path '/mnt/data/backup/'; set $fb_chunk_size '8192'; set $fb_upload_time '30000'; content_by_lua_file lua/fbsimple/fbFromUpload.lua; } ``` - 上传文件的命令参考: ```shell curl http://192.168.1.205/upload \ -F 'data=@bin/bashrc/bash.sh' \ -H 'hostname:test.exp.net' \ -H 'filemd5:cab8acb6d32e3b01be9e19efec57fc33' ```