AWS (Amazon Web Service)

要使用亚马逊的免费云服务 AWS,必须先注册账号,然后绑定信用卡。

创建 AMI(Amazon Machine Image)

  • 选择 EC2 服务
  • EC2 Management Console(EC2 Dashboard)

    打开 EC2 虚拟服务器的管理控制台(默认打开仪表盘)
  • Launch Instance

    点击创建实例按钮
  • Amazon Machine Image

    第一步选择 AMI 映像的类型,这里选择可免费的 Amazon Linux AMI。
  • Instance Type

    第二步选择实例类型,这里选择唯一可免费的 t2.micro。
  • 确认并创建实例。

    一个实例就是一个单独的虚拟服务器。
  • 创建实例时如果创建新的密钥对 xxx,需要将私钥文件下载到本地 xxx.pem。

    私钥文件如果丢失,就不再能连接服务器,所以需要妥善保存。

EC2 管理控制台

在管理控制台里可选择查看

  • EC2 仪表盘

    显示各种统计数据。
  • Instances(实例)

    实例可以启动,停止,终止。

    终止的实例不能再次启动,默认情况下会被删除。
  • AMIs(映像)

    快照可以用来制作映像,映像可以用来制作实例的备份。
  • Volumes(卷)

    实例在物理上存放于卷之上。
  • Snapshots(快照)

    实例可以制作快照,作备份之用。
  • Key Pairs(密钥对)

    在这里创建或删除连接实例所需要的密钥对。
  • Security Groups(安全组)

    在这里配置安全组(Inbound)

    默认 Type: SSH Port Range:22

    需要添加

    Type: HTTP Port Range:80

    Type: HTTPS Port Range:443

EC2 实例

在实例这里可以查看用户创建的所有实例的列表。

其中值得注意的是:

  • Availabity Zone

    可用区:比如美国东部,太平洋地区等。
  • Public DNS(IPv4)

    DNS 地址: my.public.dns.amazonaws.com

    EC2实例 通常是 ec2-<Public IP>-<Availabity Zone>-compute.amazonaws.com

    DNS 地址包含了IP 地址和可用区的信息。
  • IPv4 Public IP

    IP 地址:xx.xxx.xxx.xx
  • Key Name

    创建实例时的密钥对名
  • Security Groups

    点击配置安全组

选择某个运行中的实例,可以连接该实例进行配置。

对于 EC2 实例,命令是

ssh -i "xxx.pem" ec2-user@my.public.dns.amazonaws.com

xxx.pem 是私钥文件名(须使用相对或绝对路径),

my.public.dns.amazonaws.com 是 DNS 地址。

连接成功之后便可在本地使用命令行远程操纵服务器。

$ ssh -i "xxx.pem" ec2-user@my.public.dns.amazonaws.com
Last login: ***(date) from ***(ip) __| __|_ )
_| ( / Amazon Linux AMI
___|\___|___| https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
[ec2-user ~]$

配置 LAMP 服务器

这一段参考教程: Install a LAMP Server (Amazon Linux AMI)

  • 更新服务器

    [ec2-user ~]$ sudo yum update -y
  • 安装 Apache, PHP, MySQL

    [ec2-user ~]$ sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd
  • 启动 Apache 并设置文件权限
[ec2-user ~]$ sudo service httpd start
[ec2-user ~]$ sudo chkconfig httpd on
[ec2-user ~]$ sudo usermod -a -G apache ec2-user
临时退出
[ec2-user ~]$ exit
再连接
[ec2-user ~]$ groups
ec2-user wheel apache
[ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
[ec2-user ~]$ sudo chmod 2775 /var/www
[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;

http://my.public.dns.amazonaws.com/

可查看 Apache 的测试页面。

  • 配置 MySQL
启动服务器
[ec2-user ~]$ sudo service mysqld start
输入 root 账号的密码,关闭远程登陆等等
[ec2-user ~]$ sudo mysql_secure_installation
[ec2-user ~]$ sudo chkconfig mysqld on
  • 安装 phpMyAdmin
[ec2-user ~]$ sudo yum install php70-mbstring.x86_64 php70-zip.x86_64 -y
[ec2-user ~]$ sudo service httpd restart
[ec2-user ~]$ cd /var/www/html
[ec2-user html]$ wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
[ec2-user html]$ mkdir phpMyAdmin && tar -xvzf phpMyAdmin-latest-all-languages.tar.gz -C phpMyAdmin --strip-components 1
[ec2-user html]$ rm phpMyAdmin-latest-all-languages.tar.gz

http://my.public.dns.amazonaws.com/phpMyAdmin

可打开 phpMyAdmin 配置服务器上的 MySQL 数据库。

FileZilla

可以使用 FileZilla 操作服务器,上传或下载文件。

连接时需要使用如下配置:

协议:SFTP(SSH File Transfer Protocol)

主机:my.public.dns.amazonaws.com(DNS 地址)

端口:空白(默认为22)

用户名:ec2-user

连接方式:选择 key file

xxx.pem(私钥文件)

Apache 的测试页面所在位置:

/var/www/html

免费数字证书

配置完毕的服务器可以用 http(80)访问。

要想使用 https(443)访问,光配置端口是不够的,还必须向数字证书颁发机构(CA)购买数字证书。

数字证书一般不适用于 IP 地址,必须先购买域名。

有了数字证书,网站的访问级别就可以由不安全(惊叹号)变为安全(锁)。

Let's Encrypt - Free SSL/TLS Certificates

该网站是一个(免费,自动,开放的)CA,可提供免费的SSL/TLS服务器证书。

AWS 所提供的 DNS 地址 *.amazonaws.com 在该网站的黑名单上,必须使用其他域名。

How to integrate free SSL certificate into AWS instance with Let’s Encrypt

使用 certbot-auto 可自动完成从 Let's Encrypt 网站下载安装数字证书等任务。

假设网站域名为 example.com, 别名是 www.example.com:

[ec2-user ~]$ sudo yum install -y mod24_ssl
[ec2-user ~]$ wget https://dl.eff.org/certbot-auto
[ec2-user ~]$ chmod a+x certbot-auto
[ec2-user ~]$ sudo ./certbot-auto --debug -v --server https://acme-v01.api.letsencrypt.org/directory certonly --webroot -w /var/www/html -d example.com -d www.example.com

任务成功显示信息:

 - Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-xx-xx. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"

可使用以下网址检查所生成的数字证书:

https://www.ssllabs.com/ssltest/analyze.html?d=example.com
https://www.ssllabs.com/ssltest/analyze.html?d=www.example.com

使用 root 权限查看所生成的 pem 文件。

[ec2-user ~]$ sudo ls /etc/letsencrypt/live/example.com/
README cert.pem chain.pem fullchain.pem privkey.pem

数字证书一共包含4个 pem 文件,需要配置 Apache 以利用这些数字证书文件。

http to https apache redirection

Redirect non www to www using httpd.conf

How To Redirect www to Non-www with Apache on Ubuntu 14.04

下面修改 Apache 的配置文件1

[ec2-user ~]$ sudo vim /etc/httpd/conf/httpd.conf

Listen 80这行下面

添加以下几行:(希望 example.com 转向 www.example.com 的话)

<VirtualHost *:80>
DocumentRoot /var/www/html
ServerAlias example.com
Redirect permanent / https://www.example.com/
</VirtualHost>

或者 (希望 www.example.com 转向 example.com 的话)

<VirtualHost *:80>
DocumentRoot /var/www/html
ServerAlias www.example.com
Redirect permanent / https://example.com/
</VirtualHost>

下面修改 Apache 的配置文件2

[ec2-user ~]$ sudo vim /etc/httpd/conf.d/ssl.conf

注意这个文件的内容实际上是对443端口的配置

Listen 443 https
# ...
<VirtualHost _default_:443>
# ...
SSLEngine on
# ...
</VirtualHost>

在相应的提示性的注释下

分别添加以下几行:(希望 example.com 转向 www.example.com 的话)

SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

或者 (希望 www.example.com 转向 example.com 的话)

SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/fullchain.pem RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

最后重启服务器

[ec2-user ~]$ sudo service httpd restart

大功告成 Congratulations!!!

https://example.comhttps://www.example.com 以及其子文件夹

都可以安全访问了。

并且输入以下URL时

浏览器都会统一按照设置转向 https://www.example.com/(或者 https://example.com/)。

免费证书过期时需要更新证书,然后再重启服务器。

[ec2-user ~]$ sudo ./certbot-auto renew
[ec2-user ~]$ sudo service httpd restart

免费域名

配置完毕的服务器可以用 IP 地址或 DNS 地址访问,但每次重启地址会变。

要想地址稳定,需要购买域名,并映射到 IP 地址或 DNS 地址。

Freenom - A Name for Everyone

该网站提供 xxx.tk, xxx.ml, xxx.ga, xxx.cf, xxx.gq 一共5种后缀的免费域名,输入 xxx 可查询免费域名是否可用。

如果免费域名可用,可以花0美元免费购买,当然需要注册。

免费使用期间最多一年,到期可以重新激活,但是续订需要付费。

登录之后在主页选择 Services -> My domains 查看已购买的域名。

点击 Manage Domain 可以配置域名。

Management Tools -> Nameservers 选择 Use default nameservers (Freenom Nameservers)

Manage Freenom DNS

在这里配置域名,添加 DNS 记录。

需要添加两条 A 记录 或 CNAME 记录,分别对应域名以及 www 子域名。

其中

  • A记录能把域名映射为 IP 地址。

    Type 填 A,Target 填 IP 地址,Name 空白不填。

    Type 填 A,Target 填 IP 地址,Name 填 www。
  • CNAME 记录能把域名映射为 DNS 地址。

    Type 填 CNAME,Target 填 DNS 地址,Name 空白不填。

    Type 填 CNAME,Target 填 DNS 地址,Name 填 www。

AWS 实战的更多相关文章

  1. AWS Summit 2014 San Francisco站总结

    我上个月去San Francisco参加了AWS Summit 2014 会议,总结一下参加这个会议的情况. 什么是AWS Summit? AWS Summit 是AWS在全球各地举办的,针对AWS用 ...

  2. 初识云计算 -《AWS云端企业实战圣经》读书笔记

    原书中涉及实操的地方,在本文中被省略.一是篇幅太长,放入文中太过累赘,二是原书成书过早,现在 AWS 的界面早已变化很大,不具备参考性. 第一章 谁在使用云计算 1.什么是云计算 云计算(cloud ...

  3. Apache Hudi + AWS S3 + Athena实战

    Apache Hudi在阿里巴巴集团.EMIS Health,LinkNovate,Tathastu.AI,腾讯,Uber内使用,并且由Amazon AWS EMR和Google云平台支持,最近Ama ...

  4. 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)

    环境准备 1.亚马逊EC2 Windows Server 2016 with Container 2.Visual Studio 2015 Enterprise(Profresianal要装Updat ...

  5. Spark入门实战系列--1.Spark及其生态圈简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...

  6. 移动互联网实战--Web Restful API设计和基础架构

    前言: 在移动互联网的大潮中, Web Restful API逐渐成为Web Server重要的一个分支. 移动端和服务端的交互, 主流的方式还是通过Http协议的形式来进行. 请求以Get/Post ...

  7. 《大数据Spark企业级实战 》

    基本信息 作者: Spark亚太研究院   王家林 丛书名:决胜大数据时代Spark全系列书籍 出版社:电子工业出版社 ISBN:9787121247446 上架时间:2015-1-6 出版日期:20 ...

  8. 基于PaaS和SaaS研发的商业云平台实战 转 (今后所有的IT行业会持续集成,往虚拟化方向更快更深的发展,商业化才是这些技术的最终目的)

    背景介绍 SaaS.PaaS.IaaS等云服务模式已经被大家普遍认可,在研发过程中借力一些PaaS和SaaS平台,能够提升产品的研发速度和功能稳定程度.本文将通过真实的商业平台案例-MaxWon研发实 ...

  9. AWS认证权威考经(助理级认证篇)

    笔者作为AWS官方认证的早期通过者,已经拿到了AWS的助理级解决方案架构师.开发者认证,系统管理员认证.这几年也陆续指导公司多人通过AWS的认证.本篇文章将分享如何通过自学的方式轻松通过AWS的助理级 ...

随机推荐

  1. java8_api_stream

    与集合联系紧密 Stream-1    stream概念    特点    使用示例

  2. Docker系列(二)镜像下载、操作容器、镜像导入导出等操作

    一.镜像操作 列出镜像 $sudo docker images 从dockerhub检索image $docker search image_name 下载image $docker pull ima ...

  3. 开始转变方向,学习Linux——《Linux就该这么学》

    三十而立,四十不惑. 我呢,未立将不惑. 苦恼之余,决定拓展就业范围,正式学习Linux,准备考取RHCE证书. 考证需要报名培训机构,这是一个明智的选择,毕竟中国人善于考试,善于钻研考试. 联系培训 ...

  4. Open Source 开发工具集

    Open Source 开发工具集 转自:http://www.linuxforum.net原作者:gogoliu(Pooh-Bah) 编辑器: vi:老牌编辑器,在各个unix和unix-like平 ...

  5. java获取客户端ip地址工具类

    public class IpUtils { private static final String[] HEADERS = { "X-Forwarded-For", " ...

  6. 【Algorithm】字符串编辑距离(Levenshtein距离)C++算法实现

    算法实现比较简单,但算法原理不明白,有空了再研究一下. unsigned LevenshteinDistance(const string& s1, const string& s2) ...

  7. 使用R的注意事项

    换源,将源切换到中国 具体方法是: options(repos=structure(c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/&qu ...

  8. ASP.NET core 2.1部署到 Centos 7

    步骤要点: 一.关闭Centos selinux: 操作方式: 1.永久关闭:打开/etc/selinux/config文件,设置SELINUX=disabled,注意,不是SELINUXTYPE=d ...

  9. 深度学习(二)--深度信念网络(DBN)

    深度学习(二)--深度信念网络(Deep Belief Network,DBN) 一.受限玻尔兹曼机(Restricted Boltzmann Machine,RBM) 在介绍深度信念网络之前需要先了 ...

  10. java 调用c# web api 代码

    上次我们写的.net  web api 给对方公司的java团队调用,他们觉得说java无法调用.net 写的api ,靠居然有这事,索性自己写一个java的demo给他们 使用apache的Http ...