1. pom.xml dependency 추가

- scope 에 대한 정의는 더 찾아보기  

<dependency> <!-- spring.io 에서 프로젝트 생성시 설정 -->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<!-- mssql  -->
<dependency>
  <groupId>com.microsoft.sqlserver</groupId>
  <artifactId>mssql-jdbc</artifactId>
  <scope>test</scope>
</dependency>

2. application.properties에 datasource 설정

# dev datasource (mssql) 
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.url=jdbc:sqlserver://[db서버정보];databasename=[db이름]
spring.datasource.username=[계정아이디]
spring.datasource.password=[계정패스워드]

 

 

** Boot의 pom.xml은 parent pom.xml을 참조하고 있어서 스프링부트버전에 맞는 디펜던시를 가져오기 때문에 version정보를 보통 생략한다고 한다. > 이 내용도 좀 더 자세히 찾아봐야할듯

 

추후 참고글: https://jeong-pro.tistory.com/168

 

https://bbchu.tistory.com/53

 

Spring Boot 프로젝트 셋팅2 - 프레임워크

서버에 톰캣8.5 / Java1.8 설치가능한 것을 확인하고 프레임워크 셋팅을 시작했다. 프레임워크는 Maven 기반 spring boot 프로젝트를 import하여 셋팅하였다. (https://start.spring.io/ 에 접속하여 빌드환경과..

bbchu.tistory.com

지난 작업에 이어서 오늘은 화면템플릿인 sitemesh를 적용해보았다.

기존 사이트가 jsp를 사용하고 있는데 퍼블리싱은 도저히 손댈수가 없어서.. jsp기반의 템플릿을 사용했다.

 

1. pom.xml dependency 추가

<!-- sitemesh -->
<dependency>
<groupId>opensymphony</groupId>
  <artifactId>sitemesh</artifactId>
  <version>2.4.2</version>
</dependency>

2. Bean 등록

- 부트에서는 Application 클래스에 명시적으로 Bean을 등록 (mvc에서는 web.xml 에 설정)

@SpringBootApplication
@EnableAutoConfiguration
public class HdlApplication {

  public static void main(String[] args) {
  	SpringApplication.run(HdlApplication.class, args);
  }

  @Bean
  public FilterRegistrationBean siteMeshFilter() {
    FilterRegistrationBean filter = new FilterRegistrationBean();
    filter.setFilter(new SiteMeshFilter());
    return filter;
  }
}

3. xml 설정  

- sitemesh를 사용하기 위해서는 decorators.xml 파일을 설정해줘야하는데

- 부트를 쓰는 경우에 해당 파일은 webapp/WEB-INF/ 하위에 위치해야 자동으로 설정이 된다.

- decorators.xml 에서는 exclude 할 패턴과 header, footer 정보들을 설정하면 됨

<?xml version="1.0" encoding="UTF-8"?>

<decorators defaultdir="/WEB-INF/jsp/adm/">
  <excludes>
    <!-- 예외처리 패턴 -->
    <pattern>**.html</pattern>
    <pattern>**/loginform</pattern>
  </excludes>

  <!-- ADMIN DECORATOR START -->
  <decorator name="web_admin" page="layout/template.jsp">
    <pattern>/adm/*</pattern>
    <pattern>/WEB-INF/jsp/adm/**</pattern>
  </decorator>

  <decorator name="web_admin_header" page="layout/header.jsp"/>
  <decorator name="web_admin_footer" page="layout/footer.jsp"/>
  <!--// ADMIN DECORATOR END -->

</decorators>

 

서버에 톰캣8.5 / Java1.8 설치가능한 것을 확인하고 프레임워크 셋팅을 시작했다.

프레임워크는 Maven 기반 spring boot 프로젝트를 import하여 셋팅하였다.

(https://start.spring.io/ 에 접속하여 빌드환경과 부트 버전, dependency 설정 > 프로젝트 내려받아 이클립스에서 import)

 

빌드환경 : Maven

Spring Boot : 1.5.21 (1.5.x는 Spring 4.0 기반 2.x.x는 Spring 5.0 기반)

Java Version : 8

패키징 : war (war는 외장 톰캣, jar는 내장톰캣 설정인데 나는 별도 톰캣으로 진행해야하므로 war선택)

이클립스 버전 : Photon

 

1. jsp 설정

스프링부트에서는 공식적으로는 jsp를 지원하지 않고

freemarker나 thymeleaf 같은 화면템플릿을 지원하기 때문에 템플릿 사용을 고려했으나, 

회사에서는 아직까지 jsp를 사용하고 있고 퍼블리싱 지원이 없기 때문에 jsp 전체 전환은 무리여서 기존대로 가기로했다.

 

jsp 설정은 application.properties 파일에 아래 두줄을 설정하였다.

spring.mvc.view.perfix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp

// WEB-INF는 src/main/webapp 하위에 생성하고 js, css같은 정적파일들은 src/main/resource/static 하위에 생성하였다.

 

2. 테스용 controller 설정

초반에 샘플용 컨트롤러를 만들어서 index.jsp 화면 띄우기를 시도하다 자꾸 에러가 났는데

그 이유는 스프링부트가 초기환경을 자동으로 셋팅해줘서 dataSource 같은 기본셋팅이 누락되어 생긴 에러였다.

아래와같이 @EnableAutoConfiguration(자동설정활성화) 어노테이션에 dataSource 를 예외하고 몇몇 아직 설정하지 않은 dependency 들을 주석처리하여 해결하였다.

@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})

 

3. Maven 설정

폐쇄망 환경에서 로컬 Maven Repository를 구성하기 위해 setting.xml 을 설정하고 이클립스에 경로를 잡아줬다.

// 이클립스에서 window > preference > Maven > User settings > setting.xml 경로와 m2 폴더 경로 설정 가능

 

<향후진행사항>

이후에는 기존 jsp 구성 전환과 DB 설계, RestAPI 적용에 대한 설계부분을 진행하려고 한다.

 

 

 

참고: https://eddies.tistory.com/12

 

Spring Boot 프로젝트 만들기 (with. 이클립스 Maven)

이클립스에서 Spring Boot Project를 생성&시작 하는 방법을 알아보도록 하겠습니다. 보통은 이클립스 마켓에서 STS(Spring tool Suite)를 인스톨 받아 프로젝트를 생성할 수있습니다. 하지만. 제가 포스팅하는 주..

eddies.tistory.com

 

최근 운영하고 있는 시스템이 개편을 하게 되어 spring boot로 프로젝트를 진행하게 되었다.

개발에 앞서 현재 구동되고 있는 개발/운영 서버에 환경셋팅을 잡아보려고한다.

 

[ 현재 서버 구성 ]

OS버전 : Windows Server 2012 R2 (윈도우 8.1)

OS사양 : 4기가 64비트 (개발, 운영 동일)

IIS버전 8.5

톰캣버전 :  7.0 

 

제일 먼저 확인할 사항은 현재 운영되고 있는 서버에서 톰캣/자바 버전업이 가능한가이다. 

버전에 따라 이클립스나 spring boot 버전도 결정되기때문에 먼저 확인해보았다. 

서버에 한 시스템만 구동돼있다면 크게 문제가 없었겠지만, 현재 시스템은 한 서버에 여러 서비스가 인스턴스별로 구동중이어서 내가 쓰는 인스턴스만 버전업할 경우 타 시스템에 영향을 끼칠 수도 있다.

 

따라서 톰캣 8.5버전과 자바8을 서버에 설치 후, 새로운 인스턴스를 구동하고 테스트용 war를 배포해보는 작업을 진행했다.

새로 설치한 톰캣에 java_home, catalina_home, catalina_base 등 내 인스턴스에만 사용할 환경변수를 적용하고 startup.bat 명령으로 war 배포까지는 성공을 했는데 해당 작업을 윈도우 서비스에 등록해서 시작하면 아래와 같은 에러가 계속되었다. 

 

// 에러내용

%1 은 올바른 win32 응용 프로그램 이 아닙니다.

failed creating java jvm.dll

 

톰캣에서 자바를 못잡는것 같기도하고 윈도우서비스로 시작할 경우 bin/tomcat8.exe 파일을 실행시키는데 다른 .bat 파일에 있는 설정정보를 못읽는 것 같기도해서 이부분은 좀더 파악해봐야할 것 같다. 

 

===========19.05.21============

결국 서버에 톰캣 설치형 파일을 올려서 셋팅했다. 

설치형은 자동으로 윈도우 서비스까지 걸려서 server.xml이나 context.xml 정도만 수정하여 셋팅을 완료하였다.

 

 

 

소스를 git 에 올리고 서버에서 셋팅하는것까지는 완료되었고 

다음은 nginx 를 리버스 프록시로 사용하는 방법을 살펴보았다.


참고글을 참고(?)하여 /etc/nginx/sites-available/ 경로에 default 폴더를 수정해주었다.

*중간에 도메인뒤에 포트를 붙여주지않으면 css 나 js의 path 가 깨지는 문제가 있었는데 server 괄호에 있는 server_name 을 주석처리해주니 해결되었다! (도메인에 포트가 붙어야 접속이 되면 프록시를 사용하는 의미가 없다능..)


server {

 22         #listen 80 default_server;

 23         #listen [::]:80 default_server;

 24         listen 80;


location / {

 52                 # First attempt to serve request as file, then

 53                 # as directory, then fall back to displaying a 404.

 54                 # try_files $uri $uri/ =404;

 55                 proxy_set_header X-Real-IP $remote_addr;

 56                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 57                 proxy_set_header Host $http_host;

 58                 proxy_set_header X-NginX-Proxy true;

 59 

 60                 proxy_pass http://127.0.0.1:3000/;

 61         }


}



참고글

https://medium.com/sjk5766/nginx-reverse-proxy-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-e11e18fcf843

https://velog.io/@jeff0720/2018-11-18-2111-%EC%9E%91%EC%84%B1%EB%90%A8-iojomvsf0n

Amazon Linux를 사용하다 sudoers 설정파일을 잘못건드리는 바람에.. 인스턴스를 우분투로 새로 생성하였다.


인스턴스 생성 후 ssh 접속할 때 키페어에 접근이 안되는 문제가 있어서 권한변경하여 해결하였다.


$ chmod 400 키페어이름.pem



ssh 접속 후 아래 명령어로 nginx 를 설치


$ sudo apt-get update

$ sudo apt-get install nginx


참고글 : http://technerd.tistory.com/18



서버에 node.js 설치


sudo apt-get install curl

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

sudo apt-get install -y nodejs


npm 설치


sudo apt install npm


'사이드 프로젝트' 카테고리의 다른 글

Spring Boot 프로젝트 셋팅1 - 서버환경  (0) 2019.05.11
코딩야학 프로젝트 day5  (0) 2019.01.22
코딩야학 프로젝트 day3  (0) 2019.01.08
코딩야학 프로젝트 day2  (0) 2019.01.08
코딩야학 프로젝트 day1  (0) 2019.01.08

코딩야학 프로젝트 3일차 - 실제 개발


1. 로컬에 express 설치 (node 는 이미 설치)

 $ sudo npm install -g express-generator


express 로 프로젝트 생성

$ express testProject


cd testProject

npm install

DEBUG=testProject:* npm start  (디버그 필요없을 경우 node app.js or node bin/www app.js 로 실행)


명령어 서버가 연결되었다는 메세지가 뜨고 해당 포트로 접근하면 express 메세지 출력!


참고글 : http://ding-dong-in-future.tistory.com/2




'사이드 프로젝트' 카테고리의 다른 글

Spring Boot 프로젝트 셋팅1 - 서버환경  (0) 2019.05.11
코딩야학 프로젝트 day5  (0) 2019.01.22
코딩야학 프로젝트 day4  (0) 2019.01.16
코딩야학 프로젝트 day2  (0) 2019.01.08
코딩야학 프로젝트 day1  (0) 2019.01.08

코딩야학 프로젝트 2일차


오늘은 AWS EC2 서버 셋팅을 진행했다. (EC2 는 CentOS 기반)


1. 필요 패키지 설치


sudo yum update -y
sudo yum install gcc gcc-c++
sudo yum install -y git


2. nginx 설치


참고글 : https://hue9010.github.io/aws/nginx%EB%A5%BC-%EC%A0%81%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%9E%90/


아파치도 많이 사용하긴하지만 요즘엔 nginx 도 많이 사용한다고 해서 nginx 를 설치했다.  (내부적으로 nginx는 비동기처리를 해주어 효율적이라고함)

yum으로 설치했고 현재 ec2 서버에 루트아닌 계정으로 접속해서 sudo 로 설치하였다.


sudo yum install nginx — root 로 설치



- nginx 관련 명령어

service nginx start : 시작
service nginx stop : 정지
service nginx restart : 재시작
service nginx reload : 설정파일을 재로드
service nginx status : 현재 상태

설치 후 EC2  인스턴스 콘솔에서 방화벽 해제를 해주고 nginx 시작 명령어를 입력하면 nginx 인덱스 화면이 뜨는걸 볼 수 있다.

3. 프로젝트 아이템 선정 - 개발공부노트 사이트 만들기

[ 기능 ]

로그인 - 시큐어코딩 고려

게시글 CRUD

댓글기능

즐겨찾기 기능

글쓰기 에디터 연동


[ 사용기술 ]

node.js

vue.js or react

mongo DB


4. 개발 공부!



'사이드 프로젝트' 카테고리의 다른 글

Spring Boot 프로젝트 셋팅1 - 서버환경  (0) 2019.05.11
코딩야학 프로젝트 day5  (0) 2019.01.22
코딩야학 프로젝트 day4  (0) 2019.01.16
코딩야학 프로젝트 day3  (0) 2019.01.08
코딩야학 프로젝트 day1  (0) 2019.01.08

코딩야학 5기에 참여하여 사이드 프로젝트를 진행하기로 했다!

대략적인 아웃라인은 기본 ÇRUD 기능이 있는 게시판 구현이다.


먼저 1일차

서버 호스팅을 위해 dothome 을 오랜만에 들어갔으나.. 무료버전에서는 ssh를 지원하지않아 aws 를 사용하기로 했다.


1. AWS 에 가입후 EC2 인스턴스를 생성


참고글 : http://luji.tistory.com/6


나는 맥을 사용하므로 putty 대신 터미널에 아래 명령어 입력 (pem 파일이름은 ec2 생성할때 만든 이름으로 해야함)

ssh -i "myKeyPairAWS.pem" ec2-user@ec2-xxx-xxx-xxx-xxx.us-east-2.compute.amazonaws.com (인스턴스 위에 연결버튼 누르면 명령어 가이드 나옴)


*추가글 2019.01.16

서버셋팅중 sudoers 파일을 잘못건드려 인스턴스를 삭제하고 다시 생성했다.

새 인스턴스는 ubuntu 로 진행하기로했다.

참고글 : http://luji.tistory.com/6



2. 도메인생성


참고글 : https://my.freenom.com/clientarea.php


도메인에 돈을 쓰기싫어서... 무료 도메인 사이트에서 생성했다. (이외에도 무료 도메인 사이트는 찾아보면 많음)



3. 도메인연결

 

참고글 : http://wingsnote.com/57


hosted zone 과 record set(www) 을 추가하면  스턴스 ip 와 도메인이 연결되는데 

내가 생성한 도메인은 마이너한 도메인이라 그런지 bbjeong.ml 로 등록하면 bbjeong.ml. 으로 생성이 되어지는 문제점이 있었다..

이걸로 시간을 더 끌기는싫어서... 프로젝트 완료한 이후에 더 살펴보기로하고 넘어갔다!


*추가글 2019.01.16

엉망진창.. AWS 에서 도메인을 bbjeong.ml. 으로 생성한 것 때문에 freenom 사이트에는 bbjeong.ml 도메인이 제대로 접근불가하다고 판단하여 취소된것같다...ㅠ

일단 아이피로 접근하고 도메인문제는 나중으로 미뤄야겠다..



'사이드 프로젝트' 카테고리의 다른 글

Spring Boot 프로젝트 셋팅1 - 서버환경  (0) 2019.05.11
코딩야학 프로젝트 day5  (0) 2019.01.22
코딩야학 프로젝트 day4  (0) 2019.01.16
코딩야학 프로젝트 day3  (0) 2019.01.08
코딩야학 프로젝트 day2  (0) 2019.01.08

+ Recent posts