웹사이트 검색

Debian 11에 Apache CouchDB NoSQL 데이터베이스 서버를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 유틸리티 설치
  3. 2단계 - CouchDB 저장소 추가
  4. 3단계 - CouchDB 설치
  5. 4단계 - CouchDB 설치 확인\n
  6. 5단계 - CouchDB에 액세스
  7. 6단계 - CouchDB 인터페이스를 사용한 기본 데이터베이스 작업\n
    1. 데이터베이스 만들기
    2. 문서 만들기
    3. 문서 삭제

    1. 데이터베이스 만들기
    2. 문서 만들기
    3. 대량 문서 만들기
    4. 문서 읽기
    5. 문서 편집
    6. 문서 삭제
    7. 데이터 보기

    Apache CouchDB는 Apache Software Foundation에서 개발한 오픈 소스 NoSQL 데이터베이스입니다. 각 데이터베이스는 JSON 형식의 문서 모음입니다. 각 문서는 여러 필드와 첨부 파일로 구성됩니다. 데이터베이스 문서를 생성, 편집 및 삭제할 수 있는 편안한 API와 함께 제공됩니다. 독립형 및 클러스터형의 두 가지 모드를 지원합니다. 단일 서버에서 사용하는 경우 독립형 모드를 사용할 수 있습니다. 클러스터 모드는 둘 이상의 서버를 사용하는 경우에 유용합니다.

    이 튜토리얼은 Debian 11 서버에 Apache CouchDB 데이터베이스 서버를 설치하는 방법을 알려줍니다. 또한 몇 가지 기본 데이터베이스 작업을 수행하고 CouchDB 웹 서버를 사용하여 공용 URL을 통해 CouchDB에 액세스하는 방법을 배웁니다.

    전제 조건

    • A server running Debian 11.

    • Sudo package is installed.

      $ apt install sudo
      
    • A non-root user with sudo privileges.

    • Everything is updated.

      $ sudo apt update && sudo apt upgrade
      
    • A fully qualified domain name (FQDN), like, couchdb.example.com to access CouchDB over a public URL with HTTPS.

    1단계 - 유틸리티 설치

    설치를 진행하기 전에 튜토리얼에 필요한 몇 가지 도구를 설치해야 합니다. 다음 명령을 실행하여 설치하십시오.

    $ sudo apt install -y curl apt-transport-https gnupg nano lsb-release 
    

    2단계 - CouchDB 저장소 추가

    첫 번째 단계는 CouchDBs GPG 키를 가져오는 것입니다. 다음 명령을 실행하여 키를 가져옵니다.

    $ curl https://couchdb.apache.org/repo/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/couchdb-archive-keyring.gpg >/dev/null 2>&1
    

    CouchDBs 저장소를 시스템 저장소 목록에 추가하십시오.

    $ echo "deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ `lsb_release -cs` main" \
        | sudo tee /etc/apt/sources.list.d/couchdb.list >/dev/null
    

    시스템 저장소 목록을 업데이트하십시오.

    $ sudo apt update
    

    3단계 - CouchDB 설치

    다음 명령을 실행하여 CouchDB를 설치합니다.

    $ sudo apt install couchdb -y
    

    CouchDB 설치 프로그램은 자동으로 기본 설정을 구성하라는 메시지를 표시합니다. 첫 번째 단계에서는 단일 서버 설정 또는 다중 노드에서 사용할 것인지 묻습니다. 단일 서버에 설치하므로 옵션을 선택한 상태로 유지하고 Enter 키를 눌러 계속합니다.

    다음으로 쿠키 이름을 설정하라는 메시지가 표시됩니다. 원하는 이름을 선택하십시오.

    다음으로 CouchDBs 서비스에 대한 바인딩 주소를 설정하라는 메시지가 표시됩니다. 서버에 설치하고 UI 제어판을 통해 액세스해야 하므로 0.0.0.0을 바인딩 주소로 설정합니다. CouchDB 서버에 대한 액세스를 IP 주소로 제한하려는 경우 이를 사용하십시오.

    다음으로 기본 관리자 계정에 대한 관리자 암호를 생성하라는 메시지가 표시됩니다.

    비밀번호를 다시 확인하라는 메시지가 표시됩니다.

    Enter를 눌러 설치 프로세스를 완료하십시오.

    4단계 - CouchDB 설치 확인

    설치가 성공했는지 확인하려면 다음 명령을 실행하십시오.

    $ curl http://127.0.0.1:5984/
    

    CouchDB에 대한 정보와 함께 JSON 형식의 출력을 반환합니다.

    {"couchdb":"Welcome","version":"3.2.2","git_sha":"d5b746b7c","uuid":"7a20b1eadd803f1c0d77fb9617c7f3de","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}
    

    쉘 출력은 형식화되지 않습니다. 다음은 서식을 지정하는 방법입니다.

    {
       "couchdb":"Welcome",
       "version":"3.2.2",
       "git_sha":"d5b746b7c",
       "uuid":"7a20b1eadd803f1c0d77fb9617c7f3de",
       "features":[
          "access-ready",
          "partitioned",
          "pluggable-storage-engines",
          "reshard",
          "scheduler"
       ],
       "vendor":{
          "name":"The Apache Software Foundation"
       }
    }
    

    URL http://:5984/를 방문하여 웹을 통해 액세스할 수도 있습니다. 하지만 그렇게 하기 전에 방화벽에서 포트를 열어야 합니다. 복잡하지 않은 방화벽(ufw)을 사용한다고 가정하고 다음 명령을 실행하여 포트를 엽니다.

    $ sudo ufw allow 5984/tcp
    

    브라우저에서 URL http://:5984를 엽니다. 다음 화면이 표시됩니다. 다음 출력은 Firefox에서 캡처되었습니다. 다른 브라우저에서는 터미널에 있는 원시 출력만 볼 수 있습니다.

    5단계 - CouchDB에 액세스

    CouchDB는 데이터베이스를 관리하고 생성하기 위해 Fauxton이라는 웹 기반 GUI와 함께 제공됩니다. URL http://:5984/_utils/를 통해 액세스할 수 있습니다. 즐겨 사용하는 브라우저에서 URL을 실행하면 다음과 같은 로그인 화면이 표시됩니다.

    사용자 이름으로 admin을 입력하고 이전에 만든 비밀번호를 입력합니다. 계속하려면 로그인 버튼을 누르십시오. 다음으로 CouchDB 대시보드로 이동합니다.

    여기에서 설치 중에 생성된 두 개의 데이터베이스를 볼 수 있습니다. 예상대로 _users 데이터베이스는 CouchDB 플랫폼 사용자에 대한 정보를 처리하고 _replicator 데이터베이스는 모든 복제 데이터베이스 또는 작업에 대한 정보를 보유합니다.

    또한 CouchDB에서 사용할 수 있는 모든 종류의 옵션이 포함된 사이드바가 표시됩니다.

    6단계 - CouchDB 인터페이스를 사용한 기본 데이터베이스 작업

    CouchDB의 Fauxton 인터페이스를 사용하면 기본 CRUD 작업(생성, 읽기, 업데이트 및 삭제)을 수행할 수 있습니다. 새 데이터베이스를 만드는 것부터 시작하겠습니다.

    데이터베이스 생성

    새 데이터베이스를 생성하려면 메인 화면에서 데이터베이스 생성 링크를 클릭하십시오. 다음 팝업이 열립니다.

    생성하려는 데이터베이스의 이름을 입력하고 생성 버튼을 클릭합니다.

    그러면 새 데이터베이스가 생성되고 다음 화면이 열립니다.

    문서 만들기

    이제 데이터베이스가 있으므로 문서를 작성해 보겠습니다. 시작하려면 문서 작성 버튼을 클릭하십시오. GUID(Globally Unique Identifier)가 포함된 _id와 JSON 개체로 미리 채워진 다음과 같은 새 문서 화면이 표시됩니다.

    다음과 같은 방식으로 필드를 더 추가하여 데이터를 추가해 보겠습니다. _id 필드의 값을 변경하려면 문서를 만들기 전에만 변경할 수 있습니다. 문서가 생성된 후에는 해당 값을 변경할 수 없습니다. 하지만 언제든지 다른 필드를 편집할 수 있습니다.

    {
      "_id": "0b4ad0d607479c09bb9121b146007363",
      "Name": "Navjot Singh",
      "role": "writer",
      "skills": "linux"
    }
    

    새 문서를 저장할 필드 추가를 마쳤으면 문서 만들기 버튼을 클릭합니다. 다음 모든 문서 페이지로 돌아갑니다.

    문서의 콘텐츠를 보려면 {} JSON 링크를 클릭하면 됩니다.

    문서를 편집하려면 오른쪽에 표시된 연필 아이콘을 클릭하거나 메타데이터 보기로 다시 전환하고 문서 링크를 클릭하면 됩니다. 항목의 값을 변경하고 문서 저장을 클릭하여 완료합니다.

    문서 삭제

    문서를 삭제하려면 문서 앞의 체크 표시를 클릭하고 아래와 같이 상단의 삭제 버튼을 선택합니다.

    7단계 - 명령줄을 사용한 기본 데이터베이스 작업

    웹 인터페이스를 사용하는 것이 CouchDB를 사용하는 더 간단한 방법이지만 명령줄을 통해 동일한 작업을 수행하면 더 큰 효율성을 얻을 수 있습니다.

    데이터베이스 생성

    데이터베이스를 만들기 전에 연결할 URL에 대한 변수를 정의하겠습니다. 예제에서는 간단한 일반 텍스트 인증을 사용합니다. 모든 명령을 인증해야 하므로 미리 정의된 변수를 사용하는 것이 좋습니다. localhost 또는 127.0.0.1을 사용하여 CouchDB 설치에 연결할 수 있습니다.

    $ HOST="http://admin::5984"
    

    참고: 일반 텍스트 암호를 사용하는 것은 최선의 방법이 아니며 프로덕션 환경에서 사용해서는 안 됩니다. 보다 안전한 인증 방법에 대해서는 CouchDBs 공식 문서를 확인할 수 있습니다.

    이제 호스트 URL을 정의했으므로 다음 명령을 사용하여 다른 데이터베이스를 생성해 보겠습니다.

    $ curl -X PUT $HOST/another_db
    

    데이터베이스의 이름은 another_db입니다. 그리고 명령에 대한 관리자 암호를 제공해야 합니다.

    문서 만들기

    문서를 만들려면 다음 명령을 실행합니다.

    $ curl -X POST -d '{"todo":"task 1", "done":false}' $HOST/another_db -H "Content-Type:application/json"
    

    -X 플래그는 HTTP POST 작업을 수행하고 있음을 나타냅니다. -H 플래그는 여기서 JSON인 콘텐츠 유형을 지정합니다. 그리고 -d 플래그는 우리가 추가하는 실제 JSON 콘텐츠를 지정합니다.

    위의 명령은 문서의 ID를 자동으로 생성합니다. 명령이 성공했음을 알리는 다음 출력을 생성합니다.

    {"ok":true,"id":"0b4ad0d607479c09bb9121b14600c6ee","rev":"1-2fc1d70532433c39c9f61480607e3681"}
    

    보시다시피 문서의 ID가 자동으로 생성되었습니다. 사용자 지정 ID를 지정하려면 다음과 같은 방법으로 지정할 수 있습니다.

    $ curl -X POST -d '{"_id":"random_task", "todo":"task 2", "done":false}' $HOST/another_db -H "Content-Type:application/json"
    {"ok":true,"id":"random_task","rev":"1-bceeae3c4a9154c87db1649473316e44"}
    

    문서 대량 생성

    대량으로 문서를 추가할 수도 있습니다.

    $ curl -X POST -d '{"docs": [{"todo":"task 3", "done":false}, {"todo":"task 4", "done":false}]}' $HOST/another_db/_bulk_docs -H "Content-Type:application/json"
    

    보시다시피 여러 문서를 삽입할 때 POST 본문에는 docs 필드가 있는 개체가 포함됩니다. 이 필드는 데이터베이스에 삽입할 문서 배열을 전달합니다. 단일 문서를 삽입하는 동안 POST 요청이 데이터베이스($HOST/another_db)로 전송되었습니다. 그러나 여러 문서를 삽입해야 하는 경우 $HOST/another_db/_bulk_docs URL로 요청을 보내야 합니다.

    비슷한 출력을 받게 됩니다.

    [{"ok":true,"id":"0b4ad0d607479c09bb9121b14600cb04","rev":"1-778fd61f8f460d0c1df1bb174279489d"},{"ok":true,"id":"0b4ad0d607479c09bb9121b14600d9ef","rev":"1-dc9e84861bba58e5cfefeed8f5133636"}]
    

    여기에서 출력에 두 개의 새 문서에 대한 ID가 포함되어 있음을 알 수 있습니다.

    문서 읽기

    데이터베이스에서 문서를 읽으려면 해당 ID를 지정해야 합니다. 다음 명령을 실행하여 random_task 문서를 검색합니다. HTTP POST 요청을 사용하여 데이터를 추가했으므로 데이터를 검색하려면 GET 요청을 사용해야 합니다.

    $ curl -X GET $HOST/another_db/random_task
    

    다음 출력을 받게 됩니다.

    {"_id":"random_task","_rev":"1-bceeae3c4a9154c87db1649473316e44","todo":"task 2","done":false}
    

    여기에서 문서의 _rev 필드를 기록해 둡니다. 이 필드는 문서를 편집하거나 삭제해야 할 때 유용합니다.

    문서 편집

    문서를 편집하려면 _rev 필드를 사용해야 합니다. _rev 필드를 포함하지 않는 모든 요청은 편집하는 동안 CouchDB에서 자동으로 거부됩니다. CouchDB는 전체 문서를 업데이트하므로 편집 작업 중에 전체 문서를 요청 본문으로 보내야 합니다.

    다음 명령을 사용하여 random_task 문서를 업데이트하겠습니다.

    $ curl -X PUT -d '{"_rev":"1-bceeae3c4a9154c87db1649473316e44", "todo":"task 2", "done":true}' $HOST/another_db/random_task
    

    _rev 필드의 값을 문서를 읽을 때 얻은 값으로 바꾸십시오. 실제 문서의 값과 일치해야 합니다.

    아래와 비슷한 출력을 받게 됩니다.

    {"ok":true,"id":"random_task","rev":"2-4cc3dfb6e76befd665faf124b36b7f1c"}
    

    알아차리면 rev 필드 데이터가 변경되었습니다. 문서를 추가로 변경하려면 이 새로운 rev 값을 사용해야 합니다.

    문서 삭제

    문서를 삭제하려면 ID와 업데이트된 rev 값을 지정해야 합니다. random-task 문서를 삭제하겠습니다.

    $ curl -X DELETE $HOST/another_db/random_task?rev=2-4cc3dfb6e76befd665faf124b36b7f1c
    

    명령의 rev 필드 값이 실제 문서의 값과 일치하는지 확인하십시오. 다음과 유사한 출력이 표시됩니다.

    {"ok":true,"id":"random_task","rev":"3-07d6cde68be2a559497ec263045edc9d"}
    

    데이터 보기

    서버의 모든 데이터베이스 목록을 확인하겠습니다.

    $  curl -X GET $HOST/_all_dbs
    

    특정 데이터베이스 아래의 모든 문서를 나열합니다.

    $ curl -X GET $HOST/another_db/_all_docs
    

    8단계 - 캐디 서버 설치

    지금까지 서버 IP 주소를 사용하여 CouchDB에 액세스했습니다. 도메인 이름으로 바꾸고 그 앞에 SSL을 사용하여 더 안전하게 만들고 싶다면 쉬운 방법이 있습니다. 튜토리얼에서는 가볍고 최소한의 구성으로 작동하며 내장 SSL 생성과 함께 제공되는 캐디 서버를 사용할 것입니다.

    다음 명령을 실행하여 Caddy에 필요한 일부 패키지를 설치하십시오. 서버에 이미 설치되어 있을 수 있습니다.

    $ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
    

    Caddys GPG 키를 설치하고 Debians 저장소 목록에 공식 저장소를 추가합니다.

    $ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
    $ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
    

    캐디 서버를 설치합니다.

    $ sudo apt update
    $ sudo apt install caddy
    

    다음 명령을 실행하여 설치를 확인하십시오.

    $ caddy version
    v2.5.1 h1:bAWwslD1jNeCzDa+jDCNwb8M3UJ2tPa8UZFFzPVmGKs=
    

    9단계 - 캐디 구성

    역방향 프록시 서버로 작동하도록 Caddy를 구성하려면 Caddyfile을 구성해야 합니다. 편집을 위해 캐디 파일을 엽니다.

    $ sudo nano /etc/caddy/Caddyfile
    

    그 안의 코드를 다음 코드로 바꿉니다.

    couchdb.example.com {
            reverse_proxy localhost:5984
    
            tls 
    
            log {
                    output file /var/log/caddy/couchdb.log
            }
    }
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    캐디 유효성 검사기를 실행하여 문제가 있는지 확인합니다.

    $ caddy validate --adapter caddyfile --config /etc/caddy/Caddyfile
    

    포맷과 관련된 오류가 발생하면 다음 명령을 실행하여 수정하십시오.

    $ sudo caddy fmt --overwrite /etc/caddy/Caddyfile
    

    유효성 검사기를 다시 실행하십시오.

    변경 사항을 구현하려면 Caddy 서버를 다시 시작하십시오.

    $ sudo systemctl restart caddy
    

    이제 브라우저에서 URL https://couchdb.example.com/_utils/를 통해 CouchDB에 액세스할 수 있습니다.

    결론

    Debian 11 시스템에 Apache CouchDB 데이터베이스 서버를 설치하는 방법을 배웠습니다. 명령줄과 Fauxton UI를 통해 기본 데이터베이스 작업을 수행하는 방법도 배웠습니다. 마지막으로 Caddy를 리버스 프록시 서버로 사용하여 Fauxton UI를 인터넷에 노출하는 방법도 배웠습니다. 질문이 있으시면 아래 의견에 게시하십시오.