업무 때문에 여기저기 (주로)IT업체를 방문해 보면 프로젝트 관리 또는 이슈관리 시스템으로 Jira(지라)를 사용하는 경우를 많이 보게된다. 하지만 난 "보기"만 했지 직접 "설치"를 해본적은 없다. 직접 설치하고 사용자 계정과 프로젝트를 만들고 이슈 처리 절차를 정의해본 경험이 없다는 얘기다. 그래서 이번에 시놀로지 NAS의 Docker에 Jira를 설치해보기로 했다. 먼저 Jira Home 디렉토리 만들기 먼저 Jira 설치 시 홈디렉토리 생성 폴더로 마운트 해줄 "Atlassian" 이라는 디렉토리를 파일 스테이션의 docker 디렉토리 아래에 만들어 준다. JIRA 도커 이미지 다운로드 시놀로지 NAS의 DSM에서 Docker 관리자를 실행하고 아래 화면처럼 atlassian-jira 를 검색해 ..
시놀로지 NAS의 일부 저가형 모델을 제외한 최근 출시되는 모델들은 가상화(Virtualization) 기술에 기반한 VM(Virtual Machine) 방식과 응용프로그램 가상화 기술에 기반한 도커(Docker) 가상화를 지원한다. 이번 포스트에서는 도커 기반 가상화를 통해 MariaDB를 설치하고 원격에서 접속할 수 있도록 설정하는 과정을 포스팅 한다. MariaDB의 데이터베이스와 설정파일의 외부 디렉토리 생성 응용프로그램 가상화 기술인 도커 기반의 컨테이너는 응용프로그램의 파일들, 여기서는 MariaDB의 실행파일들과 설정파일, 데이터베이스 파일을 하나의 이미지파일 형태로 묶어서 관리한다. 때문에 데이터가 저장되는 데이터베이스와 마리아DB의 모든 설정파일을 컨테이너에 저장하게 되면 꽤나 불편한 상..
아파치 웹서버의 다중처리모듈(MPM)이란 ? Apache 웹서버를 설치하면 기본적으로 다중처리모듈은 전통적인 다중요청 처리방식인 prefork 방식으로 동작하도록 설치된다. 다중처리모듈(Multi-Processing-Module) 이란, 여러 이용자(웹브라우저)가 동시에 웹서버에 접속하여 웹페이지를 요청하였을 때 이 요청들을 동시에 처리할 수 있도록 해주는 아파치 웹서버의 모듈이다. MPM 모듈은 아파치 서버의 다른 모듈들과 마찬가지로 Shared Object 파일 (.so)로 만들어져 아파치 웹서버에 Load 된다. 아파치 웹서버를 설치하면 기본적으로 설정되는 prefork 방식은 하나의 이용자 요청에 하나의 웹서버 프로세스(아파치 계열 웹서버의 경우 apache2 또는 httpd)를 할당하여 처리하도..
앞의 포스트들에서 Python + Flask웹프레임워크를 이용해 간단한 글목록, 글보기, 글쓰기, 글수정 기능이 구현된 게시판을 만들었다. [Flask 웹 프레임워크] ORM을 사용하여 게시판 글 수정하고 저장하기 [Flask 웹 프레임워크] 부트스트랩 4.5.3 적용하기 등등~ ^^ 하지만 아직도 문제가 하나 남았다. 바로 에디터다. HTML의 ~~ 태그를 이용해 글을 입력받으면 글의 폰트를 바꿀수도, 글의 크기를 조절하는 것도 줄간격을 조절할 수도 없다. 글에 이미지를 삽입하는 것은 꿈과 같은 일이다. 네이버나 다음 등의 스마트한 에디터 기능을 구현하면 좋겠지만 혼자서 그런 위지윅 에디터를 만들 실력은 안된다. 가장 현실적인 해결책은 오픈소스로 만들어진 게시판 소스를 가져다 붙이는 것이다. 이럴 때 ..
글을 수정하고 저장하기 위해서는 ORM을 이용해 DB에서 글을 조회하여 수정 폼(Form)이 포함된 HTML 페이지에 표시해주고 저장할 경우 다시 ORM을 이용해 DB에 저장한 뒤 다시 글의 내용을 보여줘야 한다. 먼저 글 보기 페이지에 "수정하기 버튼을 추가한다. 목록보기로 돌아가는 버튼은 덤이다. (25행) 글 보기화면이 다음과 같이 수정되었다. 부트스트랩4의 버튼 스타일 중 "btn btn_light" CSS를 적용했다. 다음은 DB에서 조회한 글을 post_modify.html 이라는 웹페이지에 표시해주고 내용을 수정한 뒤 저장 버튼이 눌릴 경우 다시 POST 메소드로 전달받아 저장하는 기능을 수행하는 코드를 main_page.py에 추가해 준다. 32행에서 블루프린트에 post_modify/글번..
지금까지 Flask 웹프레임워크를 이용해 만든 웹페이지들은 정말...눈꼽만큼도 꾸미지 않은 날것의 HTML이다. 그래서 이런 화면이다. 정말 보기 싫은 화면이다. 이런 웹페이지를 만들어 공개한다면 아무도 방문하지 않을 가능성이 100%다. 이런 날것 그대로의 웹페이지를 환골탈태 시켜줄 수 있는 "프런트엔드 웹 프레임워크"가 있다. 바로 부트스트랩(Bootstrap)이다. 부트스트랩 프레임워크는 글자, 인용문, 목록, 표, 입력폼, 버튼, 이미지, 아이콘 등의 자잘한 것뿐만 아니라, 드롭다운 메뉴, 버튼, 탭, 리스트, 메뉴바, 페이지 이동 바, 알림 메시지, 썸네일, 진행 바 등의 웹 페이지에서 많이 쓰이는 객체들의 미리 디자인된 클래스를 포함하고 있다. 다음의 예제를 살펴보면 알 수 있지만 html 태..
앞의 포스트들에서 Flask 프레임웨크를 통해 글을 작성하면 ORM을 이용해 DB에 저장하고 글의 목록을 표시하는 기능까지 코딩했다. 이번에는 글의 목록에서 하나의 글을 선택했을 때 ORM을 이용해 가져오고 render_template()을 이용해 글의 내용을 화면에 표시하는 코드를 작성한다. 단, 글의 목록에 HTTP GET 메소드를 이용해 URL끝에 변수와 파라미터를 조합하여 웹서버로 전달하는 방식이 아닌 URL의 끝에 게시물의 번호를 URL에 붙여 URL을 호출하는 형태로 작성하려고 방법을 알아봤다. 마치 티스토리에서 포스트의 주소를 숫자 또는 글의 제목별로 따로 따로 표시되도록 하는 것과 같다. 앞의 포스트까지 따라하기를 마치면 웹사이트의 / 에 접속하면 다음과 같이 글의 목록이 표시된다. (ma..
앞의 포스트에서 Flask_Migrate를 이용하여 ORM을 구현하고 MariaDB에 저장되어 있는 테이블에서 글의 목록을 조회하는 파이썬 코드를 작성하였다. 그리고 조회한 글의 목록을 보여주는 post_list.html 이라는 HTML 페이지를 작성하고 render_template() 함수를 이용해 출력하였다. [Flask 웹 프레임워크] render_template()을 사용하여 HTML 렌더링하기 이제 글을 작성할 수 있는 간단한 FORM을 작성하고 Flask_Migrate에 포함되어 있는 SQLAlchemy의 ORM 연동기능을 통해 DB에 저장하는 코드를 기존의 소스코드에 추가해본다. DB연동은 이전에 작성한 포스트를 참고하기 바란다. [Flask 웹 프레임워크] Flask Migrate를 이용한..
이번 포스트에서는 ORM을 통해 데이터를 조회한 뒤 render_template()을 사용해 분리되어 있는 HTML 파일에 렌더링하여 브라우저 화면에 표시하는 코드를 작성해본다. 앞의 포스트에서 Flask_Migrate과 SQLAlchemy를 이용한 ORM 구현했다. 이제 앞에서 작성했던 main_page.py 파일을 다음과 같이 편집한다. 소스코드를 간단히 살펴보면... flask 모듈에서 render_template를 import 한다. flask 모듈에서 render_template를 import 한다. blogger어플리케이션의 models 모듈(models.py)에서 Post 객체(class)를 import 한다. Post 객체들을 조회(DB에서)하여 create_date를 기준으로 역순으로 정..
앞의 포스트에서 Flask 웹 프레임워크를 이용해 Hello, Flask!를 출력하는 파이선을 이용한 웹 프로그램을 작성하였고 Blueprint를 이용한 모듈화도 테스트했다. 그리고 DB연동을 위해 MariaDB까지 설치를 마쳤다. 우분투 20.04 에 MariaDB 설치하기 이젠 파이썬에서 사용 가능한 ORM (Object Relational Mapping) 라이브러리를 사용하여 파이썬 Flask 어플리케이션의 클래스와 속성을 데이터베이스의 테이블-컬럼 구조와 매핑하고 DB를 자동으로 구성관리하는 방법에 대해 포스팅한다. 다양한 SW 개발언어에서 데이터베이스에 데이터를 저장하고 조회하기 위해 문자열 변수에 데이터베이스 질의어인 SQL을 만들어 저장하고 DBMS에서 실행하고 그 결과를 리턴받는 기능을 지..
python의 웹 프레임워크인 Flask를 테스트하면서 DB를 연동해야할 일이 생겼다. MySQL을 설치할지 아니면 MariaDB를 설치할지를 고민하다 MariaDB를 설치하기로 했다. [Flask 웹 프레임워크] Blueprint를 이용한 모듈화 이해하기 사실 MySQL과 MariaDB는 같은(?) DBMS다. Sun Microsystem가 MySQL을 오픈소스로 개발하던 회사를 인수하고 몇 년이 지난 뒤 MySQL을 다시 Oracle에 팔아넘겼다. 그리고 이 때 MySQL 개발진이 Oracle과 충돌을 빚고 퇴사한 뒤 개발한 DBMS가 바로 MariaDB다. (소스를 갖고 나왔겠지...) MariaDB를 개발할 때 가장 중요한 목표 중 하나가 MySQL과의 100% 호환성이었다. 그리고 실제로 5.5..
Flask 웹 프레임워크를 이용해 작성한 첫 웹 어플리케이션은 전통적인 하나의 소스파일에서 실행하도록 작성되었다. [Flask 웹 프레임워크] 첫 Python 웹 프로그램 (Hello, Flask!) blogger.py 라는 파이썬 소스파일에서 Flask 웹 어플리케이션 객체인 app를 생성하고 이 어플리케이션 객체에 / 경로를 라우팅하고 / 경로에 hello_index()라는 함수를 매핑했다. 그리고 hello_index()에서 'Hello, Flask!'라는 문자열을 출력하도록 했다. 이 모든 코드가 blogger.py 라는 소스파일에 코딩되었다. 하지만 프로그램은 조금만 커져도 코드가 복잡해져 무거워지며 코드의 작성도 어려워진다. 따라서 개발 초기 단계부터 "모듈화"를 고려하여 설계하여야 한다. 파..