Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge #47

Open
wants to merge 138 commits into
base: LeeYeji
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
d1c31cc
[황채원] 2주차 과제 - complete
uommou Oct 6, 2023
3a45f8a
[임영서] 3주차 과제 -complete
yslim21 Oct 15, 2023
8ccdb95
[하윤지] 3주차 과제 - complete
yunji118 Oct 25, 2023
210a10b
[하윤지] 3주차 과제 - complete
yunji118 Oct 25, 2023
b21eb93
[이해원] 3주차 과제 - complete
Haewonny Nov 1, 2023
424db70
[서지원] 3주차 과제 - ing
seojeewon Nov 2, 2023
17a3d3e
[서지원] 3주차 과제 -complete
seojeewon Nov 2, 2023
af51976
Create 김중현_3주차_과제.md
JoongHyun-Kim Nov 3, 2023
28dd035
[김중현] 3주차 과제 - complete
JoongHyun-Kim Nov 3, 2023
dc9fce6
[이서현] 3주차 과제 - complete
seohyun-lee Nov 3, 2023
9f12eb5
[이서현] 3주차 과제 - ing
seohyun-lee Nov 3, 2023
6e09a14
[이서현] 3주차 과제 - complete
seohyun-lee Nov 3, 2023
6f7f325
[양동선]3주차 Server S-Day 과제 -ing
dongseon0 Nov 3, 2023
9245cf1
[양동선] 3주차 Server S-Day 과제 -ing
dongseon0 Nov 3, 2023
6202b6f
Merge pull request #31 from GDSC-Ewha-5th/LeeYeji
DeiLee0913 Nov 3, 2023
d3b4099
Create new
dongseon0 Nov 3, 2023
ea47732
Rename 3주차 Server S-Day 과제.md to 3주차 Server S-Day 과제/3주차 Server S-Day…
dongseon0 Nov 3, 2023
dd81536
Delete 3주차 Server S-Day 과제/new
dongseon0 Nov 3, 2023
3f6f425
Update 3주차 Server S-Day 과제.md
dongseon0 Nov 3, 2023
50e1a15
Add files via upload
dongseon0 Nov 3, 2023
39e7c67
Merge pull request #25 from GDSC-Ewha-5th/HaYunji
yunji118 Nov 4, 2023
0d56b5a
Merge pull request #26 from GDSC-Ewha-5th/LeeHaewon
Haewonny Nov 4, 2023
fd71b51
Merge pull request #28 from GDSC-Ewha-5th/JoongHyunKim
JoongHyun-Kim Nov 6, 2023
1053c94
Merge pull request #29 from GDSC-Ewha-5th/LeeSeohyun
seohyun-lee Nov 6, 2023
4f3cfb2
[양동선] 3주차 과제 -complete
dongseon0 Nov 7, 2023
d42c7d0
Merge pull request #30 from GDSC-Ewha-5th/YangDongseon
dongseon0 Nov 7, 2023
11af2e2
Delete 3주차 Server S-Day 과제/MvcStudyApplicationTests.java
dongseon0 Nov 7, 2023
ad8a011
Rename 3주차 Server S-Day 과제.md to 양동선_3주차_과제.md
dongseon0 Nov 7, 2023
165d590
[하윤지] 4주차 과제 - complete
yunji118 Nov 9, 2023
5907f8d
[하윤지] 4주차 과제 - complete
yunji118 Nov 9, 2023
e25bdf5
[김중현] 4주차 과제 - complete
JoongHyun-Kim Nov 10, 2023
df5a14a
[김리나] 4주차 과제 - ing
ri-naa Nov 10, 2023
98c1e3e
[김리나] 4주차 과제 - complete
ri-naa Nov 10, 2023
79208a8
[이해원] 4주차 과제 - complete
Haewonny Nov 10, 2023
35b89ce
Merge pull request #24 from GDSC-Ewha-5th/LimYoungseo
yslim21 Nov 10, 2023
951f995
4주차 Server S-Day 과제.md
dongseon0 Nov 10, 2023
a81dbba
Update 4주차 Server S-Day 과제.md
dongseon0 Nov 10, 2023
965ac34
Update 4주차 Server S-Day 과제.md
dongseon0 Nov 10, 2023
53fe331
[황채원] 4주차 과제 - complete
uommou Nov 10, 2023
ee0ebae
Update and rename 4주차 Server S-Day 과제.md to 4주차 Server S-Day 과제/4주차 S…
dongseon0 Nov 10, 2023
4f409a4
[황채원] 4주차 과제 - ing
uommou Nov 10, 2023
b6d998c
[황채원] 2주차 과제 - complete
uommou Nov 10, 2023
b310660
[양동선]4주차 Server S-Day 과제 - ing
dongseon0 Nov 10, 2023
576d030
[황채원] 4주차 과제 - complete
uommou Nov 10, 2023
2cdbd85
Merge pull request #22 from GDSC-Ewha-5th/ChaiwonHwang
uommou Nov 10, 2023
d27e3bc
[임영서] 4주차 과제 -ing
yslim21 Nov 10, 2023
4ed2199
[이서현] 4주차 과제 - complete
seohyun-lee Nov 10, 2023
f5479f7
[이해원] 5주차 과제 - complete
Haewonny Nov 16, 2023
6c2fe15
[하윤지] 5주차 과제 - complete
yunji118 Nov 17, 2023
335ba13
[하윤지] 5주차 과제 - complete
yunji118 Nov 17, 2023
bb81895
Merge pull request #27 from GDSC-Ewha-5th/JeewonSeo
seojeewon Nov 17, 2023
5b5a091
Delete 이예지_3주차_과제.md
DeiLee0913 Nov 17, 2023
e6cb09d
Add files via upload
DeiLee0913 Nov 17, 2023
a6b215f
[양동선] 5주차 과제 - complete
dongseon0 Nov 17, 2023
11f2353
Add files via upload
dongseon0 Nov 17, 2023
4e191f4
[양동선] 5주차 과제 -complete
dongseon0 Nov 17, 2023
30a8672
Merge pull request #36 from GDSC-Ewha-5th/YangDongseon
dongseon0 Nov 17, 2023
6f86078
Update 양동선_5주차_과제.md
dongseon0 Nov 17, 2023
89c9df6
[서지원] 5주차 과제 -ing
seojeewon Nov 17, 2023
c8a2f85
[양동선] 5주차 과제 -complete
dongseon0 Nov 17, 2023
b5c06e8
S3Controller.java to S3Controller.java
dongseon0 Nov 17, 2023
8cd64b8
Delete 5주차 Sever S-Day directory
dongseon0 Nov 17, 2023
0b64523
Update 서지원_5주차_과제.md
seojeewon Nov 17, 2023
a48acf3
[서지원] 5주차 과제-complete
seojeewon Nov 17, 2023
ebccc3c
Merge pull request #42 from GDSC-Ewha-5th/JeewonSeo
seojeewon Nov 18, 2023
5024448
Merge pull request #35 from GDSC-Ewha-5th/LeeHaewon
Haewonny Nov 18, 2023
1e85c68
Merge pull request #33 from GDSC-Ewha-5th/JoongHyunKim
JoongHyun-Kim Nov 18, 2023
2eeb600
[이서현] 5주차 과제 - ing
seohyun-lee Nov 18, 2023
bd34917
[이서현] 5주차 과제 - complete
seohyun-lee Nov 18, 2023
48b6237
파일 위치 변경
seohyun-lee Nov 18, 2023
f5278a7
Merge pull request #38 from GDSC-Ewha-5th/LeeSeohyun
seohyun-lee Nov 18, 2023
5c3230d
[이서현] 5주차 과제 - complete
seohyun-lee Nov 18, 2023
0b7c002
Merge pull request #34 from GDSC-Ewha-5th/KimRina
ri-naa Nov 18, 2023
c2a885c
Merge pull request #39 from GDSC-Ewha-5th/LeeHaewon2
Haewonny Nov 18, 2023
3c8e791
Merge pull request #41 from GDSC-Ewha-5th/YangDongseon
dongseon0 Nov 18, 2023
e8b37f5
Merge pull request #37 from GDSC-Ewha-5th/LimYoungseo
yslim21 Nov 18, 2023
133f72a
[임영서] 5주차 과제 - complete
yslim21 Nov 18, 2023
737443e
[김중현] 5주차 과제 - complete
JoongHyun-Kim Nov 18, 2023
5fbb6a1
[김중현] 5주차 과제 - complete
JoongHyun-Kim Nov 18, 2023
9c2cb1a
[김중현] 5주차 과제 - complete
JoongHyun-Kim Nov 18, 2023
b0429eb
Rename S3Controller.java to S3Controller_JoongHyunKim.java
JoongHyun-Kim Nov 18, 2023
152721f
Rename application.yml to application_JoongHyunKim.yml
JoongHyun-Kim Nov 18, 2023
de57a53
Rename index.html to index_JoongHyunKim.html
JoongHyun-Kim Nov 18, 2023
8b0f06c
Merge pull request #40 from GDSC-Ewha-5th/LeeYeji
DeiLee0913 Nov 18, 2023
acd9b6d
[이예지] 5주차 과제 - complete
DeiLee0913 Nov 18, 2023
cddbe55
Delete 5주차 Server S-Day 과제/이예지_5주차_과제.md
DeiLee0913 Nov 18, 2023
29afdab
[이예지] 5주차 과제 - complete
DeiLee0913 Nov 18, 2023
52bf1d9
[황채원] 5주차 과제 - ing
uommou Nov 18, 2023
792a537
[황채원] 5주차 과제 - ing
uommou Nov 18, 2023
a59cbec
[황채원] 5주차 과제 - ing
uommou Nov 18, 2023
9d0a41f
[황채원] 5주차 과제 - complete
uommou Nov 18, 2023
7825899
[황채원] 5주차 과제 - complete
uommou Nov 18, 2023
d616ef9
[하윤지] 5주차 과제 - complete
yunji118 Nov 22, 2023
84bfd6e
Merge pull request #32 from GDSC-Ewha-5th/HaYunji
yunji118 Nov 22, 2023
334404c
[이해원] 6주차 과제 - complete
Haewonny Dec 16, 2023
4407df0
5주차 과제 충돌
yslim21 Dec 21, 2023
5d8f754
Merge branch 'main' into LimYoungseo
yslim21 Dec 22, 2023
b537efd
Merge pull request #44 from GDSC-Ewha-5th/LimYoungseo
yslim21 Dec 22, 2023
8e0494d
Revert "[임영서] 5주차 과제 - complete"
yslim21 Dec 22, 2023
1600298
Merge pull request #50 from GDSC-Ewha-5th/revert-44-LimYoungseo
yslim21 Dec 22, 2023
ac1f68a
Revert "Revert "[임영서] 5주차 과제 - complete""
yslim21 Dec 22, 2023
6be9cda
Merge pull request #51 from GDSC-Ewha-5th/revert-50-revert-44-LimYoun…
yslim21 Dec 22, 2023
2f6bbfe
Merge pull request #45 from GDSC-Ewha-5th/JoongHyunKim
JoongHyun-Kim Dec 22, 2023
9e682e3
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
9a019e9
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
a654369
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
ae44339
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
4c2a04e
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
d116904
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
fda67e5
[하윤지] 6주차 과제 - complete
yunji118 Dec 22, 2023
6f3b499
[임영서] 5주차 과제 -complete
yslim21 Dec 22, 2023
fd90bd9
Merge branch 'LimYoungseo' of https://github.com/GDSC-Ewha-5th/GDSC-S…
yslim21 Dec 22, 2023
563c214
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
24b5466
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
481f546
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
eb09584
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
eac5e2a
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
3c88338
[김중현] 6주차 과제 - complete
JoongHyun-Kim Dec 23, 2023
217e396
황채원_6주차_과제 - ing
uommou Dec 23, 2023
49ed343
Merge pull request #43 from GDSC-Ewha-5th/LeeSeohyun
seohyun-lee Dec 23, 2023
963f809
[이서현] 6주차 과제 - complete
seohyun-lee Dec 23, 2023
2aade77
Merge pull request #53 from GDSC-Ewha-5th/LimYoungseo
yslim21 Dec 23, 2023
80009d2
[황채원] 6주차 과제-ing
uommou Dec 23, 2023
db46e7d
Merge pull request #48 from GDSC-Ewha-5th/ChaiwonHwang
uommou Dec 23, 2023
74b5fb0
[양동선]Delete 5주차 Sever S-Day 과제 directory
dongseon0 Dec 24, 2023
e50e70f
Merge pull request #52 from GDSC-Ewha-5th/HaYunji
yunji118 Dec 25, 2023
e2faeee
Merge pull request #49 from GDSC-Ewha-5th/LeeHaewon
Haewonny Dec 25, 2023
23bc2ce
Merge pull request #57 from GDSC-Ewha-5th/LeeSeohyun
seohyun-lee Dec 26, 2023
82cfa0a
Merge pull request #55 from GDSC-Ewha-5th/JoongHyunKim
JoongHyun-Kim Jan 1, 2024
07f80b5
[하윤지] 7주차 과제 - complete
yunji118 Feb 28, 2024
bb67e1d
[하윤지] 8주차 과제 - ing
yunji118 Feb 29, 2024
b53c545
[이서현] 7주차 과제 - complete
seohyun-lee Feb 29, 2024
0545fb1
[하윤지] 8주차 과제 - complete
yunji118 Feb 29, 2024
1d6e0d2
[하윤지] 8주차 과제 - complete
yunji118 Feb 29, 2024
83643dc
[하윤지] 7주차 과제 - complete
yunji118 Feb 29, 2024
8a8c679
[이서현] 8주차 과제 - complete
seohyun-lee Feb 29, 2024
e161e1c
Merge pull request #61 from GDSC-Ewha-5th/LeeSeohyun
seohyun-lee Mar 23, 2024
d10006c
Merge pull request #60 from GDSC-Ewha-5th/HaYunji
yunji118 Mar 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions 2주차 Server S-Day 과제/황채원_2주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 2주차 과제

## 1. MobaXterm에서 Bastion 접속하기

![Bastion](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/b0280fba-c5d3-4a14-8f68-d4b12de1f701)

Bastion 서버의 ip 주소는 위 사진과 같다.

![MobaXterm_Bastion](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/c2f84134-a6bb-488c-b4c3-9f860a97da0a)


MobaXterm에서 Bastion 서버로 접속한 사진


## 2. Bastion에서 private 서버 접속하기

키 권한 수정없이 바로 private 서버에 접속하려고 하면 접속이 거부되므로, 키 권한 설정을 600으로 바꿔주어야 한다.

리눅스 명령어 `sudo chmod 600 [키 이름]`을 써주면 되는데...

*어디에 쓰지?*

윈도우 cmd 창에서는 해당 명령어를 사용할 수 없기 때문에 번거롭게 보안 설정을 편집해주어야 한다. 개발자의 자아가 거부하는 일이다.

구글링 결과 키의 사용을 위해서는 세 가지 시도를 해볼 수 있다는 것을 알 수 있었다.

### 1. 로컬에서 키 권한 수정하기

위에서 언급했다시피 chmod는 윈도우 cmd에서 사용할 수 없고, 보안 설정을 하나하나 건드리는 것은 개발자의 자아가 거부하는 일이었다.

### 2. 바스티온 호스트에서의 SSH 키 사용

바스티온 서버에서 다른 인스턴스로 접속하기 위해 키를 사용해야 하는 경우, 키 파일을 로컬에서 바스티온 서버로 전송하여 사용할 수 있다.

그러나 이는 민감한 키 파일이 바스티온 서버에 전송되는 것이므로, 일반적으로 권장되지 않는 보안관행이라고 한다.

### 3. SSH Agent Forwarding 사용

보안을 위해 키 파일을 바스티온 서버에 올리는 것 대신 SSH Agent Forwarding을 사용할 수 있다고 한다. 이 기능은 로컬의 SSH 키를 바스티온 서버를 거쳐 다른 EC2 인스턴스에 사용할 수 있도록 하는 기능이다.

![allow_agent_forwarding](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/fd78b2d0-e6af-40dd-ae67-869f5bef2944)


이에 따라 세션을 생성할 때 Allow agent forwarding을 체크하고 생성해보았다.

![nosuchfileordir](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/58c36964-fcd0-4504-a419-18264ace01a2)


그럼에도 키 파일의 권한을 수정할 수는 없었다.

**그렇다면 무슨 방법으로 키 권한을 수정해서 private 인스턴스에 접속할 수 있는거지?**

김 빠지게도 답은 2번이었다.

로컬의 키를 바스티온 서버에 올리고, mobaXterm에서 chmod을 사용하여 키의 권한을 변경해준다.
그리고 private 서버의 ip주소로 접속해주면 된다.

![Instance1](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/448e94f2-e3de-4314-8623-55cfe161b0b6)
![MobaXterm_Instance1](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/90598552/cbb7e3e4-9814-4175-a45c-59f20c718229)
Binary file added 3주차 Server S-Day 과제/img1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added 3주차 Server S-Day 과제/img2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions 3주차 Server S-Day 과제/김중현_3주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
## 3주차 서버 세션 과제
```md
1. Bastion Host로 Web EC2에 접근하기
2. Private 서브넷은 NAT와,Public 서브넷은 IGW와 연결하기
3. Web EC2에는 nginx를 설치하고, 각 서버에 서로 다른 정적 파일 넣기
4. ALB의 DNS를 통해서 Web EC2에 접근한 후, 새로고침을 할 때마다 페이지가 달라지는 것을 확인하기
```
→ 결과적으로, 아래 이미지와 같은 아키텍쳐를 구성한다. <br>
<img width="500" alt="스크린샷 2023-11-03 오후 1 10 58" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/80838501/6a64e69f-8c2e-490f-b6c9-881758464914">

<br>

## 과제 인증
1. Bastion 통해 Private IP를 가진 EC2에 SSH 연결
<img width="1129" alt="스크린샷 2023-11-03 오후 3 07 00" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/80838501/d3a98ed0-7b8c-450e-9486-082e722e1bd8">

2. 들어간 Web EC2에서 nginx 설치
<img width="1145" alt="스크린샷 2023-11-03 오후 3 29 53" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/80838501/a245418a-eb44-4e81-9da4-1789cc04aada">

3. 새로고침 하면 서로 다른 HTTP 웹 페이지가 보이는 모습 <br>
[영상 인증](https://drive.google.com/file/d/1V4kFMS2ts3NRBcdclOURHFO3iaroivK_/view?usp=sharing)
<br>

## 과제 해결 과정
1. 2개의 가용영역(2a, 2c)에 `public subnet`, `private subnet`을 각각 생성한다.
2. `IGW`를 생성해 `VPC`, `public subnet`과 연결한다.
3. `public RT`, `private RT`를 생성해 각각 `public subnet(2개)`, `private subnet(2개)`과 연결한다.
4. 2개의 private subnet에 EC2 instance(web1, web2)를 각각 생성한다.
5. 네트워크 매핑을 public subnet 두 개로 해 ALB를 생성한다.
6. NAT gateway를 생성하고, private RT에 0.0.0.0/0 → nat-gw를 향하도록 설정한다. <br>
→ 주의! 실습 종료 후 반드시 Elastic IP release해주기!
7. `Bastion host`를 통해 `web1`, `web2`에 private IP로 ssh 접속한 후, `nginx`를 설치한다.
```sh
sudo yum update -y # 업데이트 실시
sudo yum install nginx # yum을 이용한 Apache 설치
sudo systemctl start nginx # nginx 시작
sudo systemctl enable nginx # nginx 웹 서버가 시스템이 부팅할 때마다 시작되도록 함
sudo systemctl status nginx # 상태 확인
```
8. 두 개의 index.html 파일을 `local` → `bastion host`로 전송하고, `bastion host`→ `web1`과 `web2`로 각각 전송한다. 그 후, `web1`과 `web2`의 `/usr/share/nginx/html/` 경로에 있는 `index.html` 파일을 대체한다.
```sh
sudo mv index_1.html /usr/share/nginx/html/index.html
```
```sh
sudo mv index_2.html /usr/share/nginx/html/index.html
```
9. `Load Balancer`의 DNS를 통해 `Web EC2`에 접근한다.
<br>

## 참고
- [Your requested instance type is not supported in your requested Availability Zone(요청한 인스턴스 유형이 요청된 가용 영역에서 지원되지 않습니다)](https://repost.aws/ko/knowledge-center/ec2-instance-type-not-supported-az-error)
- [로드 밸런서 권장 보안그룹 설정](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-update-security-groups.html)
6 changes: 6 additions & 0 deletions 3주차 Server S-Day 과제/서지원_3주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## SampleController.class의 코드
![image](https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/63919973/9096bb56-75c3-48fa-88a6-1fa090c37ffb)
- spring initializr로 프로젝트 생성
- index.html, members.html, newMember.html을 resources/templates에 넣음
- @GetMapping, @RequestParam 어노테이션 사용해서 컨트롤러 작성
- 동영상 주소: https://drive.google.com/file/d/1J_KLi7vz8SaGJqjZWxo-KK3agNBR98_2/view?usp=sharing
111 changes: 111 additions & 0 deletions 3주차 Server S-Day 과제/양동선_3주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Spring 과제

## 과정 1 : 인텔리제이 설치 및 jdk 17 설치, spring initializer를 이용하여 프로젝트 다운
- https://gymdev.tistory.com/72를 참고하여 환경변수 설정함.
#### 난관 : JAVAVIRTUALMACHINE 폴더에 jdk폴더를 넣고 싶어서 맥의 '폴더로 이동'기능을 사용!
- https://support.apple.com/ko-kr/guide/mac-help/mchlp1236/mac
- 이런 것도 있구나. 맥이란 해도해도 신기해요! 언제쯤 맥OS를 점령할지...



## 과정 2 : 코드 작성
### 난관 1 : symbol not find 문제
--> 필요한 라이브러리를 import했더니 'web'이라는 symbol를 찾지 못했다고 뜬다.
==> 해결 : https://www.goodsource.co.kr/125 참고
- build.grandle의
implementation 'org.springframework.boot:spring-boot-starter'를
implementation 'org.springframework.boot:spring-boot-starter-web'으로 수정하고 빌딩하고 실행!


### 난관 2 : java: cannot find symbol
이번엔 email symbol을 찾지 못하고 에러를 낸다.
<img width="611" alt="스크린샷 2023-11-03 오후 11 37 56" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/9c0bde23-b9b8-48a5-986f-71382695d518">

==> 해결 : 당연함... 내가 email 선언 안해줌... String email을 추가해줬다! ㅎㅎ
해결~


### 난관 3 : localhost:8080 을 실행했으나 메인 페이지가 나타나지 않았다.
<img width="631" alt="스크린샷 2023-11-03 오후 11 44 20" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/23b76048-ced5-4ea0-8ed9-d41077fcc3ce">

- 참고 : https://devmango.tistory.com/97


- 해결 과정 :난관4 & 난관5


### 난관 4 : 분명 환경변수 설정을 다 해줬었는데 $java --version 을 해보니 jdk 21버전으로 뜬다.
- 해결: jdk 21 버전을 삭제해줬다!
- 삭제하지 않고 default jdk를 17로 바꿀 수는 없을까 해서 vim ~/.zshrc으로 zshrc 한 번 건드렸다가 터미널이 고장나길래 취소!

<img width="267" alt="스크린샷 2023-11-07 오후 2 34 55" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/67193252-10c5-432f-8bb6-03341118f354">

```
$ sudo rm -rf temurin-21.jdk
```

-참고 : https://ifuwanna.tistory.com/247



### 난관 5 : 갑자기 application이 안돌아간다! 8080포트가 이미 사용 중..
<img width="950" alt="스크린샷 2023-11-07 오후 2 36 10" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/d48b3ebf-fdef-4181-b772-13bc494de8d3">

오케이 해결해주마

<img width="365" alt="스크린샷 2023-11-07 오후 2 41 51" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/008f452b-6e20-4c14-a801-223195ab64d7">

- 8080포트를 죽여준다~ 해결!


<img width="611" alt="스크린샷 2023-11-07 오후 2 42 37" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/c4440123-f27b-4eb4-8b44-b0e93f73da95">


드디어 되는구나~~ʕ”̮ॽु⋆⁺₊⋆ ♡̷̷̷




---
SampleController.java 소스 코드 :

```
package mvcstudy.mvcstudy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;


@Controller
public class SampleController {
@GetMapping("/")
public String sample(Model model) {
model.addAttribute("description",
"메인 페이지 입니다.");
return "index";
}
@GetMapping("/members")
public String members(Model model) {
model.addAttribute("member1", "Yang");
model.addAttribute("member2", "Dong");
model.addAttribute("member3", "Seon");
return "members";
}

@GetMapping("/members/new")
public String showNewMember(@RequestParam(name=
"name", defaultValue = "Guest")String name, String email,
Model model){
model.addAttribute("name", name);
model.addAttribute("email", email);
return "newMember";
}
}
```

<img width="1384" alt="스크린샷 2023-11-04 오전 12 13 34" src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/78548833/7f5297bd-88b2-48e6-ad62-58bfd13296b9">



47 changes: 47 additions & 0 deletions 3주차 Server S-Day 과제/이서현_3주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
### 3주차 Server S-Day 과제 - 이서현
> 과제(spring): 스프링 프로젝트 생성, 주어진 HTML(index.html, members.html, newMember.html)을 프로젝트에 포함시키기, SampleController 파일을 만들고 코드 작성

* SampleController.class의 소스 코드 :
```
package gdscstudy.serverstudy3.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class SampleController {
@GetMapping("/") //root url 경로
public String home(Model model){
model.addAttribute("description", "메인 페이지입니다.");
//key-value 쌍을 모델에 추가 (attributeName "des...", attributeValue "메인...")
return "index"; //html 파일명
}

@GetMapping("/members") //url 경로
public String showMembers(Model model){ //Model은 데이터를 View로 전달하기 위해 사용됨
model.addAttribute("member1", "Seohyun Lee");
model.addAttribute("member2", "Haeseung Jeon");
model.addAttribute("member3", "Hyuna Kim");
return "members"; //html 파일명
}

@GetMapping("/members/new") //url 경로
public String showNewMember(@RequestParam(name = "name", defaultValue = "guest") String name,
//@RequestParam은 쿼리 스트링 방식으로 url을 통해 파라미터로 값을 받아옴
//"?name=value1&email=value2": query string(쿼리 파라미터), '&' 연산자 사용해 쿼리 스트링 여러개
//"name"은 쿼리 파라미터의 key, name 매개변수에 value 받아옴. "guest"은 value 없을 경우 기본값.
String email, //RequestParam 생략 (자동으로 데이터 파싱), email 매개변수에 value 받아옴
Model model){
model.addAttribute("name", name); //"name"은 View의 변수 이름(key), name에 value 있음. 모델에 추가
model.addAttribute("email", email); //"email"은 View의 변수 이름(key), email에 value 있음. 모델에 추가
return "newMember"; //html 파일명
}
}
//동영상 : https://drive.google.com/file/d/1kaPrxyZM4b8yTSnxNVRAOqSYwahvLMST/view?usp=sharing
//참고자료 :
// [Spring] @RequestParam 사용법 https://dangdangee.tistory.com/entry/Spring-RequestParam-%EC%82%AC%EC%9A%A9%EB%B2%95
// [Spring] @RequestParam - 요청 파라미터 데이터 파싱하기 https://amy-it.tistory.com/108
// [Spring] Spring MVC: Controller에서 parameter를 받아오는 방법 https://ooeunz.tistory.com/99
```
87 changes: 87 additions & 0 deletions 3주차 Server S-Day 과제/이해원_3주차_과제.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
## 📒 3주차 과제

1. [Cloud 과제](#cloud-과제)

2. [Spring 과제](#spring-과제)

---
## Cloud 과제
> 1. Web EC2 2개에 `nginx1`를 설치하고, 로드 밸런서의 DNS를 통해서 웹 서버에 접근
> 2. 새로고침을 할 때마다 페이지가 달라지는 것을 확인하기

### 과제 인증
1. `Bastion`을 통해서 Private IP를 가진 `EC2`에 SSH 연결
<p align="center">
<img src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/94354545/af767b08-72c9-438a-b1be-a665a1fd6f64" width="650"/>
</p>

2. 1에서 접속한 Web EC2에서 `nginx`를 설치
<p align="center">
<img src="https://github.com/GDSC-Ewha-5th/GDSC-Server-5th/assets/94354545/1203af37-3491-4bf9-8e9e-ae905c218746" width="650"/>
</p>

3. [영상 인증](https://drive.google.com/file/d/1722uMrXEpy8Oira_eiIBXLjRk4TJNUqR/view?usp=sharing)


### 과제를 해결한 방법
1. 서로 다른 AZ 2개에 `public subnet`, `private subnet`을 각각 하나씩 생성한다. <br>
(💡 public subnet은 **IGW가 연결**된 서브넷, private subnet은 **IGW가 연결되지 않은** 서브넷)
2. 1에서 생성한 public subnet 2개는 `Public RT` 라우팅 테이블에 연결하고, private subnet 2개는 `Private RT` 라우팅 테이블에 연결한다.
3. 각 private subnet에 (서로 다른 AZ) `t2.micro spot` 타입 `EC2`를 생성한다. (총 2개) <br>
→ `t2.micro` 타입이 지원되는 가용 영역은 다음 코드를 AWS EC2 콘솔에 입력하면 알 수 있다.
```bash
aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=t2.micro --region ap-northeast-2 --output table
```
4. 보안그룹 규칙에서 **HTTP 프로토콜을 허용**한다.
5. `Load Balancer`를 public subnet에 생성한다.
6. `NAT gateway`를 public subnet에 생성 후, `Private RT`에서 `0.0.0.0/0` 트래픽이 `nat`로 향하도록 설정한다.
7. `Bastion`을 통해서 `web1`과 `web2` EC2에 Private IP로 SSH 연결한 후, `nginx`를 설치한다.
```bash
sudo yum install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
```
8. `web1`과 `web2`의 `/usr/share/nginx/html/` 경로에 있는 `index.html` 파일을 수정한다.
9. `Load Balancer`의 DNS를 통해 `Web EC2`에 접근한다.
10. NAT gateway 삭제 후에는 꼭! **Elastic IPs를 릴리스**해야 한다 ‼️
---
## Spring 과제
> 1. 사용자는 `/(루트)` 경로, `/members` 경로, `/members/new` 경로로 접근 가능
> 2. 각 경로로 접근했을 때 view에 각각 데이터가 전달되는 것을 확인하기

### 과제 인증
```java
/* 영상 인증 : https://drive.google.com/file/d/1FsOlrfv4vV6PJr_hAyv43tuQ2Zbzpc6j/view?usp=sharing */
package GDSCsever.springstudy.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class SampleController {
@GetMapping("/")
public String sample(Model model) {
model.addAttribute("description", "메인 페이지 입니다."); // key:value 구조
return "index"; // resources:templates/ + {viewname} + .html 실행
}

@GetMapping("/members")
public String members(Model model) {
model.addAttribute("member1", "Haewon Lee"); // key:value 구조
model.addAttribute("member2", "GDSC");
model.addAttribute("member3", "EWHA");
return "members"; // resources:templates/ + {viewname} + .html 실행
}

@GetMapping("/members/new")
public String showNewMember(@RequestParam(name="name", defaultValue="Guest") String name, @RequestParam("email") String email,Model model) {
model.addAttribute("name", name); // 쿼리 파라미터로 name 입력
model.addAttribute("email", email); // 쿼리 파라미터로 email 입력
return "newMember"; // resources:templates/ + {viewname} + .html 실행
}

}
```
Loading