面板知识

AMH 使用与开发

时间:2025-08-04 22:12:19   作者:网际迅联   来源:   阅读:129  
内容摘要:AMH安装说明AMH支持极速与定制编译两种方式安装。极速安装版本:AMH官网对相应的系统编译集成的版本,用户可免除编译快速完成AMH安装。定制编译版本:用户可自由定制选择相应服务器软件组件版本进行编译安装,安装时间相对需要多些,适合对默认组件版本有要求的用户。详细安装教程请查看:......

 

AMH7软件开发介绍

从AMH首个版本发布起始,AMH一直都十分注重软件的灵活、扩展性。

在AMH7所有软件用户都可按需下载安装,同时支持用户自由开发软件扩展面板功能,最新AMH7已经整合支持软件商店,支持第三方软件开发商家加入提供软件服务,您可以使用AMH开放自由的商店平台销售您的软件或是推广您的免费软件。

 

新版本AMH7的软件开发、软件工作环境等与以往版本相似,熟悉AMH旧版本开发的用户可以很快掌握应用。

相比以往版本,AMH7在原基础上增添了更加完善丰富的接口支持,开发者完全可以开发控制软件运行、管理等事件。

 

AMH7开发使用语言

AMH7用户可以使用单一linux/shell脚本开发,如nginx、apache、mysql各类服务器软件 (仅shell/AMHScrip脚本控制软件安装、运行停止、卸载等),

也可以单一使用web/php脚本开发,如d-ram、d-cpu等AMH的桌面程序 (单一AMHScript.php脚本开发,调用系统信息显示统计等),

也可以linux/shell+web/php脚本结合开发,相互调用触发事件,如shell端进行软件安装启动等操作,

web端进行异步同步数据、提供管理等页面操作 (shell/AMHScrip+AMHScript.php等php控制程序)

 

AMH7开发环境介绍

AMH软件linux/shell脚本工作位置:

/root/amh/modules/

其中以软件名称存放每一软件脚本、程序文件:

/root/amh/modules/软件名-版本/

每一软件shell核心脚本文件:

/root/amh/modules/软件名-版本/AMHScript

 

web/php端程序工作位置:

/usr/local/amh-版本/web/

访问面板 http://ip:端口/index.php

即访问/usr/local/amh-版本/web/index.php文件。

AMH的web端是使用MVC框架开发,开发者可随时增减定义的软件控制器、数据模型、软件页面模板,

/usr/local/amh-版本/web/Controller (控制器)

/usr/local/amh-版本/web/Model (数据模型)

/usr/local/amh-版本/web/View (页面视图模板)

 

AMH7软件开发实例 (linux/shell+web/php类型)

您只需简单了解AMH工作目录,即可使用shell脚本语言开发AMH的软件。

下面以AMH的FTP软件pure-ftpd-1.0.36进行实例介绍

主要编写软件的shell程序文件AMHScript (软件的核心脚本文件)

新建软件目录 /root/amh/modules/pure-ftpd-1.0.36

建立软件程序文件与配置文件:

1) AMHScript

为软件的shell核心脚本文件,定义软件基本信息与编写软件的安装、卸载、重启等函数事件。

2) AMHScript.php

为软件的web端响应程序文件,同样编写软件的web端的函数事件,用户在面板操作软件时响应shell核心脚本完成后会再次执行AMHScript.php的函数事件。

可用于实时刷新软件的安装状态,软件运行进程状态等。

3) pure-ftpd.conf

为FTP软件的配置文件,软件需要多少配置文件由开发者建立,您可以建立相关配置目录、其它配置文件等。

4) logo.gif

为软件的图标文件,在AMHScript软件基本信息中有定义变量设置软件使用这个名称的图标文件。

5) install_process.log

为软件安装进度文件,用于判断显示软件当前安装进度,在软件安装过程面板会显示软件安装百分比进度。

 

1) AMHScript 核心脚本文件分析: #!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin; #定义环境PATH变量常用值通常不需更改 ModuleName='pure-ftpd-1.0.36'; #定义软件名称与版本号 ModuleSort='server'; #定义软件类别server为服务器软件 ModuleType='FTPServer'; #定义软件类型为FTP服务器软件 ModuleMainVersion='1'; #定义软件主分支版本号 ModuleVersion='1.0.36'; #定义软件版本号 ModuleDescription='PureFTPd (Pure FTP Server) 是一个快速、稳定的支持全功能的FTP服务器软件,专门为现在的Linux核心进行设计。支持PAM认证、IPv6、chroot、虚拟域名、内建ls命令、FXP协议、带宽限制、Passive模式、LDAP认证以及XML输出等等。'; #定义软件描述介绍 ModuleInstallPath=/usr/local/${ModuleName}; #定义软件安装目录,通常AMH软件安装在/usr/local/ 软件数据存储在/home/usrdata/ ModuleDate='2015-11-09'; #定义软件发布日期 ModuleWebSite='http://amh.sh'; #定义软件官方网站 ModuleIco='logo.gif'; #定义软件使用的图标文件 ModuleScriptBy='amysql'; #定义软件开发者名称,填写您在AMH官网的账号名称 ModuleProcessTag='pure-ftpd (SERVER)'; #定义软件进程标识,面板会以此变量判断软件是否在运行 ModuleProcessFunctions='cmd:stop,txt:停止|cmd:restart,txt:重启'; #定义软件运行中可响应的函数事件,以|符号分开事件,其中有stop停止软件事件与restart重启软件事件 ModuleNotProcessFunctions='cmd:start,txt:启动'; #定义软件未运行时可响应的软件,其中有start启动事件 ModuleInstallFunctions='cmd:uninstall,txt:卸载,class:red'; #定义软件已安装时可响应的事件,其中有uninstall卸载事件 ModuleNotInstallFunctions='cmd:install,txt:安装|cmd:delete,txt:删除,class:red'; #定义软件未安装时可响应的事件,其中有install事件与delete事件 ModuleVid='1'; #定义软件版本ID值,面板以此值判断软件是否需要升级,如有软件新版本发布定义为2,当有用户已经安装软件旧版本Vid值小于2时软件会旧软件会提示升级 #到这里软件基本信息与函数事件已经定义完成,以下编写软件响应的函数事件。
#函数名称前需要增加amh_module_统一规范命名。
#upgrade 软件升级事件,根据ModuleVid值判断是否升级。这里升级无任何事件响应。如软件没有升级情况时可以不需编写upgrade函数。
#升级函数为固定的函数事件,upgrade不可更换为其它名称。 function amh_module_upgrade()
{
	return 0;
} #install 为软件安装事件,上面ModuleNotInstallFunctions基本信息已经定义软件在未安装时,用户可执行instll函数事件,用户在面板点击『安装』或执行:amh 软件名称 install 命令时即会响应此函数。
#函数名称可由开发者定义,用户可自行更变。一般建议不做改变,便于用户记忆使用命令执行等。 function amh_module_install()
{
	if amh_module_status ; then #这里调用了状态函数,软件已经安装时直接返回,避免用户重复提交安装软件。 return;
	else
		cd /tmp;
		amh_wget ${ModuleName}.tar.gz bbcb48e8aa6ec1abff9775b89f84af91; #这里使用amh自带的amh_wget函数进行下载源码,AMH会根据用户当前使用的镜像位置自动取最快的节点下载源码,并校验源码文件md5值。开发者如需上传源码到amh的镜像服务器,请在发布软件时做一备份说明。  tar -zxvf ${ModuleName}.tar.gz;
		cd ${ModuleName};
		rm -rf ${ModuleInstallPath};
		./configure --prefix=${ModuleInstallPath} --with-puredb --with-quotas --with-throttling --with-ratios --with-peruserlimits;
		amh_make_install; #amh自带的amh_make_install函数进行编译,会自动判断cpu核心数进行编译,完成make && make install过程。 #以下脚本为软件安装完成后做一些配置初始化,您开发其它软件时自行编写您需要的脚本。 \cp contrib/redhat.init ${ModuleInstallPath}/sbin/;
		chmod 755 ${ModuleInstallPath}/sbin/redhat.init;
		sed -i "s#/usr/local#${ModuleInstallPath}#" ${ModuleInstallPath}/sbin/redhat.init;
		sed -i "s#/var/run/pure-ftpd.pid#${ModuleInstallPath}/pure-ftpd.pid#" ${ModuleInstallPath}/sbin/redhat.init;
		sed -i "s#/etc/pure-ftpd.conf#${ModuleInstallPath}/pure-ftpd.conf#" ${ModuleInstallPath}/sbin/redhat.init;
		\cp ${amh_home}/modules/${ModuleName}/pure-ftpd.conf ${ModuleInstallPath};
		chmod 744 ${ModuleInstallPath}/pure-ftpd.conf;
		mkdir ${ModuleInstallPath}/etc/;
		touch ${ModuleInstallPath}/etc/pureftpd.passwd;
		\cp configuration-file/pure-config.pl ${ModuleInstallPath}/sbin/pure-config.pl;
		chmod 755 ${ModuleInstallPath}/sbin/pure-config.pl;
		sed -i "s#/usr/local#${ModuleInstallPath}#" ${ModuleInstallPath}/sbin/pure-config.pl;
		groupadd ftpgroup;
		useradd -d /home/wwwroot/ -s /sbin/nologin -g ftpgroup ftpuser;
		/sbin/iptables-save > /etc/amh-iptables; 
		sed -i '/--dport 21 -j ACCEPT/d' /etc/amh-iptables;
		sed -i '/--dport 10100:10110 -j ACCEPT/d' /etc/amh-iptables;
		/sbin/iptables-restore < /etc/amh-iptables;
		/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT;
		/sbin/iptables -I INPUT -p tcp --dport 10100:10180 -j ACCEPT;
		/sbin/iptables-save > /etc/amh-iptables; #/etc/amh-iptables为amh的防火墙配置文件,如您需要有对防火墙做更改操作,记得保存/etc/amh-iptables echo 'IPTABLES_MODULES="ip_conntrack_ftp"' >>/etc/sysconfig/iptables-config;
		amh_module_status && amh_module_start; #如有安装成功调用start启动事件 cd /tmp/;
		rm -rf /tmp/${ModuleName} /tmp/${ModuleName}.tar.gz;
	fi;
} #boot 为系统启动时执行的函数,这里调用start启动函数,在系统启动时也就会启动软件。
#boot 函数为固定的函数事件,boot不可更换为其它名称。 function amh_module_boot()
{
	amh_module_start;
} #start 软件的启动事件,与install安装事件相似,可查看以上install事件的说明。 function amh_module_start()
{
	if amh_module_status ; then
		${ModuleInstallPath}/sbin/redhat.init start;
	else
		return 1;
	fi;
} #stop 软件的停止事件,与install安装事件相似,可查看以上install事件的说明。 function amh_module_stop()
{
	if amh_module_status ; then
		${ModuleInstallPath}/sbin/redhat.init stop;
	else
		return 1;
	fi;
} #restart 软件的重启事件,与install安装事件相似,可查看以上install事件的说明。 function amh_module_restart()
{
	if amh_module_status ; then
		${ModuleInstallPath}/sbin/redhat.init restart;
	else
		return 1;
	fi;
} #uninstall 软件的卸载事件,与install安装事件相似,可查看以上install事件的说明。 function amh_module_uninstall()
{
	if amh_module_status ; then
		amh_module_stop;
		rm -rf ${ModuleInstallPath} && \
		echo "[OK] ${ModuleName} Uninstall successful." && return 0;
		return 1;
	else
		exit;
	fi;
} #status 为软件的安装状态判断的函数。以上安装、启动等事件都有调用amh_module_status,开发者可自行定义便于统一判断软件当前安装状态,在软件已安装时才响应事件。 function amh_module_status()
{
	if [ -f "${ModuleInstallPath}/bin/pure-pw" ]; then
		echo "[OK] ${ModuleName} is already installed.";
		return 0;
	else
		echo "[Notice] ${ModuleName} is not installed.";
		return 1;
	fi;
} #到这里您已经编写完成软件的核心脚本程序,您基本已经完成80%开发工作量。 2) AMHScript.php 程序文件分析 <?php // 以下编写一AMHScript类,其中包含软件各项事件函数。执行事件与AMHScript核心脚本相应。 class AMHScript
{ // 初始化 软件初始化事件,任何函数执行前都会先调用init事件。(如有需要在AMHScript核心脚本中也可以定义amh_module_init) function amh_module_init()
	{ // 这里判断如是在执行安装事件时,设置软件安装进度为0.01、安装状态为未安装。 if ($this -> action == 'install')
			$this -> modules -> update_module($this -> name,  array('module_install_process' => '0.01', 'module_status' => '0'));
	} // 安装 软件安装事件,软件安装完成后会执行。 function amh_module_install()
	{ // 软件安装完成后实时更新面板软件状态与刷新系统进程。 global $result_status;
		$this -> modules -> update_module($this -> name,  array('module_install_process' => '-1'));
		$this -> modules -> update_module($this -> name,  array('module_status' => $result_status ? '1' : '0'));
		echo "<script>amh_ajax_list.push('/index.php?c=module&a=up_process_list');</script>";
	} // 卸载 软件卸载事件,软件卸载完成后会执行。 function amh_module_uninstall()
	{ // 软件卸载完成后实时更新面板软件状态与刷新系统进程。 global $result_status;
		$this -> modules -> update_module($this -> name,  array('module_status' => $result_status ? '0' : '1'));
		echo "<script>amh_ajax_list.push('/index.php?c=module&a=up_process_list');</script>";
	} // 删除 软件删除事件,软件删除完成后会执行。 function amh_module_delete()
	{ // 软件删除成功后实时删除面板中软件记录。 global $result_status;
		if ($result_status)
			$this -> modules -> delete_module($this -> name);
	} // 重启 软件重启事件,软件重启完成后会执行。 function amh_module_restart()
	{ // 这里只刷新系统进程 echo "<script>amh_ajax_list.push('/index.php?c=module&a=up_process_list');</script>";
	} // 启动 软件启动事件,软件启动完成后会执行。 function amh_module_start()
	{ // 这里只刷新系统进程 echo "<script>amh_ajax_list.push('/index.php?c=module&a=up_process_list');</script>";
	} // 停止 软件停止事件,软件停止完成后会执行。 function amh_module_stop()
	{ // 这里只刷新系统进程 echo "<script>amh_ajax_list.push('/index.php?c=module&a=up_process_list');</script>";
	}
}
?> 3) pure-ftpd.conf 配置文件说明 pure-ftpd.conf 为软件的配置文件,以您开发的软件实际需要情况创建。 4) logo.gif 文件说明 软件的图标文件,开发者自行创建设计。 5) install_process.log 日志文件说明 install_process.log为软件的安装进度文件,缺失install_process.log文件面板即不会显示软件安装进度。
安装时间较长的软件,建议创建install_process.log文件,便于用户实时查看软件当前安装进度情况。
软件程序编写完成后,执行安装命令,创建install_process.log日志文件在当前目录:
amh 软件名称 install >./install_process.log
再执行amh命令进行调整即可完成:
amh amh-版本 admin opt_install_process install_process.log AMH7软件开发完成 到此您已经完成AMH软件的开发。在测试软件各项功能正确后请您前往开发平台发布您的软件。
以上FTP软件开发完整源码您也可以下载直接查看:pure-ftpd-1.0.36 更多软件实例您也可以参考AMH官方已发布上架的软件。

 

声明:
1.本站主要是为了记录工作学习中遇到的问题,可能由于本人技术有限,内容难免有纰漏,一切内容仅供参考。
2.本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!
3.本站所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。

------------------------------------------------------------------------------------------------


出处:网际迅联
网址1:https://www.wjxlkj.com

网址2:http://www.wjxlkj.cn


联系方式:

手机号码:13910758317

微信:13910758317

客服QQ:58053012


或下图二维码微信扫码或长按识别添加微信




上一篇:AMH 面板安装
下一篇:没有了
本栏最新


  TCP/IP备案号:京ICP备15035957号-3