[TOC]
### 如何扩展自定义服务?
- 将自定义服务已服务名称为单位保存到`.\WAMP\server`目录
- 在`.\WAMP\server\{服务名称}`目录下创建并配置`.\WAMP\server\{服务名称}\server.ini`
- 如需要可创建模板文件`目标文件.tpl`,实现对服务的动态配置
> 建议多多参考已有服务及相关文件
* * * * *
### 服务配置是什么?
服务配置文件是向程序中注册定义服务的配置文件
例如`.\WAMP\server\apache-2.4.29\server.ini`:
```
; 服务配置文件
; 系统在编译模板前会自动映射所有配置数据为“server.服务名.节名.项名.项值”脚本变量
; 系统在编译模板前会自动补充“server.服务名.server.dir.服务目录”脚本变量
;
; 配置数据说明:
; server节点;为系统预定义节点,该节点中也保存着系统预定义项
;[server]
; 服务运行命令行;支持相对当前目录路径
;cmd=
; 是否禁用服务;仅在有运行命令(cmd)时有效,可选值 0 和 1 缺省为0
;disable=0
; 服务备注信息
;notes=
;
[server]
cmd=.\bin\httpd.exe
disable=0
notes=该服务运行状态,站点操作需重启
```
> 其中内容会被映射为Lua全局变量,以供模板文件方便获取。
* * * * *
### 配置模板是什么?
为了实现对服务进行统一动态配置,内部基于Lua实现了一个简易的模板引擎。可在各服务目录下,创建后缀为`.tpl`文件并在其中嵌入`<?lua LUA代码段>`。在每次启动服务前程序会检索各服务目录下模板文件``,并将其编译为目标文件``。
```
.\WAMP\server\{服务名称}\{子目录}\{名称.后缀}.tpl -> .\WAMP\server\{服务名称}\{子目录}\{名称.后缀}
```
例如`.\WAMP\server\mysql-5.7.21\my.ini.tpl` 的一段:
```
# mysqld为服务端参数
[mysqld]
# 设置错误日志
log-error="<?lua echo(toPath(".") .. "/error.log") ?>"
# MySQL的安装路径
basedir="<?lua echo(toPath(".")) ?>"
# MySQL数据文件的存储位置,也是数据库表的存放位置。
datadir="<?lua echo(toPath(server[serverName].mysql.datadir)) ?>"
# 数据库的端口
port=3306
```
> 建议多多参考已有服务下模板文件和[Lua辅助函数](620892)。