NGINX Unit

Jira§

注意

此操作方法使用 8.19.1 版本;其他版本可能具有不同的依赖项和选项。

要使用 Unit 运行 Atlassian Jira

  1. 使用 Java 语言模块安装 Unit

  2. 安装 Jira 的 核心文件。在此,我们将其安装在 /path/to/app/;在配置中使用真实路径。

    例如

    $ cd /path/to/app/
    $ curl https://www.atlassian.com/software/jira/downloads/binary/atlassian-jira-software-8.19.1.tar.gz -O -C -
    $ tar xzf atlassian-jira-core-8.19.1.tar.gz --strip-components 1
    
  3. 将 Jira 的第三方依赖项下载到 lib 子目录

    $ cd lib/
    $ curl https://github.com/mar0x/unit-transaction-init/releases/download/2.0/transaction-init-2.0.jar -O -C -
    $ curl https://repo1.maven.org/maven2/com/atomikos/atomikos-util/5.0.8/atomikos-util-5.0.8.jar -O -C -
    $ curl https://repo1.maven.org/maven2/com/atomikos/transactions-api/5.0.8/transactions-api-5.0.8.jar -O -C -
    $ curl https://repo1.maven.org/maven2/com/atomikos/transactions-jdbc/5.0.8/transactions-jdbc-5.0.8.jar -O -C -
    $ curl https://repo1.maven.org/maven2/com/atomikos/transactions-jta/5.0.8/transactions-jta-5.0.8.jar -O -C -
    $ curl https://repo1.maven.org/maven2/com/atomikos/transactions/5.0.8/transactions-5.0.8.jar -O -C -
    $ curl https://repo1.maven.org/maven2/javax/transaction/jta/1.1/jta-1.1.jar -O -C -
    $ curl https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-jndi/11.0.6/jetty-jndi-10.0.6.jar -O -C -
    $ curl https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-plus/11.0.6/jetty-plus-10.0.6.jar -O -C -
    $ curl https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-util/11.0.6/jetty-util-10.0.6.jar -O -C -
    

    稍后,这些 .jar 文件将列在 Unit 配置的 classpath 选项中。

  4. 修补 Jira 配置,从 comp/env/UserTransaction 对象路径中删除 env。这可确保安装找到 UserTransaction 对象

    $ cd /path/to/app/
    $ sed -i 's#comp/env/UserTransaction#comp/UserTransaction#g'  \
          atlassian-jira/WEB-INF/classes/entityengine.xml
    
  5. 运行以下命令,以便 Unit 可以访问 应用目录

    # chown -R unit:unit /path/to/app/
    

    注意

    unit:unit 用户组对仅适用于 官方包、Docker 镜像 和一些 第三方仓库。否则,帐户名称可能有所不同;运行 ps aux | grep unitd 命令以确保。

    有关更多详细信息,包括权限,请参见安全检查清单

  6. 接下来,组合Jira 配置(对working_directoryjira.home使用真实值)

    {
        "listeners": {
            "*:80": {
                "pass": "applications/jira"
            }
        },
    
        "applications": {
            "jira": {
                "type": "java",
                "working_directory": "/path/to/app/",
                "webapp": "atlassian-jira",
                "options": [
                    "-Djava.awt.headless=true",
                    "-Djavax.accessibility.assistive_technologies= ",
                    "-Djira.home=/path/to/jira/home/",
                    "-Dnginx.unit.context.listener=nginx.unit.TransactionInit",
                    "-Xms1024m",
                    "-Xmx1024m"
                ],
                "classpath": [
                    "lib/atomikos-util-5.0.8.jar",
                    "lib/hsqldb-1.8.0.10.jar",
                    "lib/jcl-over-slf4j-1.7.30.jar",
                    "lib/jetty-jndi-10.0.6.jar",
                    "lib/jetty-plus-10.0.6.jar",
                    "lib/jetty-util-10.0.6.jar",
                    "lib/jta-1.1.jar",
                    "lib/log4j-1.2.17-atlassian-3.jar",
                    "lib/slf4j-api-1.7.30.jar",
                    "lib/slf4j-log4j12-1.7.30.jar",
                    "lib/transaction-init-2.0.jar",
                    "lib/transactions-5.0.8.jar",
                    "lib/transactions-api-5.0.8.jar",
                    "lib/transactions-jdbc-5.0.8.jar",
                    "lib/transactions-jta-5.0.8.jar"
                ]
            }
        }
    }
    

    有关详细信息,请参见Java 应用程序选项

    注意

    由于 Jira 自身的限制,您无法在启动后在 Unit 中更新配置。

  7. 上传更新后的配置。假设上述 JSON 已添加到config.json

    # curl -X PUT --data-binary @config.json --unix-socket \
           /path/to/control.unit.sock http://localhost/config/
    

    注意

    控制套接字路径可能有所不同;运行unitd -h或参见启动和关闭以了解详细信息。

    成功更新后,应可在侦听器的 IP 地址和端口上使用 Jira。浏览至http://localhost/jira以在浏览器中继续设置

    Jira on Unit - Setup Screen