咏南中间件随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开机自动启动的更多相关文章

  1. 咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1

    咏南中间件+开发框架支持最新的DELPHI XE10.1(BERLIN) UPDATE1 购买提供:中间件源码,价格十分优惠!有意者请向本人索取演示程序! 附带福利(赠送): CS开发框架源码BS开发 ...

  2. delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码

    咏南中间件+咏南开发框架支持最新的delphi 10.1(berlin),老用户提供免费升级. 购买提供:中间件源码 附带福利(赠送): CS开发框架源码BS开发框架源码移动APP源码中间件集群源码二 ...

  3. 专门为ADO二层升三层的咏南中间件(特种用途)

    专门为ADO二层升三层的咏南中间件(特种用途) 演示下载:链接: https://pan.baidu.com/s/1bulGBIZ6A1nkeErxIrGsGA 密码: 22dk 解压后运行ynmai ...

  4. 咏南中间件支持JWT TOKEN

    咏南中间件支持JWT TOKEN

  5. 咏南中间件JSON序列类

    咏南中间件JSON序列类 1)支持跨平台.跨语言 2)支持主从表数据序列.还原,支持任意数量的表 主从表数据序列为JSON字符串样式: { "rows": [ { "FD ...

  6. 咏南中间件新增MORMOT移动端演示

    咏南中间件新增MORMOT移动端演示 基于FMX,支持安卓.IOS移动端. 1)使用INDY 的HTTP控件进行查询: procedure TForm1.查询1Click(Sender: TObjec ...

  7. 咏南中间件支持DELPHI6及以上版本开发的客户端

    咏南中间件支持DELPHI6及以上版本开发的客户端 下面是测试用DELPHI7开发的客户端,调用DELPHI10.3.1开发的中间件,完全兼容. 这样,有利于维护原来用D7开发的老程序. 如上所述,只 ...

  8. 咏南中间件开始支持redis client接口调用

    咏南中间件开始支持redis client接口调用 咏南中间件封装了redis client接口,可以支持REDIS了. 如下图,将数据集写入REDIS缓存,和从REDIS缓存获取数据: proced ...

  9. 咏南中间件支持TMS WEB CORE客户端

    咏南中间件支持TMS WEB CORE客户端 TMS WEB CORE是优秀的JS前端,搭配咏南中间件后端,可以进行快速的企业应用开发.

随机推荐

  1. Linux环境下安装RabbitMQ

    首先RabbitMQ是使用erLang编写的开源消息中间件.所以需要先安装erlang环境. 我使用的是CentOS的系统安装erlang21.0的步骤如下: #下载安装包 (下面是我用的比较匹配的版 ...

  2. 3.kafka 基本配置

    1.主题管理 kafka-topics.sh工具脚本用于对主题操作,如创建.删除.修改.分区数.副本数及主题级别的配置. 1.1创建名为kafka-test主题,有2个副本,3个分区 [hadoop@ ...

  3. Win10-安装.net 2,3,.3.5

    win10x64(ver1809).iso放镜像到光驱后执行cmd(.net3.5包括2和3)dism.exe /online /enable-feature /featurename:NetFx3 ...

  4. @JsonIgnore注解

    注解名称:@JsonIgnore 作用:在实体类向前台返回数据时用来忽略不想传递给前台的属性或接口. Eg:User实体中会有字段password字段,当返回用户信息给前台的时候,当然是不希望将pas ...

  5. cal of easter egg

    在Linux中用cal命令查看1752年9月,发现3到13日全都消失了……

  6. git 如何忽略已经加入到版本控制的文件

    增加 .gitignore 文件,里面添加需要忽略的文件(file_not_wanted): 执行命令 git rm -r --cached .   注意,最后的点.不要省略. 最后重新将所有文件添加 ...

  7. docker 运行ELK

    docker network create somenetwork docker run -d --name elasticsearch --net somenetwork -p 9200:9200 ...

  8. 【Low版】HAUT - OJ - Contest1035 - 2017届新生周赛(六)题解

    问题 A: 比赛 时间限制: 2 秒 内存限制: 256 MB | 提交: 393 解决: 98提交 状态 题目描述 学校要派6名同学组成两个队(一个队3个人)去参加比赛,每个同学有一个分数,学校希望 ...

  9. python 程序练习题

    1.实现isOdd(),参数为整数,如果整数为奇数,返回True,否则返回Flase 代码如下: def isOdd(a): if a%2==0: return False else: return ...

  10. Keras神经网络data generators解决数据内存

    在使用kears训练model的时候,一般会将所有的训练数据加载到内存中,然后喂给网络,但当内存有限,且数据量过大时,此方法则不再可用.此博客,将介绍如何在多核(多线程)上实时的生成数据,并立即的送入 ...