Go语言Web开发项目Nging2.0.0版发布

Stella981
• 阅读 518

Nging

Go语言Web开发项目Nging2.0.0版发布

Nging是一个网站服务程序,可以代替Nginx或Apache来搭建Web开发测试环境,并附带了实用的周边工具,例如:计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理等。

本软件项目不仅仅实现了一些网站服务工具,本身还是一个具有很好扩展性的通用网站后台管理系统,通过本项目,您可以很轻松的构建一个全新的网站项目,省去从头构建项目的麻烦,减少重复性劳动。

当您基于本项目来构建新软件的时候,您可以根据需要来决定是否使用本系统的网站服务工具,这取决于您是否在main.go中导入包:

  1. import (
  2. _ "github.com/admpub/nging/application/initialize/manager"
  3. )

下载:

下载2.0.0可执行文件

安装

  1. 首先下载相应平台的程序,然后解压缩到当前目录,进入文件夹找到“nging-”开头的程序,在此程序所在的目录下执行此程序(在Linux系统,执行之前请赋予该程序可执行权限)。 例如在Linux64位系统,分别执行以下命令:

    1. chmod +x ./nging-linux-amd64
    2. ./nging-linux-amd64
  2. 打开浏览器,访问网址
    http://localhost:9999/setup
    在页面中配置数据库和管理员账号信息进行安装。
    Go语言Web开发项目Nging2.0.0版发布

    Go语言Web开发项目Nging2.0.0版发布

    Go语言Web开发项目Nging2.0.0版发布
    安装成功后会自动跳转到登录页面,使用安装时设置的管理员账号进行登录

    Go语言Web开发项目Nging2.0.0版发布

Ⅰ、基础功能

一. 系统设置

目前,在“系统设置”中提供了以下设置组:
Go语言Web开发项目Nging2.0.0版发布
1. 系统: 目前提供了API密钥和调试模式的开关
2. SMTP: 配置用于发送邮件的SMTP服务器的相关设置
3. 日志: 在这里可以设置如何保存和输出本系统所生成的日志
Go语言Web开发项目Nging2.0.0版发布
Go语言Web开发项目Nging2.0.0版发布
Go语言Web开发项目Nging2.0.0版发布

二. 用户管理

提供对后台用户的修改、添加和删除等操作。可以为后台用户分配相应的角色,从而对其进行权限控制
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布
Go语言Web开发项目Nging2.0.0版发布

三. 角色管理

一个角色就是一个权限集合。在本系统中我们将权限分为了操作权限和指令权限。
1. 操作权限:基于网址操作来进行权限判断
2. 指令权限:用于指定该角色可以执行的指令(这里的指令是指系统命令)
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

四. 邀请码

邀请码用来邀请其他人来注册成为本系统的后台用户。您可以指定受邀人注册后所拥有的角色,从而限制其操作权限。
Go语言Web开发项目Nging2.0.0版发布

五. 验证码

在这里可以查看短信验证码和邮箱验证码的发送记录以及使用时间
Go语言Web开发项目Nging2.0.0版发布

六. 指令集

为了对系统命令的执行进行权限控制,可以定义某个系统命令为指令
Go语言Web开发项目Nging2.0.0版发布
Go语言Web开发项目Nging2.0.0版发布

七. 修改个人资料

可以在此修改自己的头像、邮箱、手机号、密码等信息
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

八. 使用两步验证

如果想要提高账号的安全性,请启用两步验证。本系统已经实现了对两步验证的完整支持。
Go语言Web开发项目Nging2.0.0版发布

Ⅱ、特色功能

一. Web服务

Web服务采用caddy作为内核。
caddy 是类似于nginx或apache的网站服务软件。caddy的配置文件比nginx更加简洁易用。
Nging采用了图形化界面来配置caddy,这使得对caddy的配置变得更加的容易。

设置网站服务的一般流程为:添加分组 - 添加网站 - 启动服务

1. 创建分组

首先,我们来添加一个分组。点击左边竖向导航栏上的网站管理展开子菜单,点击添加分组打开创建界面,在表单录入框组名称中输入名称后提交
Go语言Web开发项目Nging2.0.0版发布

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服务后才会生效

Go语言Web开发项目Nging2.0.0版发布

3. 启动服务

Web服务是默认启动的。

可以在网站列表页面点击重新应用配置来重新生成Caddy配置文件和重启服务。
Go语言Web开发项目Nging2.0.0版发布
当然,你也可以在左边的导航菜单中点击服务器链接然后再点击展开的子菜单服务管理,在打开的页面中点击Web服务的控制按钮来进行单纯的重启和关闭

二. 服务器

1. 服务器信息

展示服务器的操作系统、CPU、磁盘、内存、网络等信息。

在这个页面中,使用了进度条和百分比来直观的展示数据和资源的占用量。
Go语言Web开发项目Nging2.0.0版发布

2. 网络端口

列出占用网络端口的进程,并且支持关闭进程
Go语言Web开发项目Nging2.0.0版发布

3. 执行命令

执行简单的控制台命令。

用聊天对话框的方式来与机器进行简单的交互。
Go语言Web开发项目Nging2.0.0版发布

4. 服务管理

控制Web和FTP服务的启动和关闭
Go语言Web开发项目Nging2.0.0版发布

5. 进程值守

进程保活,即当执行的程序被异常关闭后自动重新启动此程序

  1. 添加配置

    在左边的导航菜单中点击服务器链接然后再点击展开的子菜单进程值守打开列表页,点击列表右上角的添加配置按钮,我们来添加一个配置,在配置表单中我们可以录入以下信息:

    • 状态:指定是否启用当前配置。如果启用则会自动开始值守

    • 名称:描述一下要值守的这个进程的名字

    • 命令:进程的启动命令

    • 环境变量:如果启动的程序需要一些特定的环境变量,您可以在这里进行设置。输入的格式为“环境变量的名称=环境变量的值”,比如“NAME=Nging”。如有多个,一行一个

    • 命令参数:其实在命令输入框中已经可以带参数了,但是如果参数比较多,则可以在这里添加,格式为-c=value,如有多个则一行一个

    • 工作目录:有的时候我们需要切换到某个目录下之后再执行程序,对于这种情况在这里输入这个目录的路径即可

    • 信息日志文件:值守的信息日志保存位置。如果不填,则输出到控制台

    • 错误日志文件:错误日志保存位置。如果不填,则输出到控制台

    • 重试次数:连续重试的次数。如果连续启动程序都失败了并且达到重试次数的限制,则退出值守

    • 启动延时:程序异常退出后,等待多长时间后再启动。格式为数字和字母的组合,例如:1y、2m、3d、4h、5i、6s 分别表示 1年、2个月、3天、4小时、5分钟、6秒

    • 心跳检测间隔:也就是多久检测一次程序运行状态。默认1m,即1分钟。格式同启动延时

    • 说明:该配置的附加说明

    • 调试模式:如果开启,则会在控制台输出调试信息

      Go语言Web开发项目Nging2.0.0版发布

  2. 启动和关闭值守

    在列表页点击“启用状态”列中的复选框可以控制对某个程序值守的开和关

    Go语言Web开发项目Nging2.0.0版发布

三. FTP账号

1. 添加账号分组

对于有大量FTP账号的情况,可以通过建立分组来进行归类

Go语言Web开发项目Nging2.0.0版发布

2. 添加FTP账号

要使用Nging提供的FTP功能,必须首先要创建一个FTP账号。

Go语言Web开发项目Nging2.0.0版发布

FTP客户端使用这里创建的账号来登录。

3. 开关FTP服务

在左边的导航菜单中点击服务器链接然后再点击展开的子菜单服务管理,在打开的页面中点击FTP服务的控制按钮来进行重启和关闭

四. 数据采集

 数据采集模块提供了强大的采集功能,它包含了以下特色:

  • 灵活便捷的配置表单
  • 支持无限级页面
  • 支持多种页面格式(html,json,text)
  • 支持多类型采集规则(regexp,regexp2,goquery)
  • 丰富的过滤器和验证器
  • 支持多种浏览器引擎(chromedp,webdriver等)
  • 三种去重验证机制
  • 支持代理
  • 支持自动导出采集数据到不同的数据源(WebAPI,DSN)
  • 支持定时采集

1. 添加采集规则

在左边的导航菜单中点击数据采集链接然后再点击展开的子菜单新建规则,我们来添加一个新规则,在配置表单中我们可以录入以下信息:

  • 规则名称:首先您得为规则取一个名字
  • 分组:为当前规则选择一个分组
  • 说明:规则附加说明
  • 判断重复:选择一个判断重复的方式,这样可以避免重复采集相同的数据
  • 入口页面网址:在这里,您可以指定多个入口页面网址,每一个网址单独放在一行,支持使用Go语言的模板语法循环输出网址,此外,每一个网址中都支持使用数字范围标签,在数字范围标签中,连续的范围我们使用-来指定,不连续的范围使用,来罗列,同时支持指定步进值,且步进值与范围值之间用:分隔,默认步进值为1,例如:{(1-9,11,13-19:2)}
  1. 例如:http://www.admpub.com/{(1-2)}.html 会生成网址:
  2. http://www.admpub.com/1.html
  3. 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、socks5
    • user - 用户名(选填)
    • password - 密码(选填)
    • ip - IP地址
    • port - 端口
  • 页面格式:目标页面的内容格式,支持的有HTML/JSON/Text

  • 浏览引擎:目前支持standard/chromedp/webdriver这三种,其中standard为普通方式,速度最快,默认为standard。chromedp和webdriver为调用chrome浏览器,速度相对较慢

  • 页面类型:可以选择“列表页”和“内容页”选项,请根据所采集页面的实际类型来选择

  • 页面字符集:比如gbkutf-8。此项为选填,不填写的情况下会根据网页内容自动判断

  • 区域规则:指定所要采集页面上的某个区域的匹配规则。这里支持两种类型的规则:

    1. 选择器规则:即类似于jQuery匹配页面元素的规则,比如:div.container > h1
    2. 正则匹配规则:需要在规则前添加前缀regexp:regexp2:。其中regexp:为Go语言原生正则表达式规则;regexp2:为兼容 Perl5 和 .NET 的正则表达式规则(相关文档:https://github.com/admpub/regexp2
  • 规则:此处指定以下规则

    1. 数据采集规则:所要采集的数据匹配规则,如果指定了区域规则则在该区域内进行查找
    2. 数据保存变量名:指定数据保存到哪个变量里
    3. 数据过滤器和验证器:多个过滤器或验证器之间用管道符“|”分隔,以下划线“_”开头的为验证器(不符合验证器规则的数据会被跳过)

    然后可以点击“添加下一级页面”链接来对添加第二级页面的规则。页面的层级数量没有限制。

    Go语言Web开发项目Nging2.0.0版发布

    Go语言Web开发项目Nging2.0.0版发布

2. 测试采集规则

点击“测试”按钮可以进行采集测试,为了快速获取测试结果,每一级页面只采集一条
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

3. 执行采集

点击“采集”按钮进行手动采集

Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

4. 将采集加入计划任务

也可以将采集任务加入到计划任务中,进行自动定时采集

5. 添加导出规则

定义采集数据的导出方式。如果希望在采集的时候自动将采集到的数据导入其它系统,请在这里添加导出规则。
目前支持两种导出方式:

1、导入到数据库;
2、提交到API接口(将JSON数据POST提交到API接口)

五. 计划任务

crontab的完美替代,并采用了图形化配置界面,支持记录日志、发送错误报告邮件等

Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

六. 离线下载

这里的离线下载支持并行下载。
对于需要很长时间才能下载完成的大文件,我们只需要建立一个离线下载任务并且启动,然后就可以关闭浏览器去做其它的事情了,Nging会自动在后台帮您下载。
Go语言Web开发项目Nging2.0.0版发布

管理离线下载的文件:
Go语言Web开发项目Nging2.0.0版发布

七. 数据库管理

1. 管理MySQL

添加MySQL数据库账号:
Go语言Web开发项目Nging2.0.0版发布

连接MySQL服务器:
Go语言Web开发项目Nging2.0.0版发布

MySQL数据库:
Go语言Web开发项目Nging2.0.0版发布

MySQL数据表:
Go语言Web开发项目Nging2.0.0版发布

2. 管理Redis

添加Redis服务器信息(如果没有为redis设置认证信息,用户名和密码留空):
Go语言Web开发项目Nging2.0.0版发布

连接Redis服务器:
Go语言Web开发项目Nging2.0.0版发布

Redis信息:
Go语言Web开发项目Nging2.0.0版发布

管理Redis数据:
Go语言Web开发项目Nging2.0.0版发布

3. MySQL表结构比较/同步

添加账号:
Go语言Web开发项目Nging2.0.0版发布

查看差异:
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

八. FRP内网穿透

当你想要将局域网内的电脑暴露到外网,以便于外网的用户也能访问到您的网站服务时,这时候就需要用到内网穿透。

内网穿透支持服务端模式和客户端模式,全图形化的配置界面让配置变得非常容易。

1. 服务端模式:

添加服务端配置:
Go语言Web开发项目Nging2.0.0版发布

服务端控制:
Go语言Web开发项目Nging2.0.0版发布

2. 客户端模式:

添加客户端配置:

Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

要成功使用内网穿透功能,必须在局域网电脑上启动客户端模式,在提供外网的服务器或VPS上启动服务端模式。

九. SSH管理

SSH管理功能实现了SSH的Web客户端管理功能,您可以在Nging网页上进行SSH命令行交互操作,也可以通过Nging以SFTP方式来进行文件的上传、下载、删除和编辑

1. 添加SSH服务器账号

添加SSH服务器账号:
Go语言Web开发项目Nging2.0.0版发布

2. SSH管理

连接SSH服务器:
Go语言Web开发项目Nging2.0.0版发布

进入控制台
Go语言Web开发项目Nging2.0.0版发布

3. SFTP管理

连接SFTP:
Go语言Web开发项目Nging2.0.0版发布

Go语言Web开发项目Nging2.0.0版发布

结束语

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这