注意:这是Nging2.0.0源代码,旧版1.x已经转移到 v1分支
Nging2相较于Nging1.x进行了相当大的改进,包括增加了几个重量级的新功能、提高了稳定性、降低了CPU占用、修复了界面细节上的bug、作为通用后台基础框架这个定位来进行的项目结构优化等等,欢迎使用最新版本。
注意:目前只支持安装到MySQL的Nging1.x无缝升级,暂不支持SQLite安装方式的升级(推荐安装到MySQL)。
升级步骤:
0. 备份数据库和旧版可执行文件;
1. 停止旧版本程序的运行;
2. 将新版本所有文件复制到旧版文件目录里进行覆盖;
3. 启动新版本程序;
4. 登录后台检查各项功能是否正常;
5. 升级完毕
Nging是一个网站服务程序,可以代替Nginx或Apache来搭建Web开发测试环境,并附带了实用的周边工具,例如:计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理等。
本软件项目不仅仅实现了一些网站服务工具,本身还是一个具有很好扩展性的通用网站后台管理系统,通过本项目,您可以很轻松的构建一个全新的网站项目,省去从头构建项目的麻烦,减少重复性劳动。
当您基于本项目来构建新软件的时候,您可以根据需要来决定是否使用本系统的网站服务工具,这取决于您是否在main.go
中导入包:
import (
_ "github.com/admpub/nging/application/initialize/manager"
)
-
下载相应平台的安装包,解压缩到当前目录,进入目录执行名为“nging”的可执行程序(在Linux系统,执行之前请赋予nging可执行权限)。 例如在Linux64位系统,分别执行以下命令:
cd ./nging_linux_amd64 chmod +x ./nging ./nging
-
打开浏览器,访问网址 http://localhost:9999/setup , 在页面中配置数据库和管理员账号信息进行安装。 安装成功后,使用管理员账号登录。
目前,在“系统设置”中提供了以下设置组:
系统
: 目前提供了API密钥和调试模式的开关SMTP
: 配置用于发送邮件的SMTP服务器的相关设置日志
: 在这里可以设置如何保存和输出本系统所生成的日志
提供对后台用户的修改、添加和删除等操作。可以为后台用户分配相应的角色,从而对其进行权限控制
一个角色就是一个权限集合。在本系统中我们将权限分为了操作权限和指令权限。
- 操作权限:基于网址操作来进行权限判断
- 指令权限:用于指定该角色可以执行的指令(这里的指令是指系统命令)
邀请码用来邀请其他人来注册成为本系统的后台用户。您可以指定受邀人注册后所拥有的角色,从而限制其操作权限。
在这里可以查看短信验证码和邮箱验证码的发送记录以及使用时间
为了对系统命令的执行进行权限控制,可以定义某个系统命令为指令
可以在此修改自己的头像、邮箱、手机号、密码等信息
如果想要提高账号的安全性,请启用两步验证。本系统已经实现了对两步验证的完整支持。
Web服务采用caddy作为内核。
caddy 是类似于nginx或apache的网站服务软件。caddy的配置文件比nginx更加简洁易用。
Nging采用了图形化界面来配置caddy,这使得对caddy的配置变得更加的容易。
设置网站服务的一般流程为:添加分组 - 添加网站 - 启动服务
首先,我们来添加一个分组。点击左边竖向导航栏上的网站管理
展开子菜单,点击添加分组
打开创建界面,在表单录入框组名称
中输入名称后提交
然后,我们来添加一个网站。点击左边竖向导航栏上的网站管理
展开子菜单,点击添加网站
打开创建界面,这里向我们展示了创建网站服务所要配置的一些录入框,我们现在分别来说明各个录入框的作用:
-
分组
:如果网站特别多,需要按组进行归类,您可以在这里选择相应分组,这里我们选择第一步添加的分组 -
监听地址
:可以是网址、域名或IP。如果不提供端口则默认为2005,如果不提供协议(比如https://)则默认为http,如果不提供IP和域名则默认为0.0.0.0,如果只想允许本地访问请设置为localhost或127.0.0.1。
域名支持通配符“*”(例如*.admpub.com)和环境变量(环境变量用花括号括起来,例如localhost:{$PORT})。
例子: https://admpub.com:443 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服务后才会生效
Web服务是默认启动的。
可以在网站列表
页面点击重新应用配置
来重新生成Caddy配置文件和重启服务。
当然,你也可以在左边的导航菜单中点击服务器
链接然后再点击展开的子菜单服务管理
,在打开的页面中点击Web服务的控制按钮来进行单纯的重启和关闭
-
服务器信息
展示服务器的操作系统、CPU、磁盘、内存、网络等信息。
在这个页面中,使用了进度条和百分比来直观的展示数据和资源的占用量。
-
网络端口
列出占用网络端口的进程,并且支持关闭进程
-
执行命令
执行简单的控制台命令。
用聊天对话框的方式来与机器进行简单的交互。
-
服务管理
控制Web和FTP服务的启动和关闭
-
进程值守
进程保活,即当执行的程序被异常关闭后自动重新启动此程序
-
添加配置
在左边的导航菜单中点击
服务器
链接然后再点击展开的子菜单进程值守
打开列表页,点击列表右上角的添加配置
按钮,我们来添加一个配置,在配置表单中我们可以录入以下信息:状态
:指定是否启用当前配置。如果启用则会自动开始值守名称
:描述一下要值守的这个进程的名字命令
:进程的启动命令环境变量
:如果启动的程序需要一些特定的环境变量,您可以在这里进行设置。输入的格式为“环境变量的名称
=环境变量的值
”,比如“NAME=Nging
”。如有多个,一行一个命令参数
:其实在命令
输入框中已经可以带参数了,但是如果参数比较多,则可以在这里添加,格式为-c=value
,如有多个则一行一个工作目录
:有的时候我们需要切换到某个目录下之后再执行程序,对于这种情况在这里输入这个目录的路径即可信息日志文件
:值守的信息日志保存位置。如果不填,则输出到控制台错误日志文件
:错误日志保存位置。如果不填,则输出到控制台重试次数
:连续重试的次数。如果连续启动程序都失败了并且达到重试次数的限制,则退出值守启动延时
:程序异常退出后,等待多长时间后再启动。格式为数字和单位字母的组合,有效的单位有:"ns", "us" (or "µs"), "ms", "s", "m", "h" 分别表示 "纳秒", "微秒", "毫秒", "秒", "分钟", "小时"心跳检测间隔
:也就是多久检测一次程序运行状态。默认1m,即1分钟。格式同启动延时
说明
:该配置的附加说明调试模式
:如果开启,则会在控制台输出调试信息
-
启动和关闭值守
在列表页点击“启用状态”列中的复选框可以控制值守程序的开和关
-
-
添加账号分组
对于有大量FTP账号的情况,可以通过建立分组来进行归类
-
添加FTP账号
要使用Nging提供的FTP功能,必须首先要创建一个FTP账号。
FTP客户端使用这里创建的账号来登录。
-
开关FTP服务
在左边的导航菜单中点击
服务器
链接然后再点击展开的子菜单服务管理
,在打开的页面中点击FTP服务的控制按钮来进行重启和关闭为了避免与原有FTP服务发生冲突,本系统的FTP服务默认端口为
233
,可以通过修改配置文件config/config.yaml中ftp节点内的port字段值来指定其它端口。
数据采集模块提供了强大的采集功能,它包含了以下特色:
- 灵活便捷的配置表单
- 支持无限级页面
- 支持多种页面格式(html,json,text)
- 支持多类型采集规则(regexp,regexp2,goquery)
- 丰富的过滤器和验证器
- 支持多种浏览器引擎(chromedp,webdriver等)
- 三种去重验证机制
- 支持代理
- 支持自动导出采集数据到不同的数据源(WebAPI,DSN)
- 支持定时采集
-
添加采集规则
在左边的导航菜单中点击
数据采集
链接然后再点击展开的子菜单新建规则
,我们来添加一个新规则,在配置表单中我们可以录入以下信息:-
规则名称
:首先您得为规则取一个名字 -
分组
:为当前规则选择一个分组 -
说明
:规则附加说明 -
判断重复
:选择一个判断重复的方式,这样可以避免重复采集相同的数据 -
入口页面网址
:在这里,您可以指定多个入口页面网址,每一个网址单独放在一行,支持使用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:[email protected]:8080
。支持格式protocol://user:password@ip: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匹配页面元素的规则,比如:
-
规则
:此处指定以下规则- 数据采集规则:所要采集的数据匹配规则,如果指定了
区域规则
则在该区域内进行查找 - 数据保存变量名:指定数据保存到哪个变量里
- 数据过滤器和验证器:多个过滤器或验证器之间用管道符“|”分隔,以下划线“_”开头的为验证器(不符合验证器规则的数据会被跳过)
- 数据采集规则:所要采集的数据匹配规则,如果指定了
然后可以点击“添加下一级页面”链接来对添加第二级页面的规则。页面的层级数量没有限制。
-
-
测试采集规则
点击“测试”按钮可以进行采集测试,为了快速获取测试结果,每一级页面只采集一条
- 执行采集
点击“采集”按钮进行手动采集
- 将采集加入计划任务
也可以将采集任务加入到计划任务中,进行自动定时采集
-
添加导出规则
定义采集数据的导出方式。如果希望在采集的时候自动将采集到的数据导入其它系统,请在这里添加导出规则。 目前支持两种导出方式:
1、导入到数据库; 2、提交到API接口(将JSON数据POST提交到API接口)
crontab的完美替代,并采用了图形化配置界面,支持记录日志、发送错误报告邮件等
这里的离线下载支持并行下载。
对于需要很长时间才能下载完成的大文件,我们只需要建立一个离线下载任务并且启动,然后就可以关闭浏览器去做其它的事情了,Nging会自动在后台帮您下载。
- 管理MySQL
- 管理Redis
- MySQL表结构比较/同步
当你想要将局域网内的电脑暴露到外网,以便于外网的用户也能访问到您的网站服务时,这时候就需要用到内网穿透。
内网穿透支持服务端模式和客户端模式,全图形化的配置界面让配置变得非常容易。
要成功使用内网穿透功能,必须在局域网电脑上启动客户端模式,在提供外网的服务器或VPS上启动服务端模式。
SSH管理功能实现了SSH的Web客户端管理功能,您可以在Nging网页上进行SSH命令行交互操作,也可以通过Nging以SFTP方式来进行文件的上传、下载、删除和编辑
- 第一步: 安装GO环境(必须1.12.1版以上),配置GOPATH、GOROOT环境变量,并将
%GOROOT%/bin
和%GOPATH%/bin
加入到PATH环境变量中 - 第二步: 执行命令
go get github.com/admpub/nging
- 第三步: 进入
%GOPATH%/src/github.com/admpub/nging/
目录中启动run_first_time.bat
(linux系统启动run_first_time.sh
) - 第四步: 打开浏览器,访问网址
http://localhost:8080/setup
,在页面中配置数据库账号和管理员账号信息进行安装 - 第五步: 安装成功后会自动跳转到登录页面,使用安装时设置的管理员账号进行登录
请注意,本系统的源代码基于AGPL协议发布,不管您使用本系统的完整代码还是部分代码,都请遵循AGPL协议。
如果需要更宽松的商业授权协议,请联系我购买授权。