이전 포스트에선 ec2 인스턴스를 생성하고 접속하는 것 까지 알아보았다. 하지만 이렇게 생성한 인스턴스는 빈 깡통과도 같아 우리의 목적인 웹 애플리케이션 배포를 하기 위해선 개발 pc에서 개발하는데 사용했던 인프라들을 인스턴스에 설치해 줘야 합니다.
시작전에 모든 패키지를 업데이트 시켜 줍니다.
$ sudo apt update
버전은 개발 환경마다 다릅니다. 유의해 주세요.
$ sudo apt install nginx // 엔진엑스 설치
$ sudo apt install tomcat9 //톰캣 9 설치
$ sudo apt openjdk-8-jre // jre 설치
$ sudo apt openjdk-8-jdk // jdk 설치
$ sudo apt mysql-server //mysql 서버
파일시스템에
/etc/nginx/sites-available/default 를 수정해 줍니다.
sudo vim /etc/nginx/sites-available/default
명령어를 입력하시면 문서를 수정할 수 있습니다.
붉은 박스를 친곳 을 수정하면 됩니다.
server{
....생략
//수정하면 된다.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
#try_files $uri $uri/ =404;
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
..생략
}
sudo service nginx start
sudo service tomcat9 start
// 이외에도 stop, restart와 같은 명령어가 있습니다.
고정주소를 입력했을 때 8080 포트 번호(tomcat 디폴트 포트번호) 입력 없이도 톰캣 석세스 화면을 확인 할 수 있습니다.
ㄱ)설정 변경
/etc/mysql/mysql.conf.d/mysqld.cnf 파일을 수정해 줍니다.
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address 를 찾아 0.0.0.0으로 수정해 줍니다.
ㄴ)유저 설정
mysql접속
sudo mysql
유저설정 => 워크벤치로 원격접속할 유저를 생성해 줍니다.
create user '유저명'@'%' identified by '비밀번호'; //유저 생성하기
grant all privileges on *.* to '유저명'@'%' with grant option; // 유저에게 외부접속 권한 주기
\q 명령어로 mysql에서 나간다음
ㄷ)mysql 구동
sudo mysql start
ㄹ)워크벤치 실행
1. 새로운 커넥션을 열어줍니다.
2. ec2의 고정 ip를 입력
3. 아까 설정한 user id
4. 비밀번호 입력 -> 미입력시 커넥션 마다 비밀번호 입력해야함
5. 연결
기존에 사용한 db를 복사하여 사용하겠습니다.
ㄱ)ec2환경에서 개발환경에서 사용한 db이름과 똑같은 db를 생성해 줍니다.
$ sudo mysql
CREATE database db이름 DEFAULT CHARACTER SET utf8 //db 생성
ㄴ) 워크벤치로 기존에 사용하던 커넥션으로 접속
서버탭 -> data export 선택
ㄷ) export
추출할 db를 선택하시고 우측하단에 start export 버튼을 클릭
ㄹ) import
ec2 mysql의 커넥션에 접속하셔서 server탭 -> import 선택
ㄷ)에서 추출한 sql을 선택하고 target schema로 ㄱ)에서 생성한 db를 선택후 우측하단에 start import를 클릭해준다.
ㅁ) mysql 실행
sudo service mysql start
이제 모든 준비는 끝났다. 중요한 알맹이인 app의 코드를 ftp를 통해 ec2 인스턴스로 보내고 몇가지 설정을 통해 배포를 마무리 해보겠습니다.