指定JFROG_ACCESS home而不是〜/ .jfrog_access(Artifactory 5.5.2)

时间:2017-11-06 18:13:40

标签: configuration access artifactory

我设法使用我们现有的tomcat设置artifactory。我设置为ARTIFACTORY_HOME=/opt/artifactory,这部分效果很好。但是,还有jfrog access.war文件,它也需要运行。我没有弄清楚用于指定其主页的变量,因此它默认为~/.jfrog_access,这完全不是我喜欢的。

我将内容移到我的$ARTIFACTORY_HOME/access并对其进行符号链接,但这不是确定的方法。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

如果有人绊倒了这个帖子并且遇到同样的问题:

对我来说,解决方法是将access.xml下的zip文件中提供的上下文文件(artifactory.xml<zip extract>/misc/tomcat)提取到Tomcat配置文件夹,例如: $CATALINA_HOME/conf/Catalina/localhost/。之后,将在Access启动时识别$ARTIFACTORY_HOME env。

答案 1 :(得分:0)

previous answer终于使我走上了在Amazon Linux上解决此问题的正确轨道。

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

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

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

<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

<Context crossContext="true" path="/artifactory" docBase="${catalina.home}/host/repo.mydomain.org/artifactory.war">
</Context>

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

chown root.root access.xml artifactory.xml
chmod 644 access.xml artifactory.xml

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


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

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

<Context docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false">
</Context>

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

sudo mkdir /usr/share/artifactory
sudo chown tomcat.tomcat /usr/share/artifactory

tomcat8.conf

添加(或修改)以下行:

JAVA_OPTS="-Dartifactory.home=/usr/share/artifactory -Djfrog.access.home=/usr/share/artifactory/access -Dartifactory.access.client.serverUrl.override=http://localhost:8080/access"

注意:上面指定的Access Client URL必须使用 localhost ,以避免Server HTTP参数被Apache及其模块覆盖。例如,如果我使用:

https://repo.mydomain.org/access/api/v1/system/ping

响应中的Server HTTP标头值为:

Server: Apache/2.4.33 (Amazon) OpenSSL/1.0.2k-fips mod_jk/1.2.43

并且Access Client产生以下异常:

[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 Client取决于服务器标头中与#.#.#匹配的第一个字符串。这似乎是Access Client的一个非常脆弱的部分。他们应该使用X-JFrog-Access-Server之类的东西而不是尝试控制Web服务器设置的值。因此,重申一下,请使用http://localhost:8080/access直接连接到tomcat服务器。


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

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中添加或修改以下行:

shared.loader=${catalina.home}/shared/*.jar

因为我们希望https://repo.mydomain.org进入Artifactory网络应用程序:

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

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

sudo chkconfig httpd on
sudo chkconfig tomcat8 on