간단한 Web 프로젝트를 Spring Boot로 만들었는데

이상하게 Tomcat에 War로 올리면 404 에러로 경로를 못찾는 현상이 발생했다.

 

덕분에 몇시간을 날렸는데 이유는 간단했다..

 

 

Spring Boot의 Main 클래스에 SpringBootServletInitializer를 상속받지 않아서였다.

 

일반적인 Spring Framework에서는 Web.xml에 DispatcherServlet을 등록하는 작업이 필요했다.

Servlet 3.0에서는 web.xml이 없이도 배포가 가능 해졌는데 Apache Tomcat 7부터 지원을 한다.

 

web.xml의 역할을 WebApplicationinitializer 인터페이스를 구현하여 프로그래밍으로 ServletContext를 구현할 수 있도록 바뀐것이다.

SpringBootServletInitializer는 WebApplicationinitializer의 구현체이다. 

SpringBootServletInitializer를 이용하여 WebApplicationContext를 생성하여 Servlet Context에 추가할 수 있다.

 

나 같은 경우에는 프로젝트에 web.xml도 없었고, WebApplicationinitializer를 구현한 SpringBootServletInitializer도 없었기 때문에 Tomcat에서 URL의 요청을 받아드릴수가 없었던 것이다..

 

SpringBootServletInitializer를 상속 한다는건 결국 Tomcat과 같은 Servlet Container 환경에서 Spring Boot Application을 동작 가능 하도록 Web Application Context를 구성한다는 의미이다.!

 

나와 같은 삽질은 다른 사람들은 하지 않았으면....

Posted by 루우지

RHEL 기반인 CentOS7에 postgreSQL을 설치하는 포스팅이다.

 

이전에 포스팅한 LXD에 올린 Centos7 컨테이너로 진행할 예정인데 일반적인 환경과 크게 다를건 없을것 같다.

 

 

1. http://yum.postgresql.org/ 에 접속해보면 설치가능한 버전과 지원하는 OS를 확인할 수 있다.

 

2. 저장소를 설치

-> sudo yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm 

 

3. 설치가능한 패키지 검색

-> sudo yum list postgres*

 

3. PostgreSQL 9.6 버전 패키지 설치

-> sudo yum install postgresql96-server postgresql96-contrib

 

4. DB 생성

-> sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb

 

5. PostgreSQL 시작

-> sudo systemctl restart postgresql-9.6

or

-> sudo service postgresql-9.6 start

 

6. 부팅시 자동 시작되게 설정

-> sudo systemctl enable postgresql-9.6 

 

 

이렇게 하면 PostgreSQL 서버를 설치하고 구동하는게 끝났다.

netstat -tnlp 명령어를 쳐서 아래와 같이 5432 포트로 서버가 구동되어있는걸 확인하면 끝.


[root@vm1 data]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      309/sshd
tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      427/postmaster
tcp6       0      0 :::22                   :::*                    LISTEN      309/sshd
tcp6       0      0 :::5432                 :::*                    LISTEN      427/postmaster

 

접속 해보고 싶다면 psql 명령어를 이용해서 접속할 수 있다.

-> sudo -u postgres psql

참고로 psql 접속 종료 명령어는 \q

 

이제 생성한 DB를 외부에서도 접속 가능하게 설정을 수정해줘야 하는데 vi에디터로 몇 줄 고쳐주면 된다.

 

6. 외부접속 허용하기 

-> cd /var/lib/pgsql/9.6/data/

-> vi pg_hba.conf

 

스크린샷처럼 맨 하단 라인에 아래의 내용을 추가한다

 host    all     all     0.0.0.0/0       password

 

그리고서 저장 후 vi를 종료 (:wq)

 

이제 마지막으로 postgresql.conf 파일을 수정

-> vi postgresql.conf

? 명령어를 사용해서 listen 검색 후 listen_addresses = '*' 로 수정한다. (주석 제거)

 

마찬가지로 저장 후 vi 종료

 

 

Orange Ade로 리눅스에 올린 PostgreSQL을 접속해보니 잘된다. 

 

혹시 위의 설정까지 했는데 안된다면 리눅스의 방화벽을 해제하길..!!

Posted by 루우지

LXC와 LXD 둘중 뭐로할까 고민을 했는데

회사에서 쓰고있는 LXD를 이용하기로 결정했다.

 

검색해보면 LXD보다는 LXC 문서가 많아서 걱정이 됬는데 잘 정리된 글을 보고 따라하니 한방에 성공.

나중에 까먹지 않기 위해서 블로그에 정리하는 글이다.

 

참조한 문서는 

https://www.cyberciti.biz/faq/how-to-set-up-and-use-lxd-on-centos-linux-7-x-server/

 

How to Set Up and Use LXD on CentOS Linux 7.x Server - nixCraft

Explains how to set up and use LXD on CentOS Linux 7.x server and create or configure your first operating system level virtualization.

www.cyberciti.biz

 

Step 1 – CentOS 7 업데이트

sudo yum update
sudo reboot // 난 리붓안함

 

Step 2 –  on CentOS 7에 EPEL 저장소 설정

sudo yum install epel-release
sudo yum update

 

Step 3 – CentOS 리눅스에서 COPR 저장소를 활성화 및 구성하는 방법

sudo yum install yum-plugin-copr

sudo yum copr enable ngompa/snapcore-el7

 

Step 4 – LXD 설치

sudo yum install snapd
sudo systemctl enable --now snapd.socket

 

Step 5 – LXD용 CentOS Linux 커널 구성


grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
grubby --args="namespace.unpriv_enable=1" --update-kernel="$(grubby --default-kernel)"
sudo sh -c 'echo "user.max_user_namespaces=3883" > /etc/sysctl.d/99-userns.conf'
sudo reboot

Step 6 – LXD를 CentOS에 설치


sudo snap search lxd

sudo snap install lxd
sudo ln -s /var/lib/snapd/snap /snap

 

설치 확인하는법:
snap list
snap services // 이거할때 데몬에러뜸 하지만 무시

// 여기까지 진행 후 Reboot으로 시스템 재부팅

Step 7 – LXD 설정


sudo usermod -a -G lxd vivek
newgrp lxd
id

 

// LXC 서버 확인 (생성된 컨테이너를 확인할 수 있다. 하지만 지금은 초기라 List에 뜨는게 없을꺼임)
lxc list

 

[root@localhost 아무개]# lxc image list images:
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
|                ALIAS                 | FINGERPRINT  | PUBLIC |                 DESCRIPTION                  |  ARCH   |   SIZE    |          UPLOAD DATE          |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
| alpine/3.6 (3 more)                  | d3416fd3f3e3 | yes    | Alpine 3.6 amd64 (20190528_13:00)            | x86_64  | 3.17MB    | May 28, 2019 at 12:00am (UTC) |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+
| alpine/3.6/arm64 (1 more)            | cc9107640c99 | yes    | Alpine 3.6 arm64 (20190528_13:02)            | aarch64 | 3.07MB    | May 28, 2019 at 12:00am (UTC) |
+--------------------------------------+--------------+--------+----------------------------------------------+---------+-----------+-------------------------------+

 

// LXC Storage 생성 (컨테이너를 생성하기위한 스토리지 생성단계)
lxd init

[root@localhost 아무개]# lxd init
Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: 
Name of the storage backend to use (btrfs, ceph, dir, lvm) [default=btrfs]: lvm
Create a new LVM pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: 
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] 
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

 

[root@localhost 아무개]# lxc storage list        // 생성된 스토리지 확인
+---------+-------------+--------+--------------------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |                   SOURCE                   | USED BY |
+---------+-------------+--------+--------------------------------------------+---------+
| default |             | lvm    | /var/snap/lxd/common/lxd/disks/default.img | 1       |
+---------+-------------+--------+--------------------------------------------+---------+

 

Step 8 – 첫번째 컨테이너 생성하기

// 아래의 명령어를 사용하면 설치할수 있는 컨테이너의 List가 출력됨(무수히 많음)

lxc image list images:  // 전체 리스트
$ lxc image list images: | grep -i centos  // Centos 리스트
$ lxc image list images: | grep -u ubuntu // Ubuntu 리스트

 

첫번째 컨테이너 생성하는 방법

 


lxc launch images:{distro}/{version}/{arch} {container-name-here}

lxc launch images:{운영체제}/{버전}/{비트?} {컨테이너 이름}
Let us see some examples to create and start containers from various Linux distro images as per your needs.

 

[root@localhost 아무개]# lxc launch images:centos/7/amd64 test
Creating test
Starting test   

CentOS7 리눅스 생성 방법

lxc launch images:centos/7/amd64 cenots-db  

Ubuntu 리눅스 생성 방법

lxc launch images:ubuntu/xenial/amd64 ubuntu-nginx

Fedora 리눅스 생성 방법

lxc launch images:fedora/28/amd64 fedora27-c1

 

LXD의 명령어들


lxc list // 생성된 컨테이너 목록


[root@localhost 아무개]# lxc list

+------+---------+-----------------------+----------------------------------------------+------------+-----------+
| NAME |  STATE  |         IPV4          |                     IPV6                     |    TYPE    | SNAPSHOTS |
+------+---------+-----------------------+----------------------------------------------+------------+-----------+
| test | RUNNING | 10.14.12.13 (eth0) | fd42:e47e:ef8a:90b:216:3eff:fee0:867b (eth0) | PERSISTENT |           |

+------+---------+-----------------------+----------------------------------------------+------------+-----------+

 


시작 종료 재부팅 방법
lxc start 컨테이너명     // 시작
lxc stop 컨테이너명     // 종료
lxc restart 컨테이너명  // 재시작

 

제거 or 삭제

lxc delete 컨테이너명   // 삭제


컨테이너 정보 가져오기
lxc info 컨테이너명      // 정보

 

컨테이너에 접속하기
lxc exec 컨테이너명 bash

[root@localhost 아무개]# lxc exec test bash
[root@test ~]#

 

Posted by 루우지
TAG centos7, Linux, LXC, lxd

 

 

※ 본 블로그를 제외한 다른곳에서의 공유를 금합니다.

 

 

안녕하세요

대항해시대 런처를 배포합니다.

2019-06-04일 1.0.4 버전의 런처를 배포합니다.

넷마블의 안전키 관련 기능을 추가했습니다만.. 기능이 불안전합니다. 실행이 될때도 있고 안될때도 있어용 ㅠ 

완벽하지 않으니 다음에 시간나면 좀더 보안하도록 할 예정이구요

추가적으로 런처 실행 상태가 메인화면 아래에 출력됩니다.

광고 한번씩만 클릭 부탁드릴께요 ! 

 

 

프로그램에 등록되는 계정 정보는 런쳐가 위치해있는 폴더의 login.ini에 기록됩니다.

비밀번호가 암호화 되지 않기에 개인 PC에서만 사용해주시기 바랍니다.

테스트를 많이 안해보았기에 버그가 존재할 수 있습니다.

사용시 아래 사항을 유의해주세요

 

※ 실행이 안될 경우

 - Internet Explorer가 실행 중 인지 확인 해주세요.

 - 실행중인 Internet Explorer가 있다면 종료해주세요. (작업관리자를 실행해서도 실행중인 프로세스 목록에 IE가 있는지도 확인후 있다면 죽여주세요)

 

1) 비밀번호 틀림으로 인한 계정 잠금 주의

 - 현재 계정 아이콘을 더블 클릭하면 로그인이 1회 진행됩니다. (반복해서 진행되지 않습니다.)

 - 다만 비밀번호가 틀릴 경우 별도로 사용자에게 알림을 전해주지 않습니다.

 - 더블 클릭 이후에도 실행이 되지 않는다면 비밀번호가 정확한지 혹은 비밀번호가 오래되어 변경 페이지가 뜨는지 다시 확인해주시거나 3)을 확인해주세요

 

2) login.ini 파일 보안

 - 비밀번호가 암호화 되지 않으므로 개인 pc에서만 사용해주세요

 

3) Netmarble, Daum 로그인 URL

 - 기본으로 넷마블(http://dho.netmarble.net/main.asp), 다음(https://logins.daum.net/accounts/signinform.do)으로 설정 되어있습니다. 

 - 로그인이 안된다면 URL이 정확한 URL인지 확인해 주세요.

 

4) 'MSVCR120_CLR0400.dll이 없어 프로그램을 시작할 수 없습니다'

 - 사용하는 PC의 OS에 위의 DLL파일이 없어서 생기는 현상입니다.

 - 해당 DLL 파일을 다운로드 받으셔서 system32 폴더로 옮겨주세요. (자세한건 구글링)

 

5) Netmarble 계정은 안전키 기능 지원

 - 기능은 추가하였으나,, 간혈적으로 안되거나 실행이 안되는 경우가 있습니다.

 - 다음 버전에서 보안토록 하겠습니다.

 

 

다음 버전에서 추가 및 개선될 사항은 댓글로 남겨주시면 감사하겠습니다.

다음 버전에서 추가할 기능은 아래와 같습니다. (예정)

 

 

광고 한번씩 클릭해주시면 제작자에게 많은 도움이 됩니다 :D

 

 

대항해시대 런쳐(v1.0.4).zip
0.43MB

 

 

 

---------------------------- v1.0.4 (2019-06-04)

1) 런처 실행 옵션 추가

 - 게임 실행 / 홈페이지 로그인(출석체크) 기능이 추가

 - 홈페이지 로그인을 설정하면 홈페이지로 자동 로그인된 뒤 Internet Explorer가 자동으로 실행

 - 출석체크 버튼을 클릭하면 사용자가 지정한 URL로 이동

 - 설정 -> 실행 탭에서 수정 가능

2) 게임 실행전 실행중인 Internet Explorer를 종료시키는 기능 추가

 - 안전키 기능을 제외한 일반적인 로그인시 실패되는 현상중 원인을 꼽을 수있는게 실행중인 Internet Explorer가 있을경우 입니다.  Netmarble같은 경우에는 IE가 실해중이라면 이전 로그인한 계정의 Session이 남아있기에 새롭게 로그인시 실패할 수 있습니다. 

 - 미연에 방지하고자 게임실행시 실행중인(Background 포함) 프로세서중 IE가 있을경우 삭제할 것인가를 묻는 경고창 추가

3) Daum 계정의 보호조치 확인 기능 추가

 - 게임실행시 로그인이 실패될 경우 Daum계정의 보호조치가 걸려있다면 경고창으로 사용자에게 알려주는 기능 추가

4) 버그 수정

 

 

 

---------------------------- v1.0.3 (2019-05-26)

1) 넷마블 안전키 로그인 기능 추가(불안전함)

2) 설정 화면에서 안전키 정보 입력 가능

3) 로그인 로직 수정

4) 런처 실행 상태 추가

5) 잘못된 로그인 정보 출력

 

 


---------------------------- v1.0.1 (2019-05-16)

1) 넷마블 로그인 기능 추가

2) 설정 화면에서 계정 추가/수정/삭제 기능 추가

2-1) 넷마블/다음 접속 URL 수정 기능 추가

3) UI 수정 (아이콘 및 디자인)

4) 버그 수정

 

 

 

---------------------------- v0.0.1 (2019-05-08)

1) 다음 로그인 기능 추가

 

 

'취미 > 대항해시대 온라인' 카테고리의 다른 글

[대항해시대] 대항해시대 런처(v1.0.4)  (18) 2019.05.08
대항해시대 다클 가이드  (19) 2018.08.17
Posted by 루우지