[aws 배포 - 우분투] 최종정리 / AWS Ubuntu - 인스턴스 생성 / keypair 생성 / db 연결 (MySQL, WorkBench) / git clone / maven 설치 및 환경 설정 / 에러 확인 방법 / 변경 사항 있을 시에 서버 재배포 / git pull / tomc..
1. 인스턴스 생성
2. 우분투 접속

2-1) keypair.pem 파일에 너무 많은 권한이 부여되어 경고가 뜨는 경우

=> hazeKeyPair 자리에 자신의 keypair 파일 이름을 넣어주면 됨
- icacls.exe hazeKeyPair.pem /reset
- icacls.exe hazeKeyPair.pem /grant:r %username%:(R)
- icacls.exe hazeKeyPair.pem /inheritance:r


성공적으로 접속 완료
3. sudo apt-get update
sudo apt-get install openjdk-11-jdk
4. 자바 위치 확인
- which java
=> /usr/bin/java
- readlink -f /usr/bin/java
=> /usr/lib/jvm/java-11-openjdk-amd64/bin/java
5. sudo nano /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin/java <- 자기꺼로 변경
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
6. echo $JAVA_HOME
(바로 나오지 않으니 입력하고 안나온다고 걱정하지 마세요.
그럴 때 콘솔 끄고 다시 우분투 접속 후 입력해보는 거 추천!!)
7. mysql 설치
sudo apt update
sudo apt install mysql-server
8. 사용할 포트 열기
sudo ufw allow mysql
sudo ufw allow 8080
sudo ufw allow 80
sudo ufw allow 443
(방화벽 자동 활성화)
sudo ufw enable
(포트 열렸나 확인)
sudo ufw status
9. mysql 시작
sudo systemctl start mysql
(시작할 때마다 자동으로 mysql 열리는거)
sudo systemctl enable mysql
10. mysql 접속 후 비밀번호 설정
sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY '비밀번호';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
11. mysql에서 데이터베이스랑 테이블 생성
(자기꺼 db로 바꾸세요)
create database personalproject;
use personalproject;
(자기꺼 table 생성하세요)
CREATE TABLE user (
username VARCHAR(10),
useremail varchar(25),
oauthtype varchar(20),
oauthtoken varchar(100)
);
CREATE TABLE comments (
comment_id INT PRIMARY KEY AUTO_INCREMENT,
board_id INT NOT NULL,
useremail VARCHAR(25) NOT NULL,
comment_root INT NOT NULL,
comment_regdate VARCHAR(20) NOT NULL,
comment_content VARCHAR(1000) NOT NULL,
comment_deldate VARCHAR(20),
comment_delyn CHAR(1) DEFAULT 'N' NOT NULL,
comment_moddate VARCHAR(20),
comment_steps INT NOT NULL,
comment_indent INT NOT NULL
);
create table board (
board_id int primary key auto_increment,
useremail VARCHAR(25) not null,
board_regdate VARCHAR(20) not null,
board_title varchar(30) not null,
board_content varchar(1000) not null,
board_moddate VARCHAR(20),
board_deldate VARCHAR(20),
board_delyn char(1) default 'N' not null,
board_likes int default 0 not null,
board_views int default 0 not null
);
create table likes(
useremail varchar(25),
board_id int,
PRIMARY KEY (useremail, board_id)
);
(확인작업)
show tables;

12. sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 접속 후
bind-address 수정 => bind-address = 0.0.0.0

(주석하는 것과 0.0.0.0은 같은 의미)
13. mysql 설정 변경 후 재실행
sudo systemctl stop mysql
sudo systemctl start mysql
((((14, 15번 생략하고 배포 후에 설정해도 됨))))
14.
sudo mysql -u root -p
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
15. workbench 연결
[Ubuntu] AWS EC2 MySQL 서버구축 & 외부접속 Unable to connect to localhost 오류해결
장장 10시간의 사투 끝에.. (실화?) 트러블슈팅한 눈물의 사연결론: Unable to connect to localhost 뜬다 ? 이건 AWS EC2에서 해결하세요 😀처음엔 내 💩컴퓨터 & 💩와이파이에 문제가 있다고 생각했다..온
velog.io



16. git 설치 및 버전 확인
sudo apt-get update
sudo apt-get install git
git --version
17. git 기본 설정
git config --global user.name 이름
git config --global user.mail 메일 주소
git clone 주소
18. ls로 git clone 확인

19. 톰캣 설치
cd "클론한 프로젝트명";
sudo apt update
sudo apt install tomcat9
sudo systemctl start tomcat9
20.
cd /var/lib/tomcat9/conf
ls
(web.xml 과 server.xml 수정)
sudo nano server.xml
sudo nano web.xml

=> server.xml
<Context docBase="personalProject-0.0.1-SNAPSHOT" path="/" reloadable="false"/>

=> web.xml
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>

21. mvn 설치 (아래 블로그 참고해서 먼저 용량 늘리고 까는 거 추천)
ec2 스프링 빌드 시 멈춤 현상 해결법
스프링 빌드를 하는데 빌드 시간이 1초씩 늘어나는게 아니라 10초 이상씩 늘고, 빌드도 안되길래 여러번 껐다 켰다 반복해서 빌드를 해봤는데 소용없었다 free tier로 ec2를 이용하면 ram이 1기가라
jjong2.tistory.com
sudo apt install maven
sudo mvn package -Dmaven.test.skip=true -X
( Maven을 사용하여 프로젝트를 정리(clean)하고 패키지(package)하며 테스트를 건너뛰고 (-DskipTests), 실행 중에 자세한 디버깅 정보를 표시 -> build success가 떠야 됨)
(sudo mvn package -Dmaven.test.skip=true -X 라는 코드가 실행되지 않았을 때 아래 블로그 참고)
https://hyoje420.tistory.com/7
[Java]환경변수(JAVA_HOME & CLASSPATH)
환경변수 공식적인 의미의 환경변수(Environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들이다. OS상에서 동작하는 응용프로그램들이 참조하기위한 설정이 기
hyoje420.tistory.com
(확인 작업)
cd target
ls

22.
-> sudo chmod 777 personalProject-0.0.1-SNAPSHOT.war
( 777은 모든 사용자에게 해당 파일에 대한 모든 권한을 부여한다는 것을 의미)
-> sudo mv personalProject-0.0.1-SNAPSHOT.war /var/lib/tomcat9/webapps/
(war 파일 webapps로 옮김)
-> cd /var/lib/tomcat9/webapps/
(webapps로 이동)
-> sudo jar -xvf personalProject-0.0.1-SNAPSHOT.war
(war 압축 풀기)
23.
cd /usr/share/tomcat9/bin
./startup.sh

** 포트 열려있나 확인
-> sudo ufw status
-> sudo lsof -i -P -n | grep LISTEN
** 로그 확인
-> journalctl --since=today --reverse
-> cat /var/lib/tomcat9/logs/catalina.out (crit이 에러임)
** 수정사항 있을 시에
-> git pull
-> sudo mvn package -Dmaven.test.skip=true
-> sudo rm -r /var/lib/tomcat9/webapps/*
-> webapps에 아무 것도 없는 지 확인 후
-> 22번부터 다시 쭉 하면 됨