[Folio LSP] 튜토리얼 Single Server Deployment(core 버전)

오프닝


이 글은 Folio 강좌의 단일 서버 배포 내용을 소개합니다.
원단자→https://github.com/folio-org/folio-install/tree/master/runbooks/single-server#folio-deployment-single-server
이 자습서의 Docker 정보https://qiita.com/ayungn/items/b15979d26e0a8e354ef2)
본 강좌의 데이터베이스 정보https://qiita.com/ayungn/items/2ef718846424ca581282)

Q&A

  • 원자재 중mainbar/sidebar가 있는데 mainbar/sidebar는 무엇입니까?
  • sidebar를 실행하면'최신 스냅샷'을 기반으로 구축할 수 있습니다.mainbar는 분기별 발표를 바탕으로 구축될 것입니다.
  • plartform-core/platform-complete는 무엇입니까?
  • platform-core 구축 기본 기능,platform-comlete 구축 모든 기능.백엔드 모듈의 수량을 보면platform-core는 25,platform-complete는 55이다.이 글은platform-core의 구축을 소개했다.
  • 요구 사항

  • PstgreSQL 10
  • RAM12GB 이상(백엔드 모듈당 평균 160MB의 Docker Image를 사용합니다. 때로는 DB I/O도 있습니다. 환경을 구축할 때 더 많은 메모리가 필요할 수 있습니다.)
  • 사전 준비


    참조: https://qiita.com/ayungn/items/45c3f8bbe419308106a6
    설치 -git.
    - 가상 박스를 설치합니다.
    - Vagrant를 설치합니다.

    Linux 호스트 구축


    ① 이 튜토리얼 스크립트 등이 포함된 저장소를 적절한 디렉토리에 복제합니다.
    git clone https://github.com/folio-org/folio-install
    cd folio-install
    git checkout q2-2020
    cd runbooks/single-server
    
    cd runbooks/single-server에서 Vagrantfile이 있는 디렉토리로 이동하고 있습니다.

    이 Vagrantfile은 다음과 같은 설정의 가상 Box 가상 머신을 만듭니다.
    - Ubuntu Xenial OS(12 GB RAM、 2 CPU)
    - 포트 정방향: 게스트 포트 9130 → 호스트 9130 및 게스트 포트 80 → 호스트 3000
    - 여기서부터 /vagrant 나오면 여기라고 생각하세요.
    ② Vagrant에서 VM을 시작하고 VM에 로그인
    vagrant box update
    vagrant up
    vagrant ssh
    
    ※ vagrant의 초기 PW는 vagrant
    여기까지 하는 게 이런 느낌이에요.


    필요한 소프트웨어 패키지 설치 및 구성


    실행 환경 요구사항: 엔진 X, Java8, nginx, PostgreSQL10, Docker


    ① apt cache 업데이트
    sudo apt-get update
    
    ② Java8 및 nginx를 설치하여 Java8을 시스템 기본값으로 설정
    sudo apt-get -y install openjdk-8-jdk nginx
    sudo update-java-alternatives --jre-headless --jre --set java-1.8.0-openjdk-amd64
    
    ③ PostgreSQL 키 가져오기, PostgreSQL apt 저장소 추가, PostgreSQL 설치
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
    sudo apt-get update
    sudo apt-get -y install postgresql-10 postgresql-client-10 postgresql-contrib-10 libpq-dev
    
    ④ Docker에서 연결하도록 PostgreSQL을 구성합니다.
  • /etc/postgresql/10/main/postgresql.conf의 Connection Settings에 추가folio-install/runbooks/single-server
  • /etc/postgresql/10/main/pg_hba.conf
  • listen_addresses = '*' 추가
  • PostgreSQL
  • 용 재가동
    sudo vim /etc/postgresql/10/main/postgresql.conf
    sudo vim /etc/postgresql/10/main/pg_hba.conf
    sudo systemctl restart postgresql
    
    ⑤ Docker 키 가져오기, Docker apot 저장소 추가, Docker 엔진 설치
    sudo apt-get -y install apt-transport-https ca-certificates gnupg-agent software-properties-common
    wget --quiet -O - https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt-get update
    sudo apt-get -y install docker-ce docker-ce-cli containerd.io
    
    ⑥ Docker 엔진 구성
    sudo mkdir -p /etc/systemd/system/docker.service.d
    sudo cp /vagrant/scripts/docker-opts.conf /etc/systemd/system/docker.service.d
    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
    ⑦ docker-compose 설치
    sudo curl -L \
      "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" \
      -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    

    git, curl, NodeJS, npm, Yarn, libjson-perl, libwww-perl libuuid-tiny-perl


    ① Ubuntu의 apt 저장소에서 설치
    sudo apt-get -y install git curl nodejs npm libjson-perl libwww-perl libuuid-tiny-perl
    
    ② npm에서 설치 n
    ※ n은 node의 관리 명령입니다.
    sudo npm install n -g
    
    ③ Yarn 키 가져오기, Yarn apt 레지스트리 추가, Yarn 설치
    wget --quiet -O - https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
    sudo add-apt-repository "deb https://dl.yarnpkg.com/debian/ stable main"
    sudo apt-get update
    sudo apt-get -y install yarn
    

    Apache Kafka 및 Apache ZooKeeper 설치


    ※ 상기 필요mod-subpub.
    sudo mkdir /opt/kafka-zk
    sudo cp /vagrant/scripts/docker-compose-kafka-zk.yml /opt/kafka-zk/docker-compose.yml
    cd /opt/kafka-zk
    sudo docker-compose up -d
    cd -
    

    데이터베이스 및 역할 만들기


    수퍼유저 로그인 PostgreSQL
    $ sudo su -c psql postgres postgres
    
    Okapi와 임차인을 위한 데이터베이스와 역할을 만듭니다.
    CREATE ROLE okapi WITH PASSWORD 'okapi25' LOGIN CREATEDB;
    CREATE DATABASE okapi WITH OWNER okapi;
    CREATE ROLE folio WITH PASSWORD 'folio123' LOGIN SUPERUSER;
    CREATE DATABASE folio WITH OWNER folio;
    
    host all all 0.0.0.0/0 md5psql를 통과합니다.

    Okapi 설치 및 구성

    wget --quiet -O - https://repository.folio.org/packages/debian/folio-apt-archive-key.asc | sudo apt-key add -
    sudo add-apt-repository "deb https://repository.folio.org/packages/ubuntu xenial/"
    sudo apt-get update
    sudo apt-get -y install okapi=3.1.2-1
    sudo apt-mark hold okapi
    
    Okapi 구성
    편집sudo systemctl restart postgresql
  • role="dev"
  • port_end="9230"
  • host="10.0.2.15"
  • storage="postgres"
  • okapiurl="http://10.0.2.15:9130 "
  • 수정된 오카피.conf는 다음과 같습니다.
    #
    # FOLIO Okapi configuration
    #
    
    #  Okapi requires exactly one command to be given depending on how
    #  it is utilized.
    #
    # 'cluster' - for running in clustered mode/production
    # 'dev' - for running in development, single-node mode
    # 'deployment' - for okapi deployment only. Clustered mode
    # 'proxy' -  for proxy + discovery. Clustered mode
    #
    #
    role="dev"
    
    # 'cluster' config options
    #
    # -hazelcast-config-cp file -- Read config from class path
    # -hazelcast-config-file file -- Read config from local file
    # -hazelcast-config-url url -- Read config from URL
    #
    #cluster_config="-hazelcast-config-file /etc/folio/okapi/hazelcast.xml"
    
    # Specify the network interface Vertx cluster should bind to.
    # By default, it will bind to all network interfaces.  This may have
    # unintended consequences.
    #cluster_interface="eth0"
    
    # Specify which port the cluster should bind to for cluster
    # communication.  (Note: This different from '5701' which is used for
    # cluster discovery).  If not set, a random port will be used.
    #cluster_port="9001"
    
    # Enable the sending of various metrics to a Carbon back end.
    # Boolean '0' or '1'. Set to '1' to enable and set Carbon/Graphite
    # host and port.
    enable_metrics=0
    carbon_host="localhost"
    carbon_port="2003"
    
    # Default okapi port
    port="9130"
    
    # Define port range for modules. Default range: 9131-9141.
    port_start="9131"
    port_end="9230"
    
    # Hostname to be used in the URLs returned by the deployment service.
    # Defaults to 'localhost'
    host="10.0.2.15"
    
    # Set '-Dnodename'.  Required for deployment persistence when
    # running Okapi in cluster mode.  Defaults to `/bin/hostname`
    #nodename=
    
    # Define the storage back end - 'postgres' or 'inmemory'
    # ('postgres' only valid when 'role' is set to 'cluster' or 'dev')
    # (valid only when 'role' is set to 'dev' or 'cluster')
    # If set to 'postgres', make sure the okapi database has been
    # created and okapi user has been configured in the postgres
    # instance and then run:
    #   /usr/share/folio/okapi/bin/okapi.sh --initdb
    # to initialize the okapi database for restarting okapi.
    storage="postgres"
    
    # Set Postgres parameters.  Ignored unless 'storage="postgres"'
    postgres_host="localhost"   # default 'localhost'
    postgres_port="5432"        # default postgres port
    postgres_username="okapi"   # default
    postgres_password="okapi25" # default
    postgres_database="okapi"   # default
    
    # Define Docker URL if we are deploying modules via Docker.
    dockerurl="http://localhost:4243"
    
    # Tell Okapi its own official URL.  This gets passed to the
    # modules as X-Okapi-Url header, and the modules can use this
    # to make further requests to Okapi.  Defaults to 'http://localhost:9130'
    # or whatever port specified. There should be no trailing slash, but if
    # there happens to be one, Okapi will remove it.
    okapiurl="http://10.0.2.15:9130"
    
    # Okapi Logging options
    #
    # Define logging level.  Defaults to 'INFO'; other valid values are 'DEBUG',
    # 'TRACE', 'WARN', and 'ERROR'
    loglevel="INFO"
    
    # Specify external log4j2 configuration file.  Otherwise logging defaults
    # to STDOUT.  If defined, 'loglevel' is ignored.
    log4j_config="/etc/folio/okapi/log4j2.properties"
    
    Okapi 다시 시작
    sudo systemctl daemon-reload
    sudo systemctl restart okapi
    
    
    중앙 등록표에서 모듈화 설비를 추출하다
    curl -w '\n' -D - -X POST -H "Content-type: application/json" \
      -d @/vagrant/scripts/okapi-pull.json \
      http://localhost:9130/_/proxy/pull/modules
    
    
    상술한 것은 아래와 같은 뜻이다.
    curl -w '\n' -D - -X POST -H "Content-type: application/json" -d '{"urls":["http://folio-registry.aws.indexdata.com"]}'  http://localhost:9130/_/proxy/pull/modules     
    

    Folio 임차인 만들기


    임차인 초기화를 Okapi에 의뢰
    curl -w '\n' -D - -X POST -H "Content-type: application/json" \
      -d @/vagrant/scripts/tenant.json \
      http://localhost:9130/_/proxy/tenants
    
    이것은 아래와 같은 뜻이다.
    curl -w '\n' -D - -X POST -H "Content-type: application/json" -d '{"id" : "diku","name" : "Datalogisk Institut","description" : "Danish Library Technology Institute"}' http://localhost:9130/_/proxy/tenants
    
    임차인이 사용할 수 있도록 Okapi 내부 모듈을 사용합니다.
    curl -w '\n' -D - -X POST -H "Content-type: application/json" -d '{"id":"okapi"}' http://localhost:9130/_/proxy/tenants/diku/modules
    

    FolioStropes 플랫폼의 최신 버전 구축


    n<버전>에서 지정한 노드 버전으로 업데이트할 수 있습니다.
    여기서 lts로 업데이트합니다.
    sudo n lts
    
    git clone https://github.com/folio-org/platform-core
    cd platform-core
    git checkout q2-2020
    yarn install
    NODE_ENV=production yarn build output
    cd ..
    

    웹 서버 설정 및 서브 Stripes 웹pack


    nginx 서버를 설정합니다.
    sudo cp folio-install/runbooks/single-server/scripts/nginx-stripes.conf /etc/nginx/sites-available/stripes
    sudo ln -s /etc/nginx/sites-available/stripes /etc/nginx/sites-enabled/stripes
    sudo rm /etc/nginx/sites-enabled/default
    sudo systemctl restart nginx
    

    해당 Folio 백엔드를 구축하여 임대인 지원


    배치된 모듈에 사용된 데이터 원본 정보를 Okapi로 보내기
    curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_HOST\",\"value\":\"10.0.2.15\"}" http://localhost:9130/_/env
    curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_PORT\",\"value\":\"5432\"}" http://localhost:9130/_/env
    curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_DATABASE\",\"value\":\"folio\"}" http://localhost:9130/_/env
    curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_USERNAME\",\"value\":\"folio\"}" http://localhost:9130/_/env
    curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_PASSWORD\",\"value\":\"folio123\"}" http://localhost:9130/_/env
    
    백엔드 모듈 목록을 배치하고 활성화합니다.임차인 파라미터를 설정하고 샘플 데이터와 참고 데이터를 불러옵니다.
    curl -w '\n' -D - -X POST -H "Content-type: application/json" \
      -d @platform-core/okapi-install.json \
      http://localhost:9130/_/proxy/tenants/diku/install?deploy=true\&preRelease=false\&tenantParameters=loadSample%3Dtrue%2CloadReference%3Dtrue
    
    
    참고 Docker Hub에서 Docker 이미지를 가져오므로 시간이 좀 걸립니다.
    진전 보기 → Okapilogat/var/log/folio/okapi/okapi.log 또는 sudo docker ps
    Stripes 모듈 목록 게시 및 활성화
    curl -w '\n' -D - -X POST -H "Content-type: application/json" \
      -d @platform-core/stripes-install.json \
      http://localhost:9130/_/proxy/tenants/diku/install?preRelease=false
    

    Folio 수퍼유저 생성 및 권한 로드

    perl folio-install/runbooks/single-server/scripts/bootstrap-superuser.pl --tenant diku --user diku_admin --password admin --okapi http://localhost:9130
    
    done!보여주면 돼요.

    예제 데이터 로드


    ODS 레코드 로드

    curl -w '\n' -D - -X POST -H "Content-type: application/json" -H "Accept: application/json" -H "X-Okapi-Tenant: diku" -d '{"username":"diku_admin","password":"admin"}' http://localhost:9130/authn/login
    
    

    아래의 에 되돌아오는 token의 값을 추가합니다.
    for i in /vagrant/sample-data/mod-inventory/*.xml; do curl -w '\n' -D - -X POST -H "Content-type: multipart/form-data" -H "X-Okapi-Tenant: diku" -H "X-Okapi-Token: <okapi token>" -F upload=@${i} http://localhost:9130/inventory/ingest/mods; done
    
    localhost:3000 브라우저에서 액세스

    diku_admin/admin으로 로그인

    좋은 웹페이지 즐겨찾기