首页开发教程亚马逊VPS部署LAMP Web应用程序教程

亚马逊VPS部署LAMP Web应用程序教程

2024-11-25 55

Amazon Lightsail是AWS提供的一个简化版云计算平台,又称为虚拟专用服务器(VPS),旨在帮助开发人员和小型企业轻松创建和管理虚拟服务器。使用Lightsail可以快速部署Web应用程序,同时享受与AWS更高级服务相同的可靠性和可扩展性。本教程将详细介绍如何在Amazon Lightsail上部署一个LAMP(Linux、Apache、MySQL 和 PHP)Web应用程序。

新用户注册即可免费使用亚马逊VPS(Amazon Lightsail)三个月,还能获得一年期50GB的内容分发网络(CDN)服务、一年期5GB的对象存储捆绑包,以及三个月的精选容器、实例和数据库捆绑包‌。

亚马逊VPS 3个月免费领取地址:https://www.amazon.com/

亚马逊VPS领取教程:

一、在亚马逊VPS上创建LAMP Web应用程序

本模块将指导如何使用AWS CLI来配置LAMP堆栈。通过此过程,将通过预配置的LAMP蓝图在亚马逊VPS上创建一个实例,并在创建过程中从GitHub仓库安装一个PHP应用程序。

1、创建Lightsail实例

使用AWS CLI命令来创建亚马逊VPS实例。下面是创建实例的命令:

aws lightsail create-instances \
--instance-names <name_of_your_instance> \
--availability-zone <availability_zone> \
--blueprint-id <blueprint_id> \
--bundle-id <bundle_id> \
--key-pair-name <key_pair_name> \
--user-data <user-data>

此命令中的参数说明:

  • 实例名称:指定希望创建的实例名称;
  • 可用区:选择希望部署实例的可用区;
  • 蓝图 ID:选择要使用的 Lightsail 蓝图 ID;
  • 捆绑包 ID:指定实例的计算资源配置,包括内存、计算能力和存储;
  • SSH 密钥对:用于连接到实例的 SSH 密钥对;
  • 用户数据:包含实例启动时要执行的自动配置任务的脚本。

注意:捆绑包代表一组资源,决定了实例的计算能力、内存和存储容量;蓝图则是配置了操作系统和常用软件应用的虚拟机映像。

2、定义用户数据

如上所示,创建亚马逊VPS实例时,可以提供用户数据,以便在实例启动时执行自动配置任务。例如,可以通过用户数据部署 LAMP 堆栈。以下脚本示例将执行以下操作:

  • 删除默认网站;
  • 从 GitHub 克隆示例 PHP 应用程序并替换现有网站;
  • 设置必要的文件权限;
  • 将自动生成的数据库密码注入到应用程序配置文件中;
  • 执行 “init.sql” 脚本以创建数据库并填充初始数据。
# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs rm -rf *
# clone github repo
#------------------
/usr/bin/git clone -b loft https://github.com/mikegcoleman/todo-php.git .
# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php
# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php
# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)

3、创建SSH密钥对

为了连接到实例,需要一个 SSH 密钥对。可以通过 AWS CLI 创建密钥对。以下命令会生成一个名为 “LightsailGuide” 的密钥对,并将公钥和私钥分别保存为 “lightsailguide.pub” 和 “lightsailguide”。

aws lightsail create-key-pair --key-pair-name LightsailGuide > ssh_key_response.json
cat ssh_key_response.json | jq -r '.publicKeyBase64' > lightsailguide.pub
cat ssh_key_response.json | jq -r '.privateKeyBase64' > lightsailguide
chmod 400 lightsailguide.pub lightsailguide

提示:可能需要安装 “jq” 工具,这是一个处理 数据的命令行工具。

4、创建Lightsail实例

一切准备就绪后,可以使用 AWS CLI 创建亚马逊VPS实例。在本例中,我们将使用爱尔兰(”eu-west-1″)区域,并选择 “lamp_7” 作为蓝图 ID。可以运行以下命令查看可用的蓝图列表:

aws lightsail get-blueprints

在创建亚马逊VPS实例时,需要指定一个实例捆绑包。在本示例中,我们将使用 “micro_2_0” 捆绑包。可以运行以下命令查看所有可用捆绑包的列表:

aws lightsail get-bundles

要通过用户数据脚本和创建的 SSH 密钥来创建 亚马逊VPS 实例,请运行以下命令:

# Create the Lightsail instance:
aws lightsail create-instances \
--instance-names "LightsailLampExample" \
--availability-zone eu-west-1a \
--blueprint-id lamp_7 \
--bundle-id micro_2_0 \
--key-pair-name LightsailGuide \
--user-data '# remove default website
#-----------------------
cd /opt/bitnami/apache2/htdocs rm -rf *
# clone github repo
#------------------
/usr/bin/git clone -b loft https://github.com/mikegcoleman/todo-php.git .
# set write permissons on the settings file
#-----------------------------------
chown bitnami:daemon ./*
chmod 666 connectvalues.php
# inject database password into configuration file
#-------------------------------------------------
sed -i.bak "s/<password>/$(cat /home/bitnami/bitnami_application_password)/;" /opt/bitnami/apache2/htdocs/connectvalues.php
# create database
#----------------
cat /home/bitnami/htdocs/data/init.sql | /opt/bitnami/mariadb/bin/mysql -u root -p$(cat /home/bitnami/bitnami_application_password)'

该命令会返回创建的实例的详细信息,如下所示:

{
"operations": [
{
"id": "a49e1398-fb81-455a-8a50-3159c9bd9966",
"resourceName": "LightsailLampExample",
"resourceType": "Instance",
"createdAt": "2021-09-21T16:38:40.566000+02:00",
"location": {
"availabilityZone": "eu-west-1a",
"regionName": "eu-west-1"
},
"isTerminal": false,
"operationType": "CreateInstance",
"status": "Started",
"statusChangedAt": "2021-09-21T16:38:40.566000+02:00"
}
]
}

实例创建需要几分钟的时间。可以使用以下命令来检查实例的状态:

aws lightsail get-instance-state --instance-name LightsailLampExample

如果输出如下,表示实例正在运行,但用户数据脚本可能仍在执行中:

{
"state": {
"code": 16,
"name": "running"
}
}

要测试应用程序,需要获取实例的公共 IP 地址。可以运行以下命令来获取:

aws lightsail get-instance --instance-name LightsailLampExample | jq -r .instance.publicIpAddress

复制输出的 IP 地址并将其粘贴到浏览器中,将看到正在运行的应用程序。

亚马逊VPS部署LAMP Web应用程序教程

二、清理资源

如果只是按本指南操作并体验亚马逊VPS,而不是部署生产环境中的服务,请务必删除所有创建的云资源。这将有助于避免 AWS 账户产生不必要的费用。

1、删除云基础设施

使用亚马逊VPS删除实例非常简单。只需输入以下命令即可:

aws lightsail delete-instance --instance-name LightsailLampExample

2、验证资源已删除

可以通过以下命令验证是否删除了所有资源:

aws lightsail get-instances 
# the command should output the following
{
"instances": []
}

通过本教程,已经成功部署了一个LAMP Web应用程序到亚马逊VPS。

  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章