DELPHI + uniGUI 开发CentOS环境下的Apache模块遇到的问题

一直以来,用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前面的 # 去掉。

 

posted on 2023-03-14 15:05  西点肥牛  阅读(477)  评论(0编辑  收藏  举报

导航