AMH 使用与开发

AMH使用帮助与软件开发文档
AMH 国内领先的云主机面板
  • AMH 使用帮助入门
  • AMH 软件开发文档 高级

 

AMH安装说明

AMH支持极速与定制编译两种方式安装。

极速安装版本:AMH官网对相应的系统编译集成的版本,用户可免除编译快速完成AMH安装。

定制编译版本:用户可自由定制选择相应服务器软件组件版本进行编译安装,安装时间相对需要多些,适合对默认组件版本有要求的用户。

详细安装教程请查看:https://amh.sh/install.htm

安装AMH时,如有遇到无法解析amh.sh域名问题,可看安装页面的小提示更换系统的DNS,

国内个别服务器[CN]内网镜像不通的情况可以选择[JP]节点安装使用。

 

AMH使用帮助

AMH所有软件用户都可按需下载安装,在面板上方的导航可对软件进行安装管理等操作。

点击导航菜单的软件小图标或面板导航可进入相应分类的软件列表,

在软件列表可查看各个软件介绍说明、运行状况及CPU、内存使用情况,卸载、删除软件操作同样在列表完成。

 

AMH软件类型分为:桌面、服务器软件、环境软件、应用软件类别。

桌面:是AMH面板首页面,可以直观查看服务器各项资源使用情况,包括统计报表等。

服务器软件:包括web服务器软件nginx/apache,数据库软件、脚本语言软件等,用户可按需安装多套服务器软件运行。

环境软件:可使用不同服务器软件组建成特定运行环境的软件,常用有LNMP环境,即由服务器软件Nginx+MySQL+PHP组合。另外还有LAMP、LNGX、LNMH等。

应用软件:应用软件通常是用于环境软件的扩充,扩展环境部件、增加对系统管理等功能。

总体为,服务器软件为环境软件提供基础层服务,同时应用软件又可扩展环境软件加强对系统管理。

 

常用软件安装

桌面程序可全部安装,服务器软件可按需安装,需要nginx即使用nginx、需要apache即安装apache。

使用nginx用户环境软件即安装lnmp,apache用户即使用lamp,需要部署cdn缓存加速节点用户可以使用lngx等,

一般建站推荐使用lnmp环境软件。

数据库管理方面可以使用madmin与phpmyadmin,

另外,需要使用FTP的用户可以安装pure-ftp与amftp。

应用软件方面需要伪静态管理可以安装amrewrite,需要ssl证书管理可安装amssl,数据备份可使用amdata、邮局组建可以使用amsmtp等等,

其余需要使用的php扩展同样在软件商店搜索下载安装。

 

用户提供教程推荐

https://amh.sh/bbs/post-3848-1-1.htm

https://amh.sh/bbs/post-4892-1-1.htm

https://amh.sh/bbs/post-4072-1-1.htm

 

AMH5软件开发介绍

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

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

 

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

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

 

AMH5开发使用语言

AMH5用户可以使用单一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控制程序)

 

AMH5开发环境介绍

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 (页面视图模板)

 

AMH5软件开发实例 (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


AMH5软件开发完成
到此您已经完成AMH软件的开发。在测试软件各项功能正确后请您前往开发平台发布您的软件。
以上FTP软件开发完整源码您也可以下载直接查看:pure-ftpd-1.0.36
更多软件实例您也可以参考AMH官方已发布上架的软件。
用户服务中心