Apache Archiva是个开源的Artifact Repository。 网上关于Archiva的文档并不太多,因此我在安装过程中遇到一些麻烦。在此记录下解决问题的过程。

安装Archiva

我们计划将其安装成Linux service,而且尽可能保持数据和代码分开。 首先从下载页面下载Archiva Standalone,然后解压。

解压之后获得个名为apache-archiva-2.2.3的目录,将其移动到/opt并改名为/opt/archiva

接下来要建立archiva用户:

$ sudo useradd archiva

修改/opt/archiva的拥有者为archiva:

$ sudo chown -R archiva.archiva /opt/archiva

接下来,根据Archiva的安装文档, 我们要建立运行目录:

$ cd /var
$ sudo mkdir archiva
$ cd archiva
$ sudo mkdir logs data temp conf
$ sudo cp /opt/archiva/conf/* /var/archiva/conf/
$ cd /var/
$ sudo chown -R archiva.archiva archiva

接下来需要复制启动脚本到/etc/init.d并做相应修改:

$ sudo cp /opt/archiva/bin/archiva /etc/init.d
$ sudo vi /etc/init.d/archiva

BASEDIR=/opt/archiva                        # 用这一行替换脚本里猜测BASEDIR的代码
DATADIR=/var/archiva                        # 增加这一行
WRAPPER_CMD="$BASEDIR/bin/wrapper"          # 重要!不然启动脚本找不到archiva的命令
WRAPPER_CONF="$DATADIR/conf/wrapper.conf"   # 重要!否则archiva找不到正确的配置
PIDDIR="$DATADIR/logs"
RUN_AS_USER=archiva                         # 重要!不要用root运行

接下来还有最后一步: 修改/var/archiva/conf/wrapper.conf

set.default.ARCHIVA_BASE=/var/archiva

这样archiva就能正常运行了。测试一下:

$ sudo /etc/init.d/archiva console

最后将其设置为自动启动:

$ sudo update-rc.d archiva defaults 80

修改端口号,以及nginx配置

Archiva的默认端口号是8080,如果与其他服务有冲突,可以修改/var/archiva/conf/jetty.xml中的配置:

<Call name="addConnector">
    <Arg>
        <New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
        ...
            <Set name="port"><SystemProperty name="jetty.port" default="8081"/></Set>

最后添加Nginx代理:

upstream artifacts_server {
    server 127.0.0.1:8081 fail_timeout=0;
}

server {
    listen 80;
    server_name artifacts.idv2.com;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://artifacts_server;
            break;
        }
    }
}

然后登录到archiva中,选择”UI Configuration”并设置Application URL为实际的地址。

配置SSL

certbot可以很方便地给nginx添加SSL设置。SSL添加完成之后, 需要打开/var/archiva/conf/archiva.xml,找到<rest><baseUrl></baseUrl></rest>配置项, 设置baseUrl为实际的https地址。否则Web界面无法正常显示。(来源)