关键词:

1.新建aws ec2实例

2.使用putty连接到aws ec2 实例(SSH协议)

3.使用filezilla连接到aws ec2实例(SFTP协议)

4.在aws ec2上部署apache服务器(lamp)

5.配置安全组使aws ec2实例能被外网访问

6.弹性IP(EIP)

  朋友想搭一个境外网站,找我帮忙,希望服务器、域名都在境外。我没有在境外建站的经历,只能先尝试。于是上网搜索了一下境外服务器,大家比较常用的是Digital Ocean和AWS,我索性打开这两家的官网,打算自己比较一下,后来选择AWS,是因为他的官网打开的比Digital Ocean快,就这一点,我义无反顾地选择了AWS。

  简单介绍一下,AWS即Amazon Web Services,是Amazon提供的建站平台,在上面可以购买空间、数据库、云计算等服务,官网地址https://aws.amazon.com/。要使用它的服务首先要注册一个账号,注册的过程中会需要用到信用卡,还会接到一个电话要求输入网站上提供的PIN码用于验证你填的手机号,跟随指引,基本上很简单就能完成。

第一部分 新建EC2例

  注册完成后登录管理控制台,控制台首页可以看到几个选项卡:

  很好理解,第一个就是构建虚拟机,以我的经验,建站的空间就在这里申请。点一下启动虚拟机,进入如下界面

  这是我首次接触EC2这个概念,搜索了一下,它是指Elastic Compute Cloud,即弹性云计算,和国内的云虚拟主机的概念差不多,一个EC2实例就是一个云虚拟主机。接下来的步骤就是为这个实例命个名:

  然后选择操作系统,点击每个操作系统会有简介,可以根据自己的技术方向选择,由于我一个都不熟,于是我打算选Amazon的亲儿子Amazon Linux AMI,这也是经验之谈,既然是Amazon的主机,用Amazon定制的Linux肯定没毛病。

  然后选择实例类型,这是一个很人性化的界面,直接放了一个免费的类型,绝不会利用你看不懂就讹你钱,如果你是土豪并且有点文化可以选择更多选项,像我这种挣扎在温饱线的直接很HAPPY的选了免费型然后下一步

  然后就是创建秘钥,给这个秘钥命个名,然后下载秘钥文件后保存,这个秘钥文件(*.pem)很重要

  下载之后,点击创建实例,就OK了。

  然后返回控制台首页,可以看到最近访问的服务下面有个EC2,直接点击EC2,就进入到EC2控制面板,然后点击正在运行的实例

  可以看到我们刚才创建的实例MyFirstInstance。

第二部分 使用PuTTY连接到实例(使用SSH协议)

  接下来的工作就是要想办法连接上这台主机,方便我们在上面部署网站。右键点击实例,在菜单中选择连接,会显示连接方式

  这上面介绍了两种方式,一种是使用SSH客户端,一种是直接从浏览器连接,选择直接从浏览器连接时会提示使用Chrome是不行的,请使用Firefox或者IE9+,并且还要安装Java。

  java我已经很熟悉了实在懒得重复这个工作,而且仅仅为了连一下虚拟主机在我电脑上装java我觉得不划算(虽然我还是默默安装了个firefox),而且SSH客户端对我而言还是个新事物我比较有好奇心,我毫不犹豫决定选择SSH客户端,并且选择了上面提到的PuTTY客户端。下面介绍下如何用PuTTY客户端连接到EC2实例。

  首先下载安装PuTTY的过程就不说了,和一般软件安装过程一样并且这个超级简单。然后我们要做一些准备工作,在正在运行的实例列表中,选择刚才新建的实例,页面底部可以看到实例的详细信息,我们要记住的是实例的Public DNS(IPv4)

  然后我们要对刚才创建实例时下载的密钥文件进行格式转换,从PEM格式转成PPK格式才能在PuTTY上使用,PuTTY自带转换工具PuTTYgen,安装PuTTY后在开始菜单很容易找到PuTTYgen工具,启动它

  然后点击Load,加载刚才下载的私钥pem文件,默认情况下选择文件的界面那里文件类型是*。ppk,我们要改成ALL FILES才能看到PEM文件

  然后Type of key to generate那里选择SSH-2 RSA,

  然后点击Save private key,就可保存为PPK文件了,这个PPK文件就是PuTTY可以用的密钥文件,在一会儿的连接过程中会用到。

  准备工作做完了,接下来启动PuTTY,在左边的目录中选择Session,一般情况下启动时默认就是Session界面,在HostName中输入user_name@public_dns_name

  username按之前选的操作系统有几种不同的值:

  • 对于 Amazon Linux AMI,用户名为 ec2-user

  • 对于 RHEL AMI,用户名称是 ec2-user 或 root

  • 对于 Ubuntu AMI,用户名称是 ubuntu 或 root

  • 对于 Centos AMI,用户名称是 centos

  • 对于 Fedora AMI,用户名称是 ec2-user

  • 对于 SUSE,用户名称是 ec2-user 或 root

  public_dns_name就是前面提到的必须要记住的Public DNS

  然后Connection type选择SSH

  然后通过左边的目录切换到Conncetion——SSH——Auth,在右边点击Browse,选择前面生成的PPK文件,然后切换回Session页面,点击Save,可以保存这些配置以供下次直接使用,点击Open可以连接到EC2

  下面是连接成功后的界面,就是Linux系统的命令窗口,在这个窗口通过命令可以执行一切我们希望的操作,部署网站就靠它完成。

第三部分 使用FileZilla连接到实例(使用SFTP协议)

  这是一个题外话,但它介绍的内容也在后面的工作中承担了很重要的作用:从Windows上传文件到EC2实例中的Linux系统。使用PuTTY自带的工具PSCP(基于命令的工具),或者WinSCP(基于windows GUI的工具)也可以从windows上传文件到远程Linux,为什么我选择了FileZilla?理由很简单,一是我恰好装了FileZilla并且用的比较熟练,二是我想试试FileZilla行不行,因为我以前一直用FTP协议连接远程服务器,今天突然接触到SSH协议,然后我就专门查了一下FTP和SSH区别,查的过程中别的没记住,倒是记住了SFTP这样一个由二者结合的协议,然后以前用FileZilla的时候有印象在选择传输协议时有SFTP这个选项,所以想试试可不可以通过SFTP协议连接到EC2。

  我启动FileZilla,下面的一切都凭经验进行

  新建站点AWS,主机栏输入Public DNS,端口输22,协议选择SFTP,登录类型选择密钥文件,用户前面解释过了填ec2-user,密钥文件选择之前转换成的PPK文件,其它的不管,点击连接,由于是境外服务器网络不稳定,经过多次尝试后终于还是连接成功了,然后我还上传了一个httpd-2.2.32.tar.gz文件,用于部署apache服务器的。

第四部分 部署Apache服务器

  在Linux部署Apache服务器的步骤,常见于LAMP环境搭建的教程里面。LAMP,即Linux + Apache + MySQL + PHP,有时候M也指MariaDB。搜索amazon ec2、lamp关键词,很容易就能找到在ec2上部署apache的教程,然而我一开始并不知道lamp这个概念,于是一直搜索在linux上部署apache的教程,查出来的教程相当复杂,而且我还各种没成功。后来总算让我找到了一篇,原来在ec2上部署apache是一件非常轻松的事情,只需要如下几行代码:

sudo yum update
sudo yum install gcc gcc-c++ make
sudo yum install apache mysql php php-mysql mysql-server

  上面第一行是更新系统环境,第2行是安装C++编译环境,第3行是安装apache、mysql、php等组件。上述代码运行完成后apache就成功安装了。

  测试apache是否成功安装的方法:

apachectl -v
httpd -v

  回显版本号表示已经安装成功

  安装完apache后,接下来启动apache web服务:

sudo service httpd start

  加sudo是为了以管理员权限运行该命令,一般情况下这条命令需要有sudo才会运行成功。

  在官方的API文档里面看的更清楚:

第五部分 测试Apache服务器

  在安装apache服务器并启动httpd服务后,接下来需要测试该服务器能否被正常访问。在浏览器中输入前面提到的Public DNS,应该就可以看到Apache测试页面了。但一般情况下,只做到这一步的话,还看不到测试页面,因为还需设置下安全组规则。在EC2控制面板切到安全组页面

  然后在右边选中MyFirstInstance实例后,右键单击它,在菜单中选择“编辑入站规则”:

  在“编辑入站规则”中添加下面这样一条规则:

  它的含义是允许任何地方通过HTTP协议80端口访问本实例,也就是通过网页方式访问本实例。这个时候基本上就大功告成了,在浏览器输入Public DNS或者公有IP就能看到Apache测试页了。

第六部分 关于弹性IP(EIP,Elastic IP)

  通常情况下,我们申请的EC2实例在每次重启之后,Public DNS和公有IP都会改变,如果是要做一个网站,服务器IP经常改变,那域名解析也要跟着变,这是个很麻烦的事情。这时候就需要申请EIP,并将EIP与EC2实例关联,这个EIP就可以作为这个实例的永久IP,除非我们手动取消关联。关联之后,我们可以在浏览器地址栏输入EIP来访问EC2实例。

  申请EIP的方法:在EC2控制面板找到“弹性IP”页面

  然后在右边选择“分配新地址”

  按照指引分配好新地址后,回到弹性IP页面,右键点击我们刚才申请的EIP,选择关联地址,将前面的EC2实例关联上去

然后就大功告成。

以上是这两天的学习成果,很少,但学习过程也是十分繁琐复杂,查了不少资料走了不少弯路浪费了不少时间,所以才想写一篇笔记记下来,让以后少走弯路。后续将继续学习在ec2上运行php的过程,在amazon申请域名并绑定到ec2实例的过程,逐步将网站建起来,学习过程中的经验也会拿出来分享。

AWS EC2中部署Apache服务器(LAMP)的更多相关文章

  1. 在AWS Glue中使用Apache Hudi

    1. Glue与Hudi简介 AWS Glue AWS Glue是Amazon Web Services(AWS)云平台推出的一款无服务器(Serverless)的大数据分析服务.对于不了解该产品的读 ...

  2. Win7如何部署apache服务器(包括SSL设置)

    部署普通站点 1.首先下载apache24版本,下载地址为http://pan.baidu.com/s/1pLmvDgB; 2.解压到你的电脑本地目录,如D:\Apache24(下文配置都会以当前目录 ...

  3. 百度云的ubuntu16.04.1部署Apache服务器+Django项目

    使用Apache和mod_wsgi部署Django 是一种久经考验的将Django投入生产的方法. mod_wsgi是一个Apache模块,可以托管任何Python WSGI应用程序,包括Django ...

  4. CentOS中设置Apache服务器网站访问日志[每天的日志]

    在阿里云的linux 服务器下Apache的日志默认设置是七天更新一次, 并且所在的目录无法通过FTP浏览器查看, 这样让小白操作起来非常麻烦 可以使用rotatelogs来设置服务器的网站访问日志按 ...

  5. 在 CentOS 中部署 KMS 服务器(vlmcsd)

    准备 vlmcsd 下载 vlmcsd 本文使用的 vlmcsd 版本为 svn1111,支持的产品: Windows Vista – 10Windows Server 2008 - 2016Offi ...

  6. AWS EC2笔记

    朋友想搭一个境外网站,找我帮忙,希望服务器.域名都在境外.我没有在境外建站的经历,只能先尝试.于是上网搜索了一下境外服务器,大家比较常用的是Digital Ocean和AWS,我索性打开这两家的官网, ...

  7. 使用root用户登录到AWS EC2服务器,上传文件到/var/www目录

    关键词 1.aws ec2中上传文件到/var/www目录(使用filezilla) 2.使用root用户登录aws ec2实例 上一篇随笔中记录了在aws ec2实例中部署apache服务器的过程, ...

  8. 通过带Flask的REST API在Python中部署PyTorch

    在本教程中,我们将使用Flask来部署PyTorch模型,并用讲解用于模型推断的 REST API.特别是,我们将部署一个预训练的DenseNet 121模 型来检测图像. 备注: 可在GitHub上 ...

  9. django项目部署在Apache服务器中,静态文件路径的注意点

    django Apache部署静态文件的路径注意点 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中. 当 DEBUG = True 时, ...

随机推荐

  1. 最小生成树求法 Prim + Kruskal

    prim算法的思路 和dijkstra是一样的 每次选取一个最近的点 然后去向新的节点扩张 注意这里的扩张 不再是 以前求最短路时候的到新的节点的最短距离 而是因为要生成一棵树 所以是要连一根最短的连 ...

  2. JS变量写到HTML页面中并修改变量值(前台处理数据序号问题)

    有时候我们在前台需要对序号进行处理,我们需要将JS变量写到页面中进行显示. 第一种方式:后台处理 第二种方式:JS中定义全局变量,然后进行显示,可以书写一个JS函数对不同的需要进行不同的替换,也就可以 ...

  3. linux 安装报错:pkg-config not found

    linux 安装报错:pkg-config not found 使用编译安装时,在执行./configure时报如下错误: ... ... checking for pkg-config... no ...

  4. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1054

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown error 1054 这个错误困扰了我一个下午  插入数据总是错误 ...

  5. 基于commons-net实现ftp创建文件夹、上传、下载功能

    原文:http://www.open-open.com/code/view/1420774470187 package com.demo.ftp; import java.io.FileInputSt ...

  6. 表皮囊肿?wtf

    https://baike.baidu.com/item/%E8%A1%A8%E7%9A%AE%E5%9B%8A%E8%82%BF/7852024?fr=aladdin

  7. HTML5 <template>标签元素简介

    一.HTML5 template元素初面 <template>元素,基本上可以确定是2013年才出现的.干嘛用的呢,顾名思意,就是用来声明是“模板元素”. 目前,我们在HTML中嵌入模板H ...

  8. Hadoop在window上运行 user=Administrator, access=WRITE, inode="hadoop"

    win7下eclipse中错误的详细描述如下: org.apache.hadoop.security.AccessControlException: org.apache.hadoop.securit ...

  9. nginx access.log 忽略favicon.ico訪问记录的方法

    favicon.ico 文件是浏览器收藏网址时显示的图标,当第一次訪问页面时.浏览器会自己主动发起请求获取页面的favicon.ico文件.当/favicon.ico文件不存在时,服务器会记录404日 ...

  10. Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办

    如下图所示,点击超链接提示无法打开指定的文件   如果使用Office打开,则提示发生了意外错误   你需要先把IE浏览器打开,这样就可以打开了,并非是图像的相对位置不正确导致的.