XWiki

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
.  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/tomcat
n
/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/tomcat
n
/webapps
. Delete it.
As root:
# cd /var/lib/tomcat
n
# mkdir data
# chown tomcat
n
:tomcat
n
data
Inside the
/var/lib/tomcat
n
/webapps/xwiki/WEB-INF
directory:
Open the
xwiki.properties
file and alter the
environment.permanentDirectory
field to read
/var/lib/tomcat
n
/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-jdbc
AUR
from the
Arch User Repository
.
As root:
# cd /usr/share/java/tomcat
n
# ln -s /usr/share/java/postgresql-jdbc/postgresql-jdbc41.jar
Restart
tomcat
n
.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
, 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.