首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指定JFROG_ACCESS home而不是~/.jfrog_access (Artifactory5.5.2)

指定JFROG_ACCESS home而不是~/.jfrog_access (Artifactory5.5.2)
EN

Stack Overflow用户
提问于 2017-11-07 02:13:40
回答 2查看 202关注 0票数 2

我设法使用我们现有的tomcat设置了artifactory。我已经设置为ARTIFACTORY_HOME=/opt/artifactory,这部分工作得很好。但是,还有jfrog access.war文件,它也需要运行。我不知道使用哪个变量来指定它的主目录,因此它默认为~/.jfrog_access,这并不是我喜欢的。

我将内容移到我的$ARTIFACTORY_HOME/access上,并对其进行符号链接,但这并不是确定的方法。感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-02-14 18:40:18

以防有人在这个帖子上跌跌撞撞,并为同样的问题而苦苦挣扎:

我的解决方案是将上下文文件(<zip extract>/misc/tomcat下的压缩文件中的access.xmlartifactory.xml )解压到Tomcat文件夹,例如$CATALINA_HOME/conf/Catalina/localhost/。之后,$ARTIFACTORY_HOME环境将在Access启动时被识别。

票数 2
EN

Stack Overflow用户

发布于 2018-08-18 23:30:24

一个previous answer终于让我走上了在Amazon Linux上解决这个问题的正确道路。

除了将access.xmlartifactory.xml复制到${catalina.home}/host/MY_HOSTNAME之外,我发现还需要进行一些其他更改。

我修改了XML上下文文件中的docBase属性,因为我的服务器有多个主机名:

/usr/share/tomcat8/conf/Catalina/repo.mydomain.org/access.xml

代码语言:javascript
复制
<Context path="/access" docBase="${catalina.home}/host/repo.mydomain.org/access.war">
    <Parameter name="jfrog.access.bundled" value="true" override="true"/>
    <!-- enable annotations scanning of access jar files -->
    <JarScanner scanClassPath="false">
        <JarScanFilter defaultPluggabilityScan="false" pluggabilityScan="access*" defaultTldScan="false"/>
    </JarScanner>
</Context>

/usr/share/tomcat8/conf/Catalina/repo.mydomain.org/artifactory.xml

代码语言:javascript
复制
<Context crossContext="true" path="/artifactory" docBase="${catalina.home}/host/repo.mydomain.org/artifactory.war">
</Context>

重要说明:为了防止Tomcat Manager在通过Undeploy/Deploy WAR进行升级时删除上述两个XML文件,请确保它们归root所有,tomcat用户不可写:

代码语言:javascript
复制
chown root.root access.xml artifactory.xml
chmod 644 access.xml artifactory.xml

如果您忘记执行上述操作,很可能最终会丢失这些文件,这将中断access和artifactory web应用程序之间的通信,导致登录失败(“用户名或密码不正确”)。在这种情况下,这些错误是由于web应用程序之间缺乏通信造成的,而不是凭据本身的问题。

/usr/share/tomcat8/conf/Catalina/repo.mydomain.org/manager.xml

这使我能够通过https://repo.mydomain.org:8443/manager/html上传新版本的access.warartifactory.war

代码语言:javascript
复制
<Context docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false">
</Context>

此外,我还创建了以下文件夹作为artifactory.home

代码语言:javascript
复制
sudo mkdir /usr/share/artifactory
sudo chown tomcat.tomcat /usr/share/artifactory

tomcat8.conf

添加(或修改)以下行:

代码语言:javascript
复制
JAVA_OPTS="-Dartifactory.home=/usr/share/artifactory -Djfrog.access.home=/usr/share/artifactory/access -Dartifactory.access.client.serverUrl.override=http://localhost:8080/access"

注意:上面指定的访问客户端URL必须使用本地主机,以避免Apache参数被Server及其模块覆盖。例如,如果我使用:

代码语言:javascript
复制
https://repo.mydomain.org/access/api/v1/system/ping

响应中的Server HTTP头部值为:

代码语言:javascript
复制
Server: Apache/2.4.33 (Amazon) OpenSSL/1.0.2k-fips mod_jk/1.2.43

访问客户端产生以下异常:

代码语言:javascript
复制
[ERROR] (o.j.a.c.AccessClientImpl:154) - Access client/server version mismatch. Client version: 4.1.5, Server version: 2.4.33 (Amazon) OpenSSL

这意味着访问客户端依赖于服务器报头中匹配#.#.#的第一个字符串。这似乎是Access客户端的一个非常脆弱的部分。他们应该使用X-JFrog-Access-Server或其他东西,而不是试图控制由web服务器设置的值。因此,重申一下,使用http://localhost:8080/access直接连接到tomcat服务器。

Artifactory6.2.0依赖于Apache Derby (具体的版本可以在jfrog-artifactory-oss-6.2.0.zip\artifactory-oss-6.2.0\tomcat\lib中找到)。这应该作为共享库添加到Tomcat中:

代码语言:javascript
复制
mkdir /usr/share/tomcat8/shared
cd /usr/share/tomcat8/shared
wget http://central.maven.org/maven2/org/apache/derby/derby/10.11.1.1/derby-10.11.1.1.jar

catalina.properties中添加或修改以下行

代码语言:javascript
复制
shared.loader=${catalina.home}/shared/*.jar

由于我们希望https://repo.mydomain.org转到Artifactory we应用程序:

代码语言:javascript
复制
mkdir /usr/share/tomcat8/host/repo.mydomain.org/ROOT
echo '<html><head><meta http-equiv="refresh" content="0;URL=/artifactory"></meta></head><body></body></html>' > /usr/share/tomcat8/host/repo.mydomain.org/ROOT/index.html

并确保服务在重新启动时自动启动:

代码语言:javascript
复制
sudo chkconfig httpd on
sudo chkconfig tomcat8 on

然后可以在url上找到Artifactory:

代码语言:javascript
复制
https://repo.mydomain.org/artifactory/webapp/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47143199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档