본문 바로가기
Backend

AWS EC2로 배포하기 (feat. WSL)

by 희디 2025. 3. 2.

백엔드 환경 : node.js 

개발 희망 분야인 Spring은 다음에 해보는걸로...

몰입캠프 마지막 주차때 백엔드 배포까지 하고 CI/CD 성공하고 연결까지 하고 싶었는데 안타깝게,,

결국 로컬로 연결해서 아쉽기에 끝나고나서 팀원에게 서버 배포하겠다고 허락을 맡고 더 디벨럽하기로 결정!! 

혼자 해결해나가면서 기록 남기기용이라 깔끔하지 못한점.. 다음 게시글엔 더 깔끔하게 (+ 부족한 공부 해야함)

 

 

백엔드 API 코드를 배포하기 위해서 CI/CD를 구축하고자 했으나(yaml 파일 작성하고 뭔가했는데 프로젝트와 연동이 안되어 있어) ssh에 접근했을 때 아무것도 안 떠서 다시 시작!! 

 

우분투 (Linux)를 보통 쓰기 때문에 나는 WSL를 설치하고 사용했다.  (윈도우 유저이기 때문) 

그런데 WSL을 처음 깔면 아무것도 안 뜬다! 내 컴퓨터랑 연동이 안 되어 있어서 일단 먼저 key.pem 파일을 우분투 환경으로 가져오기가 필요(WSL).

PowerShell 관리자 권한에서 아래와 같은 명령어를 친다. (파워쉘은 내 컴퓨터 정보를 가지고 있는 프롬프트)

PS C:\WINDOWS\system32> cp C:\Users\Heeju\Downloads\madcamp_wk4.pem \\wsl$\Ubuntu\home\heeju\madcamp_wk4.pem

[형식]
cp 현재 컴퓨터에 있는 pem 파일 경로 \\wsl$\Ubuntu\home\ubuntu사용자이름\pem파일 이름

그럼 파일이 없다가 새로 생긴다~!!

 

그리고 권한을 Ubuntu(WSL로 설치한)에서 아래와 같이 바꿔준다.

읽기만 가능 상태여야 SSH 인증 오류가 발생하지 않기 때문!!

400으로 해준다. 

(Linux 권한 설정 방법 공부한 url - /* 추가할 예정 */ )

heeju@DESKTOP-LJNQ8LO:~$ chmod 400 ~/madcamp_wk4.pem

그러면 권한이 아래와 같이 바뀐걸 확인할 수 있다. 

 

성공을 하면 아래와 같이 접속 성공 화면이 뜬다!

 

heeju@DESKTOP-LJNQ8LO:~$ ssh -i ~/madcamp_wk4.pem ubuntu@13.124.6.237

기본적으로 Amazon Linux 2의 경우 ec2-user 사용하지만,
Ubuntu라면 ubuntu 계정을 사용해야 함.

ssh로 접속을 해준다. 

구글링했을땐 사람들이 ec2-user@이렇게 써서 했는데 이런 에러가 떠서 ubuntu로 바꿨더니 성공~~

 

<--- 에러 기록 --->  Nginx 서비스가 제대로 재시작되지 않음 

ubuntu@ip-10-0-1-187:~$ sudo apt update && sudo apt upgrade -y
Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-backports InRelease
Hit:4 https://deb.nodesource.com/node_18.x nodistro InRelease
Hit:5 http://security.ubuntu.com/ubuntu noble-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
68 packages can be upgraded. Run 'apt list --upgradable' to see them.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following upgrades have been deferred due to phasing:
  ubuntu-kernel-accessories ubuntu-minimal ubuntu-server ubuntu-standard
The following packages will be upgraded:
  bsdextrautils bsdutils eject fdisk kmod libaio1t64 libattr1 libblkid1 libbsd0 libc-bin libc6 libcap2 libcap2-bin libdrm-common
  libdrm2 libdw1t64 libelf1t64 libfdisk1 libgmp10 libgpg-error-l10n libgpg-error0 libidn2-0 libkmod2 libmd0 libmount1 libmpfr6
  libnghttp2-14 libnl-3-200 libnl-genl-3-200 libnl-route-3-200 libnss-systemd libpam-cap libpam-systemd libpcre2-8-0
  libperl5.38t64 libpolkit-agent-1-0 libpolkit-gobject-1-0 libselinux1 libsmartcols1 libsqlite3-0 libsystemd-shared libsystemd0
  libudev1 libunistring5 libunwind8 libuuid1 locales mount perl perl-base perl-modules-5.38 polkitd python-apt-common python3-apt
  python3-distupgrade systemd systemd-dev systemd-resolved systemd-sysv ubuntu-release-upgrader-core udev util-linux uuid-runtime
  xfsprogs
64 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
3 standard LTS security updates
Need to get 25.7 MB/33.9 MB of archives.
After this operation, 642 kB of additional disk space will be used.
Get:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 bsdutils amd64 1:2.39.3-9ubuntu6.2 [95.2 kB]
Get:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libperl5.38t64 amd64 5.38.2-3.2build2.1 [4867 kB]
Get:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 perl amd64 5.38.2-3.2build2.1 [231 kB]
Get:4 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 perl-base amd64 5.38.2-3.2build2.1 [1823 kB]
Get:5 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 perl-modules-5.38 all 5.38.2-3.2build2.1 [3110 kB]
Get:6 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 util-linux amd64 2.39.3-9ubuntu6.2 [1127 kB]
Get:7 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 mount amd64 2.39.3-9ubuntu6.2 [118 kB]
Get:8 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcap2 amd64 1:2.66-5ubuntu2.1 [30.1 kB]
Get:9 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libnss-systemd amd64 255.4-1ubuntu8.5 [159 kB]
Get:10 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 systemd-dev all 255.4-1ubuntu8.5 [104 kB]
Get:11 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libblkid1 amd64 2.39.3-9ubuntu6.2 [123 kB]
Get:12 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 kmod amd64 31+20240202-2ubuntu7.1 [101 kB]
Get:13 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libkmod2 amd64 31+20240202-2ubuntu7.1 [51.7 kB]
Get:14 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpcre2-8-0 amd64 10.42-4ubuntu2.1 [227 kB]
Get:15 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libselinux1 amd64 3.5-2ubuntu2.1 [79.7 kB]
Get:16 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 systemd-resolved amd64 255.4-1ubuntu8.5 [296 kB]
Get:17 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libsystemd-shared amd64 255.4-1ubuntu8.5 [2069 kB]
Get:18 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libsystemd0 amd64 255.4-1ubuntu8.5 [433 kB]
Get:19 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 systemd-sysv amd64 255.4-1ubuntu8.5 [11.9 kB]
Get:20 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpam-systemd amd64 255.4-1ubuntu8.5 [235 kB]
Get:21 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 systemd amd64 255.4-1ubuntu8.5 [3471 kB]
Get:22 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 udev amd64 255.4-1ubuntu8.5 [1874 kB]
Get:23 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libudev1 amd64 255.4-1ubuntu8.5 [175 kB]
Get:24 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libmount1 amd64 2.39.3-9ubuntu6.2 [134 kB]
Get:25 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libuuid1 amd64 2.39.3-9ubuntu6.2 [35.5 kB]
Get:26 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libfdisk1 amd64 2.39.3-9ubuntu6.2 [146 kB]
Get:27 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libsmartcols1 amd64 2.39.3-9ubuntu6.2 [65.2 kB]
Get:28 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 uuid-runtime amd64 2.39.3-9ubuntu6.2 [33.1 kB]
Get:29 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libattr1 amd64 1:2.5.2-1build1.1 [11.4 kB]
Get:30 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgmp10 amd64 2:6.3.0+dfsg-2ubuntu6.1 [253 kB]
Get:31 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgpg-error-l10n all 1.47-3build2.1 [8146 B]
Get:32 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgpg-error0 amd64 1.47-3build2.1 [70.1 kB]
Get:33 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libmd0 amd64 1.1.0-2build1.1 [27.0 kB]
Get:34 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libunistring5 amd64 1.1-2build1.1 [536 kB]
Get:35 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libidn2-0 amd64 2.3.7-2build1.1 [66.2 kB]
Get:36 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 eject amd64 2.39.3-9ubuntu6.2 [26.3 kB]
Get:37 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libbsd0 amd64 0.12.1-1build1.1 [41.2 kB]
Get:38 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpam-cap amd64 1:2.66-5ubuntu2.1 [12.4 kB]
Get:39 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libcap2-bin amd64 1:2.66-5ubuntu2.1 [34.2 kB]
Get:40 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdw1t64 amd64 0.190-1.1build4.1 [261 kB]
Get:41 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libelf1t64 amd64 0.190-1.1build4.1 [57.5 kB]
Get:42 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libsqlite3-0 amd64 3.45.1-1ubuntu2.1 [701 kB]
Get:43 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 python-apt-common all 2.7.7ubuntu4 [20.4 kB]
Get:44 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 python3-apt amd64 2.7.7ubuntu4 [169 kB]
Get:45 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 bsdextrautils amd64 2.39.3-9ubuntu6.2 [73.9 kB]
Get:46 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm-common all 2.4.122-1~ubuntu0.24.04.1 [8406 B]
Get:47 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm2 amd64 2.4.122-1~ubuntu0.24.04.1 [40.6 kB]
Get:48 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libnghttp2-14 amd64 1.59.0-1ubuntu0.2 [74.3 kB]
Get:49 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libnl-route-3-200 amd64 3.7.0-0.3build1.1 [189 kB]
Get:50 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libnl-genl-3-200 amd64 3.7.0-0.3build1.1 [12.2 kB]
Get:51 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libnl-3-200 amd64 3.7.0-0.3build1.1 [55.7 kB]
Get:52 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 ubuntu-release-upgrader-core all 1:24.04.26 [27.5 kB]
Get:53 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 python3-distupgrade all 1:24.04.26 [125 kB]
Get:54 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 fdisk amd64 2.39.3-9ubuntu6.2 [121 kB]
Get:55 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libaio1t64 amd64 0.3.113-6build1.1 [7210 B]
Get:56 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libmpfr6 amd64 4.2.1-1build1.1 [353 kB]
Get:57 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 polkitd amd64 124-2ubuntu1.24.04.2 [95.2 kB]
Get:58 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpolkit-agent-1-0 amd64 124-2ubuntu1.24.04.2 [17.4 kB]
Get:59 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpolkit-gobject-1-0 amd64 124-2ubuntu1.24.04.2 [49.1 kB]
Get:60 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 libunwind8 amd64 1.6.2-3build1.1 [55.3 kB]
Get:61 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu noble-updates/main amd64 xfsprogs amd64 6.6.0-1ubuntu2.1 [901 kB]
Fetched 25.7 MB in 0s (70.2 MB/s)
Extracting templates from packages: 100%
Preconfiguring packages ...
(Reading database ... 77038 files and directories currently installed.)
Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking bsdutils (1:2.39.3-9ubuntu6.2) over (1:2.39.3-9ubuntu6.1) ...
Setting up bsdutils (1:2.39.3-9ubuntu6.2) ...
(Reading database ... 77038 files and directories currently installed.)
Preparing to unpack .../libperl5.38t64_5.38.2-3.2build2.1_amd64.deb ...
Unpacking libperl5.38t64:amd64 (5.38.2-3.2build2.1) over (5.38.2-3.2build2) ...
Preparing to unpack .../perl_5.38.2-3.2build2.1_amd64.deb ...
Unpacking perl (5.38.2-3.2build2.1) over (5.38.2-3.2build2) ...
Preparing to unpack .../perl-base_5.38.2-3.2build2.1_amd64.deb ...
Unpacking perl-base (5.38.2-3.2build2.1) over (5.38.2-3.2build2) ...
Setting up perl-base (5.38.2-3.2build2.1) ...
(Reading database ... 77038 files and directories currently installed.)
Preparing to unpack .../perl-modules-5.38_5.38.2-3.2build2.1_all.deb ...
Unpacking perl-modules-5.38 (5.38.2-3.2build2.1) over (5.38.2-3.2build2) ...
Preparing to unpack .../libc6_2.39-0ubuntu8.4_amd64.deb ...
Unpacking libc6:amd64 (2.39-0ubuntu8.4) over (2.39-0ubuntu8.3) ...
Setting up libc6:amd64 (2.39-0ubuntu8.4) ...
(Reading database ... 77037 files and directories currently installed.)
Preparing to unpack .../util-linux_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking util-linux (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Setting up util-linux (2.39.3-9ubuntu6.2) ...
fstrim.service is a disabled or a static unit not running, not starting it.
(Reading database ... 77037 files and directories currently installed.)
Preparing to unpack .../libc-bin_2.39-0ubuntu8.4_amd64.deb ...
Unpacking libc-bin (2.39-0ubuntu8.4) over (2.39-0ubuntu8.3) ...
Setting up libc-bin (2.39-0ubuntu8.4) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../mount_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking mount (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../libcap2_1%3a2.66-5ubuntu2.1_amd64.deb ...
Unpacking libcap2:amd64 (1:2.66-5ubuntu2.1) over (1:2.66-5ubuntu2) ...
Setting up libcap2:amd64 (1:2.66-5ubuntu2.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libnss-systemd_255.4-1ubuntu8.5_amd64.deb ...
Unpacking libnss-systemd:amd64 (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../systemd-dev_255.4-1ubuntu8.5_all.deb ...
Unpacking systemd-dev (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../libblkid1_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking libblkid1:amd64 (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Setting up libblkid1:amd64 (2.39.3-9ubuntu6.2) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../kmod_31+20240202-2ubuntu7.1_amd64.deb ...
Unpacking kmod (31+20240202-2ubuntu7.1) over (31+20240202-2ubuntu7) ...
Preparing to unpack .../libkmod2_31+20240202-2ubuntu7.1_amd64.deb ...
Unpacking libkmod2:amd64 (31+20240202-2ubuntu7.1) over (31+20240202-2ubuntu7) ...
Preparing to unpack .../libpcre2-8-0_10.42-4ubuntu2.1_amd64.deb ...
Unpacking libpcre2-8-0:amd64 (10.42-4ubuntu2.1) over (10.42-4ubuntu2) ...
Setting up libpcre2-8-0:amd64 (10.42-4ubuntu2.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libselinux1_3.5-2ubuntu2.1_amd64.deb ...
Unpacking libselinux1:amd64 (3.5-2ubuntu2.1) over (3.5-2ubuntu2) ...
Setting up libselinux1:amd64 (3.5-2ubuntu2.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../systemd-resolved_255.4-1ubuntu8.5_amd64.deb ...
Unpacking systemd-resolved (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../libsystemd-shared_255.4-1ubuntu8.5_amd64.deb ...
Unpacking libsystemd-shared:amd64 (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../libsystemd0_255.4-1ubuntu8.5_amd64.deb ...
Unpacking libsystemd0:amd64 (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Setting up libsystemd0:amd64 (255.4-1ubuntu8.5) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../systemd-sysv_255.4-1ubuntu8.5_amd64.deb ...
Unpacking systemd-sysv (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../libpam-systemd_255.4-1ubuntu8.5_amd64.deb ...
Unpacking libpam-systemd:amd64 (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../systemd_255.4-1ubuntu8.5_amd64.deb ...
Unpacking systemd (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../udev_255.4-1ubuntu8.5_amd64.deb ...
Unpacking udev (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Preparing to unpack .../libudev1_255.4-1ubuntu8.5_amd64.deb ...
Unpacking libudev1:amd64 (255.4-1ubuntu8.5) over (255.4-1ubuntu8.4) ...
Setting up libudev1:amd64 (255.4-1ubuntu8.5) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libmount1_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking libmount1:amd64 (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Setting up libmount1:amd64 (2.39.3-9ubuntu6.2) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libuuid1_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking libuuid1:amd64 (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Setting up libuuid1:amd64 (2.39.3-9ubuntu6.2) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libfdisk1_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking libfdisk1:amd64 (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking libsmartcols1:amd64 (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Setting up libsmartcols1:amd64 (2.39.3-9ubuntu6.2) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking uuid-runtime (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../libattr1_1%3a2.5.2-1build1.1_amd64.deb ...
Unpacking libattr1:amd64 (1:2.5.2-1build1.1) over (1:2.5.2-1build1) ...
Setting up libattr1:amd64 (1:2.5.2-1build1.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libgmp10_2%3a6.3.0+dfsg-2ubuntu6.1_amd64.deb ...
Unpacking libgmp10:amd64 (2:6.3.0+dfsg-2ubuntu6.1) over (2:6.3.0+dfsg-2ubuntu6) ...
Setting up libgmp10:amd64 (2:6.3.0+dfsg-2ubuntu6.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libgpg-error-l10n_1.47-3build2.1_all.deb ...
Unpacking libgpg-error-l10n (1.47-3build2.1) over (1.47-3build2) ...
Preparing to unpack .../libgpg-error0_1.47-3build2.1_amd64.deb ...
Unpacking libgpg-error0:amd64 (1.47-3build2.1) over (1.47-3build2) ...
Setting up libgpg-error0:amd64 (1.47-3build2.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libmd0_1.1.0-2build1.1_amd64.deb ...
Unpacking libmd0:amd64 (1.1.0-2build1.1) over (1.1.0-2build1) ...
Setting up libmd0:amd64 (1.1.0-2build1.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libunistring5_1.1-2build1.1_amd64.deb ...
Unpacking libunistring5:amd64 (1.1-2build1.1) over (1.1-2build1) ...
Setting up libunistring5:amd64 (1.1-2build1.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../libidn2-0_2.3.7-2build1.1_amd64.deb ...
Unpacking libidn2-0:amd64 (2.3.7-2build1.1) over (2.3.7-2build1) ...
Setting up libidn2-0:amd64 (2.3.7-2build1.1) ...
(Reading database ... 77036 files and directories currently installed.)
Preparing to unpack .../00-eject_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking eject (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../01-libbsd0_0.12.1-1build1.1_amd64.deb ...
Unpacking libbsd0:amd64 (0.12.1-1build1.1) over (0.12.1-1build1) ...
Preparing to unpack .../02-libpam-cap_1%3a2.66-5ubuntu2.1_amd64.deb ...
Unpacking libpam-cap:amd64 (1:2.66-5ubuntu2.1) over (1:2.66-5ubuntu2) ...
Preparing to unpack .../03-libcap2-bin_1%3a2.66-5ubuntu2.1_amd64.deb ...
Unpacking libcap2-bin (1:2.66-5ubuntu2.1) over (1:2.66-5ubuntu2) ...
Preparing to unpack .../04-libdw1t64_0.190-1.1build4.1_amd64.deb ...
Unpacking libdw1t64:amd64 (0.190-1.1build4.1) over (0.190-1.1build4) ...
Preparing to unpack .../05-libelf1t64_0.190-1.1build4.1_amd64.deb ...
Unpacking libelf1t64:amd64 (0.190-1.1build4.1) over (0.190-1.1build4) ...
Preparing to unpack .../06-libsqlite3-0_3.45.1-1ubuntu2.1_amd64.deb ...
Unpacking libsqlite3-0:amd64 (3.45.1-1ubuntu2.1) over (3.45.1-1ubuntu2) ...
Preparing to unpack .../07-locales_2.39-0ubuntu8.4_all.deb ...
Unpacking locales (2.39-0ubuntu8.4) over (2.39-0ubuntu8.3) ...
Preparing to unpack .../08-python-apt-common_2.7.7ubuntu4_all.deb ...
Unpacking python-apt-common (2.7.7ubuntu4) over (2.7.7ubuntu3) ...
Preparing to unpack .../09-python3-apt_2.7.7ubuntu4_amd64.deb ...
Unpacking python3-apt (2.7.7ubuntu4) over (2.7.7ubuntu3) ...
Preparing to unpack .../10-bsdextrautils_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking bsdextrautils (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../11-libdrm-common_2.4.122-1~ubuntu0.24.04.1_all.deb ...
Unpacking libdrm-common (2.4.122-1~ubuntu0.24.04.1) over (2.4.120-2build1) ...
Preparing to unpack .../12-libdrm2_2.4.122-1~ubuntu0.24.04.1_amd64.deb ...
Unpacking libdrm2:amd64 (2.4.122-1~ubuntu0.24.04.1) over (2.4.120-2build1) ...
Preparing to unpack .../13-libnghttp2-14_1.59.0-1ubuntu0.2_amd64.deb ...
Unpacking libnghttp2-14:amd64 (1.59.0-1ubuntu0.2) over (1.59.0-1ubuntu0.1) ...
Preparing to unpack .../14-libnl-route-3-200_3.7.0-0.3build1.1_amd64.deb ...
Unpacking libnl-route-3-200:amd64 (3.7.0-0.3build1.1) over (3.7.0-0.3build1) ...
Preparing to unpack .../15-libnl-genl-3-200_3.7.0-0.3build1.1_amd64.deb ...
Unpacking libnl-genl-3-200:amd64 (3.7.0-0.3build1.1) over (3.7.0-0.3build1) ...
Preparing to unpack .../16-libnl-3-200_3.7.0-0.3build1.1_amd64.deb ...
Unpacking libnl-3-200:amd64 (3.7.0-0.3build1.1) over (3.7.0-0.3build1) ...
Preparing to unpack .../17-ubuntu-release-upgrader-core_1%3a24.04.26_all.deb ...
Unpacking ubuntu-release-upgrader-core (1:24.04.26) over (1:24.04.23) ...
Preparing to unpack .../18-python3-distupgrade_1%3a24.04.26_all.deb ...
Unpacking python3-distupgrade (1:24.04.26) over (1:24.04.23) ...
Preparing to unpack .../19-fdisk_2.39.3-9ubuntu6.2_amd64.deb ...
Unpacking fdisk (2.39.3-9ubuntu6.2) over (2.39.3-9ubuntu6.1) ...
Preparing to unpack .../20-libaio1t64_0.3.113-6build1.1_amd64.deb ...
Unpacking libaio1t64:amd64 (0.3.113-6build1.1) over (0.3.113-6build1) ...
Preparing to unpack .../21-libmpfr6_4.2.1-1build1.1_amd64.deb ...
Unpacking libmpfr6:amd64 (4.2.1-1build1.1) over (4.2.1-1build1) ...
Preparing to unpack .../22-polkitd_124-2ubuntu1.24.04.2_amd64.deb ...
Unpacking polkitd (124-2ubuntu1.24.04.2) over (124-2ubuntu1) ...
Preparing to unpack .../23-libpolkit-agent-1-0_124-2ubuntu1.24.04.2_amd64.deb ...
Unpacking libpolkit-agent-1-0:amd64 (124-2ubuntu1.24.04.2) over (124-2ubuntu1) ...
Preparing to unpack .../24-libpolkit-gobject-1-0_124-2ubuntu1.24.04.2_amd64.deb ...
Unpacking libpolkit-gobject-1-0:amd64 (124-2ubuntu1.24.04.2) over (124-2ubuntu1) ...
Preparing to unpack .../25-libunwind8_1.6.2-3build1.1_amd64.deb ...
Unpacking libunwind8:amd64 (1.6.2-3build1.1) over (1.6.2-3build1) ...
Preparing to unpack .../26-xfsprogs_6.6.0-1ubuntu2.1_amd64.deb ...
Unpacking xfsprogs (6.6.0-1ubuntu2.1) over (6.6.0-1ubuntu2) ...
Setting up bsdextrautils (2.39.3-9ubuntu6.2) ...
Setting up libsqlite3-0:amd64 (3.45.1-1ubuntu2.1) ...
Setting up libnghttp2-14:amd64 (1.59.0-1ubuntu0.2) ...
Setting up systemd-dev (255.4-1ubuntu8.5) ...
Setting up locales (2.39-0ubuntu8.4) ...
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.
Setting up libunwind8:amd64 (1.6.2-3build1.1) ...
Setting up libelf1t64:amd64 (0.190-1.1build4.1) ...
Setting up libdw1t64:amd64 (0.190-1.1build4.1) ...
Setting up libcap2-bin (1:2.66-5ubuntu2.1) ...
Setting up eject (2.39.3-9ubuntu6.2) ...
Setting up libmpfr6:amd64 (4.2.1-1build1.1) ...
Setting up perl-modules-5.38 (5.38.2-3.2build2.1) ...
Setting up xfsprogs (6.6.0-1ubuntu2.1) ...
update-initramfs: deferring update (trigger activated)
Setting up libfdisk1:amd64 (2.39.3-9ubuntu6.2) ...
Setting up libaio1t64:amd64 (0.3.113-6build1.1) ...
Setting up python-apt-common (2.7.7ubuntu4) ...
Setting up mount (2.39.3-9ubuntu6.2) ...
Setting up uuid-runtime (2.39.3-9ubuntu6.2) ...
uuidd.service is a disabled or a static unit not running, not starting it.
Setting up libnl-3-200:amd64 (3.7.0-0.3build1.1) ...
Setting up libperl5.38t64:amd64 (5.38.2-3.2build2.1) ...
Setting up libbsd0:amd64 (0.12.1-1build1.1) ...
Setting up libgpg-error-l10n (1.47-3build2.1) ...
Setting up libdrm-common (2.4.122-1~ubuntu0.24.04.1) ...
Setting up libpam-cap:amd64 (1:2.66-5ubuntu2.1) ...
Setting up libpolkit-gobject-1-0:amd64 (124-2ubuntu1.24.04.2) ...
Setting up libkmod2:amd64 (31+20240202-2ubuntu7.1) ...
Setting up python3-apt (2.7.7ubuntu4) ...
Setting up kmod (31+20240202-2ubuntu7.1) ...
Setting up python3-distupgrade (1:24.04.26) ...
Setting up fdisk (2.39.3-9ubuntu6.2) ...
Setting up libnl-route-3-200:amd64 (3.7.0-0.3build1.1) ...
Setting up perl (5.38.2-3.2build2.1) ...
Setting up libsystemd-shared:amd64 (255.4-1ubuntu8.5) ...
Setting up ubuntu-release-upgrader-core (1:24.04.26) ...
Setting up libdrm2:amd64 (2.4.122-1~ubuntu0.24.04.1) ...
Setting up libnl-genl-3-200:amd64 (3.7.0-0.3build1.1) ...
Setting up libpolkit-agent-1-0:amd64 (124-2ubuntu1.24.04.2) ...
Setting up systemd (255.4-1ubuntu8.5) ...
Setting up udev (255.4-1ubuntu8.5) ...
Setting up systemd-resolved (255.4-1ubuntu8.5) ...
Setting up systemd-sysv (255.4-1ubuntu8.5) ...
Setting up libnss-systemd:amd64 (255.4-1ubuntu8.5) ...
Setting up libpam-systemd:amd64 (255.4-1ubuntu8.5) ...
Setting up polkitd (124-2ubuntu1.24.04.2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.4) ...
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for dbus (1.14.10-4ubuntu4.1) ...
Processing triggers for sgml-base (1.31) ...
Processing triggers for initramfs-tools (0.142ubuntu25.4) ...
update-initramfs: Generating /boot/initrd.img-6.8.0-1021-aws
Scanning processes...
Scanning candidates...
Scanning linux images...

Running kernel seems to be up-to-date.

Restarting services...
 systemctl restart acpid.service app.service chrony.service cron.service fwupd.service multipathd.service mysql.service nginx.service packagekit.service rsyslog.service ssh.service udisks2.service
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for details.

Service restarts being deferred:
 /etc/needrestart/restart.d/dbus.service
 systemctl restart getty@tty1.service
 systemctl restart networkd-dispatcher.service
 systemctl restart serial-getty@ttyS0.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service

No containers need to be restarted.

User sessions running outdated binaries:
 ubuntu @ session #3622: apt[102947], sshd[101792,101909]
 ubuntu @ user manager service: systemd[101800]

No VM guests are running outdated hypervisor (qemu) binaries on this host.
ubuntu@ip-10-0-1-187:~$

 

음 이건 실패이고 아래 명령어로 진행해야한다. 

ssh로 접속한 이후로 해당 서버에 node.js를 설치해줘야한다. 아래 명령어를 쳐서 설치를 해준다. 

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

 

 

그리고 mysql도 설치해주기 

RDS를 이미 설정해놨다면 local로 mysql에 db를 만들지 않아도 된다고 한다. 

설치하고나서 .github/workflows/dev_deploy.yml 코드를 작성해주고 main에 머지를 해주면 올바른 코드라면 만든 ec2의 탄력적IP:포트번호로 서버코드가 배포가 되는걸로 이해했다. 

 

기존 코드를 돌려봤는데 아무것도 안 떠서 문제 터짐! 

 

prisma에 에러가 생겼었는데 이걸 모르고 왜 자꾸 안되는지 생각을 했다. 그랬더니 ec2에 올린 파일에는 .env 파일과 databaseURL 관련 변수가 없어서 에러가 발생함을 알게 됨. 

 

그래서 코드 추가(근데 이것은 ec2에 올릴 코드의 작업물에 올라가지 않아서 에러가 터졌음) 

name: deploy-main

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Configure SSH
        run: |
          mkdir -p ~/.ssh
          echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          cat >>~/.ssh/config <<END
          Host todate-madcamp-wk4
            HostName $EC2_HOST
            User $EC2_USER
            IdentityFile ~/.ssh/id_rsa
            StrictHostKeyChecking no
          END
        env:
          EC2_USER: ubuntu
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}

## .env 파일 만드는 코드 추가 
      - name: Create .env file
        run: |
          echo "DATABASE_URL=${{ secrets.DATABASE_URL }}" > .env
        shell: bash

      - name: Copy Workspace
        run: |
          ssh todate-madcamp-wk4 'sudo mkdir -p /opt/app'
          ssh todate-madcamp-wk4 'sudo chown ubuntu:ubuntu /opt/app'
          scp -r ./[!.]* todate-madcamp-wk4:/opt/app
      - name: Install dependencies
        run: |
          ssh todate-madcamp-wk4 'npm install --prefix /opt/app/'
      - name: Copy systemd service file
        run: |
          ssh todate-madcamp-wk4 '
            echo "[Unit]
            Description=Todate-madcamp-wk4
            After=network.target
            [Service]
            User=${USER}
            ExecStart=/usr/bin/npm run dev --prefix /opt/app/
            Restart=always
            [Install]
            WantedBy=multi-user.target" | sudo tee /etc/systemd/system/app.service
          '
      - name: Enable systemd service
        run: |
          ssh todate-madcamp-wk4 'sudo systemctl daemon-reload'
          ssh todate-madcamp-wk4 'sudo systemctl enable app'
      - name: Restart systemd service
        run: |
          ssh todate-madcamp-wk4 'sudo systemctl restart app'

 

그랬더니 에러는 해결 없어짐! 하지만

아예 안됨~~ 그래서 지피티에게 물어보니

app.listen(3000, '0.0.0.0', () => {
  console.log('Server running on port 3000');
});

0.0.0.0 을 추가해보라고 하니 이제 다시 프리즈마 에러 발생, 보니까 환경변수가 databaseURL이 인식이 안된거 같다. 

에러메시지를 냅다 지피티에 돌리지 말고 천천히 해석해보기..

내가 위에 추가한 .env 파일 추가 deploy 코드가 안 먹힌거 같다.  

{
    "message": "\nInvalid prisma.user.create() invocation in\n/opt/app/routes/signup.js:13:43\n\n  10 
    if (password != passwordCheck){\n  11     throw new Error(\"check your passwod again\")\n  12 }\n→ 
    13 const newUser = await prisma.user.create(\nerror: Environment variable not found: DATABASE_URL.\n  
    -->  schema.prisma:13\n   | \n12 |   provider = \"mysql\"\n13 |   url      = env(\"DATABASE_URL\")\n  
    | \n\nValidation Error Count: 1"
}

그래서 코드를 수정했다. (지피티 덕분에 수정을..) 리눅스 명령어를 좀 더 공부하고 이해해야겠다...

.env가 만들어지고 다시 만든 ec2주소:3000으로 요청을 날려보니 드디어 성공.. 이것이 배포구나.. ci/cd구나

 

그래서 최종코드! (프리즈마 바뀌었을때 반영해주는 코드도 있다고 하는데 이건 아직 미반영, 제미나이API 환경변수 추가 아직 안했지만.. ec2서버로 응답이 온 성공에 의의를 두고)

name: deploy-main

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Configure SSH
        run: |
          mkdir -p ~/.ssh
          echo "$EC2_SSH_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          cat >>~/.ssh/config <<END
          Host todate-madcamp-wk4
            HostName $EC2_HOST
            User $EC2_USER
            IdentityFile ~/.ssh/id_rsa
            StrictHostKeyChecking no
          END
        env:
          EC2_USER: ubuntu
          EC2_HOST: ${{ secrets.EC2_HOST }}
          EC2_SSH_KEY: ${{ secrets.EC2_SSH_KEY }}

      - name: Create .env file
        run: |
          ssh todate-madcamp-wk4 "echo \"DATABASE_URL=${{ secrets.DATABASE_URL }}\" | sudo tee /opt/app/.env"
        shell: bash

      - name: Copy Workspace
        run: |
          ssh todate-madcamp-wk4 'sudo mkdir -p /opt/app'
          ssh todate-madcamp-wk4 'sudo chown ubuntu:ubuntu /opt/app'
          scp -r ./[!.]* todate-madcamp-wk4:/opt/app
      - name: Install dependencies
        run: |
          ssh todate-madcamp-wk4 'npm install --prefix /opt/app/'
      - name: Copy systemd service file
        run: |
          ssh todate-madcamp-wk4 '
            echo "[Unit]
            Description=Todate-madcamp-wk4
            After=network.target
            [Service]
            User=${USER}
            ExecStart=/usr/bin/npm run dev --prefix /opt/app/
            Restart=always
            [Install]
            WantedBy=multi-user.target" | sudo tee /etc/systemd/system/app.service
          '
      - name: Enable systemd service
        run: |
          ssh todate-madcamp-wk4 'sudo systemctl daemon-reload'
          ssh todate-madcamp-wk4 'sudo systemctl enable app'
      - name: Restart systemd service
        run: |
          ssh todate-madcamp-wk4 'sudo systemctl restart app'

 

name은 깃허브 액션에서 진행하는 단계 이름이고 run이 실제 그 단계에서 수행할 문장으로 리눅스 셸 명령어로 되어있다. => 리눅스 문법 잘 알아야겠지! 중요한 이유를 또 찾아버렸다 

ci cd를 구축하기 위해 .github/workflows/dev-deploy.yml에서 yml 파일은 yaml 문법으로 구성되어있다. 

YAML 파일은 워크플로우(파이프라인) 구성 정보를 기술하기 위한 YAML 문법이고 YAML 구조(jobs, steps, uses, name 등)으로 구성되어있다. 

 


ssh는 무엇일까?
SSH는 Secure Shell의 줄임말로 네트워크 프로토콜 중 하나로, 보호되지 않는 네트워크를 통해 컴퓨터에 명령을 안전하게 전송하는 방법이며, 원격지 호스트 컴퓨터 (EC2 인스턴스)에 접속하여 명령을 실행하고 정보를 보고 받을 수 있도록 해주는 통신 프로토콜

 

코드에 있는 변수들은 깃허브에서 settings>security에서 이렇게 만들어줘야한다. 

EC2_SSH_KEY는 .pem내용 그대로 복붙하면 됨. 

 

 

.env를 만들기 위한 2가지 방법 (GPT ver. 정리 - 일단 복붙)

1. 원격 서버에서 직접 .env 파일 생성하기

- name: Create .env file on server
  run: |
    ssh todate-madcamp-wk4 "echo \"DATABASE_URL=${{ secrets.DATABASE_URL }}\" | sudo tee /opt/app/.env"
  • 장점
    • CI 서버(즉, GitHub Actions) 로컬 디렉토리에 .env가 생성되지 않으므로, 민감 정보가 CI 로그 등에 노출될 위험이 조금 더 낮을 수 있습니다.
    • 한 줄의 SSH 명령어로 바로 /opt/app/.env를 생성하므로, 절차가 간단합니다.
  • 단점
    • 여러 개의 환경 변수를 추가해야 하는 경우, echo 명령어가 복잡해질 수 있습니다.
    • 필요에 따라서는 cat <<EOF | sudo tee /opt/app/.env 같은 다중 라인 방식을 사용해야 합니다.

2. 로컬에서 .env 파일 생성 후 복사하기

 
  • 장점
    • .env 파일에 여러 줄의 환경 변수를 쉽게 작성할 수 있어 유지보수가 편리합니다.
    • 로컬에서 .env 파일을 한꺼번에 구성해두고 복사하는 형태라, 단계가 명확합니다.
  • 단점
    • .env가 CI 서버의 워크스페이스에도 남아 있을 수 있으므로, 잘못하면 Actions 로그에 노출될 위험이 있습니다(기본적으로 echo로 출력하지 않는 이상 큰 문제는 없지만, 주의 필요).
    • 두 단계를 거쳐야 하므로(생성 → 전송) 스크립트가 다소 길어질 수 있습니다.

어떤 방법이 “더 맞는지”에 대한 판단 기준

  1. 환경 변수 개수와 복잡도
    • 환경 변수가 많다면, 로컬에서 .env 파일을 생성 후 복사하는 방식을 선호하는 경우가 많습니다.
    • 하나, 두 개 정도만 필요하다면 SSH 명령어 한 번으로 생성하는 방법도 간단합니다.
  2. 보안 정책
    • 워크플로우 로그에서 민감 정보가 절대 찍히지 않도록 주의해야 합니다.
    • 일반적으로 echo "KEY=VALUE" 하는 방식 자체는 괜찮지만, 혹시라도 echo 결과를 출력(log)하면 안 되므로, --quiet 모드나 별도의 보안 처리를 할 수 있습니다.
  3. 팀 컨벤션
    • 팀원들이 이해하기 쉽고 유지보수하기 편한 방법을 택하세요.
    • “어떤 방식이든 .env를 /opt/app에 놓고, Node.js가 이를 읽으면 된다”가 핵심이므로, 어느 한 쪽이 “절대적으로 맞다”고 볼 수는 없습니다.

결론

  • 두 방법 모두 유효하며, “어떤 방식이든 최종적으로 /opt/app/.env에 환경 변수가 잘 들어 있으면” 성공입니다.
  • 환경 변수가 많고, 유지보수가 중요하다면 로컬 생성 후 복사 방식을 자주 사용합니다.
  • 환경 변수가 소수이거나 간단하면 원격에서 바로 생성하는 것도 충분히 간편합니다.
  • 보안과 편의성, 팀 내 컨벤션을 종합적으로 고려하여 선택하면 됩니다.

https://homebody-coder.tistory.com/entry/Nginx-AWS-EC2%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%98%EC%97%AC-React%EC%99%80-Node-%EC%84%9C%EB%B2%84-%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0-1%ED%83%84?category=1164867

 

Nginx / AWS EC2를 활용하여 React와 Node 서버 배포해보기 1탄

1. EC2 서버 인스턴스를 생성인스턴스 이미지: Amazon Linux 2 AMI (HVM), 64bit(x86) 을 선택인스턴스 타입: t2.micro 타입을 선택 스토리지 사이즈: 최대 30GB까지는 무료HTTPS와 HTTP를 지원하도록 보안 설정Key

homebody-coder.tistory.com

+ UMC 11주차 CI/CD 워크북 보고 따라하면서 공부한 것 

그리고 꼭 /opt/app에 하지 않아도 되고 사용자가 맘대로 수정을 해도 될거 같다. 

좀 더 코드 다듬고 다음엔 2주차에 했던 스프링 코드로 다시 ec2만들고 배포해보기 도전

몰입캠프때 성공해보고 싶었으나, prisma 생성에 제미나이 api로 응답만드는 erd 만들고 api 만들고 연결하느라 ci/cd는 못하고 로컬주소로 연결해서 아쉽다.. 지금이라도 성공해봐서 다행이다

(2월 7일부터 조금씩 시작하다가 3월 2일에 성공.. 덕분에 AWS 요금 6만원이 나왔다.. ㅎㄷㄷ... 

 

그리고 cd ~와 cd /를 했을때 나타나는게 다르다. 구멍난 곳이 너무 많아서 채워야할거 같다. 

 

이거 기반으로 다시 프론트에 코드 연결하고 실제 https 서버로도 도메인 바꿔보기 

'Backend' 카테고리의 다른 글

4주차 ERD 설계 및 RDS 만들기  (0) 2023.10.08
3주차  (0) 2023.09.30
Kotlin  (1) 2023.09.20
IP 주소와 포트번호  (0) 2023.09.18
서버란 무엇인가(소켓 & 멀티 프로세스)  (0) 2023.09.17