星尘代理StarAgent属于星尘服务平台的一部分(客户端),它自身注册为系统服务,支持Windows服务和Linux的systemd。StarAgent支持配置守护应用,在它启动时拉起目标应用,运行过程中定时检测目标应用进程,如果目标进程异常退出,它会再次拉起应用进程,保障业务的持续性。守护应用的功能,即使在没有配置服务端的情况下,也可以单机工作。

因此,StarAgent能够把普通应用(非桌面应用)“变成”后台服务,而不需要应用本身做任何修改

星尘代理的安装部署可以参考 《星尘代理安装与设置》《星尘代理企业级部署》《[StarAgent]星尘代理守护应用》

想要完整体验星尘的所有功能,需要部署星尘服务端(StarServer&StarWeb)。

下载安装

直接下载安装包:http://x.newlifex.com/star/Star.zip

安装包内包括server目录(对应StarServer)、web目录(对应StarWeb)、agent目录(对应StarAgent),且agent目录内StarAgent.config配置文件已经配置好守护StarServer和StarWeb的应用服务。另外还有几个Windows安装脚本和Linux安装脚本。

解压缩

agent是星尘代理StarAgent

server是星尘服务StarServer,其中web.config用于IIS。

web是星尘控制台StarWeb,这里以StarWeb.zip形式存在,这是StarAgent特别支持的发布形式,也可以解压缩出来,然后修改agent/Config/StarAgent.config。


数据库配置

星尘服务端默认使用SQLite数据库,首次运行时自动下载SQLite驱动并创建数据库、数据表以及初始化数据。

如果想使用MySql等数据库,可分别修改server目录和web目录中的appsettings.json。无需修改则跳过这一步。

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "Urls": "http://*:6680",
  "StarServer": "http://127.0.0.1:6600",
  "ConnectionStrings": {
    "Stardust": "Data Source=..\\Data\\Stardust.db;Provider=SQLite",
    "StardustData": "Data Source=..\\Data\\StardustData.db;ShowSql=false;Provider=SQLite",
    "Membership": "Data Source=..\\Data\\Membership.db;Provider=SQLite",

    // 各种数据库连接字符串模版,连接名Zero对应Zero.Data/Projects/Model.xml中的ConnName
    //"Zero": "Server=.;Port=3306;Database=zero;Uid=root;Pwd=root;Provider=MySql",
    //"Zero": "Data Source=.;Initial Catalog=zero;user=sa;password=sa;Provider=SqlServer",
    //"Zero": "Server=.;Database=zero;Uid=root;Pwd=root;Provider=PostgreSql",
    //"Zero": "Data Source=Tcp://127.0.0.1/ORCL;User Id=scott;Password=tiger;Provider=Oracle"

    //"Membership": "Server=.;Port=3306;Database=zero;Uid=root;Pwd=root;Provider=MySql",
    //"Membership": "Data Source=.;Initial Catalog=zero;user=sa;password=sa;Provider=SqlServer",
    //"Membership": "Server=.;Database=zero;Uid=root;Pwd=root;Provider=PostgreSql",
    //"Membership": "Data Source=Tcp://127.0.0.1/ORCL;User Id=scott;Password=tiger;Provider=Oracle"

    // 魔方审计日志使用Membership的连接字符串
    "Log": "MapTo=Membership",
    "Cube": "MapTo=Membership"
  }
}

默认使用SQLite数据库,如使用其它可参考下方注释行进行修改,最后的Provider=xxx指定数据库类型,星尘能够自动支持多种数据库。

注意连接名Stardust/StardustData/Membership等不要修改。

如果StarWeb跟StarServer部署在不同服务器,则StarWeb需要修改:"StarServer": "http://127.0.0.1:6600",,以指向正确的StarServer。


Windows体验

双击“run.bat”,脚本将检测并安装net7.0-aspnet,接着启动星尘代理StarAgent。

星尘代理StarAgent启动完成以后,将拉起预先配置好(StarAgent.config)的StarServer和StarWeb。

脚本同时打开两个页面,分别是StarServer的探针页和StarWeb登录页,默认密码admin/admin。

首次运行需要比较长时间,期间会联网下载SQLite驱动(或其它配置的数据库驱动),如果失败,再次运行即可。


应用目录中将会多出来几个子目录,其中Data保存星尘服务端使用的SQLite数据库,shadow是zip包运行的影子目录。

安装Windows服务

双击“windows-service.bat”,脚本将检测并安装net7.0-aspnet,接着把星尘代理StarAgent安装为系统后台服务并启动。将来也可以随着操作系统重启而启动。

安装期间,UAC提示确认即可,因为StarAgent安装系统服务需要管理员权限。

星尘代理将在后台拉起进程StarServer和StarWeb,其它同上。

安装Linux服务

SSH登录Linux服务器,把Star.zip上传后解压缩到应用目录,执行命令:

sudo bash linux-service.sh

务必使用sudo执行,因为StarAgent安装为后台服务需要管理员权限。

脚本将检测并安装net7.0,然后安装并启动星尘代理StarAgent。

星尘代理将在后台拉起进程StarServer和StarWeb,其它同上。

源码编译安装

下载源代码编译:https://github.com/NewLifeX/Stardust


为了让StarAgent能够拉起并守护StarSever和StarWeb,首先需要StarServer和StarWeb文件目录及启动参数配置到StarAgent配置文件 Config/StarAgent.config 中。

Windows环境:

<?xml version="1.0" encoding="utf-8"?>
<StarAgent>
  <!--调试开关。默认true-->
  <Debug>true</Debug>
  <!--证书-->
  <Code></Code>
  <!--密钥-->
  <Secret></Secret>
  <!--本地端口。默认5500-->
  <LocalPort>5500</LocalPort>
  <!--更新通道。默认Release-->
  <Channel>Release</Channel>
  <!--延迟时间。重启进程或服务的延迟时间,默认3000ms-->
  <Delay>3000</Delay>
  <!--应用服务集合-->
  <Services>
    <ServiceInfo Name="starServer" FileName="StarServer.zip" Arguments="" WorkingDirectory="../star/server/" UserName="" Enable="true" Mode="Default" MaxMemory="2048" />
    <ServiceInfo Name="starWeb" FileName="StarWeb.zip" Arguments="urls=http://*:6680" WorkingDirectory="../star/web/" UserName="" Enable="true" Mode="Default" MaxMemory="0" />
  </Services>
</StarAgent>

Linux环境:

<?xml version="1.0" encoding="utf-8"?>
<StarAgent>
  <!--调试开关。默认true-->
  <Debug>true</Debug>
  <!--证书-->
  <Code></Code>
  <!--密钥-->
  <Secret></Secret>
  <!--本地端口。默认5500-->
  <LocalPort>5500</LocalPort>
  <!--更新通道。默认Release-->
  <Channel>Release</Channel>
  <!--延迟时间。重启进程或服务的延迟时间,默认3000ms-->
  <Delay>3000</Delay>
  <!--应用服务集合-->
  <Services>
    <ServiceInfo Name="starServer" FileName="StarServer.zip" Arguments="" WorkingDirectory="../star/server/" UserName="" Enable="true" Mode="Default" MaxMemory="2048" />
    <ServiceInfo Name="starWeb" FileName="StarWeb.zip" Arguments="urls=http://*:6680" WorkingDirectory="../star/web/" UserName="" Enable="true" Mode="Default" MaxMemory="0" />
  </Services>
</StarAgent>
  • StarWeb,需要指定一个访问端口,因此需要在Arguments中添加监听端口参数
  • StarServer,在Config/Star.json中 Server设置了默认参数,因此可以不额外设置启动参数

  • StarServer.zip、StarWeb.zip压缩包放在当前Agent.dll 相对目录../star/server,../star/web 当中(如下图),注意:压缩文件中没有二级文件夹。

  • 最后启动StarAgent.exe/StarAgent.dll后程序会自动拉起StarWeb和StarServer两个服务。