uniGUI开发的WEB独立服务程序并部署到Linux系统

(零)前言

其实整个步骤早有文章写过啦,请参考《这篇文章》,
我主要是记录一些关键点,以及没发现别人提过的注意事项。
请注意黄底字提示部分。

(一)uniGUI已经支持Linux

在这里插入图片描述
什么是uniGUI,它是一个Delphi下的WEB应用开发框架。它可以让我们象开发桌面应用一样的开发WEB应用,并支持独立部署,服务部署,或部署到常见的WEB容器中。

uniGUI官网得知,从版本1.90.0.1534开始支持Linux(64位)了。
需要Delphi 10.3和更高的版本。

提示:试用版并不支持Linux。

(二)准备uniGUI开发Linux应用所需环境

在开始为Linux创建uniGUI应用之前,您需要的前提条件:

1)Delphi 10.3 Rio企业版或更高版本
2)运行Linux Ubuntu 64或RedHat Linux的PC或VM

提示:CentOS相当于RedHat,所以也可以

(2.1)准备Linux服务器或虚拟机

呃,这部分就略过吧……

(2.2)准备和设置开发环境

就算不用uniGUI,只要开发Linux下的应用都必须要做。这里也大概抄一下吧。

(2.2.1)在Linux上安装运行PAServer

将RAD安装目录下的PAServer,比如:

C:\Program Files (x86)\Embarcadero\Studio\XX.0\PAServer\LinuxPAServerXX.0.tar.gz

拷贝到Linux服务器上,解压,运行,可以输入密码,看看有哪些指令。
总之只要运行起来就可以了,比如下图。
在这里插入图片描述

(2.2.2)Delphi中配置连接

输入平台类型(Linux64),主机名或IP,PAServer的端口(默认64211)。
添加完成后如图所示:
在这里插入图片描述

(2.2.3)Delphi中配置Linux的SDK

增加一个SDK,选Linux,选刚才配置好的连接。
在这里插入图片描述
然后会等很久,从Linux服务器拷贝很多所需的文件到本地SDK目录,比如:

C:\Users\XXX\Documents\Embarcadero\Studio\SDKs\centos7.sdk\

在SDK目录下会有lib64,usr目录,当然也可以完全不用去看目录。
完成后如下图。
在这里插入图片描述
请注意您的Linux服务器需要提前准备好开发必要的环境,PS:就是安装PAServer那台。先安装必要的开发相关的包,比如先:#yum install gcc 一类。否则后期编译可能报错,比如找不到 -lgcc_s一类的错误。

如果你已经编译报错,之后安装的gcc,那么请点击上图的按钮“Update Local File Cache”,更新本地文件缓存后应该可以解决缺少库的问题。

(三)开发部署Linux应用

官方帮助文档在这里,写得很详细。官网我经常访问不了,所以大概记录一下步骤。

(3.1)给uniGUI项目添加Linux平台

继续抄官网的图吧。。。
新建的就不说了,建立一个独立的uniGUI应用(standalone)。
如果是一个已有的项目,添加平台时发现没有Linux64,那么请用文本编辑器打开项目的.dproj文件把:

<FrameworkType>VCL</FrameworkType>

改为:

<FrameworkType>None</FrameworkType>

应该就可以看到Linux64平台的选项了。
在这里插入图片描述
在这里插入图片描述

(3.2)准备Linux下的运行库

如果你是在Windows下运行,直接运行不需要任何库,在别的服务器上部署,也有现成的runtime的可执行文件安装一遍就可以了,但是Linux下没这么简单。

需要拷贝这uniGUI下面的这几个目录到Linux下,下图这4个目录就是运行时库,官方很详细的介绍了怎么拷贝到Linux下,不过我觉得scp或者ftp应该很容易。

必须要拷贝库到Linux下,否则可以运行但WEB无法正常访问。
在这里插入图片描述

(3.3)代码中设置Linux下库目录

在Linux下需要在服务模块初始化事件里面,设置一个变量FrameworkFilesRoot ,设置的目录就是刚才那4个目录所在的位置:

procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject);
begin
{
    
    $ifdef Linux64}
  FrameworkFilesRoot := '/etc/fmsoft/unigui/unigui_runtime';
{
    
    $endif}
end;

上面是官方文档写的,我觉得很麻烦,不如在.bashrc,或者profile里面设置一个环境变量,这样也不需要针对不同服务器改配置了。
经过测试,用环境变量的方式不行!!!
暂时保留上面这段话,当作记录,记得设置FrameworkFilesRoot时要用绝对路径。

(3.4)编译和测试

编译吧,如果一切正确,则应该能够成功构建应用程序。
您的Linux可执行文件将位于… \ Linux64 \ Debug \文件夹下(没改过配置)。
在这里插入图片描述
您会注意到该文件没有扩展名,因为在Linux中没有可执行文件的默认扩展名(可以自己配置成编译输出成.exe啊,呵呵呵)。

准备运行该应用程序了。
假设PAServer应用程序正在Linux上运行,并且Delphi已正确配置可以与PAServer通信。

通过按F9,Delphi将开始将Linux应用程序部署到您的Linux服务器。
部署完成后,将在Linux服务器上以调试模式执行应用程序。

现在,您可以通过在浏览器选项卡中打开它来测试第一个uniGUI Linux应用程序。
您的应用程序的正确URL应为http:// linuxserver_ip_address:8077

在官方例子里,他们的Linux服务器位于地址192.168.1.15上。
因此我们应访问http://192.168.1.15:8077/

大概就是下图的样子,成功了:
在这里插入图片描述

(3.5)独立模式关闭程序

是的,猜对了,在Linux关不了……
因为没有图形界面,没有任务栏图标。
只能kill掉进程。

或者通过WEB的 server manage来关闭服务。

或者不要用独立模式,设置成服务,或者运行在其它WEB容器下。
这些不是重点。可以看官方文档或搜相关的文章。。。

猜你喜欢

转载自blog.csdn.net/ddrfan/article/details/114384404