【Folio LSP】在EC2上部署单服务器核心版的教程

开场白

在这篇文章中,我们将介绍Folio教程中在EC2上执行Single Server部署的方法。原始资料可参考:https://github.com/folio-org/folio-install/tree/master/runbooks/single-server#folio-deployment-single-server

我认为如果您首先阅读以下内容,可能会更容易理解。

    Vagrant/VirtualBoxでSingle Server Deploymentチュートリアルを実行する(https://qiita.com/ayungn/items/f84e55893b7817af15a7)

EC2的准备工作

启动实例
undefined
选择
undefined
选择实例类型为t2.xlarge(vCPU4,16GiB)。
undefined
undefined
undefined
undefined
undefined

确认实例

image.png

确认公共IP和私有IP。
安全组链接在这里。
注意:停止实例后,公共IP会发生变化。

安全组设置

image.png

点击“添加规则”。

image.png

点击「保存规则」

使用SSH连接EC2

请使用您在实例设置时获取的密钥和公共IP,以您喜欢的方式进行连接。如果您使用Win10 PowerShell,可以通过以下方式进行连接。

ssh -i <保存した秘密鍵へのパス> ubuntu@<パブリックIP>

构建Linux主机

把包括这个教程所需要的脚本等文件的存储库克隆到主目录中。

git clone https://github.com/folio-org/folio-install
cd folio-install
git checkout q2-2020
cd runbooks/single-server

安装并配置必要的软件包。

运行环境要求:Java 8、nginx(引擎X)、PostgreSQL 10、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 的密钥,添加 PostgreSQL apt 存储库并安装 PostgreSQL。
* 这与 VirtualBox 版本稍有不同。

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt-get update
sudo apt-get install libicu55
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

配置PostgreSQL以便可以通过Docker进行连接。

    • /etc/postgresql/10/main/postgresql.confの「Connection Settings」にlisten_addresses = ‘*’を追記

 

    • /etc/postgresql/10/main/pg_hba.confにhost all all 0.0.0.0/0 md5を追記

 

    PostgreSQLをsudo systemctl restart postgresqlでリスタート
sudo vim /etc/postgresql/10/main/postgresql.conf
sudo vim /etc/postgresql/10/main/pg_hba.conf
sudo systemctl restart postgresql

导入Docker的密钥并添加Docker官方仓库,然后安装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 ~/folio-install/runbooks/single-server/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 中是必要的。
※ 上述内容是在 mod-subpub 中必需的。

修改~/folio-install/runbooks/single-server/scripts/docker-compose-kafka-zk.yml文件。

修正前的KAFKA_ADVERTISED_LISTENERS为INTERNAL://10.0.2.15:9092, LOCAL://localhost:29092。
修正后的KAFKA_ADVERTISED_LISTENERS为INTERNAL://<私有IP地址>:9092, LOCAL://localhost:29092。
请将<私有IP地址>替换为EC2实例的私有IP地址。

sudo mkdir /opt/kafka-zk
sudo cp ~/folio-install/runbooks/single-server/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;

离开psql。

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

编辑/etc/folio/okapi/okapi.conf文件的以下内容:

    • role=”dev”

 

    • port_end=”9230″

 

    • host=””

 

    • storage=”postgres”

 

    okapiurl=”http://:9130″

请将 EC2 实例的私有 IP 地址放入 。

翻译为中文:OKapi的重新启动。

sudo systemctl daemon-reload
sudo systemctl restart okapi

从中央注册表中获取模块描述符。

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 '{"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

构建FolioStripes平台的最新版本。

您可以使用 n命令 升级到指定的节点版本。在这里,我们将升级到 lts版本。

sudo n lts

将platform-core克隆到主目录中。

cd ~
git clone https://github.com/folio-org/platform-core
cd platform-core
git checkout q2-2020
yarn install

将~/platform-core/stripes.config.js文件进行如下修改。

修正前:okapi: { ‘url’:’http://localhost:9130′, ‘tenant’:’diku’ },
修正後:okapi: { ‘url’:’http://<你的公共IP>:9130′, ‘tenant’:’diku’ },

请在以下位置输入EC2实例的公共IP:。

NODE_ENV=production yarn build output
cd ..

配置Web服务器以提供Stripes webpack。

配置Nginx服务器。

将 folio-install/runbooks/single-server/scripts/nginx-stripes.conf 文件中的 “# Set path” 内容更改为如下所示。

修改前:root /home/vagrant/platform-core/output;
修改后:root /home/ubuntu/platform-core/output;

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后端部署并激活于租户。
(Deploy and activate the corresponding Folio backend for the tenant.)

将部署的模块所使用的数据源信息发布到Okapi上。

请在此处输入EC2实例的私有IP地址。

curl -w '\n' -D - -X POST -H "Content-Type: application/json" -d "{\"name\":\"DB_HOST\",\"value\":\"<PRIVATE IP ADDRESS>\"}" 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镜像需要时间,这可能需要一些时间。
查看进度→Okapi日志位于/var/log/folio/okapi/okapi.log,或者通过sudo docker ps | grep -v “^CONTAINER” | wc -l命令查看。

发布并启用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!”即可。

加载样本数据

加载MODS记录

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

将返回的令牌值放入下面的中。

for i in ~/folio-install/runbooks/single-server/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
image.png

使用diku_admin/admin进行登录

image.png
广告
将在 10 秒后关闭
bannerAds