기본 설정(EC2 인스턴스를 생성해 작동시켰다고 가정함)
#은 명령어를 의미, 이텔릭(기울임)은 주석임
1. JDK 설치
$ sudo yum install java-17-amazon-corretto
$ sudo vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto.x86_64 (vi로 연 profile의 맨 아래 fi 바로 밑에 추가할 것)
2. MySQL 설치
# wget https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
# sudo yum -y localinstall mysql80-community-release-el7-3.noarch.rpm
# sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
# sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# sudo yum -y update
# sudo dnf install mysql-community-server
# mysql --version
# sudo systemctl enable mysqld.service
# sudo systemctl start mysqld.service
- temporary password 확인: /var/log/mysqld.log
# sudo grep password /var/log/mysqld.log
임의로 설정된 비밀번호
# mysql -u root -p (mysql 접속)
위에서 찾은 비밀번호로 최초 로그인후 비밀번호 변경하고 기록할 것
> alter user 'root'@'localhost' identified with mysql_native_password by '내가 원하는 비밀번호';
> create user 'hmuser'@'%' identified by ' 내가 원하는 비밀번호 ';
> grant all privileges on *.* to 'hmuser'@'%';
> flush privileges;
> exit
3. DB 및 테이블 생성
IPv4 주소가 같으면 다른 user(ape)가 db 만들어도 사용하는 공간이 같기에 나(ec2-user)도 사용 O
CREATE database ss;
use ss;
create table securityUser (
uid varchar(64) primary key,
pwd char(60) not null,
uname varchar(40) not null,
email varchar(64) default null,
regDate date default (current_date),
isDeleted int default 0,
picture varchar(100),
provider varchar(16) default 'ck world',
role varchar(16) default 'ROLE_USER'
);
4. AWS 인바운드 규칙 편집
AWS의 보안 규칙을 편집해서 8090 등의 접속을 허용해주어야 함
EC2 대시보드 -> 인스턴스 -> 인스턴스 세부정보 -> 보안 -> 보안그룹 밑에 있는 숫자 클릭 -> 인바운드 규칙 탭 > 인바운드 규칙 편집 >
- 규칙 추가: 사용자지정 TCP, 포트번호 8090, 0.0.0.0/0 추가(SSH 참조)
> 규칙 저장
5. AWS에서 웹 서버 구동하기
1) application.properties를 AWS 환경에 맞게 수정
github, google 등 공식 provider는 application.properties 에서 따로 redirect-uri를 설정할 필요 없지만 naver, kakao 등은 공식 provider가 아니라 설정 필요. 내가 여기서 설정을 안해서 계속 에러가 남
# MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/sbbs
spring.datasource.username=유저 네임
# spring.datasource.password=비번
spring.datasource.password=비번
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# Upload/download
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=100MB
#spring.servlet.multipart.location=c:/Temp/ss/
spring.servlet.multipart.location=/tmp/ss/
## kakao
spring.security.oauth2.client.registration.kakao.redirect-uri=http://15.165.158.42:8091/ss/login/oauth2/code/kakao
2) 소셜 로그인: Authorization callback URL에 내가 할당 받은 ip 넣기

3) maven build

위의 사진에서 처럼 Run As를 들어가서 1) Maven clean을 하고 2) Maven build를 한다.
4) aws 작동 시키고 MobaXterm에서 리눅스 작동 시키기
(1) aws ec2에서 인스턴스 시작

(2) 퍼블릭 IPv4 바꿔넣기
(3) 작동
5) 실행파일(예, abbs-0.0.1-SNAPSHOT.jar)을 서버로 upload하기

(1) 누르기
(2) 프로젝트 폴더에 target에 들어가기

(3) target에 있는 jar파일 upload
6) /temp 디렉토리에 파일 경로 만들어 줄 것
$ mkdir temp
$ mkdir /temp/ss
$ cd /temp/ss
$ mkdir data image profile upload
7) upload한 파일을 실행하기
$ cd ~
$ mkdir ss
$ mv springSecurity-0.0.1-SNAPSHOT.jar ss
$ cd ss
$ nohup java -jarspringSecurity-0.0.1-SNAPSHOT.jar > ss.log 2>&1 & : 이 명령어는 내가 로그아웃을 하거나 서버를 꺼도 프로세스가 계속 돌아가게 함. 그리고 ss.log에 에러와 실행할 때 뜨는 무수히 많은 글자들을 기록한다. 또한 nohup을 하면 pid를 할당받아 pid를 통해 nohup을 지울 수 있다.

$ logout : 이건 잘 모르겠다
$ java -jar springSecurity-0.0.1-SNAPSHOT.jar : java 실행

이거 뜨면 성공 !
검색창에 자신의 퍼블릭 IPv4:포트번호/루트패스 치기



6. 웹 서버의 동작을 중지시킬 때
$ ps -aef | grep java
$ kill -9 pid : nohup
$ ls -l
$ sudo shutdown : 리눅스 끄기
인스턴스 중단 or 종료
8. 수정한 파일을 재업로드한 경우
# rm ss/springSecurity-0.0.1-SNAPSHOT.jar
# mv springSecurity-0.0.1-SNAPSHOT.jar ss
# cd ss
# nohup java -jar
springSecurity-0.0.1-SNAPSHOT.jar > ss.log 2>&1 &
# logout
'AWS' 카테고리의 다른 글
AWS EC2를 사용해 springBoot + react 배포하기(/resources/static) (1) | 2024.06.11 |
---|