Haste makes waste

AWS:ゼロから実践するAmazon Web Services

Posted on By lijun

最近想自己通过python/Django构建一个web服务,其中涉及到infra,考虑过idcf,因为以前用过比较熟悉,但是主流是AWS,以后很多服务都是构建于AWS的,需要掌握AWS的基本用法。

这是一个Udemy的课程,参考AWS:ゼロから実践するAmazon Web Services

1. 使用AWS构建网络和服务器

懂Infra对现在的系统构建很有用处:

  1. 可以创建自己的web服务
  2. 从系统整体上进行考虑(发生问题时能够切分,考虑对策时不仅能从App层考虑,还能从系统整体去考虑)

构建Infra的时候,网络和服务器通过下面的方式进行构建:

  • 服务器构成
    1. 需要什么样的服务器
    2. 设置服务器
    3. 在服务器上安装OS,进行各种设定
    4. 安装需要的软件,并进行设定
  • 网络构成,将构建的服务器连接到网络:
    1. 决定网络使用的IP范围
    2. 给服务器分配IP地址
    3. 给各个IP地址分配域名

下面比较一下オンプレミス和クラウド,日本很多公司喜欢自己构建 服务器,敏感数据是不会放到云上去的。

  • オンプレミス
    1. 自己准备硬件软件,自己进行管理
    2. 优点是自由度高
    3. 缺点是初期cost高,需要时间,很难对服务器进行增减
  • クラウド
    1. infra通过网络进行管理和使用
    2. 优点是,初期cost少,能马上使用,服务器的增减也比较自由
    3. 缺点是,费用的预测困难,另外,cloud整体发生故障的话,自己无法对应

2. AWS的初期设定

主要完成:

  • 注册账号(使用的 lijun.206@gmail.com 账号)
  • 使用CloudWatch进行金额监视
  • IAM用户的作成(作业用user)
  • 使用CloudTrail记录操作log

2.1 注册账号

略过,可以有一年的免费试用期间。

2.2 金额监视

通过下面的两种方式进行设定:

  1. Billing の設定
  2. CloudWatch

2.3 IAM用户

在AWS的BestPractice中,极力推荐不要使用root user,作业的时候使用IAM user:

  • root user:
    1. 该用户有所有权限
    2. 只在账户的解约等时候使用
    3. 极力推荐不要使用root user
  • IAM user:
    1. 在AWS内做成的user
    2. 可以修改认证信息和访问许可
    3. 可以分用户作成
    4. 一般的作业使用IAM user
  • 设置页面
  • LOGIN 用: console

    用户名 junli_work

2.4 使用CloudTrail记录操作log

  • CloudTrail:
    1. 记录AWS用户操作记录
    2. 默认是有效的,保存90天
    3. 可以保存到S3,永久保存
    4. CloudTrail是免费的,但是S3是收费的

在这里作成:CloudTrail

以后log保存在S3这里:AWSLogs

3. VPC-网络构建

关于网络基本概念,参考以前的一篇总结 网络基本概念

本章包含:

  • AWS中的网络
  • 决定网络中的IP地址
  • 作成VPC
  • 作成subnet
  • 设置routing
  • 网络设计时需要顾虑的方面

本次的例子的网络构成如下:

image

3.1 AWS中的网络

  1. Region:各个不同的地理区域,现在有近20个Region
  2. avilablity zone: 即一个独立的data center,一个Region中包含多个zone
  3. VPC:在AWS上可以做成虚拟网络的服务,在VPC做成不同的subnet,比如一个对外的public subnet,一个对内的private subnet

3.2 决定网络中的IP地址

  • public IP
    1. 实际与Internet进行连接时使用的IP
    2. 为了能够正常通信,IP地址不能重复,IP通过ICANN这个团体统一管理
    3. IP地址可以通过provider和server事业提供商提供
  • private IP
    1. 不是在Internet上使用的IP
    2. 下面范围的IP可以自由使用:10.0.0.0 - 10.255.255.255172.16.0.0 - 172.31.255.255192.168.0.0 - 192.168.255.255
    3. 内网构筑等时使用private IP

网络构筑时,需要决定这段网络所要使用的IP地址,IP地址分为network部host部: 比如,192.168.128.0 - 192.168.128.255的256个IP地址,其中:

  • network部:192.168.128,即11000000 10101000 10000000
  • host部:00000000 - 11111111这个范围

上面可以通过:192.168.128.0/24这样表示,表示前面24位是network部。

本次构建的网络IP如下:

image

3.3 构建VPC

下面部分要完成的工作如下:

image

VPC

虽然有默认的VPC,但是基本不用,需要重新建立VPC,按照下面的定义创建一个VPC:

image

3.4 创建subnet

参考上图的第2部,构建两个subnet:

  1. public subnet 10.0.10.0/24
  2. private subnet 10.0.20.0/24

参考 subnet

创建方式如下:

image

通过同样的方式创建aws-and-infra-private-subnet-1a的subnet 10.0.20.0/24

3.5 【重要】设定routing

关于这一部分原理还没有完全理解,暂时先按照手顺设定了。

为了能将public internet连接上外网,需要进行routing设定。 参考上面的图,有两个task:

  1. 创建 internet gateway,并将其与VPC进行关联
  2. 创建 route table

上面的两个操作,都在VPC页面进行,具体的操作步骤不复述了,参考这个视频

4. EC2-web服务器构建

主要下面的内容:

  1. EC2 instance设置
  2. SSH
  3. 关于公开key
  4. 使用SSH连接到EC2 instance
  5. 关于port
  6. 按照Apache
  7. 设置firewall
  8. 使用Elastic IP地址将IP地址固定

构筑后的结构如下:

image

4.1 设置EC2 instance

设置手顺非常详细,需要的时候可以来参考。

Elastic Compute Cloud的省略,instance就是在EC2上建立的server。

作成手顺如下:

  1. AMI选择
  2. instance type的选择
  3. storage的追加
  4. security group的设定
  5. SSH key pair的设定
  • AMI是 Amazon Machine Image,OS的image,server的模板文件。
  • instance type是server的配置,CPU/memory/Storage等。比如m5.xlarge,m是instance family,5表示instance的版本,xlarge表示instance的size

关于Server上的storage有两种类型

  1. EBS(Elastic Block Store)
    1. 可用性和耐久性高
    2. 可以接到其他instance上
    3. 即使instance被stop或terminate了,EBS也可以保存
    4. 可以获取snapshot,保存到S3
    5. EBS需要另外付费
    6. 放置OS或DB等永久性的数据
  2. instance store
    1. instance专用的临时保存storage
    2. 不能接到其他instance上
    3. EC2被stop或terminate了的话,它也被清理了
    4. 无需追加费用
    5. 不要存放重要数据,可以放置如cache,或暂时存放的数据

具体作业内容如下:

image

4.2 关于SSH

  1. SSH保证了server与自身PC的安全连接,如下图:

image

4.3 公开key

什么是公开key,在以前做支付的时候,总结过一篇文章:什么是数字签名?

通过SSH登录到EC2的时候,使用的是公开key认证方式。服务器有公开key,各自的PC上有秘密key,通过秘密key登录到server。

如下图,Sofia和harry在交换信息,

  1. 事先Sofia和Harry会相互交换公开key
  2. Sofia如果要发送信息给Harry,会使用Harry的公开key加密。
  3. Harry收到信息后,用自己的秘钥解密。

反之,如果Harry要发送信息时,则用Sofia的公开key加密,Sofia用自己的秘钥解密。

image

比如,自身的PC在login到Server时:

image

  1. 从服务器会发送一些数据给PC(使用server的公开key),
  2. PC断解密这个数据(用自己的秘密key),然后把这个解密后的数据发送给服务器
  3. 服务进行验证,如果数据一致,则安全认证通过。

之前在做支付的时候,有些加盟商比如Orico会调用alipay的API,这个时候我们需要知道调用方是否确实是Orico,基于:

  1. 在服务器上,基于Orico的信息,生成一个公开key和秘密key
  2. 将这个秘密key(Orico),以及公开key(alipay),提供给Orico。自己保留Orica的公开key。

然后使用上面的方式进行信息交换。

4.4 通过SSH连接到EC2 instance

讲师使用的是Rlogin,我自己用Tera Term,都比较类似。

  1. 登录 EC2 获取instance的相关信息。
  2. 获得其public IP:54.199.221.0

关于如何使用RLogin,udemy 教程比较详细的讲解了。

4.5 什么是port

port是程序的地址,在一个PC内进行通信的时候使用,如下图:

image

  • 标准的port番号(已经预约的)
    1. 0-1023,比如SSH是22,SMTP是25,HTTP是80,HTTPS是443,
    2. 因为是标准的,所以在访问这些program的时候,不需要指定port

使用下面的command,可以得到os中的port:

[ec2-user@ip-10-0-10-10 ~]$ sudo lsof -i -n -P
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind  2696      rpc    6u  IPv4  17132      0t0  UDP *:111 
rpcbind  2696      rpc    7u  IPv4  17148      0t0  UDP *:735 
rpcbind  2696      rpc    8u  IPv4  17149      0t0  TCP *:111 (LISTEN)
rpcbind  2696      rpc    9u  IPv6  17150      0t0  UDP *:111 
rpcbind  2696      rpc   10u  IPv6  17151      0t0  UDP *:735 
rpcbind  2696      rpc   11u  IPv6  17152      0t0  TCP *:111 (LISTEN)
chronyd  2698   chrony    1u  IPv4  17186      0t0  UDP 127.0.0.1:323 
chronyd  2698   chrony    2u  IPv6  17187      0t0  UDP [::1]:323 
dhclient 2918     root    6u  IPv4  17861      0t0  UDP *:68 
dhclient 3053     root    5u  IPv6  18211      0t0  UDP [fe80::467:5eff:fefc:5ede]:546 
master   3196     root   13u  IPv4  19105      0t0  TCP 127.0.0.1:25 (LISTEN)
sshd     3414     root    3u  IPv4  20820      0t0  TCP *:22 (LISTEN)
sshd     3414     root    4u  IPv6  20829      0t0  TCP *:22 (LISTEN)
sshd     9851     root    3u  IPv4 162096      0t0  TCP 10.0.10.10:22->182.171.252.160:50349 (ESTABLISHED)
sshd     9869 ec2-user    3u  IPv4 162096      0t0  TCP 10.0.10.10:22->182.171.252.160:50349 (ESTABLISHED)

4.6 安装Apache

  1. 先更新OS
[ec2-user@ip-10-0-10-10 ~]$ sudo yum update -y
  1. 安装httpd
[ec2-user@ip-10-0-10-10 ~]$ sudo yum install httpd
  1. 启动httpd服务
[ec2-user@ip-10-0-10-10 ~]$ sudo systemctl start httpd.service

启动完毕后确认其状态:

[ec2-user@ip-10-0-10-10 ~]$ sudo systemctl status httpd.service
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-05-15 13:55:24 UTC; 52s ago
     Docs: man:httpd.service(8)
 Main PID: 28051 (httpd)
   Status: "Total requests: 0; Idle/Busy workers 100/0;Requests/sec: 0; Bytes served/sec:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─28051 /usr/sbin/httpd -DFOREGROUND
           ├─28052 /usr/sbin/httpd -DFOREGROUND
           ├─28053 /usr/sbin/httpd -DFOREGROUND
           ├─28054 /usr/sbin/httpd -DFOREGROUND
           ├─28055 /usr/sbin/httpd -DFOREGROUND
           └─28056 /usr/sbin/httpd -DFOREGROUND

May 15 13:55:24 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
May 15 13:55:24 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.

显示正在运行的程序,ps表示显示运行的程序,-ax表示所有的,u表示memory,CPU等:

[ec2-user@ip-10-0-10-10 ~]$ ps -axu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.5 125620  5412 ?        Ss   May13   0:04 /usr/lib/systemd/systemd --switched-root --system --
root         2  0.0  0.0      0     0 ?        S    May13   0:00 [kthreadd]
...

如果只想显示HTTPd相关的,通过pipeline和grep:

[ec2-user@ip-10-0-10-10 ~]$ ps -axu | grep httpd
root     28051  0.0  0.9 257372  9376 ?        Ss   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
apache   28052  0.0  0.6 298484  6308 ?        Sl   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
apache   28053  0.0  0.6 298484  6308 ?        Sl   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
apache   28054  0.0  0.6 495156  6316 ?        Sl   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
apache   28055  0.0  0.6 298484  6308 ?        Sl   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
apache   28056  0.0  0.6 298484  6308 ?        Sl   13:55   0:00 /usr/sbin/httpd -DFOREGROUND
ec2-user 28166  0.0  0.0 119420   912 pts/0    S+   14:02   0:00 grep --color=auto httpd

设置开机启动:

[ec2-user@ip-10-0-10-10 ~]$ sudo systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

查看是否正确设置了:

[ec2-user@ip-10-0-10-10 ~]$ sudo systemctl is-enabled httpd.service
enabled

4.7 设定防火墙

现在因为有防火墙,所以无法从外部访问:

image

通过在instance的security group中点击セキュリティグループ aws-and-infra-web-junli. ,可以看到现在只能SSH访问, 出口的outbound是全开的,即所有的都能出去。

通过修改inbound的rule,添加http,添加如下:

image

再次访问 http://54.199.221.0/发现能看到测试页面了。

4.8 使用Elastic IP地址固定IP

当前为什么要固定IP呢,因为现在将instance每重启一次,其public IP就有可能变化。我们可以通过Elastic IP将其固定:

  1. 只要这个instance存在,就一直是这个IP
  2. ElasticIP如果是与EC2关联,并且是启动中是免费的,反之如果没有与EC2关联就会收费,所以如果EC2 Instance删除后,那么就要将这个IP释放出来,否则收费

在console的ElasticIP页面中,先创建一个Global IP,然后将这个GlobalIP关联到对应的EC2 的instance上。

访问这个GlobalIP http://52.192.203.212/

注意:如果EC2被删除了,需要将其关联解除,否则会收费!!

4.9 释放ElasticIP和停止instance

自己不用的时候,避免发生费用,可以释放ElasticIP,以及停止instance。

5. Route53-域名登录

本章的目标,通过Domain名进行访问:

image

5.1 什么是Domain

Domain名的构造,www.example.co.jp:

  • www是第4层domain
  • example是第3层domain
  • co是第二层domain
  • jp是第一层domain

image

5.2 什么是DNS

需要将Domain与IP在DNS上进行关联。

  • DNS是什么:
  1. DNS全称是Domain Name System,管理Domain名的系统
  2. 将Domain名转换成IP地址
  3. 由name server和full resolver组成
  • name server:
  1. 保存着Domain和IP 的关联
  2. 将Domain的各个阶层配置到NameServer
  • full resolver:
    1. 接收到domain名到IP的查询请求后,到各个name server上去查询IP地址

比如下面是一个访问的例子,流程如下:

image

Resource Type 内容
A Record 与Domain关联的IP地址
NS Record 管理Domain的zone的name server
MX Record 与Domain关联的mail 收信 server
CNAME Domain别名中的Recourse record参照目标
SOA Domain的zone管理信息

5.3 购买Domian

在 お名前.com 上购买的额,跳过!

5.4 学习Route 53

Route 53是AWS上的DNS Service,其主要特征有:

  1. 高可用性
  2. 高速,有很多服务器,会选取最近的服务器响应
  3. full managed service,即DNS Server的设计构建以及维护管理统统不需要

重要概念:

  1. host zone: DNS的resource record集合,类似于Zone file
  2. record set:resource record
  3. routing policy: Route 53针对Record Set怎么去进行Routing
  4. health check: 确认服务器的运行状况

Routing Policy有需要选项,根据需要可以进行选择。

5.4 在Route 53上设定DNS

image

  1. 将Domain的Name Server更改为Route 53
    1. 在Route 53上做成host zone
    2. 将Nameserver从お名前.com改为Route 53
  2. 在Route 53上做成Record Set,即登录IP地址

进行command界面:

[ec2-user@ip-10-0-10-10 ~]$ dig lovelsy.life NS +short
dns2.onamae.com.
dns1.onamae.com.

分成两步:

  1. 在AWS的Route 53上确认其name server名
  2. 在お名前.com上修改其name server名,修改为AWS的

截图如下:

image

上述需要24-72小时才能反映。

另外,还需要将Elastic IP与Domain 名进行关联。

在上面的Route 53中做成一条 A record即可。

绑定之后,就可以访问了 http://lovelsy.life/

6. RDS-DB服务器构建

本章主要包括:

  1. 学习RDS
  2. 做成Private Subnet
  3. 设置RDS
  4. 将WebServer连接到RDS

本章完成两个内容:

  1. 做成另一个Private available Zone,为了保证DB的可用性,AWS建议在多个不同的zone上建立DB
  2. 做成一个DB Server image

注意这里DB是在Private Subnet,意味这只有WebServer能够访问,其他外部是无法访问这个DB的。

6.1 什么是RDS

RDS是AWS上提供的一种DB服务,对比下面三种case:

image

  1. on pre的话,所有的工作都需要自己完成
  2. 如果在EC2上自己安装My SQL等的话,省去准备物理硬件以及安装OS,但是后面的update等一系列工作都需要自己完成
  3. 如果直接使用RDS的话,所有的事情都是AWS去做了

RDS上有两个主要的特点,高可用性提升性能

  1. 高可用性:如果Master出现故障,能切换到Slaver。
  2. 提升性能:将读取用DB,以及读写DB分开。

6.2 做成Private Subnet

在VPC中再创建一个private zone,取名aws-and-infra-private-subnet-1c

6.3 RDS的作成准备

分成下面四个step:

  1. 作成Security Group
  2. 作成DB的Subnet
  3. 作成DB Parameter Group
  4. 作成DB Option Group
  • Security Group作成:

image

  • 作成DB的Subnet:

image

  • 作成DB Parameter Group :

选择DB的类型与版本。

  • 作成DB Option Group :

6.4 RDS的作成

分成下面四个step:

  1. DB Engine
  2. 本番环境
  3. DB详细设定
  4. 详细设定的设定

6.5 将WebServer与RDS进行连接

  • 安装MySQL
[ec2-user@ip-10-0-10-10 ~]$ sudo yum -y install mysql

从RDS中获取DB的endpoint,连接:

[ec2-user@ip-10-0-10-10 ~]$ mysql -h aws-and-infra-web.csveo6q0bien.ap-northeast-1.rds.amazonaws.com -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.15 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

7. EC2-WordPress构建

这部分要作成WordPress,并连接DB Server(My SQL):

image

7.1 作成WordPress的DB

  • 作成DB:
MySQL [(none)]> create database aws_and_infra default Character SET UTF8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 2 warnings (0.01 sec)
  • 确认:
MySQL [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| aws_and_infra      |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)
  • 创建用户:
MySQL [(none)]> create User 'aws_and_infra'@'%' identified by 'password';
Query OK, 0 rows affected (0.01 sec)

  • 赋予权限并更新:
MySQL [(none)]> grant all on aws_and_infra.* TO 'aws_and_infra'@'%';
Query OK, 0 rows affected (0.00 sec)

MySQL [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

  • 确认
MySQL [(none)]> select user , host from mysql.user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| aws_and_infra    | %         |
| root             | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| rdsadmin         | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

  • 重新确认mysql 连接,并用新的用户名连接(密码是 password):
MySQL [(none)]> exit

[ec2-user@ip-10-0-10-10 ~]$ mysql -h aws-and-infra-web.csveo6q0bien.ap-northeast-1.rds.amazonaws.com -u aws_and_infra  -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.15 Source distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

7.2 安装WordPress

需要完成的task:

  1. 安装library
  2. 下载Wordpress
  3. 解压WordPress
  4. 将WordPress的程序放到Apache能看到的地方
  5. 修改WordPress文件的所有者,变更Group
  6. 重启Apache
  • 安装php以及相关的lib
[ec2-user@ip-10-0-10-10 ~]$ sudo amazon-linux-extras install -y php7.2

[ec2-user@ip-10-0-10-10 ~]$ sudo yum install -y php php-mbstring
  • 移动到home,下载wordpress
[ec2-user@ip-10-0-10-10 ~]$ cd ~
[ec2-user@ip-10-0-10-10 ~]$ pwd
/home/ec2-user
[ec2-user@ip-10-0-10-10 ~]$ wget https://ja.wordpress.org/latest-ja.tar.gz
--2020-05-18 05:08:55--  https://ja.wordpress.org/latest-ja.tar.gz

[ec2-user@ip-10-0-10-10 ~]$ ls
latest-ja.tar.gz

  • 解压
[ec2-user@ip-10-0-10-10 ~]$ tar xzvf latest-ja.tar.gz
  • 将WordPress的程序放到Apache能看到的地方
[ec2-user@ip-10-0-10-10 ~]$ ls
latest-ja.tar.gz  wordpress
[ec2-user@ip-10-0-10-10 ~]$ cd wordpress/
[ec2-user@ip-10-0-10-10 wordpress]$ sudo cp -r * /var/www/html/
[ec2-user@ip-10-0-10-10 wordpress]$ 
  • 修改WordPress文件的所有者,变更Group

将这下面的所有文件的所有者修改为apache

[ec2-user@ip-10-0-10-10 wordpress]$ sudo chown apache:apache /var/www/html/  -R
  • 确认Apache状态,并重启:
[ec2-user@ip-10-0-10-10 wordpress]$ sudo systemctl status httpd.service
 httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/httpd.service.d
           └─php-fpm.conf
   Active: active (running) since Fri 2020-05-15 13:55:24 UTC; 2 days ago
     Docs: man:httpd.service(8)
 Main PID: 28051 (httpd)
   Status: "Total requests: 1105; Idle/Busy workers 100/0;Requests/sec: 0.00484; Bytes served/sec:   4 B/sec"
   CGroup: /system.slice/httpd.service
           ├─ 4081 /usr/sbin/httpd -DFOREGROUND
           ├─ 4082 /usr/sbin/httpd -DFOREGROUND
           ├─ 4083 /usr/sbin/httpd -DFOREGROUND
           ├─ 4084 /usr/sbin/httpd -DFOREGROUND
           ├─ 4086 /usr/sbin/httpd -DFOREGROUND
           ├─ 5115 /usr/sbin/httpd -DFOREGROUND
           ├─ 5689 /usr/sbin/httpd -DFOREGROUND
           ├─ 9157 /usr/sbin/httpd -DFOREGROUND
           └─28051 /usr/sbin/httpd -DFOREGROUND
May 15 13:55:24 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Starting The Apache HTTP Server...
May 15 13:55:24 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Started The Apache HTTP Server.
May 17 03:49:01 ip-10-0-10-10.ap-northeast-1.compute.internal systemd[1]: Reloaded The Apache HTTP Server.

# 如果本身没有启动的话:
[ec2-user@ip-10-0-10-10 wordpress]$ sudo systemctl start httpd.service

# 重启:
[ec2-user@ip-10-0-10-10 wordpress]$ sudo systemctl restart httpd.service

7.3 设定WordPress

安装画面安装即可:

image

7.4 为什么WordPress能显示

7.5 学习TCP/IP

7.6 学习HTTP

7.6 学习TCP/UDP

8. S3-CloudFront-分发图片

9. ELB-Web层的冗长化

10. RDS-DB层的冗长化

11. IAM-访问权限管理

12. 其他