# AWS 期中考試

---
## VPC part
* 建立VPC

給VPC名稱跟IP
**VPC的IP後面用/16**

---
## 新增subnet
如果有用到target group、ELB的話要3個subnet(public:2, private:1)


---
## 新增IGW
要綁定VPC



---
## 路由表
應該會直接有對應剛剛創的VPC的,找一下後面的描述

**要去連接IGW**


**去Subnet assciaction把public的subnet加過去**

這一步做完pub的就可以連出去了

## 自動給IP
**在 VPC > Subnet**
更改預設


---
:::info
key記得丟到linux後要改權限`chmod 400 asd.pem`
:::
## EC2 建立
* 先建兩台EC2 一台當WWW server 一台當 DB server
### www server 那台
* 放在對外的subnet裡面(subnet_public)
* sg的部分,開ssh 跟 http(不是https) (ICMP看老師有沒有要求)
* 最下面的detail放
(會在建立時自動弄好httpd,預設網頁會有私有IP)
```
#!/bin/bash
yum update -y
yum install -y httpd.x86_64
systemctl start httpd.service
systemctl enable httpd.service
echo “Hello World from $(hostname -f)” > /var/www/html/index.html
```
**再來先放著這台**
### DB 那台
網路設定_1 (不能給對外IP)

網路設定_2 (要有ssh 跟 MYSQL/Aurora 3306port)

透過ssh 從本地 => www的VM => DB的VM
#### NAT_GW

**要選public的subnet**(allocate Elastic IP按就對了)

又來到Routing Table(再建立一個)

**到Route 編輯 Edit route**

**對象0.0.0.0/0 這次選NAT_GW**

到associactions編輯

把private的加進去

### 安裝MariaDB
[Installing MariaDB on Amazon Linux 2023](https://linux.how2shout.com/installing-mariadb-on-amazon-linux-2023/)
進去mariadb後的最初設定
```
Switch to unix_socket authentication [Y/n] n
Change the root password? [Y/n] Y
Remove anonymous users? [Y/n]? Y
Disallow root login remotely [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privelege tables now? [Y/n] Y
```
### DB table
```
show databases; # 顯示目前有的資料庫
create database testdb; # 創建資料庫
use testdb; # 使用資料庫
create table addrbook(name varchar(50) not null, phone char(10)); # 創建資料表
insert into addrbook(name, phone) values ("tom", "0912123456"); # 加入資料
insert into addrbook(name, phone) values ("mary", "0912123567"); # 加入資料
select name,phone from addrbook; # 選擇資料
update addrbook set phone="0987465123"; # 更新資料
```
:::info
在mariadb內新增user的方法:
CREATE USER user@'%' IDENTIFIED BY 'user'; # 前面的 user 是帳號, %指的是anywhere, 後面的user指的是密碼
GRANT ALL PRIVILEGES ON * . * TO 'user'@'%';
FLUSH PRIVILEGES; #新增完成
:::
遠端連進資料庫
* public 的那台安裝mariadb
`sudo yum install mariadb105`
**用EC2 public 那台與DB連線(帳號密碼user user)**

## 建apache server (在public那台)
安裝php三個模組

**安裝完後重啟網頁伺服器**
`systemctl restart httpd`
2. 到 html 資料夾下編輯
切到 /var/www/html/(加入PHP腳本)
3. 連接到DB腳本
`vim test.php`
```
<?php
$servername="192.168.1.200"; #DB 那台的IP
$username="user";
$password="user";
$dbname="test2db"; # 改你的DB table name
$conn = new mysqli($servername, $username, $password, $dbname);
if($conn->connect_error){
die("connection failed: " . $conn->connect_error);
}
else{
echo "connect OK!" . "<br>";
}
$sql="select name,phone from addrbook";
$result=$conn->query($sql);
if($result->num_rows>0){
while($row=$result->fetch_assoc()){
echo "name: " . $row["name"] . "\tphone: " . $row["phone"] . "<br>";
}
} else {
echo "0 record";
}
?>
```
## 設定路由表
要把第二個public的 subnet也加進來


## 複製EC2
**要等EC2完全關閉才能image**

**EC2 下的 images => AMIs(這邊也要等他變成Active才能launch)**

**在detail那邊加上**
```
cd /var/www/html
sudo bash -c 'echo “Hello World from $(hostname -f) I am www server 1C” > index.html'
```
---
## ELB (Elastic Load Balance)
到 Load Balancing > Target Groups 創建群組

**創建的幾個設定**



把WWW server的兩個機器選近來

到 Load Balancing > Load Balancers 建立一個 Load Balancer

選擇最左邊的ALB

基本設定



測試(透過建立好的 Load Balancer 下的DNS連接最初建立的兩個網頁伺服器)

---