[JAVA] 한번에 끝내는 Ubuntu JSP서버세팅

HYEONG HWAN, MUN/ 2월 28, 2015/ 미분류/ 76 comments

https://blog.lael.be/post/858

요청에 의해서 “Ubuntu 에서 JSP 서버를 세팅하는 방법“을 적도록 하겠다.

최종 수정 : 2017-06-29

 

Ubuntu 16.04 LTS 기준입니다.

 


* 이 글은 Ubuntu 에 JSP 웹서버 세팅을 소개하고 있습니다.

* Ubuntu 에서 PHP 웹서버 세팅을 원하시면 https://blog.lael.be/post/73 글로 이동하세요.

* Ubuntu 에서 PHP와 JSP를 동시 구동하고 싶으시면 https://blog.lael.be/post/1023 글로 이동하세요.


 

*JSP는 SI프로젝트에서 주로 사용되는 언어이다.

*국내의 금융, 공공기관 프로젝트에서 주로 사용되기 때문에 개발자의 몸값이 높다.

이것은 순전히 JAVA언어의 우수성 때문이라기 보다는, 수요와 공급의 법칙으로 인한 것이다.

 

 

- 시장경제는 대개 수요과 공급의 법칙으로 정해진다.

 

국내의 경우 2012년 부터 SI가 저물고 있다. 여러 ‘고도화 프로젝트’가 종료되고, 경제가 장기 불황(성장을 안하거나, 실질 성장률이 떨어짐)에 접어듬에 따라서,

SI 프로젝트의 단가 및 갯수가 확 줄었다.

* 따라서 JSP 개발자의 몸값도 낮아졌다. (공급과잉)

* 2013년도 부터 ‘오픈소스’ 및 단가 절감을 위해서 공공기관에서도 PHP 프로젝트가 발주되기 시작했다.

* Cafe 24의 경우 2014년 09월 11일 부터 JSP호스팅 사업을 중단하였다. (관련 공지)

 


 

1) 리눅스 버전체크

#uname -a
Linux 150-95-172-188 4.4.0-57-generic #78-Ubuntu SMP Fri Dec 9 23:50:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

2) Ubuntu 버전체크

#cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

3) 하드용량체크

#df -h
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/mapper/LaelServer02-root
 37G  739M   35G   3% /
 tmpfs                 244M     0  244M   0% /lib/init/rw
 varrun                244M   72K  244M   1% /var/run
 varlock               244M     0  244M   0% /var/lock
 udev                  244M  148K  244M   1% /dev
 tmpfs                 244M     0  244M   0% /dev/shm
 lrm                   244M  2.7M  242M   2% /lib/modules/2.6.28-11-server/volatile
 /dev/sda5             228M   14M  202M   7% /boot

대략 다 더하면 40G가 나온다.

--

4) 메모리 체크

#free -m
             total       used       free     shared    buffers     cached
Mem:           988        703        285          0        137        393
-/+ buffers/cache:        172        816
Swap:         1881          0       1881

988M의 전체메모리중 현재 703M을 사용하고 있고 285M가 비어있다.

 

5) 설치된 소프트웨어 최신버전 패치

apt 목록 갱신

apt란 Advanced Packaging Tool 을 뜻합니다.

우리는 apt 라는 우분투에 내장된 프로그램을 이용해서 프로그램을 쉽게 설치/제거 할 수 있다.

 

패키지 목록 갱신.

#apt-get update

 

현재 운영체제에 설치되어있는 프로그램 최신버전패치

#apt-get upgrade

6) 시스템 시간 설정

이것을 하지 않으면 영국 시간을 불러올 것이다.

물론 초기 설치할 때 Asia/Seoul 을 설정했다면 이 작업을 할 필요는 없다. 하지만 또 한다고 해서 문제되지는 않는다.

- 데비안 패키지 재설정 TimeZone Data 를 실행한다.

#dpkg-reconfigure tzdata

GUI 환경이 나올 텐데, 순서대로 Asia - Seoul 을 선택하면 된다.

 

 

7) Hostname 설정

이 서버에 이름을 정하는 것이다. 이름을 잘 정해 두어야 나중에 다중 서버작업을 할 때 헷갈리지 않는다.

v3

위의 뜻은 “li599-115 서버에 root 사용자” 라는 뜻이다.

글 쓰는 지금 단어를 빨리 생각해보았는데  newhistory 라는 것이 떠오르더라.

이제 이 서버는 newhistory 라는 이름으로 만들 것입니다.

#vi /etc/hostname

빈 파일일 건데(또는 기존 hostname이 쓰여있을것임.) 원하는 이름으로 바꾼다. newhistory

권장하는 단어는 이 서버에 연결될 대표 도메인이다. 예를 들어 lael.be 같은 것.

 

적용한다.

#hostname -F /etc/hostname

 

서버에 재 접속하면 적용된 것을 확인 할 수 있을 것이다.

v4

 

8) 웹서버 설치 (와쓰 설치)

좀 복잡한게…

JSP 프로젝트는 JAVA 버전에 영향을 많이 받는다.

 

예를들어서 3년전에 내가 짜서 완벽하게 돌아가는 코드가, 지금은 컴파일에러가 나면서 안돌아 갈 수 있는 것이다.

즉 이런류의 질문이 올라온다. (http://okky.kr/article/183920)

 

널리 쓰이는 코드들은 권장 jdk 버전을 명시해 놓았다.

http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:dev3.0:gettingstarted

스크린샷 2015-02-28 오전 12.55.02

 

SI 프로젝트 발주처의 성격에 따라서 웹서버 선호가 다른데, 이 글은 주로 입문자 분이 볼 것이라 생각하니

전 세계에서 가장 널리 쓰이는 Apache Tomcat 으로 설치하도록 하겠다.

 

2017년 6월 현재 JAVA 9 (= JAVA 1.8) 이 나왔으나, 아직까지 JAVA 8(= JAVA 1.8) 이 널리 쓰이므로 java 8 로 설치하도록 하겠다.

 

자바 해석기 설치

#apt-get install openjdk-8-jre-headless

 

자바 컴파일러 설치

#apt-get install openjdk-8-jdk

 

자바 해석기 버전 확인

#java -version

 

 

자바 컴파일러 버전확인

#javac -version

 

 

Apache Tomcat 설치

공식사이트 : http://tomcat.apache.org/

 

 

이 글에서는 tomcat8 을 설치하겠다.

 

#apt-get install tomcat8

 

설치된 tomcat 버전 확인

#/usr/share/tomcat8/bin/version.sh

 

확인

http://서버의아이피:8080

 

 

 

9) virtual host 설정하기. (도메인 설정하기)


 

** 도메인을 소유하고 있지 않은경우** (혼자 도메인없이 jsp 연습해보고 싶을때)

9번을 통채로 건너뛰세요!

 

sftp 로 서버에 root 계정으로 접속하신 후

/var/lib/tomcat8/webapps/ROOT

위치에 index.jsp 파일을 생성하고 확인해보세요.

 

=> 이제 10번으로 이동


 

 

* 도메인을 소유한 경우에 대한 설명입니다. (일반적인 호스팅 환경)

먼저 사용자를 등록하자. (myuser 말고 사용하고 싶은 사용자 아이디를 입력하셔도 됩니다.)

#adduser myuser

추가한 사용자로 쉘 전환하기.

#su -l myuser

document root 생성하기.

#mkdir -p www/ROOT

(즉 /home/myuser/www/home/myuser/www/ROOT 폴더를 생성하는 것이다.)

 

이 경우 AppBase는 /home/myuser/www 이다.

 

#cd www/ROOT

 

#vi index.jsp

 

HELLO JSP!

<%= new java.util.Date() %>


스크린샷 2015-03-02 오전 4.32.13

즉 위의 index.jsp 파일의 위치는 /home/myuser/www/ROOT/index.jsp 이다.

 

다시 root 쉘로 돌아와서 (myuser 쉘에서 exit 명령어 또는 쉘을 하나 더 열어서 새로 로그인하자)

#vi /etc/tomcat8/server.xml

 

문서 최하단에 아래와 같이 나타날 건데,

스크린샷 2015-03-02 오후 1.08.18

 

 

아래 예시와 같이 Host 구문을 추가하자.

기존 구문을 지우지 말고 복사해서 사용하자.

hellomyjsp.co.kr 는 당신이 소유한 도메인 이름을,

appBase 는 당신이 추가한 사용자 아이디를 고려해서 작성하자.

 

스크린샷 2015-03-02 오후 1.14.56

 

tomcat 8 재시작

#service tomcat8 restart

 

결과 확인

웹브라우저에서 환경설정 파일에 적은 주소  http://hellomyjsp.co.kr:8080  접속.

 

 

10 - 1) MariaDB 설치

mysql 과 mariadb 는 완전 API 호환된다.

 

#apt-get install mariadb-server

MariaDB 10.0.24 이 설치된다.

 

MariaDB 초기화.

14.04 LTS까지는 자동으로 처리되던 작업인데.. 분리되었다.

아무튼 데이터베이스 초기화 작업을 하도록 하자.

다음의 명령어 실행하자.

/usr/bin/mysql_secure_installation

모르면 엔터 누르면 된다. (비밀번호만 설정하고 나머지는 엔터)

잘못한 것 같으면 위 명령어를 다시 실행하면 된다.

 

 

:: root 의 인증 플러그인 정보 제거하기

MySQL에 플러그인이라는 개념이 생겼다. 그 중 하나가 서버사이드 인증이다.

예를들어 Linux의 myuser1 사용자와 MySQL(MariaDB)의 myuser1 과 연결이 되는 경우이다. (비밀번호 필요없이 쉘인증)

root 사용자가 기본값으로 unix_socket Auth Plugin 이 설정되어 있는데… 이건 실 사용에 많은 불편함을 준다.  기존과 같이 비밀번호 인증 방식으로 바꾸도록 하자.

Linux root 사용자로 로그인한 상태에서

# mysql

(현재는 unix_socket 인증방식이라서 Linux root 사용자는 MySQL(MariaDB) root 계정에 비밀번호 없이 로그인 할 수 있다)

mysql_1604

use mysql;
update user set plugin='' where User='root';
flush privileges;
exit;

 

 

MYSQL 콘솔 클라이언트 버전체크
#mysql -V
mysql  Ver 15.1 Distrib 10.0.24-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

 

 

10 - 2) 기본 언어셋 설정(중요)

이 단계를 건너뛰면 DB가 latin1 으로 생성되며 추후 DB작업에 문제가 생길 수 있다.

#vi /etc/mysql/mariadb.conf.d/50-server.cnf

 

(vi 에디터 사용방법을 모른다면 ftp 클라이언트를 사용하여 서버에 로그인 후 해당파일을 수정하고 덮어쓰기한다.)

 

[mysqld] 항목에 다음 2 줄을 추가한다.

2015년도 부터는 아래와 같이 utf8mb4 속성을 사용하세요.

이 속성은 utf8확장입니다. 기존의 모든 utf8과 상위 호환됩니다. (utf8 에서 utf8mb4 로의 변환은 손실이 일어나지 않습니다.)

 

utf8mb4 속성은 스마트폰 이모티콘 문자(emoji)를 저장할 수 있습니다.

자세한 설명은 이곳에(https://blog.lael.be/post/917) 있습니다.

character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

 

q14

 

변경사항 적용

#service mysql restart

 

11) 연결 드라이버 설치 (JDBC Mysql Connector 설치)

Java에서 Mysql DB와 Connect 하는 드라이버를 설치해야 한다.

#apt-get install libmysql-java

/usr/share/java/mysql-connector-java.jar 위치에 connector 가 설치된다.

 

Tomcat8 라이브러리 폴더에 링크생성

#ln -s /usr/share/java/mysql-connector-java.jar /usr/share/tomcat8/lib/mysql-connector-java.jar

 

Tomcat8 재시작

#service tomcat8 restart

 

12) 예제소스 테스트

MySQL 접속주소 :  localhost

MySQL 사용자 아이디 : test

MySQL 사용자 비밀번호 : test

MySQL 데이터베이스명 : test

인 경우.

<%@ page import = "java.sql.*" %>
<%

Class.forName("com.mysql.jdbc.Driver");
String myUrl = "jdbc:mysql://localhost/test";
Connection conn = DriverManager.getConnection(myUrl, "test", "test");

// the mysql insert statement
String query = " insert into users (first_name, last_name, date_created, is_admin, num_points)"
+ " values (?, ?, ?, ?, ?)";

// create the mysql insert preparedstatement
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString (1, "Barney");
preparedStmt.setString (2, "Rubble");
preparedStmt.setString (3, "vv");
preparedStmt.setBoolean(4, false);
preparedStmt.setInt (5, 5000);
// execute the preparedstatement
preparedStmt.execute();

conn.close();
%>

 

스크린샷 2015-03-03 오전 8.41.28

 

결과확인

스크린샷 2015-03-03 오전 8.45.27

 

#북마크:

12) 보안패치 (fail2ban)

이 곳에서는 fail2ban 이라는 프로그램을 사용하여 서버를 보호하는 방법을 적도록 하겠다.

fail2ban 이란 지정한 시간내에 지정한 횟수만큼 실패 하면 ban 시간만큼 접속을 차단하는 것이다.

여러명이서 같이 쓰는 서버에 좋다. 주로 웹호스팅 서버. 방화벽 세팅하기 귀찮을때에도 이것을 사용한다.

 


 

fail2ban 은 로그기반 프로그램이기 때문에 로그가 쌓이는 시점으로 계산됩니다.

이것 때문에 발생하는 fail2ban maxretry별 최대 로그인 시도가능 횟수.

1 => 1번

2 => 7번

3=> 13번

4=> 19번

5=> 25번

6=>31번

n=> 6*(n-1) + 1

 

SSH의 경우 로그인이 실패(fail)하면 재시도(retry) 5회 하도록 해 줍니다.  재시도는 카운트 되지 않습니다.

SFTP의 경우 로그인이 실패(fail)하면 retry 안하고 바로 연결을 끊기 때문에 로그인 최대 시도횟수가 의도한대로 동작합니다.


 

 

방화벽 확인

#iptables -L

스크린샷 2015-03-29 오전 1.37.29

아마 이렇게 되어 있을 것이다.

 

Fail2ban 설치

#apt-get install fail2ban

 

설치 후 방화벽 확인

#iptables -L

스크린샷 2015-03-29 오전 1.40.18

fail2ban 이라는 항목이 추가되었으며 패킷을 컨트롤 할 수 있게된다.

 

아무것도 설정하지 않으면 패키지 기본값이 적용된다.

ssh 연결에 대해서 최근 10분간 6회이상 비밀번호가 틀리면,  ban조건이 충족한 때로부터 10분동안 ssh 접속차단(drop)된다.

 

아무것도 설정안해도 충분히 보호가 되지만 몇가지 설정을 해보도록하자.

 

fail2ban 환경설정

jail(감옥) 파일을 수정한다.

#vi /etc/fail2ban/jail.conf

스크린샷 2015-03-29 오전 1.48.57
상단의 [DEFAULT] 항목을 보자.

ignoreip 에는 ban 이 절대 되지 않을 아이피를 적는다. (123.234.123.234/32 형태로 적는다. 추가시 스페이스바로 구분.)

bantime 은 접속을 차단할 시간이다. 600은 10분을 의미한다.

findtime 은 통계를 찾을 시간이다.

maxretryfail 횟수이다.

 

 

스크린샷 2015-03-29 오전 1.57.16

 

maxretry 항목을 당신의 요구사항에 맞게 변경하자.

원래 3이었는데 6으로 재정의(redefine) 된다. 6이면 충분하다. 비밀번호 틀리기도 어렵다.

 

 

ssh 의 경우 로그인의 성공이나 실패여부를 모두 /var/log/auth.log 에 저장한다.

위의 경우

1) 고객의 ssh 신규접속

2) fail2ban 프로그램이 /var/log/auth.log 파일을 읽어서 최근 600초(10분)동안 6회이상 실패한 기록이 있으면

3) 600초 동안 연결차단

 

* 라엘이의 설정예제

신뢰된 아이피 및 ban 시간만 변경함.

스크린샷 2015-03-29 오전 2.12.39

 

* 설정 변경후 적용을 위해서 서비스 재시작

#service fail2ban restart

 

 

* 라엘이의 실 서버 적용예제

아래와 같이 무차별로그인 시도한 사람은 일정기간 ban 될 것이다.

#iptables -L

스크린샷 2015-03-29 오후 12.53.34

 

* 실수로 당신의 IP 가 ban이 되었다면

1) ban이 되지 않는 다른 아이피로 root 로그인을 시도하자.

2) fail2ban 을 reload 또는 restart 하자.  이 경우 밴 목록이 초기화 되는데 모든 IP에 대해 1번의 로그인 기회가 주어질 것이다.

로그인 시도 -> 로그인 성공 -> 로그인

로그인 시도 -> 로그인 실패 -> (fail2ban 이 인증로그를 살펴본 후 ban 요건을 탐색하고) ban

3) 또는 위에서 설정한 ignoreip 에 해당 IP 를 적으면 절대로 ban 시키지 않는다.

 

끝.

76 Comments

  1. Lael님 잊지 않고 글 작성해주셔서 감사합니다. 🙂

  2. 안녕 하세요 글 잘보고 잘 따라 설치 해보고 많은 도움 됐습니다.~
    그런데 마지막에 실행 해서 확인 하는거는 “http://hellomyjsp.co.kr:8080” 여기 들어가서 확인 하는게 맞는 건가요?
    저는 위에 mariaDB 설치 전 확인 하는 부분 부터 페이지를 표시 할수 없다고 나오던데….혹시 java 설치 하고 환경 변수
    설정을 해야 하는 건가요? 아무것도 모르는 초보라….가르침 부탁 드립니다~

    1. 최대한 쉽게 작성하였는데 [도메인이 없는 경우]를 생각하지 못하였네요.
      본문 글을 수정하였습니다.
      소유 도메인이 없으시다면 oa.to 같은 무료도메인 서비스를 이용해보세요.

  3. 감사 합니다.~
    혹시 도메인 없이 하는 방법은 없나요?
    그냥 IP 주소를 입력 해서 하는 방법이요…..
    무료 도메인을 찾는데 말들은 무료 라고 하는데 무료가 아니기도 하도 등록 방법도 어렵고 해서요…
    그리고…CD 로 경로를 찾아 들어 가는데
    www 폴더에서 cd /ROOT/ 이렇게 하면 파일이나 디렉터리가 없다고 나오는데
    cd /home/myuser/www/ROOT/ 로 치고 들어가면 들어 가지는데… 이유가 뭘 까요?

    1. SFTP 프로그램 (Filezilla client 같은 프로그램을 사용하세요)을 이용해 서버에 접속해서 해당 폴더(ROOT)를 생성해 주시면 됩니다.

      도메인이 없으시다면 아이피로 접속하시고 이때 화면에 나온 파일은
      /var/lib/tomcat7/webapps/ROOT/ 폴더안의 index.html 입니다. index.jsp 를 생성하신 후 테스트해보세요.

  4. 항상 많은 도움 주셔서 감사합니다!!

    리눅스(우분투)에 입문 후,

    가장 많이 방문하는 곳으로 webupd8 다음이 라엘님 블로그…
    하하하.

    1. 하하하!

      팬(?)분의 응원에 힘입어 더욱 노력하도록 하겠습니다!

  5. 정말 감사합니다 몇시간 고생하던거 해결했습니다 ㅠㅠ

    1. 해결되었으니 다행이에요!

  6. 우분투에서 아파치 + 톰켓 사용해서 jsp 웹서버 구축하고싶은데 다른 웹페이지검색하고 따라해봐도 아파치 80포트 톰켓 8080 포트로 각각 접속은 되는데 mod-jk인가 그걸로 연동하는게 잘안되는데 그부분 강좌는 계획없으신가요?

    1. http://blog.lael.be/post/1023 글을 참고해 보세요.

  7. 안녕하세요! 여러번 여기에 들러 힌트를 얻고 있습니다. 감사합니다!

    질문이 생겨서 문의 드립니다. 도메인이 있을 시 유저를 만들고 server.xml 을 변경까지 하였는데요,

    해당 도메인의 네임 서버를 우분투 서버로 변경을 하여야 하는지요 해당 부분은 잘 모르겠습니다. 이 부분에 대해 좀 알려주세요…

    여러 자료 올리신거 잘 보고 있습니다. 감사합니다~

    1. 구입하신 도메인의 네임서버를 http://blog.lael.be/post/1475 중 하나로 바꾸시고
      A 레코드를 서버의 아이피로 설정하세요.

      이것보다 더 쉽게 설명할 방법을 모르겠네요. 구글 검색해 보셔야 할것 같습니다.

  8. 좋은 정보 감사합니다.

  9. 덕분에 쉽게 설치했습니다 감사합니다

    1. 쉽고, 확실하게 설치하셨군요! 감사합니다!

  10. 저 9번에서 궁금하게 있어서요..
    저가 리눅스환경에서 JSP 웹 페이지를 개발해야하는데
    도메인이 있는지 없는지 확인 하는 방법을 잘 모르겠습니다..
    일단 도메인을 구입하지 않아서 없기는 한데.. 혹시 저가 만들게 될 JSP 웹페이지가
    VM머신 밖에서 즉, 외부에서 접속이 가능하게 하려면 무조건 도메인을 구입해야하는 건가요?
    리눅스 내부에서 DNS만 설정해주면 되는거 아닌가요??

    1. 웹브라우져 열고,
      http://가상서버IP:8080 엔터
      하셔서 tomcat 페이지 나오면 개발시작하시면 됩니다.

  11. 아.. 그렇게 되면 외부에서도 접근이 가능한건가요?
    저가 JSP를 윈도우에서만 써봤지 리눅스에서는 첨이라..
    아 그리고 한가지 더 여쭤볼게 있는데.. 윈도우에서는 이클립스라는 툴로 개발하는데 리눅스는 어떻게 하나요? 그냥 vi 편집기로 개발하는건가요?

    1. 이클립스로 개발하고 FTP 프로그램을 사용해서 리눅스 서버에 개발된 파일을 전송합니다.

  12. fail2ban 라엘님이 적어주신 설정대로 했더니 오전에 밴 당한 ip가 생겼습니다. 그런데 오후에 다시 확인을 해 보니까 ip밴 목록에서 없어졌더라구요.. 1일동안 목록에 있어야 되는것 아닌가요?? 아니면 그 접속하려는 인간이 조치를 취한 것인지 궁금합니다

    1. fail2ban 차단 목록은 서비스를 재시작하거나 재부팅하면 초기화됩니다.
      아마 재부팅 하셨을 것 같네요.

      정상 동작중이니 너무 걱정마셔요.

  13. 글 잘 보고 있습니다.
    현재 노트북에 우분투 서버 14.04를 설치하여 그대로 따라서 진행하고 있는데요..
    8번까지 진행해서.. /var/lib/tomcat7/webapps/ROOT 위치의 index.jsp 파일을 웹에서 확인까지는 했거든요.
    제가 후이즈에서 구입한 닷컴 도메인이 하나 있는데.. 제 노트북으로 연결해논 상태인데요..
    9번.. 따라가서 계정 생성하고 폴더 생성하고 server.xml에서 도메인과 계정 폴더 연결 하고 톰켓 재시작 했는데..
    도메인:8080으로 접속하면 접속이 되지 않습니다. (웹페이지를표시할수없다나뭐라나)
    혹시나 싶어 계정의 폴더 퍼미션도 777로 줘봤는데 소용이 없네요..
    버전은 라엘님 글 동일하게 tomcat7입니다.
    지금도 열심히 삽질중인데..
    좀 도와주세요,.,

    1. 남겨주신 주소를 확인했는데 잘 되시는 것 같네요.
      test 라는 문구가 출력되고 있습니다.

      1. 아뇨.. 테스트 중에 접속하셔서 정상적인 화면처럼 보였을 듯 싶습니다.
        꺽쇠로 열고닫고 했더니 댓글에서 문자열로 인식하는데 문제가 있는듯 하네요.. 다시 설명조로 적습니다.

        Host에서 name은 도메인 적고

        appBase 을
        webapps 으로 하면 성공,
        /var/lib/tomcat7/webapps 으로해도 성공,
        /home/jcpark1220/www 으로하면 실패

        Host 영역 안에다가
        Context path=”” docBase=”/home/jcpark1220/www” reloadable=”true”
        라고도 넣어봤는데 역시 실패.. 였습니다.

        1. 재부팅해보세요.
          또는 서버를 초기화 하고 다시 한번해보세요.
          이 글에 쓰인 명령어 복사&붙여넣기만 해도 잘 될겁니다.

          1. 아 도움 감사합니다. adduser를 한번 하고 그 유저와 기존 유저의 폴더와 파일들의 퍼미션을 똑같이 맞춰주는 수작업을 좀 했더니.. 연결이 되네요.. 성공했습니다.. 퍼미션 문제였네요..

  14. 안녕하세요 한가지 질문드릴게 있습니다

    9번 항목에
    /var/lib/tomcat7/webapps/ROOT
    이부분에 들어가서 파일을 만드려고 하는데 안만들어 지더라구요
    그 전에
    [sftp 로 서버에 root 계정으로 접속하신 후] < 이 문구가 이해가 안가서 그런거 같기도 합니다 ㅠ
    조금 설명 부탁드려도 됄까요?

    1. FileZilla FTP Client (https://filezilla-project.org/download.php?type=client) 다운 받으시고,
      서버에 root id, pw 를 사용해서 접속해보세요.

  15. 스크린샷 이미지들이 너무 많이 깨졌네요..

    1. 구글이 https 로 긁어가서 그렇습니다. ㅜㅜ 링크들 모두 수정하겠습니다.

  16. 질문입니다.
    저는 가상서버 호스팅으로 리눅스를 공부하고 있는 중입니다.

    현재 https://blog.lael.be/post/73 포스팅의 아파치설치 까지만 하고 (PHP나 DB등은 skip) 바로 이 포스팅에서 jsp서버를 설치하고 있습니다.
    8번 항목까지 진행한 상태인데요…..

    http://www.familee.co.kr/ (제 개인 도메인 입니다.) 으로 접속하면 아파치의 기본페이지가 보이는데
    http://www.familee.co.kr:8080으로 접속하면 “사이트에 연결할 수 없음”이 뜹니다.

    텔넷으로 테스트를 해봐도 http://www.familee.co.kr 80은 접속이 되는데 http://www.familee.co.kr 8080은 접속이 안됩니다.

    제가 뭘 빼먹은 걸까요?

    1. 제 생각엔 방화벽 문제라고 생각됩니다.
      사용중인 클라우드 호스팅업체의 방화벽 관련 메뉴를 확인해보세요.

      1. 넵 감사합니다. 좋은 정보로 공부하고 있습니다. 항상 감사드립니다.

  17. 좋은자료 감사합니다.
    퍼가요~

  18. 안녕하세요
    아파치 + 톰캣 이런 구성에서
    엔진엑스 + 톰캣7 이렇게도 가능한가요?

    1. 가능은 한데, 고려해야 할 사항이 늘어나므로 추천하지는 않습니다.

  19. 알파에서 오메가까지 넘 좋은 가이드입니다 ㅜㅜ 덕분에 잘 돌리고 있어요 감사합니다!!!

  20. 안녕하세요. 질문 하나만 해도 될까요?
    제가 cafe24에서는 webapps 란 폴더에 이클립스로 작성했던 (프로젝트? 폴더? )를 war 파일로 export 해서 filezila로 업로드해서 호스팅을 했었습니다.
    우분투를 공부해보려고 작성해주신것처럼 연습을 해보고 있는데, 문제는 파일질라를 확인해보니 ROOT 폴더는 생성이 되었는데 그다음 #vi index.jsp 를 치니 일단 putty에서 에러가 나고 있습니다.
    그래서 jsp 페이지 작성을 못해봤고 연결이 되는지를 모르겠습니다. 일단 톰캣부터 연결했을 떄에는 도메인주소:8080 을 했을때 톰캣 홈페이지 화면이 떳었구요.
    한가지만 더 여쭙자면 써주신것처럼 톰캣까지 연결이 되었다면 filezila에 그냥 war 파일만 올리면 호스팅이 끝나는건가요? 현재 filezlia로 ROOT폴더에 war파일을 올렸을때 너무 느려서 그런건진 모르겠지만 전송실패로 뜨고 있습니다. 이유가 그냥 전송을 시작하지못함으로 뜨고 있는데, 이건 어떤 이유로 전송이 안되는건가요?

    1. 리눅스에서는 사용자 권한이라는게 있습니다. 해당 폴더에 write 권한이 있는지 확인해보세요.

  21. 안녕하세요 . 답변이 삭제되어서.. 다시 질문 올립니다. ㅎㅎ

    우선 지금 설치한 환경은 우분투 16 톰캣 8 이고 mod_jk 로 아파치와 연동중입니다.

    지금 파일질라에서 /usr/local/apache-tomcat-8.0.44/webapps/ROOT 경로에 index.jsp 파일을 업로드하면에 index 파일이 올라오고 있습니다.

    그래서 작성한 코드를 war파일로 배포하려고 했는데 ROOT.war 을 업로드 하고 톰캣을 다시 시작해도 계속 index.jsp 의 내용만 뜨고 있네요. index.jsp 를 지우면 아예 화면이 뜨지 않고요.

    vi /usr/local/tomcat8/conf/server.xml 에서 context 부분을 수정을 해야하나요? 현재는 context 부분을 삭제해 놓고 있습니다.

    이렇게 설정해놓은 상태입니다. contextpath 나 docbas를 계속 구글에서 찾아보고 수정해봐도 404 에러가 나거나 index.jsp 파일만 계속 올라오고 war 파일이 배포가 되고 있지 않습니다

    작성해주신것처럼 hostname 을 밑에 추가해서 써봐도 작동하지 않고 있습니다. ㅠㅠ

    1. 안녕하세요?
      /usr/local/apache-tomcat-8.0.44/webapps/ 위치에 ROOT.war 파일을 위치시킨 다음에
      /usr/local/apache-tomcat-8.0.44/webapps/ROOT 폴더의 이름을 /usr/local/apache-tomcat-8.0.44/webapps/ROOT_OLD 로 바꾸어주세요.
      같은 이름의 폴더가 있으면 war 파일이 deploy되지 않습니다. 감사합니다.

  22. jsp 서버 세팅 하고 있는데 11번에서 mysql 접속 주소에는 [자신의 ip주소]/dbmyadmin 이거로 사용해야 하나요???? 거기 이후부터는 코드만 있고 설명 부분이 없어서 힘들어요..ㅜㅜㅜ

    1. dbmyadmin 프로그램은 php 로 작성된 프로그램입니다.
      제가 아는 jsp 로 작성된 mysql 관리 프로그램이 없습니다. 따라서 해당 11번 부분이 단순하게 작성되었습니다.
      굳이 dbmyadmin 사용하시려면 하나의 서버에 php 설치 -> jsp 설치 의 단계를 거쳐야 할 겁니다.

      1. 그렇다면 서버에 접속하려 할때 mysql 접속 주소에 어떤걸 적어야 할까요…??
        저 방식으로는 mysql에 jsp 코드를 통해서 데이터를 저장하지 못할까요???

        ㅜㅜㅜ 저는 mysql에 데이터를 저장하고 꺼내오는 것을 jsp를 이용해서 하고 싶은데 라엘님께서 짜신 코드로는 어떻게 해야할지 감이 안잡히네요…ㅜㅜㅜㅜㅜ 바쁘시겠지만 답변 부탁좀 드립니다…

  23. 정말 궁금해서 묻습니다.
    다른 블로그설명을 보면 자바랑 톰캣설치후 개같은 환경변수 때문에 진행을 못하는데요
    제가 우분투쪽을 처음 만져서 그럴수도 있는데 이 글에서 설치하면 환경변수 설정을 안해도 되나요?

    1. 설치프로그램이 환경변수를 자동으로 설정해주기 때문에 본문 이외에 추가로 할 작업은 없습니다.

  24. 버추얼 호스트에서 막히네요… ;ㅁ;
    계속 it works! 가 있는 폴더를 띄우네요…

    nginx에 연동중이라 그런가…

    1. tomcat 은 8080 포트로, nginx 80 포트로 접속해보세요.

      1. 9번 도메인 있는거로 진행했는데
        http://도메인:8080/ 치면 it works! 가 나오는걸 보니 기존 값이 사용되는 것 같고…
        http://도메인:8080/index.jsp 치면 톰캣에서 404
        http://도메인/ 치면 웰컴 엔진엑스!
        http://도메인/index.jsp 치면 톰캣에서 404

        ;ㅁ; …

  25. 안녕하세요?
    저는 현재 aws 에서 인스턴트를 받아서 우분투로 웹서버 세팅을 하는 중인데요.
    아파치와 PHP, DB로 세팅하는 것은 하였고 이번 글을 참고해서 JSP 로도 세팅을 하려는 중인데요.
    aws에서 엘라스틱 IP 를 받아서 이걸 인스턴트랑 연결하고 이 후 도메인까지 사서 엘라스틱 IP랑 연결해서 사용하려고 하는데요.
    올려주신 글의 8번까지 따라한 후에 제 IP 에서 8080 붙이고 접속을 하니 404 Not Found가 뜨네요. ㅠㅠ 댓글이나 다른 글 참고해봤는데 아직까지 감이 안잡히고 세팅은 알려주신대로 잘 따라했습니다.
    어디가 문제인 걸까요?

  26. mariadb로 mysql 워크벤치로 접속설정할때는 TCP 3306으로 안잡히나요? SSH로만 해줘야 잡히는건가요? 예전에 생짜 mysql 할때는 aws 주소 : 3306 TCP 설정으로 바로 연결해서 연습했었는데 이글의 mariadb로 그대로 하고 해보니 SSH를 통한 db접근밖에 되질 않네요 ..

    1. 당연히 aws rds 를 사용하면 외부접속 설정이 되어있으므로 외부접속 할 수 있습니다.
      외부에서 tcp 접속을 하려면, 사용자 테이블 접속권한설정, 서버 포트설정, 방화벽 설정을 하면 됩니다.
      구글에서 “mysql 외부접속” 이라고 검색한 후 설정을 바꿔보세요.

  27. mysql의 언어설정에서 서버캐릭터셋만 안바뀌는경우는 어떻게하나요??

    1. 이미 생성된 테이블이나 필드는 alter table 명령어로 언어설정을 바꾸어주어야합니다.

  28. 9번 내용을 하면 서버가 설치된 컴퓨터에서만 접속할 수가 있는 건가요?
    외부에서도 접속할 수 있는 건가요?

    1. 질문이 어렵네요. 포트포워딩만 잘 설정하면 외부에서도 접속 가능합니다.

  29. 안녕하세요, 지금 공부하고 있는 학생입니다.

    다름이 아니라, 제가 리눅스와 서버를 하나도 모르고… 네이버클라우드서버를 이용하여서

    만들고 싶습니다.

    1. 모든 설치는 putty를 이용해 터미널로 들어가서 하면 되는지…

    2. 8번에서 공인IP:8080 을 입력 했는데 왜 안되는지…

    3. 현재 윈도우에 있는 jsp파일을 서버(리눅스)로 어떻게 옮기는지 여쭈어봐도 될까요?

    1. 네이버 클라우드 웹콘솔에서 8080포트를 열어주세요.
      filezilla client 라는 프로그램을 다운 받은 후 접속해보세요.

      1. 답변 감사합니다.
        오래전 포스트에서도 글을 달아주시니 영광입니다.

        웹콘솔이라 함은 acg규칙 말씀하시는건가요?

        1. 댓글 알림이 뜨기 때문에 어느 글이든 답변이 가능합니다.
          서버에서 포트가 열려있더라도 중간의 네트워크 단계(security group 또는 access control group) 에서 막혀있으면 최종적으로 막히게 됩니다.

  30. 감사합니다. aws 인스턴스 서버 환경 설정하는데 아주 많은 도움이 되었습니다.

  31. AWS에서는 방화벽 설정에서 8080을 열어줘야 하네요.. 아무튼 php부터 jsp세팅하는데 많은 도움 되었습니다. 정말 감사합니다!

  32. 안녕하세요~
    조만간 웹프로젝트를 만들어서 리눅스 서버에 띄워야할일이 생겨서 참고할 내용을 찾던중 글을 읽게 되었습니다. 정말 알창 포스팅 감사합니다!
    저도 궁금한점이 있는데요~
    사용하시는 FTP 프로그램 알 수 있을까요? (제가 아는건 FileZilla입니다.)
    그리고 FTP 설치 및 사용 관련해서도 혹시 참고할만한 자료 있을까요? ^^

    1. 일반적으로 리눅스에서는 sftp 를 사용합니다.
      저는 맥OS에서만 구동가능한 프로그램을 사용합니다.
      FTP 설치글을 추후 작성하도록 하겠습니다.

      1. 감사합니다! 윈도우에서 잘사용하는 ftp 응용 프로그램을 알아봐야겠네요 ㅎㅎ

  33. 안녕하세요 웹서버면 java를 server jre로 설치해도 될거 같은데 다른 포스팅도 jdk를 설치하라고 하네요
    답변을 친절히 해주시는 것 같아서 질문합니다ㅎㅎ

    1. 안녕하세요. tomcat 웹서버의 경우 Eclipse Compiler for Java가 내장되어 있기 때문에 server jre로 구동하여도 충분합니다. (이 파일은 tomcat/lib/ecj-x.x.x.jar 입니다.)
      다만 추후에 jdk도 설치할 확률이 높기 때문에 (tomcat 이외의 java소프트웨어를 구동하거나, tomcat debug모드를 실행하거나, 서버 컴파일이 필요하거나), 처음부터 jdk로 설치하는 것입니다.
      “jdk 설치하지 않고 jre로만 웹서버 구동하기!” 라는 목표를 가지고 운영해보는 것도 좋을 것 같습니다.
      요약 : jdk 없이 jre 로만 동작할 수 있다면 jre 만 사용하길 권장! 하지만 이것저것 하다보면 jdk를 설치해야하는 날이 올 것임!
      감사합니다!

  34. 이 방법으로 JSP 서버 구축한 뒤 SSL 적용시키려면 ‘[Ubuntu] Let’s Encrypt 를 사용하여 무료로 SSL 사이트를 구축하는 방법’ 게시글대로 하면 될까요?

  35. 서버아이피:8080으로 접속하면 아파치 톰캣의 Work it 페이지가 정상적으로 뜨는데, 우분투 사용자 추가 후 도메인 연결 후 도메인 DNS 설정을 하고 도메인:8080 으로 접속하면 접속이 정상적으로 되지 않습니다ㅜㅜ 무슨 문제 일까요?

  36. 현재 도메인:8080 으로 접속하면 접속이 정상적으로 잘 되네요!
    글이 도움이 많이 됬습니다. 감사합니다.

    혹시 도메인:8080 으로 접속하지 않고 도메인으로 포트번호 없이 접속이 되게는 어떻게 하면 되나요?

    1. 혹시 /etc/tomcat8/server.xml 파일에 포트번호 설정하는곳 없을까요?
      관련 파일 수정하신 후 tomcat 을 재시작해주세요.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*