这段时间对销售虚拟主机有点兴趣,然后仔细研究了一番,在前两天的时候给大家提供了一个较为可行的方案:《WHMCS整合VestaCP实现自动开通销售虚拟主机》。之所以说这个方案是“较为可行”的原因就是有很多小问题都无法解决,所以只能当是练手~
今天LALA再给大家提供另外一个方案,使用EasyPanel来和WHMCS整合达到销售主机的目的。还是老样子是简单介绍一下EasyPaenl。
在介绍EasyPanel之前务必要先介绍一下Kangle,因为EasyPanel是Kangle旗下的产品。简单点说Kangle就是一款由国人开发的WEB服务器软件,它的功能与作用和Apache、Nginx类似,并且Apache支持的功能在Kangle上也是基本都支持的。而EasyPanel其实就是一款单纯的WEB面板程序,和VestaCP一样,只不过是在功能方面有许多差别。EasyPanel这款面板程序可以说是为销售虚拟主机而专门打造的,因为它有一个管理后台和一个独立出来的用户前台,每个用户都可以单独登录自己的账号来管理自己的虚拟主机。
当然在开始之前LALA还是要提醒一下大家:EasyPanel这款面板程序的坑点也是相当的多,但是我个人认为EasyPanel比VestaCP更适合做虚拟主机业务。原因以及坑点后续会更详细说明。
准备工作:
1、准备两台VPS或者独立服务器,系统选择CentOS6X64位。
2、准备两个域名,分别解析到对应的VPS或者独立服务器上。
3、安装WHMCS财务管理系统,有关WHMCS的安装方法可参考:https://lala.im/375.html
在做完上面的准备工作后,现在开始在我们的另一台VPS上安装EasyPanel。
使用Xshell登录你的机器,输入下面的命令开始安装:
yum -y install wget;wget http://download.kangleweb.com/easypanel/ep.sh -O ep.sh;sh ep.sh
安装是全自动的,稍等片刻儿看到类似这样的回显则说明安装已经完成:
打开浏览器,输入你VPS的IP:3312/admin即可访问到管理员面板:
输入默认的管理员账号:admin 密码:kangle登录进去。首先为了安全起见就是要修改掉这个默认的密码,在面板的左下角点击“修改账号信息”即可更改:
现在点击服务器设置,在这里开始设置EasyPanel面板的各项信息:
在上图的页面中,MySQL数据库账号填写:root,密码你们自己自由发挥填写一个复杂点的就行,端口填写:3306,主机填写:localhost。接着在面板通信安全码这里点击“随机”按钮生成一个。
现在看到赠送域名这里,我这里拿CloudXNS做示范,首先登录到CloudXNS中,添加一个泛解析到你安装EasyPanel的VPS上,如图:
回到EasyPanel中,在域名这里就填写你刚才做好泛解析的域名,后面的域名绑定CNAME记录填写你这台VPS的IP。全部都设置好后点击“确认提交”按钮即可。
现在面板应该会自动提示让你初始化服务器,如果没有提示自己手动点击初始化服务器栏目可看到如下图界面:
确保三个勾都是勾上的,然后点击确定即可。现在点击“服务器信息”按钮应该可以看到如下图界面:
确保服务器状态那里的WEB和MYSQL都是打勾状态。那么EasyPanel的面板配置就基本完成了。
LALA这里建议大家给EasyPanel面板默认使用的PHP做一下升级,因为EasyPanel这款面板官方已经很长一段时间没有更新和维护了,默认使用的PHP版本是5.3.3。这个版本在之前有出过一系列的安全漏洞,如果不升级可能会出现安全问题。
这里LALA好人做到底,教一下大家怎么升级EasyPanel面板的默认PHP版本到5.6.30。
回到Xshell中,输入下面的命令添加第三方软件源:
wget http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ivh http://repository.it4i.cz/mirrors/repoforge/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install epel-release
rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm
软件源都安装完毕后输入下面的命令来安装PHP5.6.30:
wget http://download.kangleweb.com/misc/php-5.6.30/php5630-ep.sh -O php5.6.30.sh;sh php5.6.30.sh
如果在编译的过程出现这种错误:
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
则需要你将php5630-ep.sh下载到本地并使用EditPlus打开,在编译参数后面加上:
--disable-fileinfo
如图:
然后将文件名改成php5.6.30接着通过SFTP将这个php5.6.30.sh上传到你的VPS内再安装。
LALA遇到了这个错误,主要造成的原因是机器内存不足导致的。稍等片刻PHP5.6.30就安装完毕了,但不省心的事情又发生了,不知道为什么这个官方的PHP安装脚本在安装完毕后没有额外把ionCube和Zend的扩展装上去,Kangle官方可是说已经集成了的。因为EasyPanel需要用到ionCube,否则会出错。那既然没装,所以我们还要手动给这个新版本的PHP装一下ionCube以及Zend。
首先将ionCube下载到本地,下载地址:
https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
解压压缩包,打开ionCube目录,找到ioncube_loader_lin_5.6.so文件。
通过SFTP打开你VPS上的这个目录:/vhs/kangle/ext/tpl_php5630/
在这个目录内新建一个文件夹,命名为:ioncube。将ioncube_loader_lin_5.6.so文件上传到ioncube文件夹内。
接着下载Zend组件到本地,打开官网下载页面:
http://www.zend.com/en/products/loader/downloads#Linux
选择PHP5.6-64bit如图:
解压压缩包得到ZendGuardLoader.so文件。
还是在/vhs/kangle/ext/tpl_php5630/这个目录下新建一个文件夹命名为:zend。将ZendGuardLoader.so上传到zend文件夹内。
接着返回到/vhs/kangle/ext/tpl_php5630/这个目录下,找到php-templete.ini文件,将其下载到本地,并使用EditPlus打开。
在这个文件的最底部加上如下代码:
[zend] zend_extension = "/vhs/kangle/ext/tpl_php5630/ioncube/ioncube_loader_lin_5.6.so" zend_extension = "/vhs/kangle/ext/tpl_php5630/zend/ZendGuardLoader.so" zend_loader.enable=1
将修改好的php-templete.ini上传覆盖掉原文件即可。
现在进入到/vhs/kangle/ext/tpl_php52/目录中,将config.xml文件下载到本地并使用EditPlus打开,找到文件中如图部分:
将这段代码中的file和PHPRC的路径分别改成:
/vhs/kangle/ext/tpl_php5630/bin/php-cgi
/vhs/kangle/ext/tpl_php5630/php-templete.ini
上传覆盖掉原config.xml文件。接着在Xshell中输入如下命令:
/vhs/kangle/bin/kangle -r
现在打开你的EasyPanel面板,通过浏览器审查HTTP信息应该可以看到已经是使用的PHP5.6.30了:
因为LALA在后面创建虚拟主机的过程中还发现EasyPanel的一个“天坑”就是通过WHMCS接口创建的主机目录是没有写权限的,这就导致了用户拿到空间后根本就无法正常使用。我在Kangle官方论坛上也找到类似很多问题的帖子,但都没有一个有用的答案,经过自己的摸索,发现一个解决办法,直接在Xshell中输入如下命令:
chmod -R 777 /home/ftp/
至此EasyPanel面板的设置就基本完成了。现在来到WHMCS这块儿,将EasyPanel与WHMCS进行整合。
由于EasyPanel的WHMCS接口插件已经太久没更新了,我看到网上都说官方开发的这个接口有各种各样的问题,并且还不支持最新版的WHMCS。故此,我在网上找到了一个由第三方开发的插件,可以解决这类问题!
下载插件,并打开你的WHMCS目录/modules/servers。在这个目录内新建一个文件夹命名为:easypanel
将插件内的文件上传到easypanel目录中去,打开登录你的WHMCS后台,点击系统设置-产品设置-服务器设置:
点击添加服务器,在新页面中名称可以随便填写一个,主机名和IP地址全部都填写你安装EasyPanel的机器IP地址,如图:
往下翻,看到服务器的详细信息这里,类型选择Easypanel,用户名和密码就填写你的EasyPanel的管理账号和密码,访问哈希这里填写EasyPanel中的“面板通信安全码”。如图:
全部设置完毕点击保存更改后,我们可以点击“登录空间管理面板”测试一下:
能够成功登录后,我们点击创建新组,按如图操作即可:
现在点击系统设置-产品设置:
添加一个分组以及新增一个产品,分组添加这里我就不演示了,自由发挥即可,主要是产品添加这块。在详细这里按我如图填写:
注意箭头所指部分一定要正确!接着在接口设置这里按如图填写:
接口名称选择:Easypanel,空间语言类型选择php,数据库类型选择mysql,勾选允许FTP,以及设置你想要给这个虚拟主机设置多大的空间、数据库容量、流量等等。
全部设置完毕后,现在我们就可以去前台尝试购买一个虚拟主机了:
用户点击自己的产品可以看到详细情况,点击主机控制中心即可进入到EasyPanel用户控制面板:
EasyPanel用户控制面板:
在“在线文件”这里用户可以上传自己的文件:
我们上传一个PHP探针测试一下空间的环境是否正常:
至此,整个整合的过程就基本完成了,当然还有一些细节化的设置,比如WHMCS开通主机邮件信息的配置与空间的PHP安全配置等等,我这里稍微说明一下。
因为我们是销售的PHP空间,所以非常有必要对PHP的权限和目录等权限做一些限制,以防止一些安全问题发生,比如:恶意用户往空间内上传PHP木马、PHPDDOS文件等。
我们可以通过EasyPanel的后台面板编辑php.ini功能来防止此类问题的发生。
通过浏览器的搜索功能搜索关键字:disable_functions即可找到php.ini的相关设置项目,在这里将你要禁止的PHP函数添加到等号后面并用半角逗号分开,并将disable_functions前面的分号去掉,如图:
一般情况下,LALA建议禁止的一些函数是:passthru、exec、system、chroot、chgrp、chown、shell_exec、proc_open、proc_get_status、popen、ini_alter、ini_restore、dl、openlog、syslog、readlink、symlink、popepassthru。
点击修改按钮后,接着点击初始化服务器,现在打开我们之前的探针来看下这些函数是否已经被禁用:
还是因为我们销售的是虚拟主机,虚拟主机的面板登录地址以及账号密码以及数据库的密码都是通过邮件发送给用户的,而WHMCS默认的邮件模板中登录地址是错误的,我们需要进行修改,具体修改方法:
在后台系统设置-邮件模板,编辑如图名称的模版:
在里面将面板地址改成我们EasyPanel的即可:
至此,今天的教程就应该到此结束了~
LALA的后话:
这套方案我个人认为是比Vesta好的,但我还是不建议将这套方案用在生产环境,因为有如下几个坑点:
1、虽然我在教程中已经升级了EasyPanel默认的PHP版本为5.6.30,但是实际上通过WHMCS接口开通的EasyPanel的虚拟主机所使用的PHP版本还是5.3.3,并且用户乃至管理员都无法再次更改这个虚拟主机的PHP版本,这是一个Kangle和EasyPanel的BUG。官网也没有修复这个问题。
2、EasyPanel和Kangle已经太长时间没有更新和维护,我不是特别确定是否有安全漏洞或者其他问题。
3、EasyPanel整合WHMCS的接口也不是特别好用,教程中都是使用的第三方更新维护的,官方早就已经没有维护了,不确定未来是否会出一些问题。
最后附上教程中需要用到的所有软件和文件:
链接:http://pan.baidu.com/s/1jI87RRg 密码:x564