广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >AWS上部署应用程序
  • 321
分享到

AWS上部署应用程序

aws服务器 2023-09-03 21:09:00 321人浏览 薄情痞子
摘要

AWS上部署应用程序 不论想用自主开发的、开源项目的,还是商业厂商的软件,都需要安装、更新和配置应用程序及其依赖的组件。这一过程称为部署。 文章目录 AWS上部署应用程序前言一、在服务器启动时

AWS上部署应用程序

不论想用自主开发的、开源项目的,还是商业厂商的软件,都需要安装、更新和配置应用程序及其依赖的组件。这一过程称为部署。

文章目录


前言

服务器上部署一个典型的网站应用必需的步骤有哪些呢?下面以一个广泛使用的博客平台WordPress为例加以说明。
(1)安装Apache Http服务器、Mysql数据库PHP运行环境、供php调用的mysql访问库和一个SMTP邮件服务器。
(2)下载WordPress应用,然后在服务器上解压缩。
(3)配置Apache网站服务器使之能运行PHP应用。
(4)配置PHP运行环境来调整性能并提高安全性。
(5)编辑wp-config.php文件来配置WordPress应用。
(6)编辑SMTP服务器的配置,确保只有虚拟服务器能发送邮件,以免被垃圾邮件发送者滥用。
(7)启动Mysql、SMTP和HTTP服务。

一、在服务器启动时运行脚本

在服务器启动的时候运行一个脚本是简单、有用并且灵活地进行自动化部署的方法。要把仅有操作系统的服务器完全安装并且配置好,需要遵循下列3个步骤。
(1)启动一台仅有操作系统的虚拟服务器。
(2)在引导程序完成后执行一个脚本。
(3)使用脚本安装并配置应用程序。
首先用户需要选择自己的虚拟服务器所使用的AMI。AMI为用户的虚拟服务器捆绑了操作系统以及预先安装好的软件。当用户从一个仅包含了操作系统,没有安装任何额外软件的AMI启动自己的虚拟服务器时,需要在引导程序结束时对虚拟服务器进行准备工作。把必要的安装和配置应用程序的步骤写成脚本能自动化这一任务。

二、在服务器启动时使用用户数据来运行脚本

在每一台虚拟服务器上用户可以插入一小段,不超过16 KB,被称作用户数据的数据。用户可以在创建一台新的虚拟服务器时指定用户数据。大多数AMI,如Amazon linux Image和ubuntu AMI都包含了这一典型的运行用户数据的功能。无论何时当用户基于这些AMI启动一台虚拟服务器时,用户数据在引导进程结束时被作为shell脚本被执行。执行的时候利用root用户的权限。
在虚拟服务器上,用户数据可以通过向一个特定URL进行HTTP Get请求来获得。这个URL是http://169.254.169.254/latest/user-data,只能从这台虚拟服务器自己访问到。正如下面的例子中读者将看到的,我们能够通过作为脚本被执行的用户数据的帮助部署任何类型的应用程序。

1.部署OpenSwan作为VPN服务器

打开命令行,然后一步步执行命令来启动一台虚拟服务器,并且在上面部署一个VPN服务器。我们已经准备好了一个CloudFORMation模板来启动虚拟服务器以及它的依赖项

代码如下(示例):

 VpcId=$(aws ec2 describe-vpcs --query Vpcs[0].VpcId --output text)--获取默认VPC$ SubnetId=$(aws ec2 describe-subnets --filters Name=vpc-id,Values=$VpcId \     ←--获取默认子网--query Subnets[0].SubnetId --output text)$ SharedSecret=$(openssl rand -base64 30)--创建一个随机密码(如果openssl不工作,创建你自己的随机序列)Name=vpc-id,Values=$VpcId \     ←--获取默认子网--query Subnets[0].SubnetId --output text)$ SharedSecret=$(openssl rand -base64 30)--创建一个随机密码(如果openssl不工作,创建你自己的随机序列)$ Password=$(openssl rand -base64 30)--创建一个随机共享密钥(如果openssl 不工作,创建你自己的随机序列)$ aws cloudformation create-stack --stack-name vpn --template-url \     ←--创建一个CloudFormation 堆栈https://s3.amazonaws.com/awsinaction/chapter5/vpn-cloudformation.JSON \--parameters ParameterKey=KeyName,ParameterValue=mykey \ParameterKey=VPC,ParameterValue=$VpcId \ParameterKey=Subnet,ParameterValue=$SubnetId \ParameterKey=IPSecSharedSecret,ParameterValue=$SharedSecret \ParameterKey=VPNUser,ParameterValue=vpn \ParameterKey=VPNPassword,ParameterValue=$Password$ aws cloudformation describe-stacks --stack-name vpn \--query Stacks[0].Outputs     ←--如果状态不是COMPLETE,请在1 min 后重试

最后一行命令的输出应该会列出公有VPN服务器的公有IP地址、共享密钥、VPN用户名和VPN密码。用户可以使用这一信息来从自己的计算机中建立VPN连接:

...][ {  "Description": "Public IP address of the vpn server",  "OutpuTKEy": "ServerIP",  "OutputValue": "52.4.68.225" }, {  "Description": "The shared key for the VPN connection (IPSec)",  "OutputKey": "IPSecSharedSecret",  "OutputValue": "sqmvJll/13bD6YqpmsKkPSMs9RrPL8itpr7m5V8g" }, {  "Description": "The username for the vpn connection",  "OutputKey": "VPNUser",  "OutputValue": "vpn" }, {  "Description": "The password for the vpn connection",  "OutputKey": "VPNPassword",  "OutputValue": "aZQVFufFlUjJkesUfDmMj6DcHrWjuKShyFB/d0lE" }]

使用自定义用户数据启动一台虚拟服务器,并使用AWS CloudFormation为这台虚拟服务器配置防火墙。
在引导程序结束时执行一个shell脚本,通过程序包管理器来安装应用程序及其依赖项,并且编辑配置文件。

2.启动虚拟服务器并使用用户数据

可以使用CloudFormation来启动一台虚拟服务器并且配置一个防火墙。VPN服务器模板包括一个装入用户数据的shell脚本

 "AWSTemplateFormatVersion": "2010-09-09", "Description": "Starts an virtual server (EC2) with OpenSwan [...]", "Parameters": {--参数,使模板复用成为可能  "KeyName": {   "Description": "key for ssh access",   "Type": "AWS::EC2::KeyPair::KeyName"  },  "VPC": {  "Description": "Just select the one and only default VPC.",  "Type": "AWS::EC2::VPC::Id" }, "Subnet": {  "Description": "Just select one of the available subnets.",  "Type": "AWS::EC2::Subnet::Id" }, "IPSecSharedSecret": {  "Description": "The shared secret key for IPSec.",  "Type": "String" }, "VPNUser": {  "Description": "The VPN user.",  "Type": "String" }, "VPNPassword": {  "Description": "The VPN password.",  "Type": "String" }},"Resources": {--描述虚拟服务器  "EC2Instance": {   "Type": "AWS::EC2::Instance",   "Properties": {    "InstanceType": "t2.micro",    "SecurityGroupIds": [{"Ref": "InstanceSecurityGroup"}],

用户数据包含一个用来获取并执行真正的脚本的小脚本vpn-setup.sh,真正的脚本包含所有的安装可执行程序以及配置服务的命令。这样做可以避免以可读性较差的格式插入jsON CloudFormation模板所需的脚本。

总结

使用EC2用户数据与一个shell脚本在一台虚拟服务器上部署一个VPN服务器。在终止虚拟服务器之后,我们将准备学习如何部署一个普通网站应用,而不需要自定义脚本。

来源地址:https://blog.csdn.net/leva345/article/details/128094635

--结束END--

本文标题: AWS上部署应用程序

本文链接: https://www.lsjlt.com/news/392823.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AWS上部署应用程序
    AWS上部署应用程序 不论想用自主开发的、开源项目的,还是商业厂商的软件,都需要安装、更新和配置应用程序及其依赖的组件。这一过程称为部署。 文章目录 AWS上部署应用程序前言一、在服务器启动时...
    99+
    2023-09-03
    aws 服务器
  • 如何使用Terraform在AWS上部署Jenkins
    这篇文章主要介绍“如何使用Terraform在AWS上部署Jenkins”,在日常操作中,相信很多人在如何使用Terraform在AWS上部署Jenkins问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-19
  • 在Gitlab上怎么部署Golang应用程序
    这篇文章主要介绍“在Gitlab上怎么部署Golang应用程序”,在日常操作中,相信很多人在在Gitlab上怎么部署Golang应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在Gitlab上怎么部署G...
    99+
    2023-07-06
  • Linux上使用Docker部署ASP.NET Core应用程序
    一、创建 1、创建应用程序 使用ASP.NET Core创建一个MVC应用程序,并修改Home控制器Index视图代码: @{ ViewData["Title"] = "Ho...
    99+
    2022-11-13
  • 在阿里云ecs上部署Java应用程序
    阿里云ecs是阿里云提供的一种弹性计算服务,能够根据用户的需求灵活地调整计算资源,满足用户的高可用性、高性能和低成本的需求。在ecs上部署Java应用程序可以方便地管理和监控应用程序的运行状态,同时也可以提高应用程序的性能和可用性。 随着互...
    99+
    2023-10-30
    阿里 应用程序 ecs
  • 怎么用KOps在AWS上部署和管理Kubernetes
    本篇内容主要讲解“怎么用KOps在AWS上部署和管理Kubernetes”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用KOps在AWS上部署和管理Kubernetes”吧!Kubernet...
    99+
    2023-06-19
  • 如何在Gitlab上部署Golang应用程序(步骤)
    随着Golang的发展,越来越多的开发者开始使用该编程语言来开发应用程序。同时,由于持续集成和持续交付的需求越来越大,Gitlab作为一个优秀的代码托管平台得到了广泛的应用。本文将介绍如何在Gitlab上部署Golang应用程序。一、安装G...
    99+
    2023-05-14
  • 如何在服务器上部署Node.js应用程序
    这篇文章主要介绍“如何在服务器上部署Node.js应用程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何在服务器上部署Node.js应用程序”文章能帮助大家解决问题。步骤1:选择服务器首先,您需...
    99+
    2023-07-05
  • Linux上如何使用Docker部署ASP.NET Core应用程序
    这篇文章将为大家详细讲解有关Linux上如何使用Docker部署ASP.NET Core应用程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、创建1、创建应用程序使用ASP.NET Core...
    99+
    2023-06-29
  • 如何在 Apache 服务器上部署 Django 应用程序?
    Django 是一个流行的 Python Web 框架,它可以让您快速开发 Web 应用程序。在本文中,我们将讨论如何在 Apache 服务器上部署 Django 应用程序。 步骤 1:安装 Apache 和 mod_wsgi 要在 Ap...
    99+
    2023-08-09
    并发 apache django
  • 如何在Linux操作系统上部署Golang应用程序
    在今天的软件开发中,使用Linux作为操作系统的比例越来越高,而Golang语言则因为其高效、简洁和并发性能等特点,也被越来越多的开发者所青睐。在这篇文章中,我们将介绍如何在Linux操作系统上部署Golang应用程序。安装Golang环境...
    99+
    2023-05-14
  • 在Linux操作系统上怎么部署Golang应用程序
    今天小编给大家分享一下在Linux操作系统上怎么部署Golang应用程序的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装G...
    99+
    2023-07-06
  • Cloud Toolkit如何部署应用程序
    本篇文章给大家分享的是有关Cloud Toolkit如何部署应用程序,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.什么是Cloud ToolkitCloud Toolkit...
    99+
    2023-06-19
  • 云服务器上部署python程序
    配置环境 云服务器通常需要进行配置才能使用,以保证其能够正常运行。用户需要选择合适的服务器和网络配置,例如服务器CPU、内存、存储等参数,并配置好云服务器的安全性、性能和负载均衡策略等。云服务器的配置文件通常会存储在云服务器的根目录中...
    99+
    2023-10-28
    器上 程序 python
  • .NET5部署程序在Docker上运行
    本篇内容介绍了“.NET5部署程序在Docker上运行”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、创...
    99+
    2022-10-19
  • Apache和Spring:如何在服务器上部署PHP应用程序?
    在Web开发中,PHP是一种非常流行的编程语言,它可以帮助开发者构建高效、可靠的Web应用程序。但是,在将PHP应用程序部署到服务器上之前,您需要了解如何将其与Apache和Spring框架结合使用。本文将介绍如何在服务器上部署PHP应用...
    99+
    2023-10-11
    apache spring git
  • 如何平滑部署Golang应用程序
    随着互联网技术的迅速发展,各种开发语言也层出不穷,其中最近流行的一种语言就是Golang。Golang是一种由Google公司开发的高效的编程语言,可以让开发者轻松地编写出高性能的应用程序。但是,当我们需要部署这些应用程序时,我们往往会遇到...
    99+
    2023-05-14
  • Linux中如何部署Golang应用程序
    这篇文章主要介绍“Linux中如何部署Golang应用程序”,在日常操作中,相信很多人在Linux中如何部署Golang应用程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2023-09-15
    linux golang
  • Java Web Start如何部署应用程序
    这篇文章将为大家详细讲解有关Java Web Start如何部署应用程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java web Start 是部署基于 JavaTM 技术的应用程序的一种新技术。它...
    99+
    2023-06-03
  • 怎么用Golang和Docker部署应用程序
    本文小编为大家详细介绍“怎么用Golang和Docker部署应用程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Golang和Docker部署应用程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。第一步...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作