| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- AWS
- Next
- 코딩테스트
- react-native
- 광고 id
- 오퍼월
- kotlin
- TypeScript
- nginx
- 티스토리챌린지
- spring boots
- Jenkins
- React
- EC2
- docker
- nuxt
- css
- chrome
- python
- toml
- JavaScript
- 백준
- 파이썬
- 오블완
- Android
- NanoHttpd
- Express
- 개발
- 코테
- it
- Today
- Total
내맘대로 개발일지
[AWS] 아무것도 모르는데 EC2 + Docker + MariaDB + nginx 본문
진짜 아무것도 모른다.
개발만 해봤지 인프라 처음해본다.
곁눈질도 안해봤고 해주는대로 떠먹어서 개발만 해봤다.
근데 이번에 기회가 생겨서 처음부터 해보려고 하는데 진짜 아무것도 몰라서 처음부터 끝까지
기록을 좀 해놓으려고 한다. 해당 페이지에서 다 해놓으려고 한다.
나처럼 아무것도 모르면 따라하면 될것같다 ㅎ
1. EC2 생성하기


키체인은 없으면 새 키 페어 생성을 통해서 만들면 된다.


2. 접속하기
chmod 400 /{경로}/*.pem
이건 반드시 해줘야하는데 보안상 위험하니까 400 으로 막아버려주고
경로를 입력할때는 중괄호는 빼고 ... 입력하면된다 ㅎㅎ
키는 진짜 절대 무슨일이 있어도 잃어버리면 안되니까 모아놓도록 하자
ssh -i /{경로}/{키체인이름}.pem {사용자이름}@{자동 할당된 IP 주소 퍼블릭 IP}
EC2 만들고 상세 페이지로 넘어가면
여기서 필요한 정보들은 다 보일꺼다 맞춰서 입력해주면 접속완료!
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
접속완료하면 이런 귀여운 새가 마주해준다.
이 다음부터가 걱정되는건데 힘내서 함 해보자고
3. 깃 설치하기
깃 레포지토리를 클론해와야하니까 먼저 깃 설치해주시고
sudo yum install git -y
나는 비공개 레포지토리라서 ssh 접속이 필요해서 키 만들어줘야한다 :(
ssh-keygen -t ed25519 -C "이메일"
Enter file in which to save the key (/home/ec2-user/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ec2-user/.ssh/id_ed25519
Your public key has been saved in /home/ec2-user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:...
The key's randomart image is:
+--[ED25519 256]--+
| .o . oE|
| o. . .o..|
| . oo . o .. |
| o+.= . +.. |
| . .+=o S . o =. |
| =.=..o o = ..|
|.=.. o. o .|
|+ .o. o |
| .+B*. .|
+----[SHA256]-----+
대충 엔터 갈겨주면 키가 생성된다.
그다음 키를 확인해야 등록하니까
cat ~/.ssh/id_ed25519.pub
해주면 이제 키를 확인할 수 있는데 이거 복사해서 깃에 등록해주고
클론 해주면 레포지토리 복사는 끝
3. MariaDB 설치하기
sudo yum install mariadb105-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb
세개의 명령어를 입력해주면 mariaDB 설치는 완료
sudo mysql -u root
입력했을 때
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.5.29-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
다음과 같이 뜬다면 일단 설치하고 접속하는거 까지는 완료된 상태이다.
나갈때는 \q 헤헤 ..
원격으로 들어가기 위해서 user 설정이 필요한데
CREATE USER 'root'@'{IP}' IDENTIFIED BY '{패스워드}';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'{IP}' WITH GRANT OPTION;
FLUSH PRIVILEGES;
이렇게 하면 생성 완료
4. PM2 설치
이제 pm2 를 설치해야하는데 애는 Node 가 필요해서 먼저 설치해줘야한다
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs
sudo npm install -g pm2
일단 설치만 해놓고 추가적인 설정은 Docker 띄우고 나서
마저 진행하도록 하자
5. Doker 설치
sudo yum update -y
sudo yum install -y docker
sudo systemctl enable --now docker
sudo groupadd docker # docker 그룹이 없는 경우 만듦
sudo usermod -aG docker ec2-user
sudo mkdir -p /usr/libexec/docker/cli-plugins/
sudo curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) \
-o /usr/libexec/docker/cli-plugins/docker-compose
sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose
docker compose version
여기까지하면 이제 필요한 설치는 다 한것같고 ..
두근두근 실제 띄우기 시간이다.
6. 컨테이너 띄우기
우선 나는 서버가 Java Spring 이라서 JDK 를 설치해줘야한다.
sudo dnf install -y java-17-amazon-corretto
자바버전은 자신의 환경에 맞게 설치를 해주고
dokerfile 을 작성해주면된다.
chmod +x ./gradlew
./gradlew clean bootJar -x
하면 이제 JAR 빌드파일을 만들어주고나서
sudo docker build -t {클론받은폴더명} .
그다음에 이미지 빌드해주면
[internal] load build definition from Dockerfile
...
naming to docker.io/library/{프로젝트명}
뭐 이런식으로 쭉 실행된다.
docker run -d --name {컨테이너명} \
-p 8080:8080 \
-e JAVA_TOOL_OPTIONS="-XX:MaxRAMPercentage=70 -XX:+UseContainerSupport -XX:+UseG1GC" \
{프로젝트명}
이렇게하면 이제 도커가 뜨는데 성공한다.
docker ps
를 실행해보면 내가 만든 컨테이너가 띄워져있으면 성공!
7. nginx 설치하기
이제 도메인을 nginx 를 설치하고 띄울 준비를 해보자
sudo dnf install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx
설치를 완료하고나면
sudo nano /etc/nginx/conf.d/bsms-backend.conf
입력하고나면 이제 .conf 입력할 수 있게 변하는데
server {
listen 80;
server_name _;
location /api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 120s;
proxy_connect_timeout 5s;
proxy_send_timeout 120s;
}
location = / {
return 200 "OK - Nginx is running\n";
add_header Content-Type text/plain;
}
}
작성하고
sudo nginx -t
sudo systemctl reload nginx
저장하면 기본적인 설정은 완료되는 듯 하다.
이제 curl 로 확인해보면 정상적인 응답이 내려오는지 확인해볼수도 있고
퍼블릭 IP 로 들어가면 OK - Nginx is running 뜨면 엔진엑스 설정은 끝난듯하다.
'IT' 카테고리의 다른 글
| [Jenkins] EC2 안에서 설치하고 실행하기 (0) | 2025.11.12 |
|---|---|
| [EC2] 안에서 nginx 사용하기 (0) | 2025.11.12 |
| Android App Icon 생성 (0) | 2024.07.23 |
| [GIT] fatal: protocol error: bad pack header (1) | 2024.07.23 |
| [크롬 인스펙터] 모바일 웹 디버깅 하는 방법 (1) | 2024.04.03 |