JFrog Artifactory 系列1 --- 安装与配置
一、概要
1. 环境
(1) Rocky Linux 9.1
(2) JFrog Artifactory 7.55.10
2. 概念
JFrog Artifactory是一个通用的二进制仓库,它可以存储Docker镜像、IOS/Android/EXE软件包,或者Maven Jar包。
JFrog Artifactory由Java实现,从7.43.x开始,其安装包自带JDK 17。
3. 仓库
开源的 JFrog 版本只支持 Gradle、ivy、maven、SBT、Generic 5种仓库类型。
4. 安装要求
(1) 内存
JFrog Artificatory最小的内存需求是512MB,内存越大就可以支撑越多的文件存储,也可以支持越多的并发用户访问。
(2) 系统时间同步
如果需要安装多节点的JFrog Artificatory或者安装JFrog的其他服务,则需要宿主机有具备统一的时间,否则不同的节点不同的事件可能导致授权和认证失败。
(3) 系统配置
活跃的Clients | CPU(核心) | 内存(GB) | 磁盘 |
0-20 | 4 | 4 | 3x需要存储的文件大小。 |
0-100 | 4 | 8 | 3x需要存储的文件大小。 |
100-200 | 8 | 12 | 3x需要存储的文件大小。 |
(4) 文件系统(支持列表)
a. 本地文件系统;
b. 云存储环境:Amazon S3和Google云存储;
c. NFS
(5) 数据库(支持列表)
a. MySQL
b. Oracle
c. MS SQL
d. PostgreSQL
e. MariaDB
(6) 网络端口号
8081, 8082
(7) Java
JDK已经绑定在安装包内。
从2.13.2开始,JFrog仅支持JDK 17以上的版本。
二、安装
1. 安装模式
Artifactory分为两种安装方式,一种是单节点模式,另一种是高可用模式。本文选择单节点模式。
2. 安装
(1) 方法一
a. 下载仓库文件
wget -O artifactory-pro.rpm "https://releases.jfrog.io/artifactory/artifactory-pro-rpms/jfrog-artifactory-pro/jfrog-artifactory-pro-[RELEASE].rpm"
b. 安装
sudo yum install ./artifactory-pro.rpm -y
(2) 方法二
a. 仓库
wget https://releases.jfrog.io/artifactory/artifactory-rpms/artifactory-rpms.repo -O jfrog-artifactory-rpms.repo sudo mv jfrog-artifactory-rpms.repo /etc/yum.repos.d/
b. 更新仓库
sudo yum update -y
c. 安装
sudo yum install jfrog-artifactory-oss -y
安装完成之后会打印目录信息:
(4) 重要目录
安装目录: /opt/jfrog/artifactory 日志目录: /opt/jfrog/artifactory/var/log 系统配置模板目录: /opt/jfrog/artifactory/var/etc 配置文件: /opt/jfrog/artifactory/var/etc/system.yaml
注意:在JFrog官方文档中,$JFROG_HOME目录是/opt/jfrog.
3. 授权
sudo chmod -R 755 /opt/jfrog/artifactory/var/log sudo chmod -R 755 /opt/jfrog/artifactory/var/etc
三、配置
配置文件system.yaml位于/opt/jfrog/artifactory/var/etc/下:
sudo vi /opt/jfrog/artifactory/var/etc/system.yaml
1. 内存配置
配置JFrog Artificatory内存的方式是:
shared: extraJavaOpts: "-Xms512m -Xmx2g"
2. 数据库
需要特别注意的是,JFrog需要大小写敏感的数据库而MySQL默认大小写不敏感,所以需要在创建数据库的时候进行设置。
如果已经创建了大小写不敏感的MySQL数据库,你需要根据官网的提示更新该设置:设置MySQL大小写敏感
(1) 登录MySQL
mysql -u root -p
(2) 创建数据库
create database if not exists artifactory default character set utf8 collate utf8_bin;
(3) 配置数据库
database: type: mysql driver: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/artifactory?useUnicode=true&useSSL=false&characterEncoding=UTF-8&rewriteBatchedStatements=true&allowMultiQueries=true&serverTimezone=UTC username: <User name> password: <Password>
(4) 驱动文件
curl -O https://repo1.maven.org/maven2/com/mysql/mysql-connector-j/8.2.0/mysql-connector-j-8.2.0.jar sudo mv -f mysql-connector-j-8.2.0.jar /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib sudo chown -R artifactory:artifactory /opt/jfrog/artifactory/var/bootstrap/artifactory/tomcat/lib
3. 防火墙
sudo firewall-cmd --list-all sudo firewall-cmd --permanent --add-port=8081/tcp sudo firewall-cmd --permanent --add-port=8082/tcp sudo firewall-cmd --reload
4. 启动
sudo systemctl start artifactory sudo systemctl enable artifactory systemctl status artifactory
5. 访问 http://<IP Address>:8081
(1) 默认账户
用户名: admin
密码: password
(2) 错误检查
如果启动失败,或者无法访问该页面,则需要通过检查以下日志来定位失败原因:
sudo vi /opt/jfrog/artifactory/var/log/console.log
(3) 支持的仓库类型
作为开源版本,仅支持Generic, Gradle, Ivy, Maven, SBT 5种仓库类型,如果需要解锁其他支持,则需要money。
6. LDAP
(1) 如下图所示,登录后,依次点击"Administration->Authentication Providers->LDAP->Add Settings":
(2) 编辑配置
a. Settings Name: 该LDAP配置的名称,需要唯一;
b. LDAP URL: 格式如下,LDAP Domain一定要使用域名,使用IP地址将无法保存;
ldap://<LDAP Domain>:389/<Base DN>
例子:
ldap://ldap.example.com/dc=example,dc=com
c. User DN Pattern: 用户的DN模式,它于LDAP URL中的Base DN合起来就构成了用户的DN,
uid={0},ou=People
d. Search Filter: 用于根据用户输入的用户名来搜索用户DN,与Search Base合并使用;默认格式如下:
(uid={0})
{0}为用户登录时使用的登录名。
e. Manager DN: 登录LDAP的账户名;
f. Manager Password: 登录LDAP的密码。
(3) 测试一
输入Test User Name和Test Password,点击Test Connection。成功会提示:
(4) 测试二
使用LDAP账户登录,进入系统后页面如下,注意与Admin的区别:
(5) 测试三
curl localhost:8082/router/api/v1/system/health
7. 存储媒介
JFrog支持多种制品存储媒介:Linux文件系统、数据库存储、S3、Google云存储、Azure Blob等,默认存储在Linux文件系统中。
(1) 配置文件
$JFROG_HOME/artifactory/var/etc/artifactory/binarystore.xml
或
/opt/jfrog/artifactory/var/etc/artifactory/binarystore.xml
配置文件的内容如下:
(2) <config>: binarystore.xml配置所在的节点,它包含一个<chain>节点;
(3) <chain>:存储系统的配置节点,template属性指定所使用的存储系统,默认为“file-system”。此外还有许多其他的template,详见File Store Configuration;
(4) <provider>: 该节点可以理解为template所指定的存储系统的属性节点,对于"file-system"这个template来讲,还有以下属性和节点:
a. type属性: 对应chain节点中的template属性;
b. baseDataDir节点: 这是Artifactory存储文件的根目录,该目录包含若干子目录,其中最重要的是filestore和temp目录,它的默认值是:
$JFROG_HOME/artifactory/var/data/artifactory
或
/opt/jfrog/artifactory/var/data/artifactory
c. fileStoreDir节点:这是制品存储的目录,如果该节点的值以/开头,则认为是绝对路径,否则是baseDataDir/fileStoreDir。该节点的默认值是filestore;
d. tempDir节点:这是Artifactory的临时目录,用于存放临时文件,该目录必须与baseDataDir放在同一个磁盘下。
(5) 配置例子:
<config version="v1"> <chain template="file-system"/> <provider id="file-system" type="file-system"> <baseDataDir>/var/opt/jfrog/artifactory/data</baseDataDir> <fileStoreDir>filestore</fileStoreDir> <tempDir>temp</tempDir> </provider> </config>
制品存储路径为:/var/opt/jfrog/artifactory/data/filestore
临时目录为:/var/opt/jfrog/artifactory/data/temp
目录授权:
sudo chown -R artifactory:artifactory /var/opt/jfrog/artifactory/data
(6) 默认目录结构
四、参考
1. 官方
(1) 安装
https://jfrog.com/help/r/jfrog-installation-setup-documentation/system-requirements
https://jfrog.com/help/r/jfrog-installation-setup-documentation/installing-artifactory
(2) 配置
https://jfrog.com/help/r/jfrog-installation-setup-documentation/artifactory-system-yaml
https://jfrog.com/help/r/jfrog-installation-setup-documentation/database-configuration
https://jfrog.com/help/r/jfrog-installation-setup-documentation/system-yaml-configuration-file
https://jfrog.com/knowledge-base/how-can-i-fix-case-insensitive-database-to-be-case-sensitive/
(3) 存储
https://jfrog.com/help/r/jfrog-installation-setup-documentation/filestore-configuration
https://jfrog.com/whitepaper/best-practices-for-managing-your-artifactory-filestore-2/
2. 其他
https://computingforgeeks.com/how-to-install-jfrog-artifactory-on-centos/