개요
아파치, 톰캣, 우분투, Apache & Tomcat on Ubuntu with AWS
우분투(리눅스)에 mysql 설치
시작하기 전에
- 커맨드는 $ 표시로 구분하였다.
- 중요한 내용이 아닌 경우 [참고] 라는 이름으로 별도의 타이틀링을 하였다. 삽질 과정의 주저리로서 무시해도 괜찮은 내용이다.삽질 과정을 모두 기록한 글이기 때문에, 중간 중간 과도하게 상세한 설명이 들어가있다.
- JDK 설치를 위해서 반드시 진행해야 하는 부분은 [👨🏼💻 중요] 표시로 구분하였다. 이 표시만 따라가면 우분투 리눅스에 JDK 를 설치할 수 있다.
지금까지 (이전과정 요약)
- AWS 인스턴스 생성
- Tomcat 설치 및 설정
- Apache 설치
- mod_jk 활용한 Tomcat 과 Apache 연동
- 원격 파일 제어(업로드, 다운로드) 및 소스코드 원격 제어(수정) 환경 구축
이제 하려고 하는 것
서버에 DB 를 설치하고 DB 에 저장된 정보를 바탕으로 JSP 파일에서 입출력을 제어할 것이다.
따라서 먼저는 DB 인 MySQL 을 설치하고 이를 JSP 파일로 제어하는 환경을 만들어보자.
과정 요약
- MySQL 설치
- 동작 확인
- 데이터베이스 및 테이블 생성 후 테스트 데이터 입력해보기
- JSP 동작확인
- MySQL Connector JAR 파일 다운로드
- mysql-connector-java 파일을 CLASSPATH 에 이동시키기
MySQL 설치 및 접속
이 과정은 매우 간단하다.
우분투에서 MySQL 설치 및 설치 확인
[👨🏼💻 중요]
$ apt-get install mysql-server
은 없다.mysql
mysql-server
가 정확한 명칭인 것 같다.- 설치 중 password 를 묻는다. 정확히 두 번 입력해주자.
- 설치가 완료되면 다음과 같은 프롬프트가 뜬다.
mysql>
> show databases;
를 입력하여 데이터베이스가 제대로 동작하는지 확인해보자.
MySQL 종료
[👨🏼💻 중요]
> exit
위 명령어를 입력하면 mysql 이 종료되고, 다시 리눅스 명령 프롬프트로 돌아온다.
MySQL 접속
[👨🏼💻 중요]
$ mysql -u root -p
- -u : user는 'root'
- -p : 비밀번호를 입력하겠다.
- -p 바로 뒤에 비밀번호를 입력해도 되지만, 보안상 권장되지 않는다.
- 접속이 되면 다음과 같은 메시지를 볼 수 있다.
- mysql 명령어를 통해 접속하는 이 프로그램의 명칭은 'MySQL monitor'이다.
MySQL DB 및 Table 조회 SQL
MySQL Basic SQL 참고자료 (Cheat Sheet)
MySQL 한국어 Cheat Sheet
http://leechoong.com/posts/2018/MySQL_Basic
MySQL 영어 Cheat Sheet
http://www.mysqltutorial.org/mysql-cheat-sheet.aspx
https://gist.github.com/hofmannsven/9164408
위 정도만 알아도 기초적인 DB 조작이 가능할 것이라 생각한다. 역시 생활코딩의 매우 좋은 강의가 있다.
아래는 db 제어를 위한 (자주 쓰이는)기본적인 sql 들이다. 맨 앞의 >
본 글에서 SQL 제어 프롬프트를 의미하므로, >
기호는 입력시 생략한다.
MySQL 데이터베이스 리스트 조회
[👨🏼💻 중요]
> SHOW DATABASES;
현재 존재하는 database 들의 목록을 보여준다.
MySQL 데이터베이스 선택
[👨🏼💻 중요]
> USE mysql;
사용할 데이터베이스를 선택한다.
MySQL 테이블 리스트 조회
[👨🏼💻 중요]
> SHOW tables;
선택된 데이터베이스의 테이블들을 보여준다.
MySQL 테이블 메타데이터 표시
> DESCRIBE user;
테이블 정보를 표시한다. 'SHOW tables;' 결과의 'user'(화면에는 보이지 않지만) 테이블의 컬럼 정보를 표시한다.
MySQL 데이터베이스 생성
[👨🏼💻 중요]
> CREATE DATABASE test; #test라는 이름의 DB 생성
> USE test; #제어할 테이블 선택(아래 테이블 생성 과정은 이 명령이 선행되어야 한다.)
MySQL 테이블 생성
[👨🏼💻 중요]
> CREATE TABLE user(id int AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, create_time DATETIME);
CREATE TABLE user
,user
라는 이름의 테이블을 생성하는데id AUTO_INCREMENT PRIMARY KEY
, id 컬럼은 자동증가(AUTO_INCREMENT)하는 컬럼이며, PRIMARY KEY이다.name VARCHAR(50) NOT NULL
,name 컬럼은 길이 50의 가변길이 문자열(VARCHAR(50)
)이며 NULL 일 수 없다.create_time DATETIME
, 일시에 관한 데이터타입이다. DATE 와 TIME 각각도 분리된 타입으로 기록될 수 있다.
MySQL CHAR vs VARCHAR
가변 문자와 고정문자의 차이
가변문자와 고정문자
- VARCHAR(50)
주어진 바이트(50) 안에서 입력된 문자의 길이만큼 저장된다. 저장공간이 절약된다.
하지만, 검색이 CHAR 에 비해 느리다. 문자열의 끝의 위치가 항상 바뀌기 때문이다. - CHAR(50)
CHAR(50) 이라면 입력된 글자가 10글자이더라도 뒤의 나머지 40글자의 공간은 공백으로 저장된다.
저장공간 낭비라고 생각할 수 있으나, offset의 길이가 명확하기 때문에 검색속도가 빠르다.
MySQL 정보 입력 및 조회
MySQL INSERT, 데이터 삽입
[👨🏼💻 중요]
> INSERT INTO user VALUES(NULL, "COLDMATER", now());
> INSERT INTO user VALUES(NULL, "WARMMATER", now());
> INSERT INTO user VALUES(NULL, "DARKMATER", now());
- NULL, 은 첫 번째 컬럼인
id
를 의미하는 것으로,AUTO_INCREMENT
이기 때문에 자동으로 값이 증가하며 입력된다. 즉, 사용자는 최근 입력한 id 가 몇인지 기억할 필요 없이, NULL 을 넘겨줌으로써 MySQL 이 자동으로 처리하게 할 수 있다.
Auto Increment, MySQL vs Oracle DB
- Oracle 11g db 에서는, AUTO_INCREMENT 기능이 없다. Sequence 라는 기능을 사용하여 자동 id 증가를 한다.
MySQL SELECT, 데이터 조회
[👨🏼💻 중요]
> SELECT * FROM user;
- test 테이블의 모든(*) 컬럼의 정보를 불러온다.
JSP 동작 확인
[👨🏼💻 중요]
이제 DB에 저장된 정보를 표현하는 JSP 페이지를 만들어보자.
여기까지 성공했다는 것은 리눅스(우분투) 위에서 WAS(Tomcat)
와DB Server(MySQL)
이 정상적으로 동작한다는 의미일 것이다.
JSP 페이지가 동작하는지 확인하기
- 본 글 03 에서 Tomcat 과 Apache 두 서버를 연동했다.
*.jsp
파일은 톰캣이 처리하여 화면에 띄워줄 것이고,*.html
파일은 Apache 가 처리하여 화면에 띄워준다. - 다음의 Test.jsp 파일을 리눅스의 root 폴더에 만들고 제대로 동작하는지 확인하자.
아래 소스는 윈도우 환경에서 이클립스의 Dynamic Web Project 를 생성시킨 후 JSP 파일을 만들었을 때 자동 입력되는 내용에 h1 태그만 덧붙였다.
[👨🏼💻 중요]
Test.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1> Hello Universe !</h1>
</body>
</html>
JSP 페이지에서 DB에 접속코드 삽입하기
- JSP 페이지는 결국 servlet 이라는 *.java 파일로 동작한다.
- java 는 DB에 접근하여 DB 를 제어할 수 있는 'Driver' 가 필요하다. 'Driver'는 *.jar 파일이다.
jar 파일이란?
JAVA Archaive
, 클래스의 집합이다. 누군가가 미리 만들어 놓은 클래스를 우리는 부품처럼 사용할 수 있다.
즉, MySQL
은 JAVA(JRE)
환경에서 DB 를 제어할 수 있는 기능을 가진 클래스들의 집합인 JAR
파일을 제공한다.
MySQL Driver for JAVA 다운로드
MySQL 에서 Driver 의 이름을, Connector/J
라고 부른다.
우분투 버전 확인
$ lsb_release -a
또는 $ cat /etc/*release
lsb - linux standard base
???
정석대로 설치해보기
우리가 필요한 파일은 mysql-connector-java-version.jar
이거 하나다.
https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-installing.html(매뉴얼인데)
MySQL 드라이버 다운로드 받기
[👨🏼💻 중요]
$ wget
- 설치하기 (경로 지정)
- 보통 한국 블로그에서는 tomcat 폴더의 lib 폴더에 넣으라는 이야기가 많다.
- MySQL 매뉴얼에 따르면, CLASSPATH 환경변수에 해당 jar 파일의 위치를 명시해주라고 되어있다.
mysql-connector-java-version.jar
파일 다운로드- 먼저 나는 Connector/J 메뉴에서 바로 위 스크린샷과 같이,
*.deb
패키지 파일을 받을 수 있었다.
MySQL 드라이버 설치하기
dpkg 명령어로 deb 파일 실행
[👨🏼💻 중요]
deb
은 패키지 파일로서 설치시 설정까지 함께 진행한다.$ dpkg -i [deb 파일 명]
$ dpkg -s mysql-connector-java
$ dpkg -L mysql-connector-java
패키지 설치 위치 확인
패키지가 설치된 위치 확인 : /usr/share/java/
확인했더니 /usr/local/java/
라는 폴더에 생성되었다. 이게 *.dep
파일이 원하던거다. 이 정보는 -e
옵션을 통해서 *.deb
파일을 풀어 해칠 수가 있는데, DEBIAN
이라는 폴더의 파일 내용과 동일하다. 만약 이 스크립트의 내용만을 통해서 설치된 파일과 설정을 확인할 수 있는것이라면, 현재 받은 *deb
파일에는 설정 파일이 없다.
jar 이동하기
[👨🏼💻 중요]
$ mv mysql-connector-java-version.jar /usr/local/java/jre/ext/
jar 파일이 설치된 위치에서 JAVA 설치시 설정했던 CLASSPATH 의 경로에 mysql-connector-java-version.jar 파일을 이동시켜준다.
MySQL 접속 JSP 파일 작성하기
[👨🏼💻 중요]
$ vim /local/usr/tomcat8/webapps/ROOT/test.jsp
vim 에서 다음과 같은 코드를 입력한다.
(vim 이 익숙하지 않다면, vim 에 대해서 간단히 학습하거나, 이전 ftp 글을 참고하여 test.jsp 파일을 옮기자.)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DB Connection Test</title>
</head>
<body>
<%
String DB_URL = "jdbc:mysql://127.0.0.1:3306/test";
String DB_USER = "id";
String DB_PASSWORD = "dbpw";
Connection conn;
Statement stmt;
PreparedStatement ps;
ResultSet rs;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
stmt = conn.createStatement();
/* SQL 처리 코드 추가 부분 */
conn.close();
out.println("MySQL JDBC Driver Connection Test Success!!!");
} catch (Exception e) {
out.println(e.getMessage());
}
%>
</body>
</html>
브라우저로 접속 확인
[👨🏼💻 중요]
브라우저에서 해당 주소로 접속하였을 때 "MySQL JDBC ~~ Success" 문구가 뜨면 try 구문이 성공적으로 실행되었다는 것이므로 접속 성공이다.
위 코드의 "SQL 처리 코드 추가 부분" 주석 부분에 아래 코드를 추가하여 실제로 MySQL test DB 의 user 테이블에 저장했던 정보를 웹페이지에 표시해보자.
ps = conn.prepareStatement("SELECT * FROM user;");
rs = ps.executeQuery();
while(rs.next()){
out.println(rs.getString(1)+" "+rs.getString(2)+" "+rs.getString(3)+"<br />");
}
완료!!!
다음 글에서는, 이클립스에서 생성한 웹 프로젝트를 linux로 옮기는 작업(배포)을 해보도록 하자.
그러나 궁금한 것들
여기까지 이번 글의 목표는 완료했다. 다만 진행 중 몇가지 궁금했던 사항들에 대해서 아래에 적어보았다.
이 글의 주요 내용
- MySQL 서버 동작 확인
- JAR 파일의 동작 및 참조 원리
- 이클립스 IDE 의 역할과 기능 리눅스에서와의 비교
- CLASSPATH 환경변수와 JAR/Connection.forName() 함수와 동적, 정적 로딩
- Connection Pool 코드의 의미
mysql 서버 상태 확인
$ mysql status
mysql 서버는 설치함과 동시에 동작시켰다. 즉, 돌아가고 있다는 뜻이다. (위 서버 상태 확인을 통해서도 돌아가고 있음을 확인할 수 있었다.) mysql 서버의 동작 상태를 확인하고 싶었으나 다음과 같은 한계가 있었다.
먼저 코드 안에서 (Connection Pool) MySQL 에 접근할 수 있는지 확인할 수 있어야 했다. 하지만 jar 파일의 위치에 문제가 있었다. Ecplpise로 돌릴 때 GUI 환경에서는 BuildPath 를 자동으로 지정해주지만, Linux에서는 이 방식이 어떻게 작동하는지 몰랐다. 하지만, java CLASSPATH 환경변수를 추가해줄 때, $JAVA_HOME/jre/lib/ext
라고 해줬었으므로, 우리는 이 장소(path)에 *.jar
파일을 넣어주어야 한다. 추가로 이클립스의 BuildPath 는 어떤 방식으로 설정되는지 알아볼 필요가 있겠다.
MySQL 외부 접속
mysql 을 일반적으로 설치한 경우에는, mysql 설정 파일(/etc/mysql/mysql.conf.d/mysql.cnf) 에서 설정된 서버의 ip (mysql.cnf 항목의 bind-address, 기본은 127.0.0.1 로 지정되어있다.) 로 접근하거나, localhost 로 접근하여야 한다. 즉, JSP 또는 Servlet 파일(곧 자바 파일) 내부의 Connection Pool 코드 중 url 은 jdbc:mysql://localhost:3306/databaseName 이 되어야 한다. 외부접속을 허용해야 한다면 검색을 통해 참고하도록 하자.
(심화) *.jar
파일의 참조 설정
CLASSPATH 환경변수와 관련한 *.jar 파일의 명확한 위치
다음의 궁금증을 가진 사람이라면 이번 단락이 도움이 될 것이다.
- Q1. JAVA 는 어떻게 jar 파일을 참조하는가?
- Q2. Connection Pool 코드의 의미
JAVA가 *.jar
파일을 참조하는 방식
윈도우즈에서는 이클립스라는 IDE 를 기반으로 '프로젝트'라는 개념을 위주로 개발을 진행하기때문에, 실은 많은 부분들을 '모르더라도' 어느정도 수준의 개발이 가능하다. 하지만, 리눅스는 IDE 개념이 없다. (CUI 환경에서 현재 내가 아는 한 없다. 아시는 분 있으면 댓글로 좋은 정보 부탁드려요 ^^) IDE 는 우리도 모르게 (우렁각시처럼) 개발 환경 설정을 도와준다. 문제는 CUI 리눅스 상에서 자바를 돌려야 할 때 발생한다. 리눅스에는 IDE 가 없고, 개발 환경 설정을 우리도 모르게 도와주던 도움이 더 이상 존재하지 않는다.
Eclipse 가 JAR 를 찾아 연동하는 방식
Eclipse IDE 는어떻게 코드를 빌드하고 실행시키며 Driver 를 로드할 수 있을까?맨 처음 코드로 작성된 *.java
파일이 javac
프로그램으로 *.class
파일을 생성해준다. 이 과정이 컴파일이다. 컴파일된 *.class
파일은 java
프로그램에 의해 실행된다(ex) $ java app.jar
. 이 때 실행된 프로그램은 Driver를 지정된 경로에서 찾는다. .classpath
라는 파일에 입력된 *.jar
파일을 찾고 해당 클래스를 사용할 수 있게 된다.
실은 이 과정을 이해하는데 꽤 시간이 걸렸다. 리눅스는 직관적인 프로그램 실행 방식을 가지고 있다.(오히려 그 과정 자체를 이해하는 것을 IDE 가 힘들게 하는 것일지도 모른다.) 그렇지만, GUI 환경의 IDE 는 동작 방법 자체는 직관적이더라도 해당 동작을 이해하는데 깊은 이해가 필요했다.
다음은 Eclipse 가 동작을 제어하는 전반적인 과정이다.
- 먼저, 프로젝트 파일의 구성이다. WorkSpace 를 생성하고 프로젝트를 생성한 후 해당 프로젝트의 내부 모습이다. 즉 /workspace/project/ 의 모습을 보고 있다.
src
는java
코드가 저장된 폴더이다.build
는 컴파일 된 class 파일이 저장된 폴더이다.
.settings
폴더의 모습은 다음과 같다.- 아마 이 파일들은 이클립스에게 중요한 파일이라고 생각한다. 이클립스라는 IDE 프로그램이 java 와 javac 라는 프로그램을 제어하기 위한 각종 설정들인 것 같다.
.settings/org.eclipse.wst.common.component
파일을 살펴보자.
무슨 뜻인지 확실히 이해하기 힘들지만, 현재 프로젝트의 경로와 관련되어 있음을 알 수 있다. 이클립스는, java 와 javac 를 실행시킬 때 이 경로들을 활용할 것이다. 아마도.
- 아마 이 파일들은 이클립스에게 중요한 파일이라고 생각한다. 이클립스라는 IDE 프로그램이 java 와 javac 라는 프로그램을 제어하기 위한 각종 설정들인 것 같다.
.classpath
파일의 내용은 다음과 같다.
- 이 상황에서 이클립스의 프로젝트상의
Build Path
를 추가해주게 되면,.classpath
의 파일 내용이 달라지게 된다. 바탕화면에 test.jar 파일을 만들고Build Path
에 추가(Add External JARs)해보았다.
위의 GUI 환경(Eclipse)에서의 Build Path
설정이 .classPath
에 영향을 준다는 것을 확인할 수 있다.
느낀점 : 자바를 처음 배우면 java 와 javac 의 차이에 대해 먼저 배운다. 또 jre 와 jdk 의 차이점에 대해서도 배운다. 어렴풋이기는 하지만, 왜 그러한 내용을 먼저 배우는지, 알 수 있는 부분이었다.
아무튼 난 지금 산으로 갔다.
Connection Pool 해석해보기
일명 "Connection Pool"이라고 불리는 DB 접근 코드가 있다. 각 코드의 의미가 무엇일까?
stack over flow 의 이 질문에 대한 답
동적 정적에 대한 급한 불 끄기식 이해
Class.forName("com.mysql.jdbc.Driver")
(길다... 과감히 건너 뛸 용기도 필요하다고 본다.)
심지어 이 방법은 옛날 방법이란다. 링크 참고- 일단 이 메소드는 괄호 안의 클래스 파일을 찾아 '동적으로' 로딩한다. 넘겨짚건데, 동적으로 로딩을 하게 되면, 메모리가 절약되기 때문에 이 방식을 사용하는 것 같다. 즉, DB 접근시에만 메모리에 해당 클래스를 로딩한다고 생각된다.
- java 는 classpath 에 지정된 경로를 돌며 위 패키지에 해당하는 Driver 를 찾을 것이다. 때문에, 찾는 jar 파일이 없다면(또는, classpath 에 지정되지 않은 위치에 *jar 가 있다면) 클래스를 찾을 수 없다. 아래는 확장 프로그램(Ecplipse Archaive Utility)을 이용하여 mysql connector jar 파일을 펼쳐본 것이다.(zip 풀 수 있는 프로그램을 이용할 수도 있다.)
DriverManager.getConnection(url,dbid,dbpw)
- 인자로 전달된 url (매개변수_parameter와 인자_argument의 차이) 에 접속하여, dbid와 dbpw 로 접속을 시도한다.
- 해당 접속 결과가 conn 이라고 정의한 Connection type 의 변수에 담겨진다.
- localhost 는 루프백 호스트명이다. 이는 서버에서 자기 자신에게 접근하고자 하는 경우 사용한다. MySQL 은 기본적으로 루프백 호스트명으로만 접근할 수 있도록 설정되어있다.
dpkg 추가 기능과 deb 파일 살펴보기
$ dpkg -e [파일명]
내부 제어 스크립트 파일 풀기(DEBIAN 폴더 생성)
$ dpkg -x [파일명] [위치]
설치 파일 직접 풀기
지정한 위치의 /usr/share/
에 mysql
관련 jar
파일이 있음을 확인할 수 있다.
그렇다면 궁금증이 생긴다. MySQL 사이트의 "Platform Independent" 파일은 어떤 파일들을 갖고 있을까?"
마찬가지로 다른 플랫폼에서 추가적으로 써야하는(?) jar
파일과 함께 동일하게 mysql-connector-java-8.0.11.jar
파일을 갖고 있음을 확인할 수 있다. 결론은 중요한건 mysql-connector-java-version.jar
파일임이 명확해졌다. 우분투 전용 파일은 1.9M, 플랫폼 인디펜던트는 약 5M. 당연히 플랫폼 인디팬던트는 많은 플랫폼을 지원해야하다보니 용량이 크다는 것을 확인 가능하다.
jar 파일을 /java/bin 과 /java/jre/bin 에 복사한다?
이는 잘못된(경우에 따라 되기도 안되기도 하는) 방법이었다. 만약 이렇게 한다면, 해당 폴더에 대한 CLASSPATH 를 또 추가해주어야 했다. 아래 또 설명하겠지만, 우리는 이미 /etc/profile
파일에서 환경변수를 설정했었다. 즉, jar
파일은 그냥 블로그에 나와있는대로 넣으라고 넣는게 아니라, 우리가 JAVA 설치시 환경변수로 설정해준 CLASSPATH
가 가리키는 곳에 *.jar
파일을 넣어주어야 한다.
보통 블로그에서는 어떤 디렉토리에 넣으라고만 되어있는데 중요한건 아랫줄처럼 표현해줘야 한다.
!!중요!! Connector JAR 파일은 환경변수로 설정해준 CLASSPATH 가 가리키는 디렉토리에 넣어주어야 한다!
환경변수 설정을 저렇게 해야한다는 것을 알려줄 게 아니라, CLASSPATH 라는 변수가 어떻게 쓰이는지를 알려줘야 한다고 생각한다. 애초에 CLASSPATH 라는 개념에 대해 명확히 이해하는 것이 중요하겠다.
$ javap com.mysql.jdbc.Driver
Driver 클래스가 실제로 동작할 수 있는 상태인지 경로를 확인하는 과정이다.
jar
파일을 /tomcat8/lib/
에 복사하라고 하는데, 이는 어떻게 작동할지 궁금하다.
$ javap
명령어로는 확인되지 않을 것 같다.- 예상대로는, 안될 것 같다. 우리가 지정해준 환경변수(
CLASSPATH
)에/tomcat8/lib
는 없기 때문이다. - 만약 된다면,
CATALINA_HOME
이라는 환경변수 아래의 lib 이라는 폴더를 내부적으로 지정하고 있을 것이다.
(tomcat8 파일에서 거드는게 있을까? 된다면, 외부 jar 까지 tomcat에서 관리해준다는 뜻이 된다.)
'Server 만들기' 카테고리의 다른 글
[삽질 가득 서버 설치기] [Apache + Tomcat] 6 - 이클립스에서 개발한 프로젝트 리눅스에 배포하기 (0) | 2018.07.04 |
---|---|
[삽질 가득 서버 설치기] [Apache + Tomcat] 4 - 소스코드 배포환경 구성 (1) | 2018.06.13 |
[삽질 가득 서버 설치기] [Apache + Tomcat] 3 - Apache Server 설치 및 Tomcat 연동(mod_jk) (2) | 2018.06.11 |
[삽질 가득 서버 설치기] [Apache + Tomcat] 2 - 우분투 Tomcat 설치 (2) | 2018.06.11 |
[삽질 가득 서버 설치기] [Apache + Tomcat] 1 - 우분투 JDK 수동 설치, JAVA 수동 설치 (0) | 2018.06.11 |