一、概述
在文章 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
相关推荐
### 通过802.1X认证服务器动态下发授权ACL典型配置详解 #### 一、概述 802.1X认证是一种基于端口的网络接入控制标准,它能够为二层网络提供一种认证机制,使得只有认证成功的设备才能访问网络资源。在企业网络环境...
单独部署意味着这个服务可以独立于其他应用服务运行,这样可以提高系统的模块化和可扩展性。部署时,需要配置服务器环境,例如安装必要的运行时环境(如Java、Python或Node.js),设置服务器参数,如端口号、内存...
- **混合部署**:除了服务器之外,还支持半高和全高的服务器以及内置存储系统的混合部署,提高了系统的灵活性。 #### 2.2 存储与虚拟化 - **内置磁盘阵列**:支持内置的企业级磁盘阵列,并且支持存储虚拟化技术,...
部署勤哲Excel服务器的WebService时,需要确保ESWeb模块正确安装并配置好安全性设置。具体步骤如下: 1. **安装ESWeb模块**:在安装Excel服务器服务端时,选择安装ESWeb模块。 2. **配置安全性**:确保WebService的...
- 支持半宽和全宽服务器以及内置存储系统的混合部署。 - 内置企业级磁盘阵列,支持存储虚拟化技术,实现异构多品牌SAN存储环境的整合与统一规划使用。 **2. 扩展性与可靠性** - 采用无源背板设计,为每个服务器节点...
同时,Nginx还可以通过防火墙规则、访问控制列表(ACL)等方式限制非法访问,增强服务器安全性。 总的来说,《深入理解Nginx模块开发与架构解析》这本书将帮助读者深入了解Nginx的内部运作,包括其高效的设计、模块...
在模块化教学设计中,每个模块都有其明确的教学目标,例如“云计算网络部署”模块的目标是让学生能够进行网络规划,熟悉交换机操作以及VLAN和ACL的配置。而“云计算存储部署”模块则要求学生理解存储的基本概念,...
- 这种方式可以方便地将项目部署到同一服务器或不同服务器,为开发者提供了快速测试和验证功能的途径。 4. **部署流程** - 在部署 ASP.NET 网站前,需确保目标机器安装了 .Net Framework、SQL Server 数据库...
网络服务模块的及时更新能够确保服务器运行在最新的补丁包和稳定版本之上,从而减少已知漏洞被利用的风险。 日志系统文件的管理也是服务器安全的重要组成部分。将服务器程序访问日志存储在安全级别较高的服务器上...
4. Java Web封装服务器:服务器Server部署了Tomcat,通过JSP页面显示交换机每个端口的状态,并提供管理界面。Apache中的commons.net包提供了进行Telnet操作的TelnetClient类。 技术要点: 1. 使用Java技术实现基于...
《wzdftpd:构建模块化、高效FTP服务器的开源解决方案》 在信息化时代,文件传输扮演着至关重要的角色,而FTP(File Transfer Protocol)作为其中最基础的协议之一,被广泛应用于各种场景。wzdftpd是一款专为追求...
SVN(Subversion)是一种广泛使用的版本...通过以上步骤,你应该能成功地在Apache服务器上部署并运行SVN。这个过程虽然涉及到一些配置,但是一旦设置好,就能为团队提供一个可靠的版本控制环境,便于协作和项目管理。
例如,可以使用session或cookie来管理用户登录状态,以及ACL(访问控制列表)来定义用户对文件系统的访问权限。 在实现过程中,开发者可能会使用一些常见的PHP库和工具,如PHPMailer用于发送文件下载链接,或者使用...
这种模块化架构允许服务器根据需要加载或卸载功能,提高了灵活性和可定制性。 2. **高性能和稳定性**:Jabberd2 使用事件驱动模型,配合高效的多线程处理,确保了在高并发场景下的性能表现。同时,其稳定的运行能力...
IPv6 DS-Lite (Dual-Stack Lite) 是一...在实际部署中,DS-Lite服务器需要与其他网络设备和服务配合,例如DNS64,以确保IPv6客户端能够正确解析IPv4域名。此外,DS-Lite的实施还需要考虑性能、安全性和服务质量等因素。
4. 软件包结构:`apache-curator-2.5.0-source-release`中的源码分为多个模块,如curator-client、curator-framework、curator-recipes等,便于开发者根据需求选择引入相应部分。 二、Node-ZK-Browser:Zookeeper的...
同时,可以设置访问控制列表(ACL)来限制特定用户或角色对文件的访问权限。 **应用场景**: Nginx-GridFS适用于需要高效分发大量静态内容的场景,例如图片库、视频流媒体服务、文档共享平台等。此外,由于其直接与...
总的来说,Partysip SIP代理服务器为VoIP网络提供了一个强大的基础设施,不仅适用于个人研究,也可用于企业级部署,满足不同规模的通信需求。通过不断的学习和实践,你可以充分利用其功能,实现个性化的VoIP服务。
通过对Linux环境下FTP服务器的配置和管理的学习,学员将能够熟练掌握如何在Linux系统中部署和维护FTP服务。这不仅包括基础的安装和配置步骤,还包括更高级的功能,如访问控制、用户验证和安全策略的实施。这些技能...