VMware을 열어 Create a New Virtual Machine을 클릭한다.
ubuntu iso파일을 찾는다.
이름과 암호를 입력한다. ubuntu, 1234를 입력했다.
15GB를 설정한 후
8GB를 설정한다.
finish를 누른다. 용량이 15GB, 램이 8GB인 임의의 pc를 하나 생성하게 된다.
영어를 선택하고
업데이트를 하지 않는다.
완료
이렇게 엔터를 누르며 다음 창으로 넘어간다.
192.168.42.128 이것이 내 서버 주소이다.
여기까지 넘어온 후,
아까 입력한 이름과 암호를 입력한다.
스페이스바를 눌러 X를 활성화 한 후 Done
여기서 Done을 누르면
이렇게 설치가 실행된다.
이렇게 Reboot Now가 활성화 될 때까지 기다린다.
Reboot가 실행되었다. 이대로 냅두면 된다.
x를 눌러 PowerOff를 누르면 된다. pc를 끄는 거라고 생각하면 된다.
그럼 VMwawre가 종료된다.
VMware를 다시 실행하여 Ubuntu 64-bit을 누르면 다시 실행된다.
다운받은 MobaXterm_Portable.zip 압축을 풀고 안에 있는 MobaXterm_Personal_23.1.exe 를 실행한다.
왼쪽 위 Session을 누르고
서버주소를 입력하고 OK를 누르면
다음 창으로 넘어간다. login as에 아까 만든 ubuntu를 입력하고 엔터를 누르면
아래 ubuntu@192.168.42.128's password : 라는 글자가 나온다.
여기서 아까 설정한 암호를 입력하면 된다. 입력해도 창이 변하지 않으니 입력하고 엔터를 누르면 된다.
No를 누른다.
위 화면이 나오면 성공
sudo apt update -y 를 입력한 후 엔터를 누른다.
password for ubuntu가 나오면 암호를 입력한다.
성공한 모습.
자바를 설치하는 명령어인 sudo apt install openjdk-11-jdk -y 를 입력한다.
자바가 설치되었고, java -version을 입력하면 설치된 자바의 버전을 확인할 수 있다.
pc에 자바를 설치하면 환경 변수에 java가 추가된다. 이제 직접 해보자.
nano ~/.bashrc를 입력한다.
이런 화면으로 전환된다.
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export Path=JAVA_HOME/bin
를 입력한다.
Ctrl + S를 눌러 저장한다.
Ctrl + X를 눌러 밖으로 나온다.
source ~/.bashrc까지 입력해준다.
sudo apt install tomcat9 -y를 입력하여 Tomcat을 설치한다.
192.168.42.128:8080 주소로 접속하여 tomcat9이 나오면 성공적으로 설치되었다.
--
var - lib - tomcat9 - webapps 위 폴더에 파일을 불러와야 한다.
강사님 화면을 캡쳐하였다. 권한이 없어 파일을 넣을 수 없다고 한다.
권한을 지급하자.
sudo usermod -aG tomcat ubuntu를 입력하면 권한을 지급하게 된다.
...
</properties>
<!-- 개발용 jar -->
<!-- 서버 배포용 war -->
<packaging>war</packaging>
<dependencies>
...
vscode로 가서 pom.xml에 위 코드를 추가한다.
public class Boot20230427Application extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
return application.sources(Boot20230427Application.class);
}
Boot20230427Application.java에 extends를 추가한다.
MAVEN을 눌러 Lifecycle의 package를 실행해준다.
target안에 war 파일이 하나 생긴다.
ROOT1.war로 이름을 변경한다.
war파일을 /var/lib/tomcat9/webapps/ 에 추가한다.
자동으로 war 압축이 풀리면서 폴더가 생성된다.
192.168.42.128:8080/ROOT1 주소로 접속한다.
수업시간 때 만들었던 파일을 불러올 수 있다.
@RestController
@RequestMapping(value = "/api/test1")
@RequiredArgsConstructor
@Slf4j
public class RestTestController {
// 127.0.0.1:9090/ROOT/api/test1/select.do?aaa=a&bbb=b&ccc=c
// 조회용 @ReqeustParam(name="aaa") String aaa,
@GetMapping(value="/select.do")
public Map<String,Object> get1( ){
Map<String, Object> retMap = new HashMap<>();
try{
//db처리
retMap.put("status", 200);
}
catch(Exception e) {
e.printStackTrace();
}
return retMap;
}
// 추가
// @RequestBody 엔티티 obj
@PostMapping(value="/insert.do")
public Map<String,Object> get2( ){
Map<String, Object> retMap = new HashMap<>();
try{
//db처리
retMap.put("status", 200);
}
catch(Exception e) {
e.printStackTrace();
}
return retMap;
}
// 수정
// 127.0.0.1:9090/ROOT/api/test1/update.do
// // @RequestBody 엔티티 obj
@PutMapping(value="/update.do")
public Map<String,Object> get3( ){
Map<String, Object> retMap = new HashMap<>();
try{
//db처리
retMap.put("status", 200);
}
catch(Exception e) {
e.printStackTrace();
}
return retMap;
}
// 삭제
// // @RequestBody 엔티티 obj
@DeleteMapping(value="/delete.do")
public Map<String,Object> get4( ){
Map<String, Object> retMap = new HashMap<>();
try{
//db처리
retMap.put("status", 200);
}
catch(Exception e) {
e.printStackTrace();
}
return retMap;
}
}
<body>
<button th:onclick="init()">버튼누르면 함수호출</button>
<button th:onclick="init()">버튼누르면 함수호출</button>
<select th:onchange="init()"></select>
rest로 만든 controller은 반드시 script로만 자료를 처리할 수 있음.
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.3.5/axios.min.js"></script>
<script th:inline="javascript">
async function init() { //함수는 자동으로 호출되지 않음.
const url = /*[[@{/api/test1/select.do(aaa='a')}]]*/"";
const headers = {"Content-Type":"application/json"};
const { data } = await axios.get(url, { headers:headers });
console.log('반환되는 결과', data);
const url = /*[[@{/api/test1/insert.do}]]*/"";
const headers = {"Content-Type":"application/json"};
const body = {id:"aaa", name:"bbb"};
const { data } = await axios.post(url, body, { headers:headers });
console.log('반환되는 결과', data);
const url = /*[[@{/api/test1/update.do}]]*/"";
const body = {id:"aaa", name:"bbb"};
const headers = {"Content-Type":"application/json"};
const { data } = await axios.put(url, body, { headers:headers });
console.log('반환되는 결과', data);
const url = /*[[@{/api/test1/delete.do}]]*/"";
const body = {id:"aaa", name:"bbb"};
const headers = {"Content-Type":"application/json"};
const { data } = await axios.delete(url, { headers:headers, data:body });
console.log('반환되는 결과', data);
}
// init(); //수동으로 함수 호출함.
</script>
</body>