在阿里云国际上构建共享虚拟主机业务

我们需要3个ECS实例,1个RDS MySQL实例和2个域名。我将使用该域作为我的主域和辅助域。sarathy.info``sarathy.site

以下架构图左侧所示的两个 ECS 实例将托管我们的主网站。一个ECS实例用于部署WHMCS,另一个实例用于部署WordPress。WordPress 和 WHMCS 都需要 MySQL。因此,我们还将部署一个云数据库RDS版实例。

下图右侧所示的 ECS 实例将用于托管我们客户的站点。我们将使用一种非常流行的软件来自动化一切,称为WHM(虚拟主机管理器)。

注意,阿里云国际通过corebyt注册并充值,首充送50%,具体查看:https://corebyte.com/activity

架构图

先决条件

  • 两个在 Ubuntu 18.04 上运行的 ECS 实例和一个在 CentOS 7 上运行的 ECS 实例,至少具有 20 GB 磁盘空间和 1 GB RAM
  • 运行最新版MySQL的RDS实例,具有两个数据库和两个用户账号
  • 两个域名

步骤 1:配置 DNS

主域的 DNS 配置

|----------|--------|-----------------------|
| 记录类型 | 主机 | 价值 |
| 一个 | @ | ECS实例的IP(运行WordPress) |
| 一个 | 万维网 | ECS实例的IP(运行WordPress) |
| 一个 | 门户 | ECS 实例的 IP(运行 WHMCS) |

辅助域的 DNS 配置

|----------|--------|--------------------|
| 记录类型 | 主机 | 价值 |
| NS系列 | NS1型 | ECS 实例的 IP(运行 WHM) |
| NS系列 | NS2型 | ECS 实例的 IP(运行 WHM) |

第 2 步:WHMCS 服务器设置

首先,您需要从他们的官方网站下载 WHMCS

接下来,我们必须通过**SCP(**安全复制)协议将下载的文件复制到我们的服务器

复制代码
`scp -i path-to-ssh-key.pem path-to-whmccs.zip root@instance-ip:/root `

现在,WHMCS 安装文件将被复制到我们服务器的 root 用户的主目录 (/root) 中。

让我们登录我们的 ECS 实例来安装 WHMCS

复制代码
`ssh -i path-to-ssh-key.pem root@ecs-instance-ip`

您将登录ECS实例,如下所示

验证我们是否已成功将 WHMCS 安装文件传输到我们的 ECS 实例中。

复制代码
`ls /root`

如果您获得以下输出,您就可以开始了!

更新系统

复制代码
`apt update`

升级系统

复制代码
`apt full-upgrade -y`

删除不必要的软件包

复制代码
`apt auoremove -y`

安装所需的组件

复制代码
`apt install unzip sendmail software-properties-common wget -y`

安装 Apache Web 服务器

复制代码
`apt install apache2 -y`

通过在 Web 浏览器中访问 ECS 实例的 IP 地址来验证 Apache 服务器的安装

在启动期间启动 Apache

复制代码
`systemctl enable apache2`

安装 PHP

复制代码
`apt install php-fpm -y`

安装 WHMCS 所需的 PHP 扩展

复制代码
`apt install php-curl php-gd php-json php-mbstring php-imap php-iconv php-dev php-mysql -y`

安装 Ioncube 加载器

复制代码
`cd /root
Wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar -xf ioncube*
cp ioncube/ioncube_loader_lin_7.2.so /use/lib/php/20170718/`

创建自定义 PHP 配置文件

复制代码
`nano /etc/php/7.2/apache2/conf.d/10-custom.ini`

粘贴以下行

复制代码
`zend_extension="/usr/lib/php/20170718/ioncube_loader_lin_7.2.so"
max_execution_time = 60
max_input_time =60
memory_limit = 512M
max_input_vars = 6000
upload_max_filesize = 512M
post_max_size = 512M`

重新启动 PHP 和 Apache Web 服务器

复制代码
`systemctl restart php7.2-fpm
systemctl restart apache2`

删除默认网页

复制代码
`rm -rf /var/www/htm/index.html`

修改 Apache 的配置文件

复制代码
`vim /etc/apache2/sites-available/000-default.conf`

添加以下行

复制代码
`ServerName your-primary-domain.tld`

重新启动 Apache Web 服务器

复制代码
`systemctl restart apache2`

解压缩WHMCS安装包

复制代码
`cd /root
unzip whmcs_v771_full.zip`

将安装文件移动到 Web 服务器的根目录

复制代码
`mv whmcs/* /var/www/html`

创建新的 WHMCS 配置文件

复制代码
`cd /var/www/html
mv configuration.php.new configuration.php`

更改 Web 服务器根目录的所有权

复制代码
`chown -R www-data:www-data /var/www/html`

步骤 3:为 WHMCS 部署 HTTPS

HTTPS协议在我们的服务器和客户端之间提供安全的加密连接。我们将从 Let's Encrypt 证书颁发机构安装一个 SSL 证书。我们将使用一个名为 certbot 的程序来自动化颁发 SSL 证书的过程

添加 certbot PPA

复制代码
`apt-add-repository ppa:certbot/certbot`

更新程序包

复制代码
`apt update`

安装适用于 Apache Web 服务器的 certbot

复制代码
`apt install python-certbot-apache -y`

颁发SSL证书

复制代码
`certbot --apache -d portal.your-primary-domaindomain.tld`

输入您的电子邮件,然后输入 A 同意条款和条件。

颁发证书后,certbot 将显示两个选项。选择 Redirect all requests to secure HTTPS access (重定向所有请求以保护 HTTPS 访问)

选择上述选项后,HTTPS 将成功部署。

Let's Encrypt CA 提供的证书有效期仅为 90 天。

因此,您必须每 3 个月登录一次服务器并输入以下命令来续订证书

复制代码
`certbot renew`

第 4 步:安装 WHMCS

到目前为止,我们已经完成了安装 WHMCS 的所有必要步骤。现在是时候开始安装过程了

从网络浏览器转到 https://portal.your-rimarydomain.tld/install/install.php

阅读条款和条件后,单击**"同意**"

WHMCS将检查所有基本要求。如果满足要求,则可以继续安装。否则,WHMCS 会让您知道缺少的要求

单击**"开始安装"**

您将被要求输入您的许可证密钥和数据库详细信息。您可以从WHMCS仪表板获取许可证密钥。有关数据库详细信息,请输入您的 RDS 实例详细信息。输入详细信息后,单击**"继续"**

安装几乎完成。我们只需要添加一个 cronjob 并删除安装文件夹

登录ECS实例并执行以下命令

复制代码
`crontab -e`

添加以下行

复制代码
`*/5 * * * * /usr/bin/php -q /var/www/html/crons/cron.php`

删除安装目录

复制代码
`rm -rf /var/www/html/install`

转到 https://portal.your-primary-domain.tld/admin 登录 WHMCS

第 5 步:安装 WordPress

通过SSH登录Ubuntu 18.04操作系统的ECS实例

复制代码
`ssh -i path-to-public-key.pem root@ecs-instance-ip`

安装 EasyEngine

复制代码
`wget -qO ee rt.cx/ee4 && bash ee`

安装完成后,你将获得类似于下图的安装摘要

让我们部署我们的 WordPress 网站

复制代码
`ee site create YOUR-PRIMARY-DOMAIN.TLD \
--cache \
--type=wp \
--admin-user=YOUR-WORDPRESS-USERNAME \
--admin-pass=YOUR-WORDPRESS_PASSWORD \
--admin-email=YOUR WORDPRESS EMAIL \
--dbname=YOUR DB NAME \
--dbuser=YOUR DB USERNAME \
--dbhost=YOUR RDS INSTANCE HOSTNAME \
--ssl=le`

部署站点后,你将获得类似于下图的已部署网站的摘要

现在转到 https://your-primary-domain.tld/wp-admin

第 6 步:安装 WHM

通过SSH方式登录CentOS 7操作系统的弹性云服务器

复制代码
`ssh -i path-to-public-key.pem root@ecs-instance-ip`

更新系统

复制代码
`yum update`

设置完全限定的 Damion 名称 (FQDN)

复制代码
`echo "server.your-primary-domain.tld" > /etc/hostname
hostname -F /etc/hostname`

禁用防火墙

复制代码
`iptables.save > ~/firewall.rules
systemctl stop firewalld.service
systemctl disable firewalld.service`

禁用网络管理器

复制代码
`systemctl stop NetworkManager.service
systemctl disable NetworkManager.service`

下载并安装 WHM

复制代码
`cd /home
curl -o latest -L https://securedownloads.cpanel.net/latest
sh latest`

安装最多需要 45 分钟才能完成。安装结束后,使用以下命令获取 WHM 登录 URL。

复制代码
`Whmlogin`

转到显示的登录 URL 并完成安装

第 6 步:集成 WordPress 和 WHMCS

登录WordPress

转到插件>>添加新的 插件

搜索 WHMCS Bridge

找到后单击立即安装

单击"激活"按钮以激活插件

转到 WHMCS Bridge >>设置

输入您的 WHMCS URL

单击**"检查我的安装**"

如果集成成功,将显示一条成功消息,如下所示

就是这样!

第 7 步:集成 WHM 和 WHMCS

登录WHMCS

转到**"设置** ">>产品/服务 >>服务器

单击**"添加新服务器**"

输入服务器名称、IP 地址、网络主机名等

然后,登录 WHM

转到开发 >>管理 API 令牌

单击 Generate Token

检查以下权限并单击保存

复制生成的 API 令牌

返回 WHMCS。填写以下详细信息

  • 服务器类型:CPanel
  • 用户名:root
  • 密码:您的WHM密码
  • API 令牌:粘贴从 WHM 复制的令牌

单击保存更改

现在我们已经成功地集成了WHMCS和WHM

第 8 步:将 PayPal 与 WHMCS 集成

我们将使用 PayPal 接收客户的付款。

转到 PayPal.Com 并注册企业帐户。如果您已经拥有PayPal个人帐户,则可以选择将其升级到企业帐户,如下所示

创建企业帐户后**,转到** 网站上 >>工具>>企业设置 >>付款设置

单击"通过 PayPal 处理所有付款(包括信用卡和借记卡)"下的**"继续**"按钮

单击**"获取您的 API 凭据**"

选择**"请求 API 签名** ",然后单击**"同意并提交"**

复制 API 用户名、API 密码、API 签名

登录WHMCS

转到 Payment Gateways >> PayPal Express Checkout >>付款>>付款设置

粘贴复制的 API 用户名、API 密码和 API 签名。

然后单击**"保存更改"**

我们现在已经成功地将PayPal与WHMCS集成在一起!

相关推荐
边境悍匪1 小时前
蜗牛学苑 Java 智能体学习 Day39|SpringAI 会话存储、Function‑Call 工具调用、MCP 思维导图复盘
java·开发语言·spring boot·学习·阿里云
yunlaodacom3 小时前
腾讯云国际版代理商:COS标准、低频、归档和深度归档怎么选?存储成本与数据取回区别
数据库·云计算·腾讯云
sbjdhjd4 小时前
从 assert 动态调用报错到临时文件链路:PHP 5.6 与 7.3 授权靶场中的短 payload 复盘 | (17字符绕过)
安全·网络安全·数据挖掘·开源·云计算·php·字符绕过
sbjdhjd4 小时前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
mengge.cloud18 小时前
0909华为云计算类综合服务小白实验教程
linux·运维·服务器·网络·华为云·云计算
山海鲸实战案例分享20 小时前
山海鲸可视化VS DataV:项目交付之后,谁能持续跟上业务变化
阿里云·数字孪生·数据可视化·零代码·datav·山海鲸可视化
QYR-分析20 小时前
蓝海赛道高速扩容!全球小型观察ROV市场格局、细分场景与发展趋势分析
大数据·运维·云计算
weixin_4935036720 小时前
商会小程序附件上传:分片上传 + OSS 直传完整实现(Vue3 + 阿里云 OSS 实战)
阿里云·小程序·云计算
workflower1 天前
人形机器人技术与产业基础
机器人·云计算·软件工程·需求分析·软件需求
论文复现现场1 天前
单卡RTX 3090能训练,切到4卡却OOM:Accelerate多卡训练怎么排查?
人工智能·pytorch·云计算·gpu算力·多卡训练