1、概述linux
在文章 acl 服務器編程模型介紹,開發多線程進程池服務器程序---acl 服務器框架應用,快速建立你的服務器程序--single進程池模型 等文章中介紹瞭如何基於 acl 的 C 語言版編寫服務器程序,而在 用 acl::master_aio 類編寫高併發非阻塞服務器程序,使用 acl::master_proc 類編寫多進程服務器程序,使用 acl::master_threads 類編寫多進程多線程服務器程序 等文章則介紹瞭如何基於 acl 的 C++ 語言版本編寫服務器程序。本文將介紹如何部署這些服務器程序。編程
2、啓動方式服務器
從文章 協做半駐留式服務器程序開發框架 --- 基於 Postfix 服務器框架改造 能夠看出,acl 的服務器框架中有一個總控制後臺程序 acl_master,由它來啓動調度服務子進程程序(這些子進程程序由用戶根據自身須要基於 acl 的服務器框架編寫);在 acl_master 的啓動腳本中,將 acl_master 的配置文件(參考:acl/dist/master/conf/main.cf)經過命令行傳遞給它,acl_master 程序根據其中的配置項 service_directory 指定的目錄,掃描該目錄下子進程的配置文件(每個服務子程序一個配置文件),根據每一個配置文件的配置項來控制、啓動每一個子進程,這種方式有點相似於 LINUX 系統中的 xinetd 控制啓動子進程的方式,只是比 xinetd 功能更爲強大、效率更高。多線程
3、安裝併發
3.一、安裝目錄框架
在 acl 服務器程序的安裝目錄(假設 acl 服務的安裝目錄爲 /opt/acl)下,通常應有以下目錄:svn
/opt/acl/libexec:存放包括 acl_master 在內的全部服務器程序;高併發
/opt/acl/conf:存放 acl_master 的配置文件目錄;spa
/opt/acl/conf/service:存放用戶編寫的服務器程序;.net
/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.一、在 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.二、用戶將本身基於 acl 的服務器框架模板編寫的可執行程序也拷貝至 libexec 目錄下,將該程序的配置文件拷貝至 conf/service 目錄下,同時修改該配置文件,將其中的 {install_path} 字符串替換成 acl 服務安裝目錄,將 master_disable 的值設置成 no,master_command 後的值修改爲用戶編程的可執行程序名(不須要帶程序路徑);
3.三、將 acl/dist/master/sh/ 目錄下的腳本程序拷貝至安裝目錄的 sh 目錄(如:/opt/acl/sh)下,同時將其中的 {instal_path} 修改爲安裝目錄,並給這些腳本增長可執行權限(可用 chmod +x 完成)。
4、快速安裝
爲了簡便,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 查看裏面記錄的錯誤信息。
5、參考
acl 庫下載:https://sourceforge.net/projects/acl/
svn: svn://svn.code.sf.net/p/acl/code/
使用 acl 生成嚮導快速建立服務器程序:http://zsxxsz.iteye.com/blog/1851701
QQ 羣:242722074