학습 내용
- 리눅스 admin 계정 다루기
- 리눅스 apache 실행해서 웹으로 apache 접속
- 리눅스 sqlite3
- 리눅스 설치 옵션
- 리눅스 설치 후 작업(파티션 확인, locale 변경)
- 파일 시스템
- 사용자 관리
개인 프로젝트
- 지금까지 배운 내용을 통해 간단한 웹 사이트를 만들어 리눅스에 올려보자
웹 사이트
-버튼을 클릭하면 클릭 횟수를 보여주는 사이트
리눅스
-virtual box에 ubuntu를 설치하여 서버로 사용
project
- 생성한 웹 사이트 jar 빌드
- 인텔리제이의 gradle 메뉴를 통해 bootjar로 빌드
- 생성한 jar 파일을 ubuntu 서버로 전송
sftp j@127.0.0.1
sftp> put "업로드 파일 경로"
- ubuntu 서버에서 jar파일 실행됨
java -jar "파일명".jar
ubuntu 커널에서 실행 성공
웹 브라우저에서 실행 성공
## 마주친 에러
1. 로컬에서 ubuntu 원격접속시 에러 발생
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
-생략-
Please contact your system administrator.
Add correct host key in /home/warren/.ssh/known_hosts to get rid of this message.
Offending key in /home/warren/.ssh/known_hosts:1
RSA host key for -생략(ip)- has changed and you have requested strict checking.
Host key verification failed.
원인
- 로컬에서 ubuntu 서버로 파일을 전송하기 위해 ftp, ssh, scp 여러 방법을 시도하면서 설정이 꼬여
virtual box의 ubuntu를 재설치함
그 와중에 서로의 인증 과정을 필요로 하는 ssh를 사용하면서 기존에 가지고있던 인증정보가 초기화되어 발생한 오류
해결
- 로컬의 ssh key를 새로 생성하여 다시 인증과정을 통해 통신함
ssh-keygen -R [ipaddress]
2. sftp를 통해 접속은 했으나 ubuntu에 jar파일을 put 하는 과정에서 permission denied 발생
원인
- put 경로의 ubuntu 폴더 권한이 읽기만 가능
해결
chmod 777 "폴더명"
3. ubuntu에서 jar 파일 실행시 오류 발생
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError:
org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java Runtime
(class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
원인
- ubuntu의 jdk버전이 낮아 jar 파일의 springboot를 실행하지 못함
해결
- ubuntu 안에서 jdk의 버전을 업데이트하려했으나 ubuntu의 jdk 지원 목록 버전이 낮음
- oracle에서 jdk를 직접 다운로드하여 ubuntu에 설치
wget "파일 다운로드 주소"
tar xvzf "jdk폴더명"
mv "jdk 파일명" /usr/local
JAVA_HOME 환경변수 설정
vi /etc/profile
export JAVA_HOME=/usr/local/"jdk 파일명"
export JRE_HOME=/usr/local/"jdk 파일명"
4. ubuntu에서 실행은 되었으나 브라우저에서 연결이 안됨
원인
- virtual box에서 ubuntu를 설치 할 때 port를 22, 8080만 열어놓았는데 jar에서 설정한 port는 3030이였다.
해결
- jar파일의 port 설정을 3030에서 8080으로 변경
후기
- jar로 배포하는것이 아닌 ubuntu에 tomcat을 설치하고 tomcat의 webapps에 넣어서 실행하려
했다. ubuntu에서 tomcat까지는 실행에 성공했으나 브라우저의
The requested resource [/] is not available
에러는 해결하지 못하여 결국 jar로 빌드하였다 server.xml에서 경로도 수정해보고 ~/.bashrc도 수정해보았으나
결국 해결하지 못했다 아마 war파일의 문제인것 같은데 다시 한번 찾아봐야겠다.
수업 중 궁금증
Q. ssh란
A. 네트워크상에서 컴퓨터간의 파일 전송을 도와주는 프로토콜, 네트워크상에서 파일을 전송하다보니 보안에 취약하지만 ssh는 private key와 public key를 사용하여 안전한 데이터 전송을 보장한다
Q. DCL, DML, DDL, TCL
A. DCL(Data Control Language) 데이터베이스에 접근하도록 권한을 주고 권한을 회수하는 명령어들 grant, revoke등이 포함된다
DML(Data Manipulation Language) 데이터베이스의 테이블에 있는 데이터들을 수정하는 명령어들 update, delete, insert등이 포함된다
DDL(Data Definition Language) 테이블과 같은 데이터의 구조를 정의하는 명령어들 create, alter, drop등이 포함된다
TCL(Transaction Control Language) 데이터베이스의 작업단위를 묶어서 트랜잭션별로 처리하는 명령어들 commit, rollback등이 포함된다.
Q. apache와 tomcat 차이
A. apache는 웹 서버이다 클라이언트가 Http요청을 보내면 웹 서버인 apache는 정적인 리소스를 반환한다,
반면 tomcat은 apache와 웹 컨테이너의 결합이다 정적 응답이 아닌 jsp와 같은 동적 응답이나 세션관리 네트워크등 웹 서비스에 필요한 다양한 서비스들을 웹 컨테이너를 통해 제공다.