ToManage github 프로젝트 라이선스 정리

ToManage 프로젝트 라이선스 정리

TM-CRM_ERP : Aapache 2.0
https://github.com/ToManage/TM-CRM_ERP.git

stats : OSL 3.0
https://github.com/ToManage/stats.git

product: OSL 3.0
https://github.com/ToManage/product.git

accounting: OSL 3.0
https://github.com/ToManage/accounting.git

payment: OSL 3.0
https://github.com/ToManage/payment.git

delevery: OSL 3.0
https://github.com/ToManage/delivery.git

TM-manager: MIT
https://github.com/ToManage/TM-manager.git

flowcomponents: none
https://github.com/ToManage/flowcomponents.git

flowboardcomponents: none
https://github.com/ToManage/flowboardcomponents.git

bill_supplier: OSL 3.0
https://github.com/ToManage/bill_supplier.git

order_supplier: OSL 3.0
https://github.com/ToManage/order_supplier.git

order : OSL 3.0
https://github.com/ToManage/order.git

bill: OSL 3.0
https://github.com/ToManage/bill.git

company: OSL 3.0
https://github.com/ToManage/company.git

gridfs: OSL 3.0
https://github.com/ToManage/gridfs.git

contact: OSL 3.0
https://github.com/ToManage/contact.git

offer: OSL 3.0
https://github.com/ToManage/offer.git

task: OSL 3.0
https://github.com/ToManage/task.git

TM-eshop: MIT
https://github.com/ToManage/TM-eshop.git

bank: OSL 3.0
https://github.com/ToManage/bank.git

TM-cms: MIT
https://github.com/ToManage/TM-cms.git

modules: none
https://github.com/ToManage/modules.git

stock: OSL 3.0
https://github.com/ToManage/stock.git

documentaion: MIT
https://github.com/ToManage/documentation.git

TM-store: MIT
https://github.com/ToManage/TM-store.git

node-sqlagent: MIT
https://github.com/ToManage/node-sqlagent.git

TM-slides: MIT
https://github.com/ToManage/TM-slides.git

TM-dashboard: MIT
https://github.com/ToManage/TM-dashboard.git

TM-helpdesk: MIT
https://github.com/ToManage/TM-helpdesk.git

TM-blogengine: MIT
https://github.com/ToManage/TM-blogengine.git

 

용서하는 법

용서란

용서는 자기가 원하는 것을 삶이 허락해주지 않았을 때에도 평화롭게 살아가는 것 – 프레드 러스킨 교수(스탠포드 의대)

용서하는 법

첫째, 당신에게 일부러 상처주려는 사람은 없다.

둘째, 화가 나면 숨을 깊게 쉬고 사랑하는 사람을 떠올려라.

셋째,  모든 것은 나에게 달려있다.

사용할 오픈소스 임시

1. ReportServer
AGPL
https://reportserver.net/en/

2. LibreOffice
GPL
http://www.libreoffice.org/

3. 우분투 데스크탑 필수앱 21 소개
http://www.oss.kr/oss_news/664631

4. jasperreports
http://blog.naver.com/PostView.nhn?blogId=nonedaum&logNo=67583724

5. ZK Spreadsheet demo
http://zssdemo.zkoss.org/zssdemo/integration

docker gitlab 설치

Gitlab 설치

소스 버전관리 및 웹에서 확인 가능
프로젝트 관리, 이슈관리, 리뷰, 할일관리, 자동배포 및 도커저장소 지원

Quick Start

docker-compose.yml 다운로드 > 설정변경 > docker-compose up -d

설정변경
– redis :
volumes:
– ./redis:/var/lib/redis:Z

postgresql:
volumes:
– ./postgresql:/var/lib/postgresql:Z
environment:
– DB_USER=****
– DB_PASS=****

gitlab:
volumes:
– ./gitlab:/home/git/data:Z
– /etc/letsencrypt/live/domainname/fullchain.pem:/home/git/data/certs/gitlab.crt
– /etc/letsencrypt/live/domainname/privkey.pem:/home/git/data/certs/gitlab.key
– ./logs:/var/log/gitlab
environment:
– DB_PASS=****
– TZ=Asia/Seoul
– GITLAB_TIMEZONE=Seoul
– GITLAB_HTTPS=true
– SSL_SELF_SIGNED=true
– GITLAB_HOST=domainname
– GITLAB_PORT=443
– GITLAB_SSH_PORT=10022
– GITLAB_SECRETS_DB_KEY_BASE=****(각각 pwgen 이용 랜덤생성)
– GITLAB_SECRETS_SECRET_KEY_BASE=****(각각 pwgen 이용 랜덤생성)
– GITLAB_SECRETS_OTP_KEY_BASE=****(각각 pwgen 이용 랜덤생성)

– GITLAB_ROOT_PASSWORD=****
– GITLAB_ROOT_EMAIL=*****

– GITLAB_EMAIL=***
– GITLAB_EMAIL_REPLY_TO=***
– GITLAB_INCOMING_EMAIL_ADDRESS=***

# 회원가입 비밀번호 찾기 발송 리뷰등 이메일 사용시 전송등록
– SMTP_ENABLED=true
– SMTP_DOMAIN=domainname
– SMTP_HOST=smtp.gmail.com
– SMTP_PORT=587
– SMTP_USER=****
– SMTP_PASS=****
– SMTP_STARTTLS=true
– SMTP_AUTHENTICATION=login

– IMAP_ENABLED=true
– IMAP_HOST=imap.gmail.com
– IMAP_PORT=993
– IMAP_USER=****
– IMAP_PASS=****
– IMAP_SSL=true
– IMAP_STARTTLS=false

도커 실행전 letsencrypt를 이용하여 인증서를 먼저 생성한다.
gitlab의 웹서버는 nginx이며 파일 웹루트의 경로는 /home/git/gitlab/public이다
웹루트를 이용하여 letsencrypt를 생성하려면 volume을 추가 연결한다. 다.
단, volume연결시 웹파일이 생성되지 않기 때문에 미리 웹파일을 백업해서 생성해 놓아야한다.

참조

sameersbn/docker-gitlab

docker-compose지원 및 상세 설정 가이드

pwgen사용방법 및 옵션 설명

랜덤 패스워드 생성기 docker-compose.yml 설정시 64자리 패스워드 필요.

cannot open git-upload-pack

이클립스 eGit remote push 중 오류발생 해결 :  egit key, value 옵션 설정

git ignore 설정

.gitignore 파일을 통해서 설정됨. 이클립스이용 또는 직접파일 생성.

이클립스 egit 사용방법

참고로 remote연결시 별도의 브런치를 생성해서 master에서는 소스를 내려받기를 하고 별도 브런치에 소스를 push하고 자동으로 빌드 테스트 후 master에 머지하는 방법을 사용하면 잘못된 소스가 반영되어 전체 개발자의 빌드가 오류나는 상황을 미연에 방지할 수 있다.

git 프로젝트 디렉토리는 워크스페이스로 지정한다.

 

 

 

 

ERP 서버 이전

하루면 되지 않을까 생각하고 시작했던 서버 이전이 여러가지 난관에 부딛히며 일주일간 개 고생을 하였다. 다시는 개 고생하지 말자며 그간의 경험을 기록한다.

서버는 apache-php-mysql 환경과 apache-tomcat-oracle-xe 환경 두대가 있다.

5년간 운영된 나의 서버는 그동안 많은 고생을 해주었고 작은(짭짤한) 수입을 내게 안겨주었다. 하드의 보증 기간도 3년인데 5년이나 사용한 나의 서버가 이제 언제 죽을지 몰라서 걱정하는 사태에 이르렀기에 클라우드 서버로의 서버 이전을 결심하게 되었다.

클라우드 서버 이용의 장점은, 무지 많으나 그중에 자동스크립트로 서버운영이 가능하고 서버 생성 삭제 증설이 간편하며 블록저장소의 고가용성 등이 있다.

아래는 일주일 간의 고생 내용이다.

1. 클라우드 서버 선택
iwinv.kr : 오픈스택 기반의 클라우드 서비스
아마존 대비 120배 저렴.
다양한 웹 GUI 서비스 기능. (모니터링, 방화벽, 서버 업/다운 그레이드, 오토스케일, 로드밸런스, 블록스토리지, DNS관리, 서버 운영 가이드 등)

2. DOCKER 환경 설치
base 운영체제 : 우분투16.04_64bit
sudo 사용 유저 생성
ssh root 로그인 제한 설정
최신 버전의 docker-ce, docker-compose 설치
docker-compose 사용 네트워크 생성 mtu-1450
(networks-outside-external-name)
block-storage 파티션생성 및 자동 마운트 설정

3. 서버 이미지 저장
현재까지 설정된 서버를 이미지로 저장하여 추가 서버 생성시 이미지를 통해 현재 시점의 이미지로 서버를 추가 할 수 있다.

4. 저장된 이미지를 통한 추가 서버 생성.
로그인 시 /dev/null 오류 발생. (처리 : 파일 삭제 rm -f /dev/null 후 재시작)
명령프롬프트가 동일하여 서버 구분이 어려움. (/etc/hostname 이름 변경 )
sudo 명령 사용시 hostname 오류 발생. (/etc/hosts에 127…. hostname추가)

5.사용할 docker 이미지 서치 (php서버)
apache-php-ssl 설정이 된 서버 이미지 검색 및 검증 후 설치 테스트
(적당한 이미지 검색 및 검증 테스트에 6시간이상 소요됨 ssl 설정이 큰 이유)
php: short코드 문제 발생 및 로그인시 세션 data 파일 생성 오류 발생.
mysql: mariadb로 설치시 db파일이 생성되지 않는 문제 발생하여 mysql생성.
#php 도커 이미지 : ubuntu-16-apache-php-5.6
#컨테이너 이미지 모두 삭제 방법(docker rm `docker ps -a -q`)
#PHP 짧은 태그 허용

6.docker-compose.yml 파일 생성(version 2)
docker 컨테이너 이미지 설정(volume, port)
mtu-1450 network 사용설정
자동 재시작 설정 restart

7.mysql dump 복원
db 사용계정은 mysql evn설정을 통해 자동으로 생성.
#Mysql 백업 및 복구

8.php 소스 반영 및 db연결
db연결 설정 :  도메인 ‘db'(컨테이너이름) 로 연결 설정함.
DB연결 함수 없음 오류 발생 : php7.1에서 5.6으로 docker 이미지 변경
apache redirect 설정 .htaccess 기입방법 사용.

9. letsencript 인증서 설정
소스 다운로드 : git clone letsencript …
인증서 생성 : 초기 이메일등 입력 후 차후 crontab을 이용한 자동생성 가능

10. 테스트 및 확인
안전함 사이트 접속 가능 및 성능 기존 사이트에 비해 30~40% 상향됨.
(예상 원인 ssd 블록스토리지의 성능향상으로 인한 DB 성능 개선 및 ddr4의 최신 서버환경.)

11. 사용할 docker 이미지 서치 (tomcat서버)
이미지 서치 및 검증에 2일 소요 :  tomcat-ssl cert파일 바로 사용문제.
java openjre문제. 결국 openjre 및 jks 사용해서 톰캣구성함. (메모리튜닝등 남음)
#사용된 oracle 도커 이미지 :  sath89/oracle-xe-11g
( manager폴더가 삭제가 안되어서 webapps를 볼륨링크로 연결하여 생성안되게 막음)
#아래는 스터디용 링크
axiom-data-science : 서버 생성 스크립트 작성시 참조(메모리 설정등)
(보안상 tomcat 계정으로 기동되는 이미지들은 work폴더에 jsp_classs파일이 생성되지 않는 문제가 있다.)

12. docker-compose.yml 파일 생성(version2)
docker 컨테이너 이미지 설정(volume, port)
mtu-1450 network 사용설정
자동 재시작 설정 restart
command명령 letsencrip 인증서를 jks로 변환해야하는데 스터디 필요.ㅠ

13. 오라클 DB dump파일 복원
charactorset 문제 발생. WINMS949에서 UTF8로 넘어가면서 컬럼 자릿수 오류 다수 발생. 해결방법: 스키마 생성 후 올류나는 컬럼 자릿수 수정 후 임폴트하는 방법과 문자셋을 변경하는 방법.
문자셋 변경함: 오류 발생.  varchar에 대한 문자셋이 중복됨. 해결방법 database 문자셋 변경.
# 오라클 DB 이전 (exp/imp)
# 오라클 리스너 확인 : lsnrctl status
#ORA-06553 알수없는 문자셋 오류 처리
(update props$를 KO16MSWIN949를 실행 후 DB데이터 복구에는 성공했으나 ORA-06553오류가 발생했다. DATABASE CHARACTER 부분을 추가 실행하여 문제를 해결함.)

14. java 소스반영.
db연결 설정 변경 IP주소를 컨테이너 이름 (oracle)으로 변경.
tomcat redirect 설정: web.xml파일 <web-app>에 <security-constraint>추가
톰캣 재시작시 로딩이 오래걸리는 문제 확인 안됨.ㅠ.(2분가까이..)
#tomcat https설정 : server.xml <Connector port=”443″ … 추가

15. letsencript 인증서 생성.
jks 파일 변환 : openssl 사용 및 keytool 사용
jks 파일 volume연결.(파일이 없을 시 폴더로 인식해서 빈폴더 생성됨)

16. 작동 확인 및 테스트
문제없음. 성능 기존서버 대비 30~40%정도 빨라짐….. 일단 튜닝을 안해도 되겠다…ㅎㅎㅎ

17. docker 컨테이너 표준시 변경
서버를 재시작 시 지속적으로 변경해주는 스크립트를 작성해서 변경하는 방법도 있으나 , /etc/localtime 파일을 volume으로 연결해 주는 방법이 더 간편하다. (스크립트 작성시 참조 : 리눅스 한국 시간으로 변경)

18. letsencript crontab 설정

 

 

 

REST API 소개

최근? 클라이언트의 다변화로 REST API 서비스가 주를 이루고 있다.  기존의 웹 브라우저 환경에서는 서버 호출시 동적 html을 반환하여 서비스를 제공하였다. 하지만 모바일의 등장과 IPTV등의 등장으로 기존의 방법으로는 많은 기기에서 동일한 서비스를 제공하기가 어려워졌다.

그래서 최근 주목받는 것이 REST API이다. 어느 장치에서든지 http 프로토콜로 호출을 할수만 있다면 서비스를 호출해서 이용할 수 있다. 즉서버대 클라이언트 뿐만 아니라 서버대 서버 끼리 연동하여 서비스를 제공하는 것도 가능한다.

이런 REST API는 작성 기준이 있으며 아래의 링크에서 개념을 잘 이해했으면 한다.

REST API의 이해와 설계-#1 개념 소개

 

Spring Boot로 만드는 OAuth2 시스템을 참조해서 실제 rest api의 구현과 인증 소통방법 등에 대해서 더 공부하길 바란다..

 

 

webpack JavaScript 모듈화 도구

JavaScript 모듈화 도구, webpack
서버에서 처리하는 로직을 JavaScript로 구현하는 부분이 많아지면서 웹 서비스 개발에서 JavaScript로 작성하는 코드의 양도 늘어났습니다. 코드의 양이 많아지면 코드의 유지와 보수가 쉽도록 코드를 모듈로 나누어 관리하는 모듈 시스템이 필요해집니다. 그러나 JavaScript는 언어 자체가 지원하는 모듈 시스템이 없습니다. 이런 한계를 극복하려 여러 가지 도구를 활용하는데 그 도구 가운데 하나가 webpack입니다.