Ansible 을 사용할때에 특정 동작에 대해서 대기한 후에 진행하도록 해야할 필요가 있다. 대표적인 것이 Tomcat 과 같은 경우인데, Tomcat 이 시작을 하게 되면 애플리케이션이 동작하기까지 몇 초의 시간이 더 걸린다. 웹 애플리케이션이 정상적으로 접속을 받기 전에 또 다른 작업을 하게 될 경우에 문제가 된다.
wait_for
Ansible 에서는 위와같은 경우를 위해서 wait_for 라는 것을 지원한다. 예제를 보면 단번에 이해할 수 있다.
집에서 테스트를 위해서 설치한 서버가 있는데, KVM 가상화를 해뒀다. OS 를 설치하기 위해서 virt-manager 를 자주 이용하는데, 노트북에 Mint 리눅스가 있기 때문에 이것을 이용하면 원격 X-Windows 에 접속해 GUI virt-manager 를 실행시킬 수 있다.
그런데, 매번 노트북을 켜서 하기도 귀찮고 그래서 윈도우즈에서 사용가능한 X-Windows 클라이언트를 필요했다. 이에 대해서 이미 NetSarang 에서 만든 XManager, Xming 이란것을 알고 있었다. XManager 는 사용이고, Xming 은 무료이지만 이전에 제대로 안되었던 기억이 있다. 혹시 다른게 있을까 싶어서 찾아보니 VcXsrv 를 알게되었는데 이것을 한번 사용해 보기로 했다.
설치
설치는 VcXsrv 를 다운받아서 설치를 하면 된다. SourceForge 에서 배포한다.
실행
설치가 마무리되면 Xlauch 라는 실행 아이콘이 생성된다. 이것을 클릭하면 실행이 된다.
실행을 하면 Xming 화면과 동일하다. Multiple windows 를 선택하고 다음..
원격 서버에 접속해 프로그램을 실행하기 위해서 ‘Start a program’ 을 선택한다.
원격에서 실행할 프로그램을 기재하고 원격 서버 로그인 정보를 작성해 준다.
위와같이 정보를 정확하게 기재하면 접속이 성공하게 된다. 기존의 Xming 과 사용방법은 똑같다.
몇일 전에 Apache 재단에서 제작해 배포하는 Log4j2 에 대해, 보안 취약점 등급 10등급으로 즉시 취약을 말하면서 보안설정과 패치를 하라는 권고를 했다. 이는 전 세계적인 현상으로 우리나라 뿐만 아니라 미국등에도 매우 심각한 현상임을 인지하고 뉴스에도 나올만큼 큰 뉴스거리가 되었다.
Log4j2 만 문제냐
하지만 이 업계에 10년 넘게 밥벌이를 하는 입장에서 별로 놀랍지도 않고 왜 그렇게 호들갑이냐 하는 생각이 먼저 든다. 모르는 사람이야 뉴스에도 나오고 전문가들이 심각하다고 하는데 ‘호들갑’ 이라고 말하니 내가 뭔가 잘못 말한것처럼 생각이 들겠지만 실상을 알고 나면 그렇지 않다는걸 깨닫게 된다.
먼저, 내가 현재 맡아서 하고 있는 것들을 한번 보자. 대략 다음과 같은 스펙으로 서비스되어지고 있다.
RedHat Enterprise Linux 7.7
Spring Boot 1.5
Java 1.8
WildFly 13
대충 이렇게 나열해 보면 이게 대체 뭐가 문제냐 하는 생각이 들 것이다.
KISA 정보에서 발행한 ‘주요정보통신기반시설 기술적 취약점 분석, 평가 방법 상세가이드’ 라는 것이 있다. 여기에는 특정 요소요소에 대해서 보안 설정을 어떻게 해야하는지를 가이드하고 있는데, 여기에 ‘U-42. 4.1 최신 보안패치 및 벤더 권고사항 적용’ 이란게 있다.
요약을 하자면 항상 최신의 패치 적용을 유지하라는 것이다.
그런데, RedHat Enterprise Linux 7.x 에 최신 버전은 7.9 이다. 더 최신은 RedHat Enterprise Linux 8.5 다. 시스템에 설치된 어떤 프로그램이 보안 취약점을 들어내고 있는지에 대해서 알지도 못하고 어짜피 네트워크가 단절되어 있어서 외부에 침입이 어렵다는 변명으로 운영체제(OS)에 대한 최신 패치 적용을 전혀 하지 않는다.
최신의 RHEL 을 사용하지 않는건 일단 내려놓더라도 쓰지도 않는 각종 프로그램들이 다 설치되어 있다. 대표적인게 gcc 컴파일러이다. 어디 gcc 컴파일러 뿐이랴.. g++ 도 있고 automake, autoconf, bison 등 C 소스코드를 컴파일 할 수 있도록 아주 다 깔려 있다.
크랙커가 가장 좋아라하는 시스템이 뚫어서 들어가보니 각종 컴파일러가 설치되어 있는 시스템이다. 컴파일러만 설치되어 있으면 마음대로 시스템을 가지고 놀수 있다. 그래서 될 수 있으면 컴파일러는 설치를 하지 말아야 한다. 아니 더 정확하게는 사용하지 않거나 불필요한 프로그램들과 명령어는 아예 설치를 하지 말아야 한다.
더 놀라운 것은 Java 시스템인데도 각종 gcc, g++ 컴파일러가 설치되어 있고 각종 라이브러리까지 아주 풍부하다는 것이다. 이에 대해서 이러면 안된다고 하면, 각종 보안 프로그램들이 철벽으로 작동하고 있고 ISMS 심사를 받았으니 됐다고 말한다.
Spring Boot 1.5 – 지원 끝
지원이 끝난 프레임워크다. 일단 지원이 끝났다면 될수 있는대로 빠르게 업데이트를 해야 한다. 하지만, 작동하는데 아무런 문제가 없으니까 계속 사용한다. 뭔가 문제가 생기면 그 라이브러리만 업데이트 하는 식이다.
Spring boot 1.5 전체를 패키지는 방대한데, 그중에서 자주 사용하는 일부가 문제가 생겼다는 뉴스가 나오면 그것만 바꾸는 식이다.
이렇다보니 Spring boot 2.x 에 대한 기술 습득은 꿈도 못꾼다. Reactive 가 뭐고 그래서 그게 뭐가 좋은지도 모르고 그것을 하면 뭐가 이득이 된다는 것은 둘째고 기술지원도 끝난 프레임워크를 그대로 고수하면서 DB 구조를 파악하고 데이터를 넣다 뺏다 하는 CRUD 프로그래밍으로 화면에 원하는 것을 이루게 되면 그것이 프로그래밍이 된 것이라는 사고방식에 젖어 있다.
고민따위는 안중에도 없고, 구글에서 검색해서 읽어본 기사에 뭘 좀 안다고 지식자랑하기에만 바쁘고 정작 책상에 앉아서 하는 일이라곤 지식자랑과는 한참 뒤처진 기술들을 다루고 있을 뿐이다.
지원이 끝났다는 것은 더 이상 보안관련 업데이트를 해주지 않는다는 것을 뜻한다. 물론 전 세계적으로 문제가 될 경우에 End Of Life 가 된 경우라도 업데이트를 제공해 주긴 한다. 하지만 지원이 끝난 것들은 더 이상 보안에 대해서 신경을 놔버리는 경우고 거들떠도 안보다는 사실을 알아야 한다.
아무도 신경을 안쓰는 거들떠보지도 않는 프레임워크로 일을 하는 것이 뭐 그리 대단한지, 단가 900 은 받아야겠다고 하는데 괜히 프리 경력이 정규직 경력을 인정받지 못하는게 아니다.
이렇게 글을 적어놓으면
프로젝트 오퍼를 낸 조직이 가이드를 내놓고 어떻게 하라고 해야지 그걸 왜 프리보고 뭐라 하냐?
이렇게 말할게 뻔하다. 그러니까 정규직 경력이 안되는 거다. 정규직에서는 적극적인 사람을 원하지 그렇게 수동적으로 뭐 가이드 안주면 못하겠다는 식의 사고를 가진 사람을 뽑으려 하지 않는다. 그것도 적어도 경력이 10년 이상이라면 이렇게 해서는 안된다, 이런 것쯤은 좀 바꿔야 한다는 정도도 있어야 하고 적극적으로 문제에 대해서 문제가 있으며 바꿔야 한다는 것을 적어도 어필 정도는 해줘야 하는데, 그런게 안되잖아..
더 큰 문제는 대충한다는데 있다. Spring Framework 3.x 처럼 오래된 것이긴 하지만 나름대로 프로그래밍 방법들이 존재한다. 과거에는 쓸만했던 것이여서 자료를 찾아보면 그때당시에 자료들도 상당하다. 그러면 Spring Framework 3.x 에 대한 그 때 당시에 쓸만했던 것을 지금에 쓰고 있느냐… 그냥 다 대충한다. 어짜피 딴데가면 안쓸거… 구형인데 뭐… 이거 열심해서 뭐하냐…. 아무도 열심히 안한다.
어짜피 구형이라 열심히 안하고 그렇다고 뭐 바꾸자는 제안조차 못하고… 그냥 돌아가게만 만들자식이란게 문제다.
Wildfly 13 – End Of Life
Wildfly 는 예전에 Jboss AS 라는 오픈소스 엔터프라이즈 자바 서버였다. 그러던 것이 Redhat 에서 프로젝트를 인수(?) 하고 자사의 상용 엔터프라이즈 자바 서버를 Jboss EAP 라는 이름을 붙이자 네이밍에 차이를 두기 위해서 Wildfly 로 이름을 바꾼다.
Wildfly 는 이름을 바꾼것만이 아니라 릴리즈 주기를 바꾸게 되는데, 분기마다 메이저 업데이트를 하는 정책으로 바꾼 것이다. (분기마다 인지 1년마다 인지… 정확하지는 않음. 몇달 주기로 메이저 업데이트를 하겠다는 정책임) 이러한 정책은 Wildfly 의 Long Term Support 버전이 없다는 것을 말한다.
업데이트를 못 쫓아가는건 당연하고 무엇보다 JEE 스펙도 버전이 올라감에 따라 달라지다 보니 Servlet 엔진을 필요로하는 경에 버전 호환성이 맞지 않는 경우가 생긴다. 그것조차도 그렇다 치더라도 Wildfly 13 도 지원이 끝나기는 마찬가지다.
이렇게 주기적인 메이저 업데이트를 하는 자바 서버에 경우에 주기적으로 업데이트를 할 수 없는 경우에는 선택을 하지 말았어야 했다. RHEL 도 한번 설치하면 업데이트를 안하고 버티는 경우가 부지기수인데, 주기적인 업데이트를 고려해서 이것을 선택햇을리는 만무하다.
금융권은 더 심각
현재 내가 하고 있는 프로젝트의 경우에 한정해서 말을 하다보면, “그건 니가 있는 곳이 ㅈ같은 경우지… 똥 밟은 너를 탓해라” 하는 인간들이 대다수다.
그렇다면 과거, 그것도 긴 과거가 아닌 올해 있었던 금융권 프로젝트를 예를들어보자.
RedHat Enterprise Linux 7.7
gcc, g++ 컴파이러, automake, autoconf
WebLogic 12.1.x
Spring Framework 3.x
이런 환경에서 마이데이터니 뭐니,, 모바일이니 뭐니 서비스하고 앉아 있는게 현실이다.
더 웃긴건, WebLogic 서버를 사용하는데 환경은 AWS 클라우드에 올렸다는데 있다. 이게 뭐가 문제가 되느냐 하겠지만 WebLogic 는 Admin 서버와 Managed 서버로 나뉘며 Admin 서버가 반드시 있어야 하고 Managed 서버가 Admin 서버에 등록이 되어 있어야 한다.
이렇게 되면 AWS 클라우드에서 반드시 사용해야만 하는 AutoScaling 을 이용할 수가 없다. 물론 아예 이용할 수 없는 것은 아니지만, 별도의 노력이 조금 더 들어간다. 하지만, 그 별도의 노력조차도 안해서 그런지 AutoScaling 은 아예 접었고 닭 한마리 이벤트를 날리면 접속자가 폭주해 장애가 나는 곳이 금융 시스템이다.
KISA 도 결국 문제
이래저래 문제 해결을 위해서 노력한다고 하지만 한개는 있다. 그중에 다음과 같은 말들을 많이 한다. 적어도 금융권에서는..
Redhat Enterprise Linux 8.x 는 아직 보안 인증이 안됐다.
누가 어떻게 RHEL 8.x 에 대해서 보안인증을 해주나? KISA 가? KISA 가 발행하는 취약점 가이드에 Linux 에 대해서 RHEL 7 기준으로 설명되어 있어서 RHEL 8.x 는 아직 인증 없는 거다?
KISA 가 발행하는 취약점 가이드에는 위와같이 유의사항이 나와 있다. 하지만 현장에 있다보면 ‘인증이 아직 안됐다’ 라는 말을 많이 듣는다. 공공금융 프로젝트에서 인증을 안해준건지 뭔지 모르겠지만, KISA 라는 ISMS 주관사에서 저렇게 하고 있음에도 불구하고 다른 권위도 없고 보안에 관련해 국가적 위임도 받지 않는 곳에서 ‘인증’ 이란걸 하고 있다면 KISA 가 적극적으로 나서서 못하게 해야 한다.
더군다나 KISA 의 경우에 보안 취약점 가이드에는 절대로 하지 말아야 하는 항목들은 없다. 예를들어 ‘gcc 컴파일러 설치 금지’ 와 같은 것들도 없고 End of Life 된 운영체제나 프레임워크에 대한 금지 항목도 없다. ISMS 라는게 결국에는 가이드에 맞춰서 그걸 했냐하는 정도에 그치다보니 ‘그것만으로 됐다’ 하는 것으로 끝이다.
국가기관이 저렇게 나약하게, ‘절대적 기준 아니다’, ‘다양한 점검 방업을 사용하여 취약점 분석평가를 수행’ 등.. 말이 좋아서 저런 표현이지 그냥 대놓고 “니들이 알아서 잘 해봐라” 식과 뭐가 다르냐?
Log4j2 보안 취약점 패치
현재 프로젝트에서 log4j 보안 취약점 패치를 위해서 살펴보니 log4j 1.x 버전이였다. 지금의 log4j2 의 보안취약점은 JNDI 관련되어 있는데, log4j 1.x 에는 JNDI 기능 자체가 없다. 따라서 본 취약점에는 아무런 문제가 없다.
이런식의 결론에 도달하게 되어서 결국에는 아무런 조치도 하지 않았다. log4j 1.x 는 더 이상 유지보수가 안되는 버전이다. 하지만 이번에 터진 취약점과는 관계가 없기 때문에 그런대로 넘어가는 거다.
라고 윗분들의 결정했다. 이게 대한민국의 현주소다.
그래서 log4j 를 그냥 놔둘수도 없고 해서 logback 으로 바꿔 놓을려고 생각중이다. 테스트를 해보니 잘 될거 같다. 보고 따위는 안한다.. 그냥 바꿔놓는 거지.. 그냥 바꿔놔도 모른다. 아무도.. ㅋㅋ
The Jakarta EE 8 has the same set of specifications from Java EE 8 with no changes in its features. The only change is the new process to evolve these specifications. With this, Jakarta EE 8 is a milestone in Java enterprise history, as it inserts these specifications in a new process to boost the specifications to a cloud-native application approach.
자바 웹 애플리케이션에 대한 로깅은 중요한 일이다. 웹 애플리케이션이 어떻게 동자하는지를 잘 알아야 하는데, 그 방법이 로깅이기 때문이다. 하지만 웹 애플리케이션의 로깅을 변경할 경우에 대부분 웹 애플리케이션을 배포한다. 물론 배포를 하지 않고도 가능하지만, 대부분 배포를 다시 하게 된다.
JBoss 에서는 배포를 하지 않고 jboss-cli 를 통해서 런타임으로 설정이 가능하다.
Jboss 는 JEE 스펙을 구현한 서버이다. JEE 스펙을 각각 Subsystem 으로 구현해놨다. Subsystem 으로 모듈화를 해놨기 때문에 각각의 설정을 Subsystem 에 귀속되고 서로 간섭되지 않는다. 독립적인 모듈이다 보니 만일 득정 기능을 쓰지 않는다면 Subsystem 을 끄면 되고 그렇게 껐다고 해서 전체 서버가 문제가 되지 않는다. 아주 잘 만들어졌다.
jboss-cli 는 마치 파일시스템의 디렉토리를 접근하듯이 사용한다. 실제 명령어도 cd, ls 명령어를 그대로 사용할 수 있다.
vim 은 리눅스의 기본 에디터이다. 많은 기능을 제공하지만 이 기능을 사용하기 위해서는 설정을 해야 한다. 그런데, 이런 설정을 하나하나 하기 보다는 간단하게 Plugin 형태로 제공해 네트워크를 통해서 설치를 도와주는 플러그인 프로그램이 있다. 이것을 이용해서 기본적인 세팅을 해보자.
VIM 세팅을 위해서 git 명령어가 설치되어 있어야 한다. 그리고 기본적으로 시스템 계정 홈디렉토리를 기본으로 한다.
또, 반드시 네트워크가 연결되어 있어야 한다. 443 이나 80 포트가 OutBound 로 열려 있어야 한다.
Vundle
VIM 플러그인 설치를 도와준다. 네트워크를 통해서 설치하고 픈 플러그인을 지정해주면 설치를 해준다. 플러그인에 대한 설정은 여전히 사용자가 해줘야 하지만 하나하나 찾아서 해주는 것보다는 낫다.
AWS S3 PreSigned URL 설정에 대해서 알아 본다. AWS S3 는 저장된 객체에 대해 HTTP 를 통해서 다운로드를 제공 한다. 문제는 이렇게 객체를 다운로드 하도록 주소를 공개할 경우에 누구나 다운로드 할 수있게 되서 보안상 좋지 않다. 그래서 AWS S3 는 인증 과정을 통해서 특정 시간 동안만 URL 에 다운로드 권한을 부여하는 PreSigned URL 기능을 제공하는데 이에 대해서 알아 본다.
AWS 사용자
먼저 PreSigned URL 에 인증 과정에서 사용할 Signiture 생성을 위해서 accesskey, secretkey 가 필요하다. 이것은 결국 AWS 사용자가 필요하다는 것과 같다.
사용자를 추가할때는 “AWS 액세스 유형 선택” 에서 “액세스 키- 프로그래밍 방식 액세스” 유형으로 계정을 생성해야 한다. AWS 콘솔로 로그인이 불필요한 사용자 이기 때문인데, 이렇게 생성을 진행하면 마지막에 accesskey, secretkey 가 발급되어 진다. 이것을 잘 보관 하자.
IAM Role, Policy
AWS S3 Presigned URL 을 위해 생성한 AWS 계정에는 그 어떤 IAM Role, Policy 가 필요하지 않다. 이것은 사용자에 S3 권한 설정을 IAM 을 통해서 할지 아니면 AWS S3 의 Permission Policy 로 할지에 따라 다를 수 있다. AWS S3 에서도 Permission Policy 를 설정할 수 있고 이 설정에서 특정 사용자에게 정책을 부여할 수 있다.
AWS S3 Presigned URL 만을 위한 계정이기 때문에 IAM 에서 권한을 부여하지 말고 AWS S3 에서 권한을 부여 방법을 선택 했다.
AWS S3 생성
AWS S3 는 글로벌 한 서비스이지만 생성할 리전을 선택할 수 있다. 생성할때에 S3 버킷에 대해서 별다른 설정을 하지 않고 그냥 기본값으로 생성한다. 나중에 설정을 얼마든지 변경할 수 있는데, 단 Presigned URL 을 한다고 해서 “Block Public Access settings for this bucket” 을 손대서는 안된다.
PreSigned URL 을 한다고 버킷의 공개 접근 설정을 변경해서는 절대로 안된다. 혹자는 URL 자체를 제공해줘야 하기 때문에 공개설정을 해줘야 한다고 하지만 특정 사용자에게 URL 을 제공하는 방식이기 때문에 버킷의 공개 접근 설정은 불 필요 하다.
AWS S3 Bucket Policy
여기서 핵심인데, 앞에서 AWS 계정에 아무런 권한 설정을 하지 않았다. 이제 그 권한 설정을 AWS S3 버킷에서 해주면 된다. Permission 탭에서 Bucket Policy 를 볼 수 있는데, 여기서 다음과 같이 해주자.
Bucket Policy 정책
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicRead",
"Effect":"Allow",
"Principal":{
"AWS":"arn:aws:iam::1234567890:user/systemv"
},
"Action":[
"s3:GetObject",
"s3:GetObjectVersion"
],
"Resource":[
"arn:aws:s3:::bucket_name",
"arn:aws:s3:::bucket_name/*"
]
}
]
}
Principal 에 앞에서 생성한 AWS 계정이다. Resource 에는 Bucket 의 arn 을 주면 된다.
2021년에 아직도 Trac 을 사용하는 사람이 있을지 모르겠다. 하지만 프리랜서로 많은 프로젝트를 하는데 있어서 Trac 만큼 간단하면서도 필요한 기능이 다 있는 툴은 찾기가 힘들다. 프로젝트에 투입되면 Windows 10에 Trac 을 설치하고 프로젝트를 위한 여러가지 작업을 Trac 으로 하게 된다. Trac 을 이용하는 기능은 다음과 같다.
Wiki
Ticket
Calendar
Gant Calendar
문서도 작성하고 요청한 사항들을 정리하고 일정을 확인하는데, 그것도 로컬 컴퓨터에서 Python 으로 아주 가볍게 동작하는 툴을 본적이 없다. Jira 와 같은 협업툴이 많이 나왔지만, 프리랜서로서 자신만의 뭔가를 정리하려고할때 이만한 게 없다.
Trac 1.2
현재 Trac 은 죽어가는 프로젝트다. 조만간에 아카이빙을 해야할 정도라고 해도 된다. 그도 그럴것이 현재 Python 2 버전에서만 작동된다. Python3 이 새롭게 나왔는데 이것으로 바꿀 생각이 없어 보인다. 그래서 이 문서는 (아마도) Trac 1.2 버전에 관해 마지막 설치 문서가 될 것이다.
Trac 1.2 버전이 많은 플러그인들을 지원한다. 최신버전의 경우에 개발이 중단된 플러그인들을 제대로 인식하지 못한다. 내부적으로 바뀐부분도 많아서 고칠려면 꽤 손이 가는 일이라 안하는게 낫다.
Trac 은 Python 프로젝트이기 때문에 Python 이 있어야 하고 그것도 2.x 버전을 필요로 한다.
Python 2.7 설치하기
Windows 용 Python 을 다운받아서 설치해야 하는데, 2021년 현재 2.7.18 이 마지막 버전이며 MSI 인스톨러를 파일을 다운받을 수 있다. 다운로드 받은 파일을 더블클릭해 설치해주는데, 설치 디렉토리를 나의 경우에 F:\Python27 로 해줬다.
Python2.7.18 (x64) 설치 – 모든 사용자든, 나 혼자든 원하는데로 선택하면 된다.
Python2.7.18 (x64) 설치 – 설치 경로를 F:\Python27 로 해준다.
Python2.7.18 (x64) 설치 – 설치 컴포넌트들은 기본으로 놔두고 Next
Python2.7.18 (x64) 설치 – 설치가 진행되고 완료 된다.
pip.exe 를 이용한 의존성 설치
Trac 은 Python 으로 제작되었지만, 여러가지 의존성 라이브리를 필요로 한다. 이를 설치하기 위해서는 pip 프로그램을 이용하는게 가장 쉽다. pip.exe 는 Python 설치 디렉토리에 Scripts 폴더에 존재한다.
한가지, 데이터 저장소로 데이터베이스를 선택하지 않았다. 기본적으로 Trac 은 데이터저장소로 sqlite3 을 사용하는데, Python 2.7 에 기본 포함되어 있어 별도의 의존성을 설치할 필요가 없다.
Genshi, version > 0.6
Genshi 를 설치해 줘야 한다. pip 를 이용해서 설치 한다.
Genshi 설치
ZSH
1
2
3
4
5
6
7
8
9
10
11
12
F:\Python27\Scripts>pip.exeinstall genshi
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7isno longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2support inpip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will
Using legacy'setup.py install'forgenshi,since package'wheel'isnotinstalled.
Installing collected packages:six,genshi
Running setup.pyinstall forgenshi...done
Successfully installed genshi-0.7.5six-1.16.0
Babel, version 0.9.6 or ≥ 1.3, needed for localization support
지역화 번역을 사용하기 위해서 필요하다고 한다.
Babel 설치
ZSH
1
2
3
4
5
6
7
8
9
10
11
12
13
F:\Python27\Scripts>pip.exeinstall babel
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7i7 won'tbe maintained after that date.Afuture vs no longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2suppo/pip.pypa.io/en/latest/development/release-procesrt inpip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will
docutils, version ≥ 0.3.9 for WikiRestructuredText.
Wiki 기능을 위해서 설치해 준다.
docutils 설치
ZSH
1
2
3
4
5
6
7
8
F:\Python27\Scripts>pip.exeinstall docutils
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7i7 won'tbe maintained after that date.Afuture vs no longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2suppo/pip.pypa.io/en/latest/development/release-procesrt inpip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7i7 won'tbe maintained after that date.Afuture vs no longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2suppo/pip.pypa.io/en/latest/development/release-procesrt inpip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will
Trac 설치는 1.2.6 버전을 설치해야 한다. pip 를 이용해서 설치해야 하는데, 특정 버전을 설치하기 위해서는 반드시 버전을 명시해줘야 한다. 그렇지 않으면 최신버전을 설치하게 되는데, 현 시점에서(2021.08.27) Trac 1.4 가 최신 버전이다.
Trac 1.2.6 설치
ZSH
1
2
3
4
5
6
7
8
9
10
11
12
13
F:\Python27\Scripts>pip.exeinstall trac==1.2.6
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7i7 won'tbe maintained after that date.Afuture vs no longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2suppo/pip.pypa.io/en/latest/development/release-procesrt inpip can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will
이제 Trac 프로젝트를 만들어야 한다. Trac 은 원래 멀티 프로젝트를 지원하지 않는다. 대신 Trac 프로젝트라고 해서, 비유를 하자면 웹 서버 가상호스팅 처럼 여러 시스템 계정을 가상 호스팅 루트로 서빙하듯이 여러 프로젝트 디렉토리를 생성해서 이를 루트로 인식시켜 작동하도록 했다.
Trac 프로젝트를 만들기 위해서는 trac-admin.exe 를 이용하며 프로젝트 디렉토리를 지정해 주면 생성 된다.
DEPRECATION:Python2.7reached the endof its life on January1st,2020.Please upgrade your Python asPython2.7isno longer maintained.pip21.0will drop support forPython2.7inJanuary2021.More details about Python2support inpip can be found at
https://pip.pypa.io/en/latest/development/release-process/#python-2-support pip 21.0 will remove support for this functionality.
admin 이라는 ID 로 로그인 인증을 위해서는 인증을 위한 방법을 먼저 정의해야 한다. 인증 방법에는 다음과 같이 두가지 방법이 있다.
Basic Auth by HTTP
Htdigest
나의 경우에는 Htdigest 방법을 사용한다. 이를 위해서 AccountManager 플러그인을 설치했다. 그리고 Htdigest 인증 파일을 작성해줘야 한다. 이를 위해서 다음과 같이 Htdigest 인증 파일을 만들어주는 trac-digest.py 파일을 이용한다.
이렇게 설정한 후에 Trac 프로젝트를 재 시작 해준다. 그러면 새로운 티켓 생성하기에서 다음과 같이 시작날짜와 만료날짜 Completed 가 나타난다.
Ticket 생성하기
이제 필요한 플러그인은 모두 설치가 되었다.
우선순위 번역
관리 페이지에 우선순위가 있다. 영문으로 되어 있는데 다음과 같이 번역을 해준다.
우선순위 한글로 번역
해결방법 번역
관리 페이지에 해결방법이 있다. 영문으로 되어 있는데 다음과 같이 번역을 해준다.
해결방법 한글로 번역
티켓 종류 번역
관리 페이지에 티켓 종류가 있다. 영문으로 되어 있는데 다음과 같이 번역을 해준다.
티켓 종류 한글로 번역
이렇게 모든 설치와 설정은 끝났다.
결론
이제는 팀 협업을 위한 툴들이 아주 많다. 굳이 Trac 을 사용할 필요도 없으면 협업툴을 익히는 것이 직장생활(?)을 오래하는 방법이기도 하다. 하지만 프리랜서로서 일을 할때에 협업툴도 사용을 하겠지만 개인적인 업무를 기록하고 업무요청을 Ticket으로 기록하는 것 만큼 좋은 방법은 없다고 생각하는데 Trac 이 여기에 딱 맞아 보인다.