咏南中间件随LINUX开机自动启动
咏南中间件随LINUX开机自动启动
LINUX DEAMON,LINUX也有类似WINDOWS的服务。
program ynCrossServer;
{$HINTS OFF}
{$APPTYPE CONSOLE} {$R *.res} uses
{$IFDEF MSWINDOWS}
MidasLib,
{$ENDIF }
{$IFDEF POSIX}
Posix.Unistd,
{$ENDIF}
uPlugHelp,
uUnidacPool,
Web.WebReq,
IdHTTPWebBrokerBridge,
uLog,
System.SysUtils,
WebservicesImpl in 'WebservicesImpl.pas',
WebservicesIntf in 'WebservicesIntf.pas',
WebModuleUnit1 in 'WebModuleUnit1.pas' {WebModule1: TWebModule},
uWebservices in 'uWebservices.pas' {ynWebServices: TDataModule},
uIDTcpSvr in 'uIDTcpSvr.pas' {idTcpSvr: TDataModule},
uIDHttpSvr in 'uIDHttpSvr.pas' {idHttpSvr: TDataModule},
uCrossHttpSvr in 'uCrossHttpSvr.pas' {crossHttpSvr: TDataModule},
uCrossTcpSvr in 'uCrossTcpSvr.pas' {crossTcpSvr: TDataModule},
uCrossWebSckSvr in 'uCrossWebSckSvr.pas' {CrossWebSckSvr: TDataModule}; {$IFDEF POSIX}
procedure daemon;
begin
try
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass := WebModuleClass;
TUnidacPool.SetDBParams;
Log := TLog.Create;
uPlugHelp.LoadPlugs;
// ynWebServices := TynWebServices.Create(nil);
// crossTcpSvr := TcrossTcpSvr.Create(nil);
crossHttpSvr := TcrossHttpSvr.Create(nil);
// CrossWebSckSvr := TCrossWebSckSvr.Create(nil);
repeat
sleep(10000);
until False;
finally
if idTcpSvr <> nil then
FreeAndNil(idTcpSvr);
if idHttpSvr <> nil then
FreeAndNil(idHttpSvr);
if ynWebServices <> nil then
FreeAndNil(ynWebServices);
if crossHttpSvr <> nil then
FreeAndNil(crossHttpSvr);
if crossTcpSvr <> nil then
FreeAndNil(crossTcpSvr);
if CrossWebSckSvr <> nil then
FreeAndNil(CrossWebSckSvr);
uplughelp.UnloadPlugs;
var i: Integer;
for i := 0 to Length(DBPoolArray) - 1 do
FreeAndNil(DBPoolArray[i]);
FreeAndNil(log);
end;
end;
var pid: Cardinal;
{$ENDIF} begin
{$IFDEF MSWINDOWS}
if WebRequestHandler <> nil then
WebRequestHandler.WebModuleClass := WebModuleClass;
TUnidacPool.SetDBParams;
Log := TLog.Create;
uPlugHelp.LoadPlugs;
//idHttpSvr, crossHttpSvr,要绑定不同的端口,才能同时存在
// idTcpSvr := TidTcpSvr.Create(nil);
// idHttpSvr := TidHttpSvr.Create(nil);
// ynWebServices := TynWebServices.Create(nil);
// crossTcpSvr := TcrossTcpSvr.Create(nil);
crossHttpSvr := TcrossHttpSvr.Create(nil);
// CrossWebSckSvr := TCrossWebSckSvr.Create(nil);
try
Writeln('输入exit,按回车链,退出程序');
var s: string;
while True do
begin
Readln(s);
if sametext('exit', s) then
begin
Break;
end
else
Writeln('无法识别的命令');
end;
finally
if idTcpSvr <> nil then
FreeAndNil(idTcpSvr);
if idHttpSvr <> nil then
FreeAndNil(idHttpSvr);
if ynWebServices <> nil then
FreeAndNil(ynWebServices);
if crossHttpSvr <> nil then
FreeAndNil(crossHttpSvr);
if crossTcpSvr <> nil then
FreeAndNil(crossTcpSvr);
if CrossWebSckSvr <> nil then
FreeAndNil(CrossWebSckSvr);
uplughelp.UnloadPlugs;
var i: Integer;
for i := 0 to Length(DBPoolArray) - 1 do
FreeAndNil(DBPoolArray[i]);
FreeAndNil(log);
end;
{$ENDIF}
{$IFDEF POSIX}
pid := fork;
if pid = 0 then
begin
writeln('starting service');
daemon;
end;
{$ENDIF}
end.
1)将中间件部署文件复制到 /usr/yn/ 目录
2)创建并编辑/usr/lib/systemd/system/yn.service文件
[UNIT]
#服务描述
Description=ynCrossMiddleWare
#指定了在systemd在执行完那些target之后再启动该服务
After=MiddleWare [Service]
#定义Service的运行类型,一般是forking(后台运行)
Type=forking #定义systemctl start|stop|reload *.service 的执行方法(具体命令需要写绝对路径)
#注:ExecStartPre为启动前执行的命令
ExecStart=/usr/yn/ynCrossServer -start
ExecReload=/usr/yn/ynCrossServer -reload
ExecStop=/usr/yn/ynCrossServer -stop #创建私有的内存临时空间
PrivateTmp=True [Install]
#多用户
WantedBy=multi-user.target
重载系统服务:systemctl daemon-reload
人工启动服务:systemctl start yn.service
人工停止服务:systemctl stop yn.service
人工重启服务:systemctl reload yn.service
设置开机启动:systemctl enable yn.service
咏南中间件随LINUX开机自动启动的更多相关文章
- 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1
咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1 购买提供:中间件源码,价格十分优惠!有意者请向本人索取演示程序! 附带福利(赠送): CS开发框架源码BS开发 ...
- delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码
咏南中间件+咏南开发框架支持最新的delphi 10.1(berlin),老用户提供免费升级. 购买提供:中间件源码 附带福利(赠送): CS开发框架源码BS开发框架源码移动APP源码中间件集群源码二 ...
- 专门为ADO二层升三层的咏南中间件(特种用途)
专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...
- 咏南中间件支持JWT TOKEN
咏南中间件支持JWT TOKEN
- 咏南中间件JSON序列类
咏南中间件JSON序列类 1)支持跨平台.跨语言 2)支持主从表数据序列.还原,支持任意数量的表 主从表数据序列为JSON字符串样式: { "rows": [ { "FD ...
- 咏南中间件新增MORMOT移动端演示
咏南中间件新增MORMOT移动端演示 基于FMX,支持安卓.IOS移动端. 1)使用INDY 的HTTP控件进行查询: procedure TForm1.查询1Click(Sender: TObjec ...
- 咏南中间件支持DELPHI6及以上版本开发的客户端
咏南中间件支持DELPHI6及以上版本开发的客户端 下面是测试用DELPHI7开发的客户端,调用DELPHI10.3.1开发的中间件,完全兼容. 这样,有利于维护原来用D7开发的老程序. 如上所述,只 ...
- 咏南中间件开始支持redis client接口调用
咏南中间件开始支持redis client接口调用 咏南中间件封装了redis client接口,可以支持REDIS了. 如下图,将数据集写入REDIS缓存,和从REDIS缓存获取数据: proced ...
- 咏南中间件支持TMS WEB CORE客户端
咏南中间件支持TMS WEB CORE客户端 TMS WEB CORE是优秀的JS前端,搭配咏南中间件后端,可以进行快速的企业应用开发.
随机推荐
- maven cmd 命令
1. mvn clean install :重新清理打包 2.详见:https://www.cnblogs.com/lukelook/p/11298168.html mvn versions:upd ...
- iview Carousel 轮播图自适应宽高;iview 轮播图 图片重叠问题;iview tabs 高度互相影响问题;vue this问题;
最终效果图: 一.轮播图中图片自适应宽高: <Carousel loop v-bind:height="imgHeight+'px'" v-model="caro ...
- p5.BTC-网络
Bitcoin工作在应用层,网络层是P2P . Bitcoin网络通信的设计原则是 simple robust ,but not efficient. 每个节点维护一个邻居节点的集合,消息传播采取 ...
- MIME 文献资料整理
一.最近返回来再查询CIP协议的资料,发现MIME (Multipurpose Internet Mail Extensions)需要了解一下.(多用途互联网邮件扩展类型) 有关的直接的文献资料是 & ...
- Linux GRUB手动安装方法详解
需要手工安装 GRUB 主要有两种情况: Linux 系统原先不是使用 GRUB 作为引导程序而现在想要使用 GRUB 来作为引导程序: MBR 中的引导程序被覆盖,需要在 MBR 中重新安装 GRU ...
- 大数据集群Linux CentOS 7.6 系统调优篇
大数据集群Linux CentOS 7.6 系统调优篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.设置主机hosts文件 1>.修改主机名 [root@node100 ...
- 从零开始配置MacBook Pro
购买macbook, 是因为它的效率性.由于我第一次使用macbook,所以按照我开发的习惯和参照了其他人的文章进行配置我的个人mac,希望我的设置对你们也有所帮助 1.基本配置 查找我的Mac 系统 ...
- Linux中rpm命令用法
rpm -ivh 软件包名 安装软件包并显示安装进度.这个是用得最多的了. rpm -qa 查询已经安装哪些软件包. rpm -q 软件包名 查询指定软件包是否已经安装. rpm -Uvh 软件包名 ...
- 版本控制Git研究一
对于Git的使用,早在2010年的时候,就已经开始了,接触它也是由于Android开发的原因,我们知道Android源代码的管理就是用的Git,而至今期间已经呆过几个不同的公司,不同公司对于代码的管理 ...
- IT公司该如何落实机器学习?
Cisco发布的总结报告<泽字节时代:趋势和分析>中指出:2016年末,全球年度互联网流量将突破ZB大关(1ZB泽字节:1000EB艾字节),并将于2020年达到2.3ZB;互联网的流量将 ...