
오늘은 aws에 war를 배포하는 방법에 대해서 정리해보려고 합니다.
AWS란 무엇인가?
AWS(amazon web Service)
란 아마존에서 제공하는 클라우드서비스
왜 AWS를 이용할까?
웹 프로젝트를 제작하면 서버를 필요로한다. 내가 알기론 예전엔 컴퓨터를 이용해 직접 서버를 운영했는데 비용적인 측면에서 aws를 사용하는 것 같습니다.
시스템 구성
크게 클라우드 컴퓨터(AWS)
와 remote git
과 war
파일이 필요합니다.
AWS
에linux(인스턴스)
생성하기linux
에java
jdk
tomcat
버전을 알맞게 설치하기- legarcy 프로젝트라면 war파일을
linux
의 tomcat에 넣고 tomcat start - boot 프로젝트라면 원격 git 에서
linux
로 clone 한 후에 mvvn을 통해서 jar파일로 변환하고 실행
ubuntu tomcat에 war파일 배포하기
1.인스턴스를 생성
tomcat을 사용할 경우 사용자 지정 TCP 8080포트를 열어주어야 합니다.
위치 무관으로 한 이유는 개발하는 컴퓨터가 바뀔경우 다른 ip도 허용되어야 하기 때문입니다. 실제 할때는 ip를 지정해주는 방식 사용하자 linㅣlinux
를 사용할떄는 SSH
로 하면됩니다.
2. 인스턴스에 접속하기
저는 xshell을 사용했습니다. 이 방법은 윈도우에서 접속하는 방법입니다. 참고 바랍니다.
실행시켜서 새로만들기를 누르면 아래와 같은 이미지를 볼 수 있습니다.
위에 있는 ip주소를 호스트에 넣으면 됩니다.
위와 같이 하고 생성해주면 됩니다.
3. 인스턴스에 java jdk 설치하기
일단 명령어 마다 sudo
를 붙히지 않을 거라면 sudo su root
명령어를 통해 root
로 접속해야합니다.
프로젝트에 맞는 jdk를 설치해야하는데 나는 zulu8을 사용했기때문에 zulu8, jre, tomcat8을 설치하려고 합니다.
Azul의 public key등록
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xB1998361219BD9C9
Azul package에 대한 정보를 APT저장소에 등록
$ sudo apt-add-repository 'deb http://repos.azulsystems.com/ubuntu stable main'
APT의 가용한 패키지들의 정보 update
$ sudo apt update
$ sudo apt install zulu-11
$ java -version
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
java 설치 확인
$ which javac
/usr/bin/javac
$ readlink -f /usr/bin/javac
java 환경 변수 설정하기
환경 변수를 설정하기 위해서는 profile 폴더로 이동해야합니다.
nano /etc/profile
root에서 하는것이 아니면 sudo를 붙혀야합니다.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin/:$PATH
export CLASS_PATH=$JAVA_HOME/lib/:$CLASS_PATH
추가하고 ctrl + x / y / enter 누르기
리로드를 해야합니다.
$ source /etc/profile
환경변수를 학인하는 명령어
echo $JAVA_HOME
$JAVA_HOME/bin/javac -version
4. 인스턴스에 tomcat8 설치하기
apt-get install tomcat8
tomcat 버전확인하는 명령어
/usr/share/tomcat8/bin/version.sh
원래는 방화벽을 변경해주어야한다.(tomcat은 8080포트를 사용하기 때문) 하지만, 처음에 인스턴스를 생성할 때 보안그룹에 추가하였기 때문에 넘어가도됩니다.
tomcat 실행시키는 명령어
service tomcat8 start
tomcat을 실행시켰다면 `인스턴스ip:8080'으로 접속해서 확인해보겠습니다.
이런 화면이 나오면 성공적으로 설치된 것입니다.
5. 프로젝트 옮기기
인스턴스에 필요한 것을 모두 설치했습니다. . 그러면 이제 서버에 올려놓고 싶은 프로젝트를 war형식으로 넘겨줄 차례입니다.
우선 프로젝트를 war로 빼놓습니다.
war파일은 노트북이나 데스크탑같은 개인 개발환경에 있을 것입니다. 이것을 인스턴스인 linux에 옮기려면 filezilla가 필요합니다.
호스트는 인스턴스 ip를 입력하면 됩니다.
그다음에 war파일을 드래그앤 드롭으로 넣으면 됩니다.
넣어놓고 tomcat이 있는 경로로 mv 명령어를 통해서 옮기면 되기 때문입니다.
이제 여기서 권한 설정으로 골치아팠던 부분입니다.
ls -al
아마 home에 war파일이 있을텐데 이것을 /var/lib/tomcat8/webapps/
로 옮겨야 합니다.
하지만 권한과 소유가 설정되어 있지 않았습니다.
drwxrwxr-x 4 tomcat8 tomcat8 4096 May 28 14:55 .
drwxr-xr-x 5 root root 4096 May 28 14:12 ..
drwxr-xr-x 3 tomcat8 tomcat8 4096 May 28 14:10 ROOT
drwxr-x--- 5 tomcat8 tomcat8 4096 May 28 14:55 hmProject
-rwxrwxrwx 1 tomcat8 tomcat8 65357651 May 28 14:35 hmProject.war
위와 같이 war가 tomcat의 소유여야합니다.
파일 이동하는 명령어
$ mv hmProject.war /var/lib/tomcat8/webapps/
아마 permission denied 가 뜰 것입니다.
퍼미션 변경하기
chmod [변경될 퍼미션값] [변경할 파일]
소유자 변경하기
chown [변경할 소유자],[변경할 그룹] [변경할 파일]
6. tomcat command
tomcat start/stop
$ sudo service tomcat7 stop
$ sudo service tomcat7 start
tomcat 의 구동상황
$ systemctl status tomcat7.service
테스트
http://서버ip:8080/SocketTest(프로젝트명)/파일이나 url
java설치 참고 사이트
zulu설치 참고 사이트
tomcat 배포참고 사이트
권한 command 참고 사이트
aws에 spring 프로젝트와 mysql 연동하기
시스템 구성
aws
에 있는 tomcat8
에 war
파일을 올려놓고, 같은 aws
서버에 mysql
을 설치하고 설정해주는 흐름입니다.
1. mysql 설치하기
apt-get install mysql-server
2. mysql 에 로그인하기
mysql -u root -p
비밀번호
3. aws 에서 인바운드 설정
보안그룹에서 3306포트를 열어주어야 한다.
mysql을 3306포트에서 사용할 수 있도록 해주는 것입니다.
4. mysql 외부 접속 허용 설정
mysql을 설정할 수 있는 conf로 가기
cd /etc/mysql/mysql.conf.d
vi mysqld.cnf
- vi파일을 수정하는 방법
i를 누르면 수정가능해짐
수정한 후에 ctrl + c로 명령모드로 바꿈
:wq 혹은 :w!를 입력하면 저장됨.
외부 접속 허용 설정해준 후에 mysql 재시작 및 로그인
service mysql restart
mysql -u root -p
- root 계정 권한 설정
grant all on *.* to 'root'@'3.16.125.37' identified by 'ssafy';
FLUSH PRIVILEGES;
5. mysql work brench 를 이용한 접속 확인하기
이슈
- 리눅스 mysql에는 한글이 들어가지 않아서 utf8로 테이블을 바꿔주는 것을 해줘야 합니다.
- 리눅스에 mysql을 설치했더니 root 권한을 인식하지 못한다. 권한을 다시 줘야합니다 .
grant all on *.* to 'root'@'3.16.125.37' identified by 'ssafy';
FLUSH PRIVILEGES;
- 비밀번호를 재수정해주는 코드 ( 필요하진 않은듯)
update mysql.user set plugin = 'mysql_native_password' where User='root';
- mysql에서 table이 외래키를 가지고 있을 경우 에러가 발생했는데 해결하지 못했습니다.
tomcat8/webapps 에있는 war 파일 삭제하기
rm ~~.war
'웹 개발' 카테고리의 다른 글
javascript touch event 사용해보기 (0) | 2020.11.10 |
---|---|
passport-jwt 로 토큰인증하기 (0) | 2020.11.07 |
댓글