`
zsxxsz
  • 浏览: 444175 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

一、概述

      在文章 acl 服务器编程模型介绍开发多线程进程池服务器程序---acl 服务器框架应用快速创建你的服务器程序--single进程池模型 等文章中介绍了如何基于 acl 的 C 语言版编写服务器程序,而在 用 acl::master_aio 类编写高并发非阻塞服务器程序使用 acl::master_proc 类编写多进程服务器程序使用 acl::master_threads 类编写多进程多线程服务器程序 等文章则介绍了如何基于 acl 的 C++ 语言版本编写服务器程序。本文将介绍如何部署这些服务器程序。

 

二、启动方式

      从文章 协作半驻留式服务器程序开发框架 --- 基于 Postfix 服务器框架改造 可以看出,acl 的服务器框架中有一个总控制后台程序 acl_master,由它来启动调度服务子进程程序(这些子进程程序由用户根据自身需要基于 acl 的服务器框架编写);在 acl_master 的启动脚本中,将 acl_master 的配置文件(参考:acl/dist/master/conf/main.cf)通过命令行传递给它,acl_master 程序根据其中的配置项 service_directory 指定的目录,扫描该目录下子进程的配置文件(每一个服务子程序一个配置文件),根据每个配置文件的配置项来控制、启动每个子进程,这种方式有点类似于 LINUX 系统中的 xinetd 控制启动子进程的方式,只是比 xinetd 功能更为强大、效率更高。

 

三、安装

   3.1、安装目录

      在 acl 服务器程序的安装目录(假设 acl 服务的安装目录为 /opt/acl)下,一般应有如下目录:

      /opt/acl/libexec:存放包括 acl_master 在内的所有服务器程序;

      /opt/acl/conf:存放 acl_master 的配置文件目录;

      /opt/acl/conf/service:存放用户编写的服务器程序配置文件的目录;

      /opt/acl/var/log:存放程序日志文件;

      /opt/acl/var/pid:存放程序进程 ID 文件;

      /opt/acl/var/private:当子进程监听 UNIX 域套接口时,该目录存放具有私有访问权限的 UNIX 域套接口文件;

      /opt/acl/var/public:当子进程监听 UNIX 域套接口时,该目录存放具有公共访问权限的 UNIX 域套接口文件;

      /opt/acl/sh:存放一些控制启动停止 acl_master 的脚本程序。

    3.1、在 acl/lib_acl 目录下运行 make 命令时,acl_master 服务控制程序便生成于 acl/lib_acl/master 目录下,用户可以手工拷贝该程序至 libexec 目录下,同时将 acl_master 的配置文件 acl/dist/master/conf/main.cf 拷贝至 conf 目录下,并打开 main.cf 文件,将其中的 {install_path} 字符串替换成 acl 服务安装目录;

   3.2、用户将自己基于 acl 的服务器框架模板编写的可执行程序也拷贝至 libexec 目录下,将该程序的配置文件拷贝至 conf/service 目录下,同时修改该配置文件,将其中的 {install_path} 字符串替换成 acl 服务安装目录,将 master_disable 的值设置成 no,master_command 后的值修改成用户编程的可执行程序名(不需要带程序路径);

   3.3、将 acl/dist/master/sh/ 目录下的脚本程序拷贝至安装目录的 sh 目录(如:/opt/acl/sh)下,同时将其中的 {instal_path} 修改成安装目录,并给这些脚本增加可执行权限(可用 chmod +x 完成)。

 

四、快速安装

      为了简便,acl 提供了一个简洁的方法,在 acl 的代码根目录下运行 make all; make install,则会将 acl_master 服务器主进程拷贝至 acl/dist/master/libexec/ 的 linux32/linux64 目录下,用户把自己的程序(如 acl/samples/master/ioctl_echo3/ioctl_echo3 程序)也拷贝至 acl/dist/master/libexec/linux64/ 下(如果您的系统是 linux32 位系统则需要拷贝到 acl/dist/master/libexec/linux32 目录下),同时把 acl/master/conf/service/samples/ioctl_echo.cf 配置文件拷贝到 acl/master/conf/service/ 目录下并改成用户自己的配置文件名(如 mytest.cf),打开此配置文件后将 master_disable 的值由 yes 改为 no(表示允许启动该配置文件控制的服务子进程),把其中 master_command 后的值改为用户自己的程序名(如 ioctl_echo3)。

      现在就可以安装服务器模块了,进入 acl/dist/master 目录,运行 :./setup.sh 安装路径,如:

      ./setup.sh  /opt/acl,则得到如下安装结果:

      /opt/acl/libexec: 该目录存储服务器程序(acl_master 程序也存放在该目录下);

      /opt/acl/conf:该目录存放 acl_master 程序配置文件 main.cf;

      /opt/acl/conf/service:该目录存放服务子进程的程序配置文件,该路径由 main.cf 文件指定;

      /opt/acl/var/log:该目录存放日志文件;

      /opt/acl/var/pid:该目录存放进程号文件;

      /opt/acl/sh:该目录存放控制脚本程序。

      安装完毕后,用户可以运行启动 acl_master 的启动脚本:/opt/acl/sh/start.sh,然后手工 telnet 127.0.0.1 5001 (该端口由前面的示例配置文件指定),则一个简单的回显示服务器程序就 OK 了;如果不能返回正确结果,用户可以到安装目录(本例子中的 /opt/acl/var/log/)下查看 acl_master 主进程的日志文件 acl_master 查看里面记录的错误信息。

 

五、参考

     acl 库下载:https://sourceforge.net/projects/acl/

     svn: svn://svn.code.sf.net/p/acl/code/

     github 地址:https://github.com/acl-dev/acl

     使用 acl 生成向导快速创建服务器程序:http://zsxxsz.iteye.com/blog/1851701

     QQ 群:242722074

0
0
分享到:
评论

相关推荐

    企业级emqx实现消息快速推送

    EMQ X (简称 EMQ), 是一款完全开源,高度可伸缩,高可用的分布式 MQTT 消息服务器,同时也支持 CoAP/LwM2M 一站式 IoT 协议接入。EMQ 是 5G 时代万物互联的消息引擎,适用于 IoT、M2M 和移动应用程序,可处理千万...

    某大学校园网络设计方案.doc

    除了可以完成主 要的路由任务,利用访问控制列表(Access Control List,ACL),路由器还可以用来完成以路由器为中心的流量控制和过滤功能。在本工程 案例设计中,内网用户不仅通过路由器接入因特网、内网用户之间也...

    网络架构师148讲视频课程

    │ 第30节:把应用部署到Linux服务器上.avi │ 第31节:Nginx简介、安装和基本运行.avi │ 第32节:Nginx的进程结构、基本配置.avi │ 第33节:Nginx常用核心模块指令.avi │ 第34节:Nginx的Http模块部分的指令.avi...

    GIT中文资源

    1 起步 1 1.1 关于版本控制 . . . . . . . . ....1.1.1 本地版本控制系统 ....1.1.2 集中化的版本控制系统 ....1.1.3 分布式版本控制系统 ....1.2 Git 的历史 ....1.3 Git 基础要点 ....1.3.1 直接快照,而非比较差异 ....

Global site tag (gtag.js) - Google Analytics