XWiki - ArchWiki

Jump to content
Toggle the table of contents

# XWiki

1 language

- 日本語

From ArchWiki

XWiki is an open-source enterprise-ready wiki written in Java, with a focus on extensibility.

## Installation

Feel free to follow along on the XWiki Installation Guide[dead link 2024-01-13 ⓘ]. These instructions assume you will be using Tomcat and PostgreSQL. It should not be too difficult to apply these guidelines to other combinations.

- Install PostgreSQL.
- For easier PostgreSQL administration, install phpPgAdmin.
- Install tomcat. (Do not forget tomcat-native.)
- Download the XWiki WAR file.
- Rename the WAR file to `xwiki`.
- Move the WAR file into the `/var/lib/tomcatn/webapps` directory.
- Tomcat should automatically extract the WAR file. If not, restart Tomcat.
- At this point, you may find that a `data` directory has appeared in `/var/lib/tomcatn/webapps`. Delete it.
- As root:

    # cd /var/lib/tomcatn
    # mkdir data
    # chown tomcatn:tomcatn data

- Inside the `/var/lib/tomcatn/webapps/xwiki/WEB-INF` directory:
  - Open the `xwiki.properties` file and alter the `environment.permanentDirectory` field to read `/var/lib/tomcatn/data/xwiki`.
  - Open the `hibernate.cfg.xml` file and:
    - Comment-out the section entitled "Configuration for the default database".
    - Uncomment the section entitled "PostgreSQL Configuration".
    - Modify the database name (in `connection.url`), username, and password as desired.
- Create a role and database in PostgreSQL to match the hibernate configuration.
- Install postgresql-jdbcAUR from the Arch User Repository.
- As root:

    # cd /usr/share/java/tomcatn
    # ln -s /usr/share/java/postgresql-jdbc/postgresql-jdbc41.jar

- Restart `tomcatn.service`.
- Launch the XWiki application by clicking on `/xwiki` in Tomcat Manager.
- The XWiki is started with XWiki Wizard Guide to finish your configuration.

## Nginx proxy configuration - Solution 1

The official Nginx guide for XWiki is not correct. There is an alternative solution which works for XWiki.

- Configure nginx site `xwiki` configuration file.

    /etc/nginx/sites-available/xwiki

    server {
      listen 80 default_server;
      server_name xwiki.<domain-name>;
      return 301 https://$host$request_uri;
    }

    server {
      listen [::]:443 ssl;
      listen 443 ssl;

      server_name xwiki.<domain-name>;

      # SSL Certificate section
      ssl_certificate ...
      ssl_certificate_key ...

      location = / {
        return 301 https://$host/xwiki;
      }

      location /xwiki {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $host;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection 'upgrade';
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-Host $host;
        proxy_set_header   X-Forwarded-Server $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_pass         http://127.0.0.1:8080/xwiki;
      }
    }

- Activate a server block in `sites-enabled` directory `ln -s /etc/nginx/sites-available/xwiki /etc/nginx/sites-enabled/xwiki`.
- Restart Nginx.

## Nginx proxy configuration - Solution 2

I found that instructing nginx to proxy to `http://localhost:8080/xwiki/` did not work: the generated URLs were incorrect. Contrary to what is indicated in the XWiki documentation[dead link 2024-01-13 ⓘ], I could not make the URLs correct through the use of HTTP headers.

The only solution I'm aware of so far is to create a new `Host` element in Tomcat's `server.xml` file:

- Duplicate the existing `Host` element and alter the `name` attribute to read `xwiki`.
- Alter the `appBase` attribute to read `/var/lib/tomcat7/webapps-xwiki`.
- Move the `xwiki` application from `/var/lib/tomcat7/webapps/xwiki` to `/var/lib/tomcat7/webapps-xwiki/ROOT`.
- Restart Tomcat
- Add `xwiki` as an alias to localhost in `/etc/hosts` (add it to the end of the 127.0.0.1 line).
- Instruct Nginx to proxy to `http://xwiki:8080/` instead.

Categories:

- Wiki software
- Web applications

Hidden category:

- Pages with dead links