2018년 5월 4일 금요일

[ubuntu] git 서버 구축

ubuntu 서버에 git 서버 구축 하기



$$ ubuntu 에서 git 서버 설치 및 설정


1. 먼저 서버 최신 정보로 업데이트와 업그레이드 하기



> sudo apt-get update
> sudo apt-get upgrade


2. git 설치



> sudo add-apt-repository ppa:git-core/ppa
> sudo apt-get install git-core


3. git 설정



3-1. git 사용을 위한 대표계정 생성

> sudo adduser git

*) 비번은 잊어 먹지 않도록 주의


3-2. 새 git 계정으로 로그인

> su git


3-3. home 디렉토리로 이동후, repos 디렉토리 생성

> cd ~
> mkdir repos
> cd repos

3-4. 프로젝트 폴더 생성.
> cd /home/git/repos/project.gitls

> git init --bare --shared



$$ client pc 에서 ubuntu 에 생성한 원격 git 저장소 복사하기(windows 기준)



1. git-bash.exe 설치



2. git-bash.exe 실행



3. 원격 git 저장소를 복사할 위치 에서



> git clone ssh://git@<host name or ip>:<port>/home/git/repos/project.git

=> ssh:// 다음 git 은 ubuntu에서 생성항 대표 계정
=> port 는 22 로 우분투에 설정되어 있으면 생략가능

> git@<host name or ip> password :   git 패스워드 입력


4. 원격 저장소 가 client 에 복사된 폴더가 확인 가능 함. 폴더 내로 들어가서,
파일 생성 후 아래의 git 사용 명령을 통해 로컬파일을 원격저장소에 저장가능하다.



5. git 에 추가할 파일들 추가명령 실행


> git add * -f

=> 명령 실행시 추가하는 파일목록들이 화면에 표시되면, 다시 한번 명령을 실행.
     아무 메시지없으면 정상적으로로컬에 추가된상태임


6. 로컬 저장소에 변경사항 저장


> git commit -m "commit message 입력"


7. 로컬저장소에 저장된 사항을 원격지 git 저장소에 반영


> git push origin master

=> 에러나는경우(error: remote unpack failed: unable to create temporary object directory)

권한변경

=>  chown -R git:git [프로젝트네임].git/








2018년 5월 3일 목요일

[mysql] db dump 하는 방법과 dump파일로 복구 하는 방법


 /usr/local/tomcat8.5/db_backup 폴더를 생성 해서 디비덤프 파일 저장을 한다.

사용하는 명령어는 /usr/bin/mysqldump

명령어 위치에서 아래와 같이 작성하여 덤프 할 수 있다.





1. 디비 전체 덤프

 ./mysqldump -h "localhost" -u "<db 아이디>" -p"<db 패스워드>" --single-transaction <db 명> > /usr/local/tomcat8.5/db_backup/<백업파일명>.sql


2. 디비에서 원하는 테이블만 덤프

 ./mysqldump -h "<db 아이디>" -p"<db 패스워드>" --single-transaction <db 명> <table 명> >  /usr/local/tomcat8.5/db_backup/<백업파일명>.sql


그리고, 덤프 한 파일로 복구 하는 방법이다.

mysql -u root -p <db 명> < <백업파일명>.sql


[ubuntu] 하나의 tomcat8 에서 여러개의 war 실행 방법

ubuntu 17.10버전 으로, 내가 설치한 tomcat8의 위치는 /var/lib/tomcat8 이며,

/var/lib/tomcat8/conf/server.xml 파일 에서 아래와 같이 수정한다.


1
2
3
4
5
6
7
8
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
        
      <context docBase="Aproject" path="" />
      <Context docBase="Bproject" path="" />
 
</Host>
 
cs

위에서 추가 된 내용만 보면 아래와 같다.

      <context docBase="Aproject" path="" />
      <Context docBase="Bproject" path="" />

이렇게 저장하고,

/var/lib/tomcat8/webapps 에, Aproject.war, Bproject.war 를 업로드한다.

service tomcat8 start (or restart)를 실행하면, 서비스가 동작한다.

참고)
그러나, 웹 접속 시, localhost:8080/Aproject/<접근주소>, localhost:8080/Bproject/<접근주소> 를 사용하면 확인 가능 하나, 간혹, 둘중에 한 프로젝트는 context명(Aproject or Bproject) 없이도 동작하는 경우가 있다. 확인이 필요하다. 







[ubuntu] spring boot war 배포 시 발생하는 에러 대응 방법

spring boot 프로젝트로써 빌드된 war 파일을 ubuntu tomcat8 서버에 배포 후, tomcat8 재실행 시, 알수 없는 버그들을 만났다.

만난 버그 내용과 대응책을 공유 하도록 한다.

먼저, 구성되어있는 개발 환경 이다.

배포서버 환경 
OS : Ubuntu 17.10
JAVA : java version "1.8.0_171"
TOMCAT : tomcat8

개발피시 환경
OS : Windows 7 64비트
JAVA : java version "1.8.0_102"
TOOL : Spring Tool Suite (Version: 3.9.2.RELEASE)

위 개발 피시의 환경에서, Maven Install 을 해서 생성된 war 파일을 FTP를 이용해서 서버에 업로드 하고,
service tomcat8 restart
명령을 통해 tomcat8을 재실행 하였다.

그러나, 톰캣은 실행되지 않고 아래 메시지를 만났다.

Job for tomcat8.service failed because the control process exited with error code.
See "systemctl  status tomcat8.service" and "journalctl  -xe" for details.

에러가 발생하여 tomcat8이 실행되지 못하고 종료됬다.

/var/lib/tomcat8/logs 에서 catalina.out 파일을 열어서 error를 확인해야한다.

내가 만난 에러 메시지는,

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]...

해당 에러 메시지에 대한 웹 검색으로 찾은 대응 방법은

프로젝트에서 사용하는 servlet 2.5 버전파일을 3.x 버전파일로 업그레이드해라 

이다.

그러나 내겐 해당 되지 않는 해결책 이었다.

어째든 servlet을 찾지 못해 발생하는 에러 임은 확인 되어, 기본적으로 소스 코드에서 문제가 있는지 확인 해 보았다.

확인 결과 Application class 파일에 SpringBootServletInitializer 가 빠져있었다.
그래서 아래 처럼 수정 하고 인스톨후 배포했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class SeApplication extends SpringBootServletInitializer {
 
    public static void main(String[] args) {
        SpringApplication.run(SeApplication.class, args);
    }
 
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        
        Resource[] arrResource = new PathMatchingResourcePatternResolver().getResources("/mapper/*Mapper.xml");
        sqlSessionFactoryBean.setMapperLocations( arrResource );
        return sqlSessionFactoryBean.getObject();
    }
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SeApplication.class);
    }
}
 





cs


그러나, 다시 두번째 tomcat8 실행 에러를 만났다.

이번에 확인 한 에러 메시지는

1
2
org.apache.catalina.LifecycleException: A child container failed during start
 
cs

확인 해 보니, <사용자명>/.m2/repository 내의 maven 저장 jar 파일들 중 같은 파일이지만 버전이 다른 것들 사용하지 않는것들이 프로젝트 내에 연결되어 있는 상태였다.

spring tool suit를 종료하고,
.m2 폴더를 삭제 후, spring tool suite를 실행 하였다.

상단 메뉴의 Project - Build Automatically 에 체크 상태이면, spring tool suite 실행시, 자동으로 모든 프로젝트들에 대하여 maven - update project 를 실행한다.

그리고 pom.xml 파일에서 최 상단에 에러가 표시된다.

Multiple annotations found at this line: %09- Failure to transfer ...

그러면, pom.xml 전체 스크립트를 카피하고 저장 그리고 다시 붙여넣기 후 재저장 하면,

해당 프로젝트의 pom.xml 에러가 해결된다.




















2018년 4월 23일 월요일

[mysql] [db 설정 필요사항] sql_mode = only_full_group_by 해제

sql_mode = only_full_group_by 해제

해제 방법 :

/etc/mysql/mysql.conf.d/mysqld.cnf 파일 내에,

[mysqld]

sql_mode=ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUT

입력, 저장, 재시작

2018년 4월 22일 일요일

[mysql] 특정 날짜를 포함 한, 달의 첫날, 다음달 첫날 구하기

1
2
3
select 
STR_TO_DATE(DATE_FORMAT(DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY), '%Y-%m-%d'), '%Y-%m-%d'),
STR_TO_DATE(DATE_FORMAT(DATE_ADD((DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY)), interval 1 MONTH), '%Y-%m-%d'), '%Y-%m-%d');
cs

- 2번째 라인,

STR_TO_DATE(DATE_FORMAT(DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY), '%Y-%m-%d'), '%Y-%m-%d')

: '2018-03-15'의 첫날짜 구하기


- 3번째 라인,

STR_TO_DATE(DATE_FORMAT(DATE_ADD((DATE_SUB('2018-03-15', INTERVAL (DAYOFMONTH('2018-03-15')-1) DAY)), interval 1 MONTH), '%Y-%m-%d'), '%Y-%m-%d')

: '2018-03-15'의 다음달 첫날짜 구하기

2018년 4월 17일 화요일

[jquery] select2 에서 selected 처리 방법

select2 plugin  에서 selected 처리 방법

<select multiple style="width:100%" class="select2">

위 select tag 내에 option tag와 value, text를 동적으로 추가 후,
원하는 option value를 찾아 selected 상태값을 주기 위한 방법으로써,
아래 와 같은 예제 의 밑줄 script 처럼 처리 할 수 있다.

$.ajax({
url : '',
method : 'POST',
dataType : "json",
data : ,
success : function( response ) {
var objectList = response.object;
if(objectList != null) {
var items=new Array();
$.each(objectList, function( index, value ) {
items.push(objectList[index].id); //==> 다중 선택value를 array 구성
$("select[name=manageItemInfomation] > option[value="+objectList[index].id+"]").attr("selected", "selected");
//==> 다중 선택value에 selected 설정
});
$('select[name=manageItemInfomation]').select2(items);
//==> selected 설정된값을 select2 박스에 표시
}
},
error : function ( xhr, textStatus, error) {
console.log(error);
}
});