Nging
Nging是一个网站服务程序,可以代替Nginx或Apache来搭建Web开发测试环境,并附带了实用的周边工具,例如:计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理等。
本软件项目不仅仅实现了一些网站服务工具,本身还是一个具有很好扩展性的通用网站后台管理系统,通过本项目,您可以很轻松的构建一个全新的网站项目,省去从头构建项目的麻烦,减少重复性劳动。
当您基于本项目来构建新软件的时候,您可以根据需要来决定是否使用本系统的网站服务工具,这取决于您是否在main.go
中导入包:
import (
_ "github.com/admpub/nging/application/initialize/manager"
)
下载:
安装
首先下载相应平台的程序,然后解压缩到当前目录,进入文件夹找到“nging-”开头的程序,在此程序所在的目录下执行此程序(在Linux系统,执行之前请赋予该程序可执行权限)。 例如在Linux64位系统,分别执行以下命令:
chmod +x ./nging-linux-amd64
./nging-linux-amd64
打开浏览器,访问网址
http://localhost:9999/setup ,
在页面中配置数据库和管理员账号信息进行安装。
安装成功后会自动跳转到登录页面,使用安装时设置的管理员账号进行登录
Ⅰ、基础功能
一. 系统设置
目前,在“系统设置”中提供了以下设置组:
1. 系统
: 目前提供了API密钥和调试模式的开关
2. SMTP
: 配置用于发送邮件的SMTP服务器的相关设置
3. 日志
: 在这里可以设置如何保存和输出本系统所生成的日志
二. 用户管理
提供对后台用户的修改、添加和删除等操作。可以为后台用户分配相应的角色,从而对其进行权限控制
三. 角色管理
一个角色就是一个权限集合。在本系统中我们将权限分为了操作权限和指令权限。
1. 操作权限
:基于网址操作来进行权限判断
2. 指令权限
:用于指定该角色可以执行的指令(这里的指令是指系统命令)
四. 邀请码
邀请码用来邀请其他人来注册成为本系统的后台用户。您可以指定受邀人注册后所拥有的角色,从而限制其操作权限。
五. 验证码
在这里可以查看短信验证码和邮箱验证码的发送记录以及使用时间
六. 指令集
为了对系统命令的执行进行权限控制,可以定义某个系统命令为指令
七. 修改个人资料
可以在此修改自己的头像、邮箱、手机号、密码等信息
八. 使用两步验证
如果想要提高账号的安全性,请启用两步验证。本系统已经实现了对两步验证的完整支持。
Ⅱ、特色功能
一. Web服务
Web服务采用caddy作为内核。
caddy 是类似于nginx或apache的网站服务软件。caddy的配置文件比nginx更加简洁易用。
Nging采用了图形化界面来配置caddy,这使得对caddy的配置变得更加的容易。
设置网站服务的一般流程为:添加分组 - 添加网站 - 启动服务
1. 创建分组
首先,我们来添加一个分组。点击左边竖向导航栏上的网站管理
展开子菜单,点击添加分组
打开创建界面,在表单录入框组名称
中输入名称后提交
2. 添加网站
然后,我们来添加一个网站。点击左边竖向导航栏上的网站管理
展开子菜单,点击添加网站
打开创建界面,这里向我们展示了创建网站服务所要配置的一些录入框,我们现在分别来说明各个录入框的作用:
分组
:如果网站特别多,需要按组进行归类,您可以在这里选择相应分组,这里我们选择第一步添加的分组监听地址
:可以是网址、域名或IP。如果不提供端口则默认为2005,如果不提供协议(比如https://)则默认为http,如果不提供IP和域名则默认为0.0.0.0,如果只想允许本地访问请设置为localhost或127.0.0.1。
域名支持通配符“*”(例如*.admpub.com)和环境变量(环境变量用花括号括起来,例如localhost:{$PORT})。
例子: https://admpub.com:433 admpub.com:80 :8080 127.0.0.1:9999
监听地址如有多个,用空格隔开。网站位置
:网站文件夹在服务器上的绝对路径网站名称
:网站的名字日志文件
:输入保存访问日志文件的路径默认首页
:在访问某个目录的时候,默认的首页文件。如有多个,用空格隔开。如不填写,默认为:index.html index.htm index.txt default.html default.htm default.txt响应Header
:可以对网址中的某个起始路径的访问设置响应头参数,支持添加、删除和修改Header删除Header:在Header名称前使用减号(-)并将其值留空
HTTPS
:支持手动和自动设置SSL证书。
在手动模式下,需要分别填写证书和私钥文件位置;在自动模式下必须填写电子邮箱地址以便自动获取Let’s encrypt 证书GZIP
:压缩数据,用于减少页面或静态文件的网络传输尺寸,可以通过指定扩展名的方式来对特定文件进行压缩FastCGI
:FastCGI代理用于将请求转发到FastCGI服务。尽管此指令最常见的用途是为PHP站点提供服务,但默认情况下它是通用的。支持设置多个不同的请求路径。Proxy
:反向代理功能用于将接收到的请求转发到指定的后台。通过设置多个后台地址我们能实现服务器的负载均衡。文件服务
:用于提供文件的直接访问IP过滤
:通过设置过滤规则来禁止某些IP或国家来访问我们的网站网址重写
:将请求的网址重写为其它值。常用于资源重定向、伪静态等场景备注
:记录当前网站的一些附加说明网站状态
:如果是启用
状态则表示该网站能够上线是否重启
:修改配置后,必须重启Web服务后才会生效
3. 启动服务
Web服务是默认启动的。
可以在网站列表
页面点击重新应用配置
来重新生成Caddy配置文件和重启服务。
当然,你也可以在左边的导航菜单中点击服务器
链接然后再点击展开的子菜单服务管理
,在打开的页面中点击Web服务的控制按钮来进行单纯的重启和关闭
二. 服务器
1. 服务器信息
展示服务器的操作系统、CPU、磁盘、内存、网络等信息。
在这个页面中,使用了进度条和百分比来直观的展示数据和资源的占用量。
2. 网络端口
列出占用网络端口的进程,并且支持关闭进程
3. 执行命令
执行简单的控制台命令。
用聊天对话框的方式来与机器进行简单的交互。
4. 服务管理
控制Web和FTP服务的启动和关闭
5. 进程值守
进程保活,即当执行的程序被异常关闭后自动重新启动此程序
添加配置
在左边的导航菜单中点击
服务器
链接然后再点击展开的子菜单进程值守
打开列表页,点击列表右上角的添加配置
按钮,我们来添加一个配置,在配置表单中我们可以录入以下信息:状态
:指定是否启用当前配置。如果启用则会自动开始值守名称
:描述一下要值守的这个进程的名字命令
:进程的启动命令环境变量
:如果启动的程序需要一些特定的环境变量,您可以在这里进行设置。输入的格式为“环境变量的名称
=环境变量的值
”,比如“NAME=Nging
”。如有多个,一行一个命令参数
:其实在命令
输入框中已经可以带参数了,但是如果参数比较多,则可以在这里添加,格式为-c=value
,如有多个则一行一个工作目录
:有的时候我们需要切换到某个目录下之后再执行程序,对于这种情况在这里输入这个目录的路径即可信息日志文件
:值守的信息日志保存位置。如果不填,则输出到控制台错误日志文件
:错误日志保存位置。如果不填,则输出到控制台重试次数
:连续重试的次数。如果连续启动程序都失败了并且达到重试次数的限制,则退出值守启动延时
:程序异常退出后,等待多长时间后再启动。格式为数字和字母的组合,例如:1y、2m、3d、4h、5i、6s 分别表示 1年、2个月、3天、4小时、5分钟、6秒心跳检测间隔
:也就是多久检测一次程序运行状态。默认1m,即1分钟。格式同启动延时
说明
:该配置的附加说明调试模式
:如果开启,则会在控制台输出调试信息
启动和关闭值守
在列表页点击“启用状态”列中的复选框可以控制对某个程序值守的开和关
三. FTP账号
1. 添加账号分组
对于有大量FTP账号的情况,可以通过建立分组来进行归类
2. 添加FTP账号
要使用Nging提供的FTP功能,必须首先要创建一个FTP账号。
FTP客户端使用这里创建的账号来登录。
3. 开关FTP服务
在左边的导航菜单中点击服务器
链接然后再点击展开的子菜单服务管理
,在打开的页面中点击FTP服务的控制按钮来进行重启和关闭
四. 数据采集
数据采集模块提供了强大的采集功能,它包含了以下特色:
- 灵活便捷的配置表单
- 支持无限级页面
- 支持多种页面格式(html,json,text)
- 支持多类型采集规则(regexp,regexp2,goquery)
- 丰富的过滤器和验证器
- 支持多种浏览器引擎(chromedp,webdriver等)
- 三种去重验证机制
- 支持代理
- 支持自动导出采集数据到不同的数据源(WebAPI,DSN)
- 支持定时采集
1. 添加采集规则
在左边的导航菜单中点击数据采集
链接然后再点击展开的子菜单新建规则
,我们来添加一个新规则,在配置表单中我们可以录入以下信息:
规则名称
:首先您得为规则取一个名字分组
:为当前规则选择一个分组说明
:规则附加说明判断重复
:选择一个判断重复的方式,这样可以避免重复采集相同的数据入口页面网址
:在这里,您可以指定多个入口页面网址,每一个网址单独放在一行,支持使用Go语言的模板语法循环输出网址,此外,每一个网址中都支持使用数字范围
标签,在数字范围标签中,连续的范围我们使用-
来指定,不连续的范围使用,
来罗列,同时支持指定步进值,且步进值与范围值之间用:
分隔,默认步进值为1,例如:{(
1-9,11,13-19:2)}
。
例如:http://www.admpub.com/{(1-2)}.html 会生成网址:
http://www.admpub.com/1.html
http://www.admpub.com/2.html
最大超时
:请求页面时的最大等待时长(秒)间歇时间
:每个页面的随机等待的秒数范围代理地址
:例如:http://admpub:123456@123.123.123.123:8080
。支持格式protocol://user:password[@ip](https://my.oschina.net/u/3749391):port
protocol
- 支持http、https、socks5user
- 用户名(选填)password
- 密码(选填)ip
- IP地址port
- 端口
页面格式
:目标页面的内容格式,支持的有HTML/JSON/Text浏览引擎
:目前支持standard/chromedp/webdriver这三种,其中standard为普通方式,速度最快,默认为standard。chromedp和webdriver为调用chrome浏览器,速度相对较慢页面类型
:可以选择“列表页”和“内容页”选项,请根据所采集页面的实际类型来选择页面字符集
:比如gbk
或utf-8
。此项为选填,不填写的情况下会根据网页内容自动判断区域规则
:指定所要采集页面上的某个区域的匹配规则。这里支持两种类型的规则:- 选择器规则:即类似于jQuery匹配页面元素的规则,比如:
div.container > h1
- 正则匹配规则:需要在规则前添加前缀
regexp:
或regexp2:
。其中regexp:
为Go语言原生正则表达式规则;regexp2:
为兼容 Perl5 和 .NET 的正则表达式规则(相关文档:https://github.com/admpub/regexp2)
- 选择器规则:即类似于jQuery匹配页面元素的规则,比如:
规则
:此处指定以下规则- 数据采集规则:所要采集的数据匹配规则,如果指定了
区域规则
则在该区域内进行查找 - 数据保存变量名:指定数据保存到哪个变量里
- 数据过滤器和验证器:多个过滤器或验证器之间用管道符“|”分隔,以下划线“_”开头的为验证器(不符合验证器规则的数据会被跳过)
然后可以点击“添加下一级页面”链接来对添加第二级页面的规则。页面的层级数量没有限制。
- 数据采集规则:所要采集的数据匹配规则,如果指定了
2. 测试采集规则
点击“测试”按钮可以进行采集测试,为了快速获取测试结果,每一级页面只采集一条
3. 执行采集
点击“采集”按钮进行手动采集
4. 将采集加入计划任务
也可以将采集任务加入到计划任务中,进行自动定时采集
5. 添加导出规则
定义采集数据的导出方式。如果希望在采集的时候自动将采集到的数据导入其它系统,请在这里添加导出规则。
目前支持两种导出方式:
1、导入到数据库;
2、提交到API接口(将JSON数据POST提交到API接口)
五. 计划任务
crontab的完美替代,并采用了图形化配置界面,支持记录日志、发送错误报告邮件等
六. 离线下载
这里的离线下载支持并行下载。
对于需要很长时间才能下载完成的大文件,我们只需要建立一个离线下载任务并且启动,然后就可以关闭浏览器去做其它的事情了,Nging会自动在后台帮您下载。
管理离线下载的文件:
七. 数据库管理
1. 管理MySQL
添加MySQL数据库账号:
连接MySQL服务器:
MySQL数据库:
MySQL数据表:
2. 管理Redis
添加Redis服务器信息(如果没有为redis设置认证信息,用户名和密码留空):
连接Redis服务器:
Redis信息:
管理Redis数据:
3. MySQL表结构比较/同步
添加账号:
查看差异:
八. FRP内网穿透
当你想要将局域网内的电脑暴露到外网,以便于外网的用户也能访问到您的网站服务时,这时候就需要用到内网穿透。
内网穿透支持服务端模式和客户端模式,全图形化的配置界面让配置变得非常容易。
1. 服务端模式:
添加服务端配置:
服务端控制:
2. 客户端模式:
添加客户端配置:
要成功使用内网穿透功能,必须在局域网电脑上启动客户端模式,在提供外网的服务器或VPS上启动服务端模式。
九. SSH管理
SSH管理功能实现了SSH的Web客户端管理功能,您可以在Nging网页上进行SSH命令行交互操作,也可以通过Nging以SFTP方式来进行文件的上传、下载、删除和编辑
1. 添加SSH服务器账号
添加SSH服务器账号:
2. SSH管理
连接SSH服务器:
进入控制台
3. SFTP管理
连接SFTP:
结束语
Nging2相较于Nging1.x进行了相当大的改进,包括增加了几个重量级的新功能、提高了稳定性、降低了CPU占用、修复了界面细节上的bug、作为通用后台基础框架这个定位来进行的项目结构优化等等,欢迎使用最新版本。
注意:目前只支持安装到MySQL的Nging1.x无缝升级,暂不支持SQLite安装方式的升级(所以推荐安装到MySQL)。
源代码仓库地址:
https://github.com/admpub/nging
https://gitee.com/admpub/nging
HTTPS://git ee.com/Adm pub/难过ing
[HTTPS://Git ee.Com/Adm pub/nánguò ing]
HTTPS://git ee.com/Adm pub/Sad ing