背景说明
Archivematica 是一个免费的开源数字保存系统,旨在保持对数字内存的长期访问。Archivematica 与基于 Web 的内容管理系统 AtoM 打包在一起,用于访问您的数字对象。
Archivematica 目标用户是档案管理员、图书管理员和任何致力于保存的人 数字对象。
官网:Archivematica: open-source digital preservation system
项目地址:archivematica
系统环境:windows10
环境搭建
根据官方说明 最新版的 Archivematica 部署需要的环境最少是 linux 9 ,文档里提到的是Ubuntu 22.04,所以这里直接安装的Ubuntu 22.04 (在安装的时候发现代码更新了,代码里配置的是Ubuntu24,不影响使用,就没升级了)。
由于之前安装linux都是用的 VMware 虚拟机 ,这次采用新的形式进行安装,即 windows 自带的 wsl 进行安装。整体部署环境结果如下:
- win10 最新版+ wsl + Ubuntu 22.04 + terminal ( 或者系统自带的命令提示窗也可以)
Windows Subsystem for Linux(WSL)是微软为 Windows 系统提供的一项功能,允许用户在 Windows 上直接运行原生的 Linux 命令行工具、应用程序和脚本,而无需传统虚拟机(如 VirtualBox、VMware)或双系统启动。
wsl 对系统有版本要求:
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。
- 查看系统版本,版本低于win10 的 19041 需要更新,在设置那边更新系统
按 Win+R
,输入输入 winver
回车,弹出窗口显示版本号及构建日期。
Ubuntu安装
1、开启虚拟化
可通过 任务管理器 —> 性能 —> CPU 查看是否可开启了虚拟化,如果已开启,就跳过这一步。
如果没有开启,就按如下步骤进行开启。
- 按
Win + i
打开设置 → “系统” → “可选功能” → “更多Windows功能” → 勾选“Hyper-V” → 确定后重启电脑。
2、wsl 安装 linux
wsl 安装linux 有两种方法
- 通过wsl 命令: wsl --install
- 微软商店下载( Microsoft Store)
商店下载:直接搜索Ubuntu,选择合适版本下载即可,这里我选用的是 Ubuntu 22.04,点击“免费下载”,然后点击“安装”,在安装Ubuntu 过程中 会要求创建用户,输入自己要用的用户名和密码,这边我用的 test,系统默认会有 root (root密码和test密码一样),所以不用创建,在系统创建完成后可以 通过命令进行密码修改。安装完成后在界面点击“打开”即可使用,也可以通过 wsl 命令进行操作。
附:还下载了 terminal,比命令提示符好用很多,建议下载,打开 terminal 在菜单条的下拉按钮下可以看到 Ubuntu 的菜单,可以直接点击,进入 Ubuntu 系统,默认用户是安装时新建的用户,可以通过wsl 命令切换默认用户。
在Ubuntu 中 ~ 目录下,使用code . 可以直接调起 VSCode,如果其他目录调用 VSCode,在参考链接中有给方法
# 查看可通过在线商店获得的 Linux 发行版列表。 此命令也可输入为:wsl -l -o。
wsl --list --online
#查看安装在 Windows 计算机上的 Linux 发行版列表,其中包括状态(发行版是正在运行还是已停止)和运行发行版的 WSL 版本(WSL 1 或 WSL 2)。
wsl --list --verbose
# 运行 Ubuntu
wsl -d Ubuntu-22.04
# 运行-以特定用户 wsl --distribution <Distribution Name> --user <User Name>
wsl --distribution Ubuntu-22.04 --user root
# 更改分发版登录的默认用户: <Distribution Name> config --default-user <User Name>
#将 Ubuntu 分发的默认用户更改为“root”用户
ubuntu2204.exe config --default-user root
# 修改密码
# 终止运行 wsl --terminate <Distribution Name>;重置 Ubuntu-22.04 运行
wsl --terminate Ubuntu-22.04
# 关机
wsl --shutdown
安装 Docker
根据官方的安装文档,我们需要在 Ubuntu 中 安装最新版的 Docker 、Docker compose,安装命令如下:
sudo apt-get update
sudo apt-get install ca-certificates curl
#安装必要的证书并允许 apt 包管理器使用以下命令通过 HTTPS 使用存储库
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
#运行下列命令添加 Docker 的官方 GPG 密钥
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 运行下列命令添加 Docker 的官方 GPG 密钥:
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 安装docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose
在 /etc/docker/daemon.json 文件中配置docker 镜像源,如果没有 daemon.json 就创建这个文件:
cd /etc/docker/
sudo vi daemon.json
按 i 输入下面配置:
{
"registry-mirrors" : [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://mirror.ccs.tencentyun.com"
"https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
按 esc 退出编辑,输入:qw 保存退出
重启更新配置:
systemctl daemon-reload
systemctl restart docker
# 开机自启docker
systemctl enable docker
项目部署
官方项目自带的部署文档:https://github.com/artefactual/archivematica/tree/qa/1.x/hack
按照官方文档,需要用非 root 用户,我用的 test 用户进行操作,文档上的操作基本都要执行。
1、基础命令安装
首先需要在 Ubuntu 中安装基础命令:git ,ifconfig 、unzip 。
# 安装 git ,安装成后可以通过 git --version 查看,有版本号就说明安装成功
sudo apt-get update
sudo apt-get install git
# 安装 解压命令 unzip
sudo apt update
sudo apt install unzip
# 安装 网络相关命令 含 ifconfig 用 ifconfig 是为了查看Ubuntu的IP,用于远程连接传送文件
sudo apt update
sudo apt install net-tools
# 安装SSH服务器 是为了用于远程连接传送文件
sudo apt-get update
sudo apt-get install openssh-server
sudo systemctl start ssh
# 开机启动
sudo systemctl enable ssh
# 默认端口是22 不需要修改,如果需要修改,更改SSH端口(默认为22)
# sudo nano /etc/ssh/sshd_config
# ctrl + o 是保存 ctrl+x 是退出
# 查看防火墙 状态 默认是关闭的
sudo ufw status
#如果是开启的,要允许访问
sudo ufw allow ssh
sudo ufw reload
2、项目获取
项目是直接在 Ubuntu 中用 git 进行拉取的。(拉取过程中可能会有失败,可以先拉取到本地再上传到系统中,本地拉取成功率高一些。如果采用远程连接上传到系统,需要安装ssh命令)
git clone https://github.com/artefactual/archivematica.git --branch qa/1.x --recurse-submodules
在拉取完成项目后,会发现hack/submodules的三个文件夹都是空的,需要单独去拉取(或者下载),然后上传到之前的项目里,保障项目的完整性。三个文件拉取或者下载的分支如下:
hack/submodules
- archivematica-acceptance-tests(qa-1的分支)
- archivematica-sampledata(master)
- archivematica-storage-service (qa-0的分支)
这里我采用是下载之后然后远程工具上传到系统中的项目目录下。
补充:由于 Ubuntu 是 windows 的子系统,所以 Ubuntu 自带挂载目录,是 mnt 目录,在 mnt 目录下 输入 ls 即可看到 c\d\e 盘,所以也可以通过cp命令复制到 Ubuntu 中。
在 Dockerfile 中有用到 /etc 目录,遇到过权限问题,所以这里先创建好需要的目录:/etc/apt/keyrings,并开放权限:
sudo mkdir /etc/apt/keyrings
sudo chmod 0755 -d /etc/apt/keyrings
3、开始构建
3.1、切换目录到 hack 下
cd ./archivematica/hack
Elasticsearch 空间构建,需要运行下面命令:
sudo sysctl -w vm.max_map_count=262144
# 要保留此设置,请修改并添加:/etc/sysctl.conf
vm.max_map_count=262144
3.2、运行以下命令以创建两个 Docker 外部卷。
make create-volumes
3.3、构建 Docker 镜像
make build
这个过程中主要遇到的两个问题是:
- 权限问题
- requirements-dev.txt 文件找不到
- 远程安装python 下载超时的错误
1.权限问题,就是上文提到的 /etc/apt/keyrings 这个目录,直接外部创建好,并给 test 赋权即可。
2. requirements-dev.txt 在第一层项目目录里,复制到 hack 目录下即可。
3. 远程安装 python 下载超时的错误,,主要调整了文档中涉及安装 python 的代码,代码如下:
RUN set -ex \
&& apt-get update \
&& apt-get install -y --no-install-recommends \
build-essential \
libbz2-dev \
libffi-dev \
liblzma-dev \
libncursesw5-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libxml2-dev \
libxmlsec1-dev \
wget \
llvm \
tk-dev \
xz-utils \
zlib1g-dev \
openssl \
&& rm -rf /var/lib/apt/lists/* /var/cache/apt/*
RUN set -ex \
&& curl --retry 3 -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
ENV PATH="/root/.pyenv/bin:/root/.pyenv/shims:${PATH}"
ENV PATH="/home/archivematica/.pyenv/bin:/home/archivematica/.pyenv/shims:${PATH}"
RUN set -ex \
&& echo 'eval "$(pyenv init -)"' >> ~/.bashrc \
&& echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc \
&& /bin/bash -c "source ~/.bashrc"
ENV PYTHON_BUILD_MIRROR_URL_SKIP_CHECKSUM=1
ENV PYTHON_BUILD_MIRROR_URL="https://registry.npmmirror.com/-/binary/python"
RUN set -ex \
&& pyenv install ${PYTHON_VERSION} \
&& pyenv global ${PYTHON_VERSION}
/opt/project/archivematica/hack/Dockerfile 下的 Dockerfile 文件修改了,
archivematica/hack/submodules/archivematica-storage-service/Dockerfile 这个路径下的Dockerfile 也要做出相应的调整,在创建的时候有使用。
3.4、拉取其他镜像
docker compose up -d
这一步会出现 gearmand 和 clamavd 下载出错的问题,可以单独拉取安装或者修改 archivematica/hack/docker-compose.yml 文件里的镜像源(这里尝试过单独安装,但是一直失败,就换了镜像源,直接改了文件重新安装了)。
涉及修改的镜像源代码如下:
gearmand:
image: "docker.1ms.run/artefactual/gearmand:1.1.18-alpine"
command: "--queue-type=builtin"
user: "gearman"
ports:
- "127.0.0.1:62004:4730"
clamavd:
image: "clamav/clamav:latest"
environment:
CLAMAV_MAX_FILE_SIZE: "42"
CLAMAV_MAX_SCAN_SIZE: "42"
CLAMAV_MAX_STREAM_LENGTH: "100"
ports:
- "127.0.0.1:62006:3310"
volumes:
- "archivematica_pipeline_data:/var/archivematica/sharedDirectory:ro"
3.5、数据库创建
make bootstrap
3.6、项目运行
启动数据库等服务:如果是用的 VSCode 打开的项目,可以用 直接启动,或者通过命令启动
1、直接启动
2、命令启动
docker run percona:8.0
docker run docker.elastic.co/elasticsearch/elasticsearch:6.8.23
docker run docker.1ms.run/artefactual/gearmand:1.1.18-alpine
docker run clamav/clamav:latest
项目启动:
# 这个命令只是启动了项目,没有启动数据库等服务,其他服务需要单独启动
make restart-am-services
停止服务命令:
make stop
Web 用户界面
- Archivematica Dashboard: http://127.0.0.1:62080/
- Archivematica Storage Service: http://127.0.0.1:62081/
Archivematica Dashboard 和 Storage Service 的默认凭证 是 username:test
, password: test
参考链接
两句话讲清楚windows安装wsl和docker - 李英俊小朋友 - 博客园
Archivematica:Home | Artefactual
WSL 官方安装教程:设置 WSL 开发环境 | Microsoft Learn