专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

fcgi应用搭建与调试

来源:小易整编  作者:小易  发布时间:2023-03-16 11:28
摘要:FCGI应用搭建与调试一|CGI功能介绍WEB服务器与CGI程序交互:WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。CGI与FastCGI的区别:CGI工...

FCGI应用搭建与调试

一 | CGI功能介绍

WEB服务器与CGI程序交互:

WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。

fcgi应用搭建与调试

CGI与FastCGI的区别:

CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如PHP-CGI.exe),CGI的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程。当然,这样在访问量很少,没有并发的情况也行。可是当访问量增大,并发存在,这种方式就不适合了。于是就有了FastCGI。

FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一次(这是CGI最为人诟病的fork-and-execute 模式)。

一般情况下,FastCGI的整个工作流程是这样的:

  1. Web Server启动时载入CGI与 FastCGI进程管理器(IIS ISAPI或Apache Module)

  2. FastCGI进程管理器自身初始化,启动多个CGI解释器进程(可见多个PHP-CGI)并等待来自Web Server的连接。

  3. 当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程PHP-CGI。

  4. FastCGI 子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在Web Server中)的下一个连接。在CGI模式中,PHP-CGI在此便退出了。

二 |FCGI搭建调试(C++)

1.主机环境变量设置背景现状

对应主机要设置相应的环境变量(.bash_profile) LD_LIBRARY_PATH/ BOSS_ENCRYPT_ROOT/ PATH/ORACLE_HOME等。

LD_LIBRARY_PATH:对应CGI所用到的动态文件所在路径

如:libintfscommnew.so => /usr/local/lib/libintfscommnew.so等等

BOSS_ENCRYPT_ROOT:CGI所用到数据库密码文件所在路径

PATH:对应CGI所在的目录路径

ORACLE_HOME:数据库客户端所在目录(tns等要正常)

2.应用更新

①将程序部署到相应目录下并赋权(/bossapp1/prg/bin BM_CGI_SERVICE)

正常情况:说明能正常使用

fcgi应用搭建与调试

错误情况,如:密码文件找不到或连接不上数据、对应应用没授权、找不到动态文件等。

②将配置ini文件部署到相应目录下(/bossapp1/prg/cfg BM_CGI_SERVICE.ini),里面包含连接哪些数据库跟日志所放目录(可以跟踪相应的应用信息)。

3.应用启动

前置条件: fcgictl/apache(fcgi应用通过对应的apache来调用)已安装并能正常使用。

①apache中配置对应应用要启动的端口(httpd.conf文件)。

fcgi应用搭建与调试

非对应CGI本机的apache时上面配置中localhost要修改对应fcgi主机的ip地址。

/opt/apache/conf 配置文件  httpd.conf                     

/opt/apache/bin  apachectl restart 重启apache                      

fcgictl所在目录要加入到PATH环境变量中

②本机对应要启动的shell脚本(ia_fcgi.start类似)中对应fcgi要启动的端口与apache中要对应上

fcgi应用搭建与调试

③启动shell脚本,查看应用进程是否正常启动以及日志等

fcgictl -start -connect localhost:91019 fcgi_ia_bill_service 10

这里要注意:

  •  connect后面统一用localhost 而不用完整的ip地址

  • 端口号要同apache中配置的端口号(端口号就是CGI别名IA_CGI_BILL_SERVICE 和实际程序名fcgi_ia_bill_service的关联)

  • 10 这个是启动的进程数

  • 启动检查新增后台进程是否有在,日志是否正常刷

4.FCGI调用地址说明

以apache调用为例:

http://xx.xx.xxx.xx:8081/fcgi-bin/IA_BATCH_CGI_SERVICE

调用FCGI完整的地址各个名称分解如下:

xx.xx.xxx.xx ---对应的apache部署主机

8081---对应的apache配置文件中的端口号

fcgi-bin/IA_BATCH_CGI_SERVICE ---对应的apache配置文件中配置调用相应的CGI(参考上面章节apache中的配置查看)

IA_BATCH_CGI_SERVICE---只是一个调用的名称,可以不是,也可以是FCGI对应的程序名(大家不要太过于关注这个是否是FCGI对应的程序名)

相应的web服务器就可以直接上面这个url地址调用到对应的FCGI服务。

目前我们大部分都是通过bssp中配置调用相应的FCGI。

5.BSSP配置(内部)

以fcgi_ia_bill_service为例:

该CGI调用的名称为IA_CGI_BILL_SERVICE。

select * from bssp.bssp_server where server_name = 'IA_CGI_BILL_SERVICE';

insert into bssp.bssp_server (SERVER_NAME, SERVER_PROTOCOL, SERVER_ADDRESS, HOST_NAME, PORT, DESCRIPTION)

values ('IA_CGI_BILL_SERVICE', 3, 'fcgi-bin/IA_CGI_BILL_SERVICE', 'NEWBS_IA_HOST', 9003, '帐务计费FCGI服务');

注意几个字段:

SERVER_NAME=Apache中配置的别名(尽量配成一样,比较容易定位,当然不同也没关系)

SERVER_ADDRESS 调用该cgi的url后缀(这个必须一样)

HOST_NAME--主机名称,用在主机地址配置。如下

select * from bssp.bssp_host where host_name='NEWBS_IA_HOST'

insert into bssp.bssp_host (HOST_NAME, IP_ADDRESS, DESCRIPTION)

values ('NEWBS_IA_HOST', '对应IP地址', '新帐务');

6.错误分析定位

①FCGI无法正常启动时检查

查看所需要的动态文件是否都有,如下图命令。及时补上对应的动态库文件,并把所在目录加入到环境变量LD_LIBRARY_PATH中。

fcgi应用搭建与调试

对应的应用没加执行权限,如下:

-rwxrwxrwx 1 bossbm1 417430054 03-13 15:48 BM_CGI_SERVICE-有执行权限

-rw-rw-rw- 1 bossbm1  417430054 03-13 15:48 BM_CGI_SERVICE-无执行权限

----执行 chmod +x BM_CGI_SERVICE 增加执行权限

②启动报连接密码文件错误等信息

检查环境变量中BOSS_ENCRYPT_ROOT对应的目录下 ESainfo.txt ESainfo_Map.txt对应关系是否正常如下图:

③报数据库连接不上 ora-03114

  • 查看密码文件ESainfo.txt中用户名后面的连接数据库名 是否在应用主机上有对应的数据库配置

  • 确认对应的数据库是否有被重启过,如被重启对应的应用要重启

④ URL调试不通

在FCGI已经部署完成且启动、日志无异常报错的情况下,报文发送不过去,则考虑是否tcp/ip端口没有开放,在本地使用telnet去测试网络连接是否正常。

⑤Apache没启动

下图情况表示apache没启动,这时要考虑apache问题。

fcgi应用搭建与调试


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/928195.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • 修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误...

    修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误代码 0X80070032、0X80070424 或 0X80070005

    haloinfinite(campaign)是一款第一人称射击视频游戏,于2021年11月推出,可供单人和多用户使用。该游戏是halo系列的延续,适用于windows、xboxone和xbox系列的用户x|s。最近...

  • Vue路由守卫详解及其应用场景分析

    Vue路由守卫详解及其应用场景分析

    随着前端技术的不断发展,vue作为一款开发框架也越来越受到开发者们的欢迎。而vue的路由机制也是vue框架中不可或缺的一部分。路由系统能够帮助开发人员构建复杂的单页应用,同时也提供了一种灵活的方式来管理页面状态和用户导航。在这种情况下,vu...

  • 如何使用快捷方式应用程序在iPhone上查找新添加的联系人

    如何使用快捷方式应用程序在iPhone上查找新添加的联系人

    您是否曾经经历过完全忘记或无法回忆起最近在iphone上保存了某人的联系人的情况?如果是,您不必再担心这一点。在深入研究此事并对其进行研究后,我们找到了一个解决方案/技巧,您可以在快捷方式的帮助下找到iphone上所有最近添加的联系人。在本...

  • 怎么解决WerFault.exe应用程序错误

    怎么解决WerFault.exe应用程序错误

    解决werfault.exe应用程序错误的方法:1、重新启动计算机;2、更新操作系统和应用程序;3、运行系统文件检查工具;4、禁用错误报告服务;5、运行病毒扫描;6、重新安装应用程序。详细介绍:1、重新启动计算机,当遇到werfault.e...

  • 计算机的应用领域包括什么

    计算机的应用领域包括什么

    计算机的应用领域包括商业领域、通信和信息技术领域、科学研究和工程领域、医疗保健领域、娱乐和媒体领域和教育和学术研究领域等。计算机的应用领域非常广泛,几乎涵盖了现代社会的各个方面。计算机在现代社会中已经广泛应用于各个领域,从商业到科学研究,从...

  • 应用软件有哪些?

    应用软件有哪些?

    应用软件是指专门为某一应用目的而编制的软件系统,常用的应用软件有字处理软件、表处理软件、统计分析软件、数据库管理系统、计算机辅助软件、实时控制与处理软件以及其他应用于国民经济各行业的应用程序。本文操作环境:Windows7系统,DellG...

  • 应用程序未安装怎么办

    应用程序未安装怎么办

    有的手机下载了软件程序之后在安装的时候却又没安装起来,在查看软件管理的时候就显示出程序未安装,这是为什么呢?又该怎么解决呢?下面一起来看看吧!Android在安装某个应用时,提示程序未安装由以下原因造成:(推荐学习:PHP视频教程) 手机已...

  • 如何在Cilex框架中实现命令行应用?

    如何在Cilex框架中实现命令行应用?

    cilex框架是一个基于symfonyconsole组件的php框架,它提供了一种快速、简单和可维护的命令行应用程序开发方式。在本文中,我们将学习如何在cilex框架中实现命令行应用。一、安装Cilex框架首先,我们需要安装Cilex框架...

  • 周排行
  • 月排行
  • 年排行

精彩推荐