[openprj@dqa2:/home/openprj]$ docker --version Docker version 20.10.14, build a224086 [openprj@dqa2:/home/openprj]$ docker-compose --version docker-compose version 1.29.2, build 5becea4c
Openproject 다운로드 및 디렉토리 생성
openproject 를 git clone 으로 다운로드 받는다.
다운로드 받은 openproject 폴더로 이동후 docker pull 을 통해 openproject 이미지를 다운로드 받는다.
git clone https://github.com/opf/openproject-deploy --depth=1 --branch=stable/13 openproject
cd openproject/compose
# 설정 파일 복사
cp .env.example .env
docker-compose pull
sudo OPENPROJECT_HTTPS=false docker-compose up -d
정상 기동되면 아래와 같이 컨테이너가 실행 된다.
/openproject/compose]$ docker-compose ps -a Name Command State Ports ------------------------------------------------------------------------------------------------------------------- compose_autoheal_1 /docker-entrypoint autoheal Up (healthy) compose_cache_1 docker-entrypoint.sh memcached Up 11211/tcp compose_cron_1 ./docker/prod/entrypoint.s ... Up 5432/tcp, 80/tcp compose_db_1 docker-entrypoint.sh postgres Up 5432/tcp compose_proxy_1 ./docker/prod/entrypoint.s ... Up 5432/tcp, 0.0.0.0:5055->80/tcp,:::5055->80/tcp compose_seeder_1 ./docker/prod/entrypoint.s ... Exit 0 compose_web_1 ./docker/prod/entrypoint.s ... Up (healthy) 5432/tcp, 80/tcp compose_worker_1 ./docker/prod/entrypoint.s ... Up 5432/tcp, 80/tcp
pip3 install mkdocs
pip install --upgrade pip
# mkdocs 버전확인
mkdocs --version
mkdocs, version 1.6.1 from /home/guide_doc/venv_mkdocs/lib/python3.8/site-packages/mkdocs (Python 3.8)
MkDocs 프로젝트 생성
mkdocs new 명령을 통해 문서를 관리할 프로젝트를 생성한다.
mkdocs new md_guide
(venv_mkdocs) [guide_doc@my-rocky9.4:/home/guide_doc]$ mkdocs new md_guide INFO - Creating project directory: md_guide INFO - Writing config file: md_guide/mkdocs.yml INFO - Writing initial docs: md_guide/docs/index.md (venv_mkdocs) [guide_doc@my-rocky9.4:/home/guide_doc]$ ll 합계 0 drwxr-xr-x. 3 guide_doc guide_doc 36 1월 13 14:51 md_guide drwxr-xr-x. 5 guide_doc guide_doc 74 1월 13 14:39 venv_mkdocs (venv_mkdocs) [guide_doc@my-rocky9.4:/home/guide_doc]$ tree -a md_guide/ md_guide/ ├── docs │ └── index.md └── mkdocs.yml
MkDocs 서버 실행
mkdocs serve 명령을 실행하면 브라우저에서 실시간으로 작성된 문서를 확인 할수 있다.
기본 수행시 로컬에서만 접속이 가능 하다.
http://127.0.0.1:8000
## 로컬에서만 접속 가능
mkdocs serve
##외부 접속을 허용하려면 -a 0.0.0.0:8000 옵션을 사용 한다.
mkdocs serve -a 0.0.0.0:8000
#백그라운드 실행
nohup mkdocs serve -a 0.0.0.0:8000 > mkdocs.log 2>&1 &
markdown_extensions:
- pymdownx.superfences:
# make exceptions to highlighting of code:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:mermaid2.fence_mermaid_custom
plugins:
- mermaid2:
version: 10.0.2
theme: "dark" # Mermaid 다이어그램 테마 (default, dark 등)
# securityLevel: "loose" # 보안 수준 (loose로 설정하면 외부 자원 로드 가능)
# Welcome to MkDocs
For full documentation visit [mkdocs.org](https://www.mkdocs.org).
## Commands
* `mkdocs new [dir-name]` - Create a new project.
* `mkdocs serve` - Start the live-reloading docs server.
* `mkdocs build` - Build the documentation site.
* `mkdocs -h` - Print help message and exit.
## Project layout
mkdocs.yml # The configuration file.
docs/
index.md # The documentation homepage.
... # Other markdown pages, images and other files.
어느정도 웹서비스에 대한 이해를 가지고 있었기 때문에 자세히는 몰라도 대충은 이해 하였으나
주위 사람이 물어 봤을때 자신있게 설명할 자신이 없어 글로 작성하면서 REST에 대한 개념을 정리해보겠습니다.
REST란?
※REST(Representational State Transfer)는 월드와이드웹( WWW) 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 종류 입니다. 2000년로이 필딩(Roy Fielding)의 논문에서 발표된 내용으로 로이 필딩은 HTTP의 주요 저자 중 한 사람 이라고 합니다. 간단히 말하자면 REST는 네트워크 아키텍처라고 생각하면 됩니다.
REST 아키텍처 특정
REST 아키텍처는 다음의 6가지 제한 조건을 준수해야 합니다.
Uniform Interface(인터페이스 일관성)
일관적인 인터페이스로 수행해야 합니다.
URI 로 지정한 Resource 에 대한 조작을 통일되고 한정적으로 수행 해야합니다.
Stateless(무상태)
각 요청 간 클라이언트의 콘텍스트(context)가 서버에 저장되어서는 안 된다.
세션이나 쿠키등을 별도로 관리하지 않으므로 서버는 클라이언트 요청 메시지 만으로 처리되어 질수 있도록 구현해야 한다.
Cacheable(캐시 처리 가능)
월드와이드웹( WWW)에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
Layered System(계층화)
클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버 혹은 미들웨어를 통해 연결되었는지를 알 필요가 없어야 합니다.
Code on demand (optional)
자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
Server-Client 구조
아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트 와 서버간 의존성을 분리 해야 한다. 서버는 API 를 제공 하고 클라이언트는 사용자 인증이나 컨텍스트 등을 직접 관리 한다.
REST 구성 요소
1.자원(Resource) - URI(통합 자원 식별자-Uniform Resource Identifier)
모든 자원에는 고유한 id 가 있으며 해당 자원은 서버에 존재 합니다.
ex) question/detail/123
2.자원에 대한 행위(Verb) - HTTP Method (GET, PUT, POST, DELETE등)
클라이언트는 URI 를 통해 자원을 지정해서 조작 하기 위해서 HTTP Method 를 사용 한다.
CRUD Operation , HTTP Method
Create : POST (자원 생성)
Read : GET (자원의 정보 조회)
Update : PUT (자원의 정보 업데이트)
Delete : DELETE (자원 삭제)
3.표현(Representations)
클라이언트가 서버로 요청을 보냈을때 서버가 응답으로 보내주는 자원의 상태를 의미하며
JSON,XML,TEXT, RSS 등의 형태로 표현될수 있다.
REST API 이란?
REST 원리를 따르는 API 를 말합니다. REST API 올바르게 설계하기 위해서는 몇가지 주의할 사항이 있습니다.
REST API 설계 주의 사항
URI 는 정보의 자원을 표현해야 한다.(리소스 명은 동사보다는 명사를 사용)
자원에 대한 행위는 HTTP Method (GET, PUT, POST, DELETE) 로 표현 한다.
URI 설계 시 주의 사항
슬래시 구분자(/)는 계층 관계를 나타내는 데 사용 한다.
URI 마지막 문자로 슬래시(/)를 포함하지 않는다.
하이픈(-)은 URI 가독성을 높이는데 사용 한다.
밑줄(_)은 URI에 사용하지 않는다.
URI 경로에는 소문자를 사용 한다..
파일 확장자는 URI에 포함시키지 않는다.
RESTful 이란?
REST 아키텍처를 구현하는 웹서비스를 표현하기 위해 사용되는 용어로 사용되며 REST 원리를 따르는 시스템을 RESTful 이라는 용어로 사용되며, REST 의 비공식 구현 가이드 입니다.
기존 8G 메모리, 1T 하드디스크로 서버가 구성되었다고 한다면 메모리: 8G-> 16G, 하드디스크 1T-> 10T 로 하드웨어 사양을 업그레이드 하는것을 스케일 업이라고하며 ,서버의 사양을 높이는 것이기 때문에 수직 스케일링(vertical scaling) 이라고도 한다.
scale-up
스케일 아웃(Scale-Out) ?
서버의 자원 사용량이 부족하여 비슷한 사양의 서버를 추가하는 작업을 말한다.
하나의 장비에서 서비스를 처리함에 있어 한계에 부딪힐 경우 비슷한 스펙의 서버를 추가함으로 서버의 부하를 분산하는데 목적이 있다.
scale-out
스케일 인(Scale-In) ?
스케일 아웃과 반대되는 개념으로서 스케일 인 작업은 서버 용량 부족으로 늘렸던 자원을 다시 회수 하는 작업을 의미한다. 서비스 사용량이 줄어 늘려놓았던 불필요한 서버 자원을 해제 하는 작업을 의미한다.
scale-in
오토스케일(Auto-Scale)?
서비스 사용량에 따라서 스케일 인/ 스케일 아웃 작업을 알아서 자동으로 해주는 작업을 말합니다.