반응형

Ubunut 환경에 .WAR 파일 배포.

(전자정부프레임워크 : eGovFrame-4.0.0)

- Apache Tomcat 8.5

- JDK 11

- WAR 배포 파일은 Eclipse에서 export를 했다는 전제 조건.

1. Tomcat 및  Java 설치

1. tomcat 설치

$ cd /home/계정/Downloads
$ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.59/bin/apache-tomcat-8.5.59.tar.gz
$ tar -xzvf apache-tomcat-8.5.68.tar.gz

2. tomcat 디렉토리 변경 및 링크 설정

$ cp -r apache-tomcat-8.5.68 /usr/local/
$ ln -s apache-tomcat-8.5.68/ tomcat

3. JAVA 설치 및 설치 경로

$ sudo apt-get install openjdk-11-jdk

# /usr/lib/jvm/
# java-11-openjdk-amd64

4. 환경 변수 설정

$ vi /etc/profile

# 맨 아래에 추가.

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
JRE_HOME=$JAVA_HOME
CATALINA_HOME=/usr/local/tomcat
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_HOME/bin

export JAVA_HOME
export JRE_HOME
export CLASSPATH CATALINA_HOME
export PATH

2. Tomcat WAR 배포 및 실행

1. WAR 배포 (ftp로 옮겼다는 전제.)

- WAR 파일명 : test.war

- test.war 파일 아래 경로에 배치

/usr/local/tomcat/webapps/test.war

2. war 경로 수정

$ vi /usr/local/tomcat/conf/server.xml

- 아래 코드 추가.

(tomcat이 올바르게 동작하면, war파일은 자동으로 압축 해제)

- <Context path="/" docBase="test.war" reloadable="true" />

      <Host name="localhost"  appBase="webapps"
              unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="test.war" reloadable="true" />
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>

3. tomcat 실행

$ sudo /usr/local/tomcat/bin/startup.sh

- localhost:8080으로 접속. (8080포트는 well known 포트이므로 server.xml에서 포트 수정 추천.)

3. 로그인 시 서버 자동 실행.

1. /etc/profile 수정

아래 코드  추가

$ vi /etc/profile

cd /usr/local/tomcat/bin
./startup.sh

2. 권한 추가 및 소유주 변경 (계정 ID : test_user)

서버를 접속할 때, 보통 일반 계정(test_user)으로 접속하여 root 로 전환한다.

위 코드를 실행해도 test_user 계정은 권한이 없으므로, 권한 및 소유주를 변경한다.

1. tomcat 권한 및 소유주 변경
pwd : /usr/local

sudo chown -R jsyoon:root tomcat 
sudo chmod -R 755 tomcat (bin, logs 폴더만 해도 무방)

2. jdk 권한 및 소유주 변경
pwd : /usr/lib/jvm
sudo chown -R jsyoon:root java-1.11.0-openjdk-amd64 
sudo chmod -R 755 java-1.11.0-openjdk-amd64

pwd : /etc/
sudo chown -R jsyoon:root java-11-openjdk
sudo chmod -R 755 java-11-openjdk
/etc/profile : 모든 계정으로 로그인 시 시스템에 적용되는 설정 파일
~/.profile : 사용자 별 설정 파일
~/.bashrc : profile에서 bashrc를 실행하는 코드 포함

본 서버는 나만 사용하므로 /etc/profile을 그대로 사용.

4. 백그라운드 실행.

쉘이 종료되면, 서버 또한 꺼지므로 백그라운드 작업 추가.

/etc/profile 에서 전에 추가한 코드인 ./startup.sh 쉘스크립트 앞에 nohup을 추가.

nohup ./startup.sh
728x90
반응형

'Spring Framework' 카테고리의 다른 글

Spring + Mybatis + MySQL 이미지 BLOB으로 저장  (0) 2023.05.10
1-2 Contoller Return 종류  (0) 2023.04.07
JSP에서 컨트롤러로 값 넘기기.  (0) 2023.03.14
Lombok API  (0) 2023.03.12
반응형

안녕하세요. 

 

저번 글로 라즈베리파이 우분투 GUI를 얹었습니다.

 

https://coding-yoon.tistory.com/71

 

[라즈베리파이] 라즈베리파이 우분투 데스크탑 GUI 설치 실패할 경우!

안녕하세요. 라즈베리파이 난생 처음 부팅해볼만큼 잘모르지만 공부하는겸 라즈베리파이와 리눅스 내용을 자주자주 올리도록 하겠습니다. 마치 라즈베리파이 일기같은 느낌으로...! 저는 라즈�

coding-yoon.tistory.com

하지만, 아직 우리들에게 갈 길이 좀 더 남았습니다. 

 

인터넷을 켜보도록 하겠습니다.  아마 이런 에러창이 뜰겁니다.

 

1. Your Computer Clock is Wrong.

 

그렇게 큰 문제가 아닙니다. 이 에러는 라즈베리파이 시간과 현재 시간이 맞지 않아 발생하는 것입니다.

 

sudo apt-get install rdate

저번 글처럼 rdate를 다운로드 받으셨다면 그냥 넘어가셔도 됩니다. 

sudo rdate -s time.bora.net  # 현재시간으로 변경

그냥 이렇게만 하시면 UTC 기준으로 시간이 변경될 것입니다. 뭐 이렇게만 해도 인터넷은 이제 할 수 있습니다. 

 

우리들은 조금 더 가서 KST (Korean Standard Time) 한국 평균 시간으로 바꿔주겠습니다. 

 

https://twpower.github.io/95-set-ubuntu-timezone

 

[Ubuntu] 우분투(Ubuntu)에서 타임존 변경하기

Practice makes perfect!

twpower.github.io

위 분의 블로그를 참고해서 UTC를 KST로 변경했습니다. 

 

2. 라즈베리파이 부팅 시 시간 자동 동기화

라즈베리파이는 RTC 모듈이 없기 때문에 기기가 꺼지면, 시간이 그대로 멈춥니다. 

 

만약, 자기는 켜줄 때 마다 시간을 맞춰줄거라면 넘어가셔도 될 것 같습니다. 

 

해결방법으로 부팅이 되었을 때 sudo rdate -s time.bora.net 이 자동적으로 실행될 수 있게끔 설정하겠습니다.

 

https://m.blog.naver.com/PostView.nhn?blogId=xhxhdwkd&logNo=221146006051&proxyReferer=https:%2F%2Fwww.google.com%2F

 

라즈베리파이 시간 동기화

**잡소리가 싫으신 분들은 스크롤을 과감히 내려주세요** 집에서 이상태로 굴러다니던 라즈베리파이를 무려...

blog.naver.com

위 블로그 분의 방법을 따라 부팅시 시간이 설정되게끔 설정했습니다. 

 

but... 하지만 하나의 문제점에 봉착했습니다. 

 

위는 rc.local에 rdate -s time.bora.net을 추가하는 방법입니다. 

 

rc.local이 없다면...?

 

3. rc.local이 없을 때 

저는 rc.local 이 없어, 이 문제를 해결하는데 꽤나 고생을 했습니다. 찾다 찾다 보니 아래 블로그분께서

 

굉장히 쉽고 편한 방법으로 올리셨습니다.  

 

https://m.blog.naver.com/PostView.nhn?blogId=sw4r&logNo=221744290073&proxyReferer=https:%2F%2Fwww.google.com%2F

 

[리눅스 유용한 팁] 우분투(Ubuntu)에서 rc.local 없을 때, 활성화 시키는 방법!

이번 포스팅에서는 리눅스를 사용하면서 새롭게 부팅될 때 마다 자동으로 먼가를 실행하도록 하고 싶을 때,...

blog.naver.com

4. 요 약

rc.local에 입력할 내용..

#! /bin/sh

rdate -s time.bora.net

exit0

하지만 분명 저처럼 한 번에 되지 않는 분들이 있다고 생각합니다. 

 

편집기로는 vi를 사용합니다. 

 

vi는 우선 i를 누르면 insert모드로 입력을 할 수 있습니다.

 

입력을 다 했다면, 저장을 해야합니다. 

 

ESC를 눌러 Command mode로 들어갑니다.

 

:w => 입력할 내용을 저장

:q => vi 나가기 

:wq => 저장하고 vi 나가기 

 

순조롭게 됐다면 이렇게만 알아도 됐을겁니다. 

 

하지만 리눅스를 처음 만져봐서 이것저것 삭제하고 만지다보니까 함부러 sudo를 쓰면 안된다는 것을 배웠습니다.

 

저는 한 번에 못해서 이거 저거 해보다가 많이 꼬였었는데 이럴 때는 삭제하고 처음부터 하는 것을 추천드립니다. 

 

 

(1) vi 편집기를 정상적인 방법으로 끄지 않았을 때

 

아마 키보드 인터럽트 (Ctrl + C)를 강제로 주었거나, 정상적인 방법으로 나가지 않았을 때

 

E325 오류

이런 오류가 발생할 수 있습니다. 

 

이런 문제는 vi 편집기에서 강제로 종료하다보니 임시로 swp파일을 만들어 준겁니다. 

 

해결 방법은 그냥 삭제해주면 됩니다. 

 

예를 들어 /etc/rc.local.swp 이 생성되었다고 하면 아래처럼 rm 명령어를 통해 삭제해주면 됩니다. 

 

sudo rm /etc/rc.local.swp 

 ### 주의사항 ### : 절대 swp파일 이름을 복사할려고 Ctrl + C로 윈도우처럼 복사하시면 안됩니다. 

                           오른 쪽 마우스를 눌러 Copy를 해줍니다. 그리고 붙여넣기 할 때에도 오른쪽 마우스를 눌러 paste                             해주면 됩니다. Ctrl + C 는 키보드 인터럽트이기 때문에 저처럼 개고생할 수도 있습니다.

 

(2) E212 : Can't open file for writing

vi 편집기에서 입력을 다하고 :w를 해주려고 할 때 뜰 수 있는 오류입니다. 

 

방법은 여러가지가 있습니다. 

 

1. vi 앞에 sudo 붙여주기 

sudo vi /etc/rc.local

 

2. :w 대신 :w!를 사용. 강제적으로 write해줌 ( :w!  )

 

이렇게도 해서 안된다면 

 

3. :w !sudo tee > /dev/null % 

 

 

 

 

제가 리눅스를 하면서 만났던 오류들에 대한 해결정리입니다.

 

만약 저처럼 리눅스가 처음이신 분에게 도움이 되기를 빌며...

 

이렇게 해서 안된다면 ...

 

sudo rm /etc/rc.local

 

삭제하고 다시하세요! 파이팅!

728x90
반응형
반응형

안녕하세요. 

 

라즈베리파이 난생 처음 부팅해볼만큼 잘모르지만 공부하는겸

라즈베리파이와 리눅스 내용을 자주자주 올리도록 하겠습니다. 

 

마치 라즈베리파이 일기같은 느낌으로...!

 

저는 라즈베리파이를 우분투 데스크탑을 얹어서 사용할겁니다. 

 

리눅스에 완전히 문외한이기 때문에 조금 고생을 많이 했습니다. 

 

아마 라즈베리파이에 우분투 데스크탑을 설치하시는데는 큰 문제가 없었을거라고 예상합니다. 

 

1. https://blog.naver.com/roboholic84/221701573539

 

라즈베리파이에 우분투 데스크탑 설치하기

2019년 10월 17일, 우분투 재단이 Ubuntu 19.10 버전 출시와 더불어 공식적으로 라즈베리파이 4B 보드의 ...

blog.naver.com

2. https://kbs4674.tistory.com/130?category=863623

 

라즈베리파이4B Ubuntu OS 설치

얼마전에 Ubuntu에서는 20.04 버전을 발표했습니다. 이와 더불어 라즈베리파이 에서도 Ubuntu 20.04 지원이 됩니다. 현시간 글 작성 기준 라즈베리파이4B가 탄생한지 얼마 안됐다보니 지원이 적은 탓에

kbs4674.tistory.com

위 두 개가 초보자인 저에게 쉽게 따라갈 수 있었습니다.

 

1. 우분투 GUI 설치

sudo apt-get install ubuntu-desktop

sudo는 (substitute user do) 의 약자로, 다른 사용자의 권한으로 명령을 이행하라는 뜻이고, 

 

apt는 (advanced packaging tool) 의 약자로 패키지 관리 명령어 도구라고 합니다.

 

저같은 경우는 위 명령어를 사용하였을 때 실행되기는 했지만, 끝부분에 오류가 발생했습니다. 

 

찾아보니까 업데이트 & 업그레이드를 해주면 문제가 해결된다고 합니다. 

 

sudo apt-get update
sudo apt-get upgrade

 

하지만 저같은 경우엔 업데이트할 때 오류가 떴습니다. 

 

2. Release file for is not valid yet . updates for this repository will not be applied

 

위 오류가 떴는데, 찾아보니까 유튜브에서 쉽게 찾을 수 있었습니다. 

 

https://www.youtube.com/watch?v=k9TktoPOzX8

 

영상을 요약하자면 라즈베리파이 시간과 현재 시간이 맞지 않아 업데이트 실패가 뜨는 것이였습니다. 

 

현재 시간 한 번 찍어보겠습니다. 

date  # 라즈베리파이에 설정된 시간을 보는 명령어

#Wdb Apr 1 17:49:32 UTC 2020

지금은 7월인데 4월이라고 뜹니다. 바로 현재시간으로 바꿔주도록 하겠습니다. 

 

저는 항상 쉬운 방법으로 접근하는 것을 선호하기 때문에, 그나마 가장 쉬운 방법으로 가겠습니다...

 

sudo apt-get install rdate  # rdate 설치

sudo rdate -s time.bora.net  # 현재시간으로 변경

우선, 알아두어야 할 점이 라즈베리파이는 RTC 모듈이 없기 때문에 라즈베리파이가 꺼지면, 시간이 흐르지 않습니다. 

 

위 방법은 라즈베리파이가 꺼지면, 시간이 다시 이상하게 변해 있고, 한국시간이 아닙니다.

 

하지만 업데이트하는데에는 문제가 없기 때문에 이대로 진행하겠습니다.

 

이 문제점을 해결하는 글은 다음 글에 올리도록 하겠습니다. 

 

date 

# Web Jul 22 13:10:45 UTC 2020

 

 

다시 업데이트 해보도록 하겠습니다. 

sudo apt-get update
sudo apt-get upgrade

 

새로운 오류로 바뀌었습니다. 

 

3. Unable to lock the administration directory

/var/lib/dpkg/lock 파일이 존재해서 업데이트할 때 발생하는 문제라고 합니다. 

sudo rm /var/lib/apt/lists/lock
 
sudo rm /var/cache/apt/archives/lock
 
sudo rm /var/lib/dpkg/lock
 
dpkg --configure -a

rm은 (remove) 약자로 삭제하는 명령어입니다.  /var/lib/apt/lists의 경로의 lock을 삭제하라는 뜻입니다. 

 

dpkg --configure 패키지명은 --unpack 옵션으로 풀린 패키지를 환경설정할 때 사용한다고 합니다. 

 

 

4. 우분투 GUI 재설치

sudo apt-get install ubuntu-desktop

설치에 성공했습니다. GUI를 실행하겠습니다. 

 

startx

성공

5. Python 버젼 확인하기

우분투를 설치하면 python이 자동으로 설치된다고 합니다. 

 

파이썬으로 센서들을 제어하니까 그나마 다행인 것 같습니다. 

python3 -V

# python -V 는 python2의 버젼
# python3 -V 는 python3의 버젼
# 헷갈리지 마세요.

python 3.8.2

 

하지만 라즈베리파이에 익숙해지면 USB Accelerator를 통해서 딥러닝 관련으로 해볼려면, 3.5, 3.6. 3.7이 필요합니다...

 

결국 파이썬도 버젼벌로 사용하는 방법을 알아야합니다... 열심히 깨지고 공부해야합니다.

 

그래도 부팅에 성공하였으니 이번 글은 이걸로 마치도록 하겠습니다.

728x90
반응형
반응형

안녕하세요. 

 

이번에 라즈베리파이를 공부해보고 싶어서 라즈베리파이4를 구매했습니다. 

 

저도 라즈베리파이3를 학교에서 잠깐 일주일정도 맛보기로 한 적이 있었는데, 참 재밌는걸 많이 해볼 수 있겠더라구요.

 

도착

 

라즈베리파이4B

 

 

라즈베리파이3 B+와 눈에 띄는 차이점은 

 

Arm architearchitecture 64bit까지는 똑같고, 1.4GHz에서 1.5GHz로 업그레이 되었네요.

 

RAM같은 경우는 1GB에서 1, 2, 4GB 중 하나를 고를 수 있고,

 

이더넷 속도는 메가 비트에서 기가비트까지 제공합니다. 많이 업그레이드 됐네요. 

 

바로 한 번 만져보도록 하겠습니다. 

 

부팅 먼저 하겠습니다. 아래 블로그에서 라즈베리파이에 우분투를 얹는 방법을 잘 올리셔서 참고했습니다.

 

https://blog.naver.com/roboholic84/221701573539

 

라즈베리파이에 우분투 데스크탑 설치하기

2019년 10월 17일, 우분투 재단이 Ubuntu 19.10 버전 출시와 더불어 공식적으로 라즈베리파이 4B 보드의 ...

blog.naver.com

그런데 제가 SD카드가 온전한게 없어 사용하던걸 꼽았더니, 부팅이 실패했습니다. 

 

그래서 SD카드를 포맷을 해주기 위해 아래 블로그를 참고했습니다. 

 

https://redmuffler.tistory.com/419

 

[날지 무한코딩] 라즈베리파이 라즈비안 sd카드 포맷

라즈베리파이를 사용하다가 보면 포맷을 하고 싶어질때도 있으실 겁니다. 저도 초반 설정을 잘 못하는 바람에..그냥 깔끔하게 다시 밀기로 하고 sd카드를 데스크탑에 꽂았습니다. 그런데..sd카드

redmuffler.tistory.com

 

GUI가 깔리기 전 우분투

GUI를 깔고 있는데 상당히 오래걸리네요...

 

저는 Ubuntu 20.4 LTS 버젼을 설치했습니다. GUI가 잘 깔렸습니다.  

 

만약 gui 설치가 실패하면 update와 upgrade를 해주면 해결됩니다. 

 

 

728x90
반응형

+ Recent posts