一直以来,用uniGUI做开发都比较顺手,但是缺点是这样做的只能在Windows环境下使用。而我们现在租用的虚拟服务器,往往都是CentOS的环境。
而DELPHI + uniGUI能不能做LINUX的应用,甚至能不能做CentOS环境下Apache的模块,我在网上找了很多资料,最后拼凑到一起。将来有人需要,就不用再走弯路了。
1、DELPHI + uniGUI开发LINUX的应用,这个肯定是没问题的。具体可以参考官网的操作手册:uniGUI Developer Manual,Developer's Guide -- Deploymen -- Linux64。
2、官网讲的是LINUX,与CentOS还是有一点儿不同的。我在配置PAServer完成后,编译程序的时候,提示
cannot find -lgcc_s
遇到这种情况,就去CentOS服务器上,执行以下命令:
yum install zlib-devel yum install gcc gcc-c++ yum install libcurl yum install libcurl-devel
执行完这几个命令后,再回到DELPHI重新编译程序,应该就可以通过了。
3、编译完成的so文件,上传到服务器上,并按照官网操作手册中的进行配置,如果遇到网页显示Loading的情况,就这样修改:
1)把 X:\Program Files (x86)\FMSoft\Framework\uniGUI目录下的ext-7xxx, uni-1.9.xx, unim-1.9.xx三个目录上传到服务器上,我这里上传到/etc/fmsoft/unigui/unigui_runtime下面了。
2)修改程序的UniGUIServerModuleBeforeInit部分,如下:
procedure TUniServerModule.UniGUIServerModuleBeforeInit(Sender: TObject); begin {$ifdef Linux64} FrameworkFilesRoot := '/etc/fmsoft/unigui/unigui_runtime'; {$endif} end;
这样修改完的程序就不会再提示Loading了
4、配置按照官网手册讲的进行配置,因为官网用的是Linux64举例,和CentOS9以上略有不同。
比如官网手册说要配置apache2/mods_enabled的目录,这些再CentOS里全部写到/etc/httpd/conf/httpd.conf中。
<Location /uniapache> SetHandler libMyTest-handler </Location> LoadModule uniapache_module /usr/myweb/libMyTest.so StartServers 1 ServerLimit 1
把以上代码改成你的APP的名字,就直接复制到httpd.conf文件的最后即可。
重启一下Apache,用命令
systemctl restart httpd
5、如果打开网页,马上就提示session过期,刷新会看到session的变化,但依然过期,只需要将 /etc/httpd/conf.modules.d/00-mpm.conf 中的
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so前面加上 # 注释掉,然后将,
#LoadModule mpm_event_module modules/mod_mpm_event.so前面的 # 去掉。
标签:httpd,uniGUI,CentOS,DELPHI,mpm,官网 From: https://www.cnblogs.com/kenlewis/p/17214992.html