Post

EC2, mysql install, S3, deploy on server

๐Ÿ“Œ EC2 ์ƒ์„ฑ

๐Ÿ“Œ EC2์— mySQL install

  • update์œ„ํ•ด ์“ฐ์ด๋Š” ๋ช…๋ น์–ด
1
2
3
4
sudo yum update -y # For CentOS/RHEL based systems

sudo systemctl restart mysqld
sudo systemctl status mysqld

๐Ÿ”ด libcrypto, openSSL problem

Image

  • medium.com/@mudasirhaji์„ ์ญ‰ ๋”ฐ๋ผ์„œ ์„ค์น˜ํ•˜๋‹ค๊ฐ€ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
  • libcrypto, openSSL์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค.
  • ๋ธ”๋กœ๊ทธ ๊ธ€์—์„œ๋Š” GPG Key Issues๋ผ๊ณ  ํ•˜๋Š”๋ฐ,
  • ๊ฒฐ๊ณผ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด GPG Key Issues๋ฌธ์ œ๊ฐ€ ๋งž๋‹ค.
  • ๋ธ”๋กœ๊ทธ์—์„œ๋Š” set gpgcheck=0๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” temporarily disableํ•˜๋Š” ๋ฐฉ์‹์ด๊ณ  not advisable์ด๋ผ๊ณ  ํ•ด์„œ ๊ทผ๋ณธ์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

  • ํ•˜์ง€๋งŒ ์‚ฌ์ง„์—๋Š” libcrypto, openSSL์˜ค๋ฅ˜๋ผ๊ณ  ๋– ์„œ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Œ
  • ๊ฒฐ๋ก ์ ์œผ๋กœ, libcrypto, openSSL์˜ค๋ฅ˜๊ฐ€ ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋œจ๋ฉด GPG Key Issues๋ฌธ์ œ๊ฐ€ ๋งž์Œ
  • ๊ทธ ์ด์œ ๋Š” mySQL์„ ๋ฐ›๋Š”๋ฐ public key๊ฐ€ ์ž˜๋ชป ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค

1๏ธโƒฃ check OS

  • mySQL์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” libcrypto, openSSL์ด ํ•„์š”ํ•˜๋‹ค
  • ๊ทธ๋Ÿฐ๋ฐ Amazon Linux 2023๋Š” compat-openssl10 ์„ค์น˜๊ฐ€ ์•ˆ ๋œ๋‹ค.

  • OS๋ฅผ ํ™•์ธํ•ด๋ณด์ž
1
cat /etc/os-release
  • ๊ฒฐ๊ณผ๊ฐ€ Amazon Linux 2023์ด๋ผ๋ฉด, compat-openssl10 is not available
  • ๐Ÿ˜ฑ ๋‚˜์ž–์•„!!!

Image

2๏ธโƒฃ RPM ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ, GPG ํผ๋ธ”๋ฆญ ํ‚ค ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค

3๏ธโƒฃ ๋ง‰์ƒ mySQL ์„ค์น˜ํ•˜๋ ค๋‹ˆ๊นŒ ํผ๋ธ”๋ฆญํ‚ค๋ฅผ import ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜

  • ํผ๋ธ”๋ฆญํ‚ค๊ฐ€ not validํ•˜๋‹ค๊ณ  ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค

Image

4๏ธโƒฃ ์ž˜๋ชป๋œ ํ‚ค๋ฅผ ์ง€์šฐ๊ณ , ๋งž๋Š” ํผ๋ธ”๋ฆญ ํ‚ค ๋‹ค์šด

  • remove the incorrect key
  • ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ ๋ณด๋ฉด key 3a79bd29๊ฐ€ not correctํ•˜๋‹ค๊ณ  ํ–ˆ์Œ
1
sudo rpm --erase gpg-pubkey-3a79bd29
  • import correct MySQL GPG key
1
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

Image

5๏ธโƒฃ ์ด์ œ mySQL client, server download ๊ฐ€๋Šฅ

Image

Image

  • ์ด์ œ ์ด์–ด์„œ medium.com/@mudasirhaji ๊ธ€ step 5 ๋ถ€ํ„ฐ ์ด์–ด์„œ ๋”ฐ๋ผ๊ฐ€์ž

โœ… mySQL root ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •

Image

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ ์„ ๋•Œ '๋น„๋ฐ€๋ฒˆํ˜ธ';์ ๊ธฐ ์ฃผ์˜!
  • ์ด์ œ ์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ mysql -u root -p๋ฅผ ํ•ด์„œ mysql์— ์ ‘์†ํ•˜๊ฒŒ ๋œ๋‹ค

โœ… SSH mySQL ์ ‘์† ์„ฑ๊ณต

Image

โœ… Access MySQL from Outside Using MySQL Workbench

  • medium.com/@mudasirhaji step 10
1
2
sudo vi /etc/my.cnf #configure ํŒŒ์ผ ์ˆ˜์ •
bind-address = 0.0.0.0 ์ˆ˜์ • ์œ„ํ•ด ํ•„์š”

Image

โœ… mySQL ์—ฐ๊ฒฐ

  • ๋จผ์ € user root์—๊ฒŒ ๊ถŒํ•œ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • medium.com/@mudasirhaji step 10 ์ฐธ๊ณ 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
CREATE USER 'root'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Image

โœ… MYSQL ํ•œ๊ตญ์–ด ์ž…๋ ฅ ๋ถˆ๊ฐ€

  • ์ด ๋ช…๋ น์–ด๋ฅผ EC2์— ๋“ค์–ด์™€ mysql command์ฐฝ์—์„œ ์ž…๋ ฅํ•ด์•ผ ์ž‘๋™
  • workbench์—์„œ ์ž…๋ ฅํ•ด๋ดค์ž ๋ฐ˜์˜ ์•ˆ๋จโŒ
ALTER TABLE User CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Goal CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Todo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Complete CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Comment CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Likes CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE Follow CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

SHOW CREATE TABLE comment;

๐Ÿ“Œ JAVA install

1
2
sudo yum install java
//ํ•˜๊ณ  tab์„ ๋‘ ๋ฒˆ ๋ˆ„๋ฅธ๋‹ค

Image

1
2
3
// ๋‚˜๋Š” 17์„ค์น˜ํ•˜๊ณ  ์‹ถ์–ด์„œ 17 ์„ค์น˜
sudo yum install java-17-amazon-corretto-headless.x86_64
sudo yum install -y java-17-amazon-corretto-devel
1
sudo yum install java-17-amazon-corretto-devel -y
  • ์ž˜ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
1
2
java -version
javac -version

๐Ÿ”ด ๋งŒ์•ฝ ์„ค์น˜ํ•œ ์ž๋ฐ” ๋ฒ„์ „์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด

  • ๋‚ด๊ฐ€ ์–ด๋–ค ๋ฒ„์ „์„ ์‚ฌ์šฉํ• ๊ฑด์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•ด์•ผ ํ•จ

Image

๐Ÿ”ด Build fail, Cannot find a Java installation

  • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ๋ฐœ์ƒ
  • ์š”์•ฝํ•˜์ž๋ฉด java์„ค์น˜๊ฐ€ ์•ˆ ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•จ
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
32
FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':bootJar'.
> Could not resolve all dependencies for configuration ':runtimeClasspath'.
   > Failed to calculate the value of task ':compileJava' property 'javaCompiler'.
      > Cannot find a Java installation on your machine matching this tasks requirements: {languageVersion=17, vendor=any vendor, implementation=vendor-specific} for LINUX on x86_64.
         > No locally installed toolchains match and toolchain download repositories have not been configured.

* Try:
> Learn more about toolchain auto-detection at https://docs.gradle.org/8.12.1/userguide/toolchains.html#sec:auto_detection.
> Learn more about toolchain repositories at https://docs.gradle.org/8.12.1/userguide/toolchains.html#sub:download_repositories.
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at https://help.gradle.org.

BUILD FAILED in 13s
[ec2-user@ip-172-31-7-131 Moim-BE]$ ./gradlew -q javaToolchains

 + Options
     | Auto-detection:     Enabled
     | Auto-download:      Enabled

 + Amazon Corretto JRE 17.0.14+7-LTS
  | Location:           /usr/lib/jvm/java-17-amazon-corretto.x86_64
     | Language Version:   17
     | Vendor:             Amazon Corretto
     | Architecture:       amd64
     | Is JDK:             false
     | Detected by:        Current JVM

๐ŸŸขย JAVA_HOME path

  • bashrc์˜ JAVA_HOME path๋ฅผ ์ˆ˜์ •
1
2
3
4
5
6
7
8
9
10
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64' >> ~/.bashrc


vi ~/.bashrc ## bashrc ์—ด๊ณ 
JAVA_HOME ## ๋ณ€์ˆ˜ ์„ค์ • ํ™•์ธ
source ~/.bashrc  ## bashrc์ €์žฅ ๋ช…๋ น์–ด


echo $JAVA_HOME ํ–ˆ์„ ๋•Œ ๊ฒฝ๋กœ๊ฐ€ ์ž˜ ๋‚˜์™€์•ผ
  • ๐ŸŸขย ์กฐ๊ธˆ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ
  • ์ž๊ณ  ์ผ์–ด๋‚ฌ๋”๋‹ˆ ํ•ด๊ฒฐ๋˜์–ด ์žˆ์—ˆ์Œ

  • ๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด runํ–ˆ์„ ๋•Œ
  • IS JDK ๊ฐ€ true์—ฌ์•ผ ํ•œ๋‹ค.
1
./gradlew -q javaToolchains

๐Ÿ“Œ GIT install

1
2
3
sudo yum update -y
sudo yum install git -y
git โ€”v

โŒ get SSH key

  • ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  CICD๋กœ ๋„˜์–ด๊ฐ€๋ฉด SSH key๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

https://medium.com/@qylong2021/clone-organization-owned-private-repository-on-aws-ec2-instances-fb712dbf03ad

Image

โŒ add SSH key to Github

  • ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  CICD๋กœ ๋„˜์–ด๊ฐ€๋ฉด SSH key๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

https://gom20.tistory.com/294

  • ๋‚ด github SSH key์— ์ถ”๊ฐ€ ํ›„ ssh -T git@github.comํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ์‹คํŒจ
  • permission denied๋ผ๊ณ  ๋‚˜์˜ด
1
2
3
Trouble shooting
eval "$(ssh-agent -s)"  # Start the SSH agent
ssh-add ~/.ssh/zzikzzik_key  # Add your private key to the agent
  • cd ~/.ssh
1
2
3
ssh-rsa
//key
= soheeparklee@gmail.com

โŒ EC2 ์ƒ์„ฑํ•  ๋•Œ ๋งŒ๋“  .pemํ‚ค

  • ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๊ณ  CICD๋กœ ๋„˜์–ด๊ฐ€๋ฉด SSH key๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋”ฐ๋กœ ์„ค์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

  • ํŠนํžˆ SSH_PRIVATE _KEY
  • pemํ‚ค๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฒผ์Œ Image

๐Ÿ“Œ git action ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

  • git actions secrets variable์„ค์ •

๐Ÿ“Œ EC2 ๋‚ด๋ถ€ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

https://cordcat.tistory.com/118

1
2
3
vi ~/.bashrc ## bashrc ์—ด๊ณ 
## ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •
source ~/.bashrc  ## bashrc์ €์žฅ ๋ช…๋ น์–ด

Image

๐Ÿ“Œ clone GIT project onto EC2

1๏ธโƒฃ HTTPS๋กœ cloneํ•˜๋Š” ๋ฐฉ๋ฒ•

1
git clone ##HTTPS์ฃผ์†Œ##

Image

2๏ธโƒฃ SSH๋กœ cloneํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์ด ๋ฐฉ๋ฒ•์„ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•ž์„  SSH key๋ฅผ ์„ธํŒ…์„ ํ•ด์•ผ ํ•จ
1
git@github.com:slid-todo/back.git

๐Ÿ“Œ Build

1
2
# Build with clean, without test
./gradlew clean build -x test
  • ๋งŒ์•ฝ ์•ˆ๋œ๋‹ค๋ฉด ๊ถŒํ•œ ๋ฌธ์ œ์ผ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ๊ถŒํ•œ ์„ค์ •
1
2
3
4
5
6
7
8
9
10
11
# ๊ถŒํ•œ ์ฃผ๊ธฐ
chmod +x gradlew

# ์ด์ œ gradle ์ž˜ ๋จ
./gradlew -version

# ์ด์ œ ๋นŒ๋“œ ๊ฐ€๋Šฅ
./gradlew build
./gradlew build -x test
./gradlew clean build -x test # Build with clean, without test
sudo ./gradlew build

๐Ÿ“Œ Run Java

1๏ธโƒฃ jarํŒŒ์ผ ์žˆ๋Š” ๊ณณ๊นŒ์ง€ ๊ฐ€์„œ ์‹คํ–‰

1
java -jar moim-0.0.1-SNAPSHOT.jar

2๏ธโƒฃ ๋˜๋Š” directory๋ช…์‹œ ํ›„ ์‹คํ–‰

1
2
java -jar /home/ec2-user/back/build/libs/todo-0.0.1-SNAPSHOT.jar
# ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ์•ˆํ•˜๋ฉด ์‹คํŒจํ•จ

๐Ÿ”ด JDBC connection error

  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ์•ˆ ํ•ด์ค˜์„œ ์˜ค๋ฅ˜ ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Œ
  • ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •ํ•ด์ค˜์•ผ ํ•จ

๐Ÿ“Œ Nohup์œผ๋กœ ๋ฌด์ค‘๋‹จ๋ฐฐํฌ

1๏ธโƒฃ jarํŒŒ์ผ ์žˆ๋Š” ๊ณณ๊นŒ์ง€ ๊ฐ€์„œ ์‹คํ–‰

  • build โ†’ libs ๊นŒ์ง€ ๋“ค์–ด์™€์„œ
1
2
cd Moim-BE/build/libs
nohup java -jar moim-0.0.1-SNAPSHOT.jar &

2๏ธโƒฃ ๋˜๋Š” directory๋ช…์‹œ ํ›„ ์‹คํ–‰

1
nohup java -jar /home/ec2-user/back/build/libs/todo-0.0.1-SNAPSHOT.jar &

โœ”๏ธ ์„ฑ๊ณตํ™•์ธ ๋ฐฉ๋ฒ•

1๏ธโƒฃ lsof

1
sudo lsof -i :8080

2๏ธโƒฃ netstat

1
netstat -nlpt

3๏ธโƒฃ public IP, port 8080

  • public IP port 8080์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์–ด๋–ค ํŽ˜์ด์ง€ ๋œจ๋Š”์ง€ ํ™•์ธ
1
http://3.34.218.217:8080/

๐Ÿ“Œ ๋˜๋Š” Run deploy.sh

  • ๋งŒ์•ฝ ์ž‘์„ฑํ•ด ๋‘” deploy.sh๊ฐ€ ์žˆ๋‹ค๋ฉด run
1
2
chmod +x deploy.sh
./deploy.sh

๐Ÿ“Œ logs๋ณด๋Š” ๋ฐฉ๋ฒ•

1
2
3
4
[ec2-user@ip-172-31-12-182 ~]$ sudo chown ec2-user:ec2-user /logs
[ec2-user@ip-172-31-12-182 ~]$ chmod 755 /logs
[ec2-user@ip-172-31-12-182 ~]$ ls -ld /logs
drwxr-xr-x. 2 ec2-user ec2-user 60 Jan 18 00:01 /logs

๐Ÿ“Œ S3

https://kenkyuanime.com/2024%EB%85%84-%EB%B2%84%EC%A0%84aws-s3-%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0/

๐Ÿ“Œ ์ด์ œ CICDํ•˜๋Ÿฌ ๊ฐ‘์‹œ๋‹ค

This post is licensed under CC BY 4.0 by the author.