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.amazonaws.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,而不是部署生产环境中的服务,请务必删除所有创建的云资源。这将有助于避免 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