3장을 시작하기 위해서는 원격 서버가 필요하다.
네이버 클라우드에서 1년동안 무료 서버를 신청할 수 있다는 이야기를 듣고, 아래 글을 참고하여 원격 서버를 신청하였다.
https://essencedrain.tistory.com/2
원격 서버도 신청하였으니 본격적으로 실습을 시작한다.
로컬 개발 환경에 설치한 HTTP 웹 서버를 물리적으로 떨어져 있는 원격 서버에 배포해 정상적으로 동작하는지 테스트한다.
AWS EC2로 실습을 진행할 경우에는 이미 계정이 추가되어 있기 때문에 이 단계를 Skip해도 되지만, 나는 네이버 클라우드의 원격 서버로 실습을 진행할 것이므로 별도 작업을 통해 개인별 계정을 추가해야한다.
adduser [사용자명] 형식으로 계정을 추가한다.
sudo adduser newuser
계정 이름, 비밀번호까지 설정을 완료했다.
신규 계정에 몇가지 개인정보를 입력할 수 있는데 입력하고 싶지 않으면 Enter를 누르면 된다.
sudo 권한을 사용하기 위해서는 ① 계정을 sudo 그룹에 추가하거나 ② /etc/sudoers 디렉토리의 파일에 계정을 추가해야된다.
책에는 ②번 방법을 사용하도록 힌트가 나와있다. 따라서, ②번 방법을 진행해본다.
sudoers 파일은 root 계정으로 수정해야하므로, root 계정으로 전환 후 sudoers 파일을 Open한다.
vi /etc/sudoers
'# User privilege specification' 항목에 신규 계정을 추가한다.
아래 명령어를 사용하여 신규 계정이 sudo 권한을 사용할 수 있는지 확인한다.
sudo date
현재 시각이 표시되는 것 확인 완료!!
Ubuntu에서 한국어 Locale을 설정하는 방법에는 3가지가 있다.
- locale-gen 이용
: sudo locale-gen ko_KR.EUC-KR ko_KR.UTF-8- dpkg-reconfigure
: sudo dpkg-reconfigure locales- /etc 아래의 locale 설정 파일 수정
나는 locale-gen으로 Locale을 설정했다.
계정 별로 인코딩을 다르게 사용하고 싶은 경우 해당 수순을 진행한다.
우선, 각 계정 디렉토리의 .bash_profile에 다음 설정을 추가한다.
처음 접근 시에는 .bash_profile이 존재하지 않을 수 있으니, vi .bash_profile 명령어로 파일 생성 후 아래 설정을 추가한다.
LANG="ko_KR.UTF-8"
LANGUAGE="ko_KR:ko:en_US:en"
완료되면 source .bash_profile 명령을 실행하여 설정한 내용을 시스템에 반영한다.
env 명령어를 통해 반영 여부를 확인할 수 있다.
JDK GitHub에 접속하여 ".tar.gz" 확장자를 가진 JAVA 소스 파일의 링크를 복사한다.
(링크 주소: https://github.com/frekele/oracle-java/releases/download/8u212-b10/jdk-8u212-linux-x64.tar.gz)
Terminal에서 아래 명령어를 사용하여 JDK를 다운로드한다.
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" [복사 URL]
ls 명령어를 통해 jdk-8u212-linux-x64.tar.gz 파일이 다운된 것을 확인한다.
아래 명령어로 다운로드 한 파일의 압축만 풀면 설치는 완료된다.
tar -xvf [파일명]
JDK 파일 관리를 위해 압축 해제한 파일을 /usr/lib/ 하위로 이동시킨다.
계정 디렉토리의 .bash_profile 파일에 아래 문구를 추가하여 JAVA_HOME/bin 디렉토리를 PATH로 설정한다.
export JAVA_HOME=/usr/lib/[압축 해제 파일명] export PATH=$PATH:$JAVA_HOME/bin
완료되면 source .bash_profile 명령을 실행하여 설정한 내용을 시스템에 반영한다.
java -version 명령어를 통해 설치 여부를 확인할 수 있다.
Maven 사이트에 접속하여 ".tar.gz" 확장자를 가진 메이븐 파일의 링크를 복사한다.
(링크 주소: https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz)
Terminal에서 아래 명령어를 사용하여 메이븐 파일을 다운로드한다.
wget [복사 URL]
ls 명령어를 통해 apache-maven-3.8.3-bin.tar.gz 파일이 다운된 것을 확인한다.
아래 명령어로 다운로드 한 파일의 압축만 풀면 설치는 완료된다.
tar -xvf [파일명]
메이븐 파일 관리를 위해 압축 해제한 파일을 /usr/lib/ 하위로 이동시킨다.
계정 디렉토리의 .bash_profile 파일에 아래 문구를 추가하여 MAVEN_HOME/bin 디렉토리를 PATH로 설정한다.
export JAVA_HOME=/usr/lib/[압축 해제 파일명] export PATH=$PATH:$JAVA_HOME/bin
완료되면 source .bash_profile 명령을 실행하여 설정한 내용을 시스템에 반영한다.
mvn -version 명령어를 통해 설치 여부를 확인할 수 있다.
Git 설치 및 저장소를 clone 한다.
아래 명령어를 실행하여 Git을 설치한다.
sudo apt install git
git --version 명령어를 통해 설치 여부를 확인할 수 있다.
설치가 완료되면 Git에 Push할 때 사용할 이름과 메일 주소를 설정한다.
- git config --global user.name [이름]
- git config --global user.mail [메일 주소]
아래 명령어를 실행하여 Git으로부터 원하는 프로젝트를 다운로드 받는다.
git clone [URL 주소]
다운로드한 프로젝트는 /root 하위에 배치되어있다.
프로젝트 관리를 위해 아래의 수순을 추가로 진행하였다.
① 1.1에서 추가한 계정 디렉토리에 workspace 디렉토리 생성
② 다운로드한 프로젝트를 workspace 하위로 이동
③ 1.1에서 추가한 계정으로 소유자 변경
: chown [사용자명]:[사용자 그룹명] -R [파일명]
Git에서 다운받은 프로젝트 디렉토리로 이동한 후 mvn clean package 명령을 실행하여 프로젝트를 빌드한다.
(빌드가 완료되면 BUILD SUCCES가 출력된다.)
빌드가 완료되면 아래 명령어를 실행하여 JAVA를 컴파일한다.
PORT는 1024보다 큰 숫자 중 자신이 원하는 숫자로 지정한다.
java -cp target/classes:target/dependency/* [패키지명.메인 클래스명][PORT] &
예) java -cp target/classes:target/dependency/* webserver.WebServer 8080 &
curl http://127.0.0.1:[PORT] 를 실행하여 Hello World 메시지를 확인하면 성공이다.
방화벽으로 인해 외부에서의 접근이 불가능할 수 있다.
아래 블로그의 ufw 명령어를 사용하여 방화벽을 해제한다.
http://webdir.tistory.com/206
네이버 클라우드의 원격 서버를 사용하면 ACG에 기본 방화벽 정보가 설정되어있기 때문에 Custom이 필요하지 않으면 이 과정은 Skip해도 된다.
(주의!! 외부에서의 접속이 필요하므로 서버의 공인IP가 존재해야 한다.)
나중에 사용하게 될 수 있으니 방화벽 관련하여 간단한 내용만 기재해봤다.
UFW는 기본적으로 비활성화 상태이기 때문에 아래 명령어로 활성화 시킨다.
sudo ufw enable
sudo ufw status verbose 명령어를 통해 UFW 상태를 확인할 수 있다.
UFW의 기본 정책은 아래와 같다.
추천 방화벽 정책은 아래와 같다.
- sudo ufw enable
- sudo ufw allow from [IP주소] to any port 22 proto tcp
- sudo ufw allow 23/udp
- sudo ufw allow 80/tcp
- sudo ufw allow 3306/tcp
- sudo ufw status
추가한 설정을 삭제하고 싶을 경우에는 ufw delete [Rule Number] 명령어를 사용한다.
브라우저에서 http://[공인IP]:[PORT] 를 입력하여 Hello World 확인
4.2에서 다운로드 받은 프로젝트의 소스를 수정하여 GitHub 저장소에 push한다.
Hello World는 RequestHandler.java에 기재되어 있다.
Hello World 문구를 Hello Java World로 수정한 후 Git에 Commit/Push한다.
ps -ef | grep [문자열] 명령어로 4.3에서 실행한 웹서버의 프로세스 아이디(PID)를 찾는다.
아래 명령어를 통해 조회한 프로세스를 종료한다.
kill -9 [PID]
6.1의 작업으로 인해 Git 저장소에 변경이 발생했으니, 아래 명령어로 4.2에서 받은 프로젝트를 업데이트 해준다.
git pull origin master
프로젝트가 최신 상태로 업데이트 되었으면 4.3 과정을 실행하여 6.1의 수정 내용을 확인한다.