我设法使用我们现有的tomcat设置了artifactory。我已经设置为ARTIFACTORY_HOME=/opt/artifactory,这部分工作得很好。但是,还有jfrog access.war文件,它也需要运行。我不知道使用哪个变量来指定它的主目录,因此它默认为~/.jfrog_access,这并不是我喜欢的。
我将内容移到我的$ARTIFACTORY_HOME/access上,并对其进行符号链接,但这并不是确定的方法。感谢您的帮助。
发布于 2018-02-14 18:40:18
以防有人在这个帖子上跌跌撞撞,并为同样的问题而苦苦挣扎:
我的解决方案是将上下文文件(<zip extract>/misc/tomcat下的压缩文件中的access.xml和artifactory.xml )解压到Tomcat文件夹,例如$CATALINA_HOME/conf/Catalina/localhost/。之后,$ARTIFACTORY_HOME环境将在Access启动时被识别。
发布于 2018-08-18 23:30:24
一个previous answer终于让我走上了在Amazon Linux上解决这个问题的正确道路。
除了将access.xml和artifactory.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>重要说明:为了防止Tomcat Manager在通过Undeploy/Deploy WAR进行升级时删除上述两个XML文件,请确保它们归root所有,tomcat用户不可写:
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.war和artifactory.war
<Context docBase="${catalina.home}/webapps/manager" privileged="true" antiResourceLocking="false">
</Context>此外,我还创建了以下文件夹作为artifactory.home
sudo mkdir /usr/share/artifactory
sudo chown tomcat.tomcat /usr/share/artifactorytomcat8.conf
添加(或修改)以下行:
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及其模块覆盖。例如,如果我使用:
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访问客户端产生以下异常:
[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中:
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 we应用程序:
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然后可以在url上找到Artifactory:
https://repo.mydomain.org/artifactory/webapp/https://stackoverflow.com/questions/47143199
复制相似问题