태그 글 보관함: 우분투 서버 14.04 LTS

우분투 서버 14.04 LTS 고정 IP 할당

보통은 집안에 공유기를 사용하고 있을텐데 공유기는 보통 DHCP 라는 동적으로 IP 주소를 할당하는 기능(?)으로 공유기에 물려있는 컴퓨터들에게 IP 주소를 할당해 주고 있다.
이렇게 할당 받은 IP는 컴퓨터가 재시작 되거나 공유기에서 설정된 시간이 지나면 바뀔 수가 있기 때문에, 서버의 IP 주소가 바뀌게 된다. 이 때 새로운 IP 주소를 할당 받게 되면 ssh, ftp, http 등으로 서버 외부에서 접속할 때마다 서버의 IP 주소를 알아내야한다.
하지만, 서버의 IP를 고정으로 할당 받게 되면 항상 같은 IP로 접속이 가능하기 때문에 편리하다.
그렇기에 보통 서버의 IP 주소는 고정으로 설정해 둔다. 이제부터 서버의 IP를 고정으로 설정하는 방법에 대해서 설명한다.

먼저 고정으로 할당 받을 IP 주소를 정해야 한다.
우분투 서버에서 아래 명령으로 현재 할당 받은 IP 주소를 확인한다.

eth0 이라는 것은 이더넷(ethernet) 0번이라는 것으로 랜카드0번을 뜻한다. 만약 서버에 랜카드가 두개 이상이라면 eth1, eth2도 보일 것이다. 이 eth0에 inet addr 뒤에 192.168로 시작되는 주소가 공유기에서 할당 받은 IP 주소이다.
주소 가장 마지막 .(점) 뒤의 숫자를 바꿔서 고정 IP로 정해야 되는데, 집안의 공유기로 접속하는 장치를 생각해서 여유를 두고 잡는게 좋다. 다른 장치, 예를 들어 스마트폰이 서버가 사용할 IP 주소를 선점해 버리게 되면 서버는 IP 주소 충돌로 인해서 인터넷 연결을 사용할 수 없게 된다.

이런 문제를 해결할 수 있는 공유기의 기능이 있는데 ‘DHCP 고정 할당 설정’ 이라던가, ‘수동 IP 할당 설정’ 이라던가 하는 이름으로 존재한다. 이 기능을 사용하면 특정 컴퓨터는 미리 정해둔 IP 주소만을 할당 받게 된다.

공유기에 그런 기능이 어디있는지 모르겠다거나 설정 방법이 너무 어렵다고 하면 그냥 IP 주소를 뒷번호에서 고르면 충돌할 일이 없다. 50번 정도?
위에서 확인한 할당받은 IP 주소가 192.168.1.xxx 라면 192.168.1.50 으로 하자.

우분투 서버 터미널에서 아래 명령으로 IP 주소를 포함한 네트워크 정보를 편집한다.

기본 설정은 아래와 같다.

DHCP 로 IP 주소를 설정 받는다는 내용이다.
고정으로 IP 주소를 설정하기 위해서는 아래와 같이 내용을 바꾼다.

address 에는 고정으로 설정할 IP 주소를 적는다.
gateway는 공유기의 IP 주소를 적는데 보통 해당 IP 주소의 마지막 번호가 1번이 공유기의 주소이다. 공유기 설정 화면을 띄울때 사용하는 IP 주소와 같은 IP 이다.
dns-nameservers도 공유기의 IP 주소를 적으면 된다.
저장하고 편집기를 닫자.

서버를 재기동 한다.

재기동 후에는 SSH 접속 IP 주소가 고정으로 정한 IP 주소로 바뀌어 있으니 주의 할것.

바뀐 IP 주소를 확인

이제 고정된 IP 주소로 SSH 접속이나 FTP, 웹서버 설정을 하면 된다.

테라텀을 이용한 SSH 접속

이전 글에 이어서

하이퍼v에 우분투 서버를 설치하게 되면 여러가지 이유로 (하이퍼v가 설치된 컴퓨터를 포함한) 원격 컴퓨터에서 SSH 를 이용해서 서버를 관리하게 된다.
이 글에서는 SSH 접속 프로그램인 테라텀(teraterm)을 이용한 접속 방법에 대해서 설명한다.
이 글에서는 테라텀으로 접속하는 방법만을 설명하지만, 다른 접속 프로그램도 기본적으로 내용은 같다.

먼저 소스포지 사이트에서 테라텀을 다운로드 받는다.
테라텀 다운로드 링크
exe 파일을 다운로드 받아서 설치하면 된다.

SSH 접속에 필요한 정보는 아래 네가지이다.
-접속할 서버의 IP 주소
-접속할 서버의 SSH 포트
-접속할 서버에 등록 되어 있는 계정명
-계정의 패스워드

먼저 접속할 서버의 IP는 우분투 서버에서 아래의 명령으로 확인할 수 있다.

inet addr 뒤에 192.168로 시작하는 주소가 현재 우분투가 할당 받은 IP이다.

SSH 포트번호는 sshd_config 파일에 적혀있다.

테라텀을 실행한다.
호스트명에 서버의 IP를, TCP 포트#에 포트 번호를 입력하고, 서비스는 SSH를 선택하고 확인/OK 버튼을 누른다.

여기서 우분투 서버의 로그인 프롬프트가 나오면 성공이다. 계정명과 패스워드를 입력하면 된다.

접속이 안될 경우에는 우분투 서버에서 netstat로 설정된 포트가 제대로 열려 있는지 확인해 본다.

sshd_config 파일에 설정된 포트가 1022일때 아래와 같은 줄이 나와야한다.

1022가 아니라 22로 나울때는 ssh 서비스가 제대로 재기동 되지 않았거나 sshd_config 파일에서 설정한 내용이 제대로 반영되지 않은 경우이니 설정을 확인해 봐야한다.

외부에서 접속 했을 경우에는 공유기의 방화벽으로 포트가 막혀 있을 가능성이 가장 큰데, 공유기 설정 화면에서 포트 포워딩이나 포트 맵핑으로 포트를 열어주면 된다.

우분투 서버 14.04 LTS SSH 접속 설정

하이퍼v(hyper-v)에 우분투 서버를 설치하면 가상머신접속 화면에서는 한글이 깨지게 된다.
그럴때는 테라텀(teraterm) 등의 SSH 접속 프로그램으로 서버에 접속해서 사용하면 되는데, 서버는 항상 켜두고 원격에서 접속해서 서버를 관리하는게 여러모로 편리하니 SSH 접속 설정을 해 두는 것이 좋다.
이 글에서는 SSH 접속을 위한 설정을, 다음 글에서 테라텀을 이용한 접속에 대해서 설명해 보겠다.

SSH 설치

openssh 는 우분투 서버 설치 마지막에 선택해서 설치하면 편리한데, 설치하지 않았다면 아래 명령으로 설치 할 수 있다.

SSH 포트번호 변경

SSH 는 기본적으로 22번 포트를 사용하게 되어 있다.
웹서버나 FTP 서버로 사용하기 위해서 외부에 공개할 서버의 경우에는 SSH 의 기본 포트번호인 22번 포트로 공격해 오는 일이 많기 때문에 SSH 의 포트번호를 임의의 포트번호로 변경하는 것이 좋다.

openssh 데몬의 설정 파일을 편집한다.

예를 들어 포트번호를 1022번으로 변경할 경우에는 아래와 같이 바꾼다.

그리고, 보안을 위해서 root 계정으로 로그인을 금지하라는 글이 많은데 우분투 서버에서 openssh 설치시 기본적으로 아래와 같은 설정으로 금지 되어있으므로 신경 안써도 된다.

내용을 설명하자면, without-password는 패스워드를 입력한 root 계정 로그인을 허가하지 않는다는 말인데, 공개키를 만들어서 접속하는 방법으로는 root 계정 로그인을 허가하겠다는 설정이다. 공개키를 만들지 않으면 당연히 접속이 불가능하기 때문에 실질적으로 root 계정은 접속이 불가능해진다.

설정 파일을 저장하고 빠져 나와서 ssh 서비스를 재기동한다.

netstat 로 설정된 포트가 제대로 열려 있는지 확인해 본다.

sshd_config 에서 설정한 포트가 1022일때 아래와 같은 줄이 나와야한다.

다음 글에서는 테라텀으로 SSH 접속하는 방법에 대해서 설명해 보겠다.

톰캣 CATALINA_HOME vs. CATALINA_BASE

톰캣에 존재하는 두개의 배치 장소 CATALINA_HOME 과 CATALINA_BASE 의 관한 이야기.
도대체 어디에 디플로이 해야 하는거야!?

환경
우분투 서버 14.04 LTS
톰캣 7.0

기본적인 지식부터 깔아두고 시작하자.
CATALINA_HOME : 톰캣의 인스톨 장소. 실행 파일이 들어있는 bin 폴더가 있다.
CATALINA_BASE : 톰캣의 인스턴스가 존재하는 곳이라고 한다.

카탈리나 홈은 톰캣이 설치 된 장소이고, 카탈리나 베이스는 유저가 디플로이나 설정을 해서 실제로 사용하는 곳 정도로 파악된다.

그런데 헷갈리게도 카탈리나 홈에도 webapp 나 conf 디렉토리가 있고, 실제로 이곳에 war 파일을 넣고, conf에 있는 server.xml을 수정해서 bin 폴더의 startup.sh로 기동하면 잘 작동 된다!
게다가 카탈리나 베이스에서도 webapp 디렉토리에 war 파일을 넣고 conf 디렉토리에 server.xml을 수정하고 service tomcat7 start 를 하게 되면 잘 작동 된다!

차이를 알았나?

카탈리나 홈은 bin 디렉토리에 있는 startup.sh로 기동했을 때 카탈리나 베이스로서 작동한다.
우분투 서버에서 apt-get으로 톰캣7을 설치 했을 경우에
CATALINA_HOME=/usr/share/tomcat7
CATALINA_BASE=/var/lib/tomcat7
이렇게 설정되고 사용자는 CATALINA_BASE/webapps 디렉토리에 war 파일을 전개해서 사용하는게 정석이다.
어디까지나 기본적인 사용법이 그렇다는 얘기고…

사도(?)의 방법으로 CATALINA_HOME/webapps 디렉토리에 war 파일을 전개해서 CATALINA_HOME/bin/startup.sh 로 톰캣을 기동해서 사용하는 방법이 가능하다.
startup.sh로 기동하게 되면 CATALINA_HOME=CATALINA_BASE 가 되어서 /usr/share/tomcat7 디렉토리의 webapps, conf, work 디렉토리를 사용해서 톰캣이 기동하게 된다.
당연히 별도 설정이 없는한은 서버 재기동시 자동 기동 같은건 되지 않는다.

서버가 기동할때 실행되는 /etc/init.d/tomcat7 나 service tomcat 에서는
CATALINA_BASE=/var/lib/tomcat7
로 되어 있기 때문에 /var/lib/tomcat7 디렉토리의 webapps, conf 디렉토리를 사용하게 된다.
그리고, CATALINA_BASE 는 인스턴스 디렉토리이기 때문에 여러개의 톰캣 인스턴스로 기동할 수도 있다.
tomcat7-instance-create 을 참조

결론적으로 실제 서버로서 사용할 때는 자동으로 기동 되는 CATALINA_BASE 에 설정과 디플로이를 하는 것이 정답이고,
그 외에 개발 등의 특별한 목적으로 톰캣을 사용하는 경우에는 CATALINA_HOME 을 쓰는 것도 괜찮을 것 같다.

내 생각에는 이렇게 헷갈리는 구성이 된 이유는
원래(?) 톰캣이 설치 된 디렉토리에서 디플로이 하는 것이 당연했던 예전(또는 우분투 이외의 리눅스)의 모습을 유지하기 위해서가 아닌가 싶다.
실제로 나도 당연한 듯이 CATALINA_HOME 에서 설정 파일을 만지고 startup.sh 와 shutdown.sh 로 톰캣을 재기동 했으니까.
서버 재기동 후에 톰캣이 자동으로 기동 되었는데도 웹어플리케이션은 죽어있었기 때문에 (CATALINA_BASE에는 아무것도 없으니까!) 깨닫게 되었다.

구글링을 해 봐도 영문 포럼에서나 조금 이야기 되고 있는 내용이고, 한글로 된 내용은 없는 듯해서 이렇게 이야기를 풀어 보았다.

Problem with directory /usr/share/tomcat7/common/classes

톰캣 기동시 나오는 에러의 해결 방법.

8 27, 2015 12:56:56 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/common/classes], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:56:57 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/common], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:56:57 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/server/classes], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:56:57 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/server], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:56:57 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/shared/classes], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:56:57 午前 org.apache.catalina.startup.ClassLoaderFactory validateFile
警告: Problem with directory [/usr/share/tomcat7/shared], exists: [false], isDirectory: [false], canRead: [false]
8 27, 2015 12:57:02 午前 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["http-bio-127.0.0.1-8080"]
8 27, 2015 12:57:02 午前 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["ajp-bio-8009"]
8 27, 2015 12:57:02 午前 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 4545 ms
8 27, 2015 12:57:02 午前 org.apache.catalina.core.StandardService startInternal
情報: サービス Catalina を起動します

디렉토리가 없어서 에러가 나는 것 같으니 디렉토리를 만들어 준다. 끝.

cd /usr/share/tomcat7
mkdir -p common/classes
mkdir -p server/classes
mkdir -p shared/classes