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/tomcatn/webappsdirectory. - Tomcat should automatically extract the WAR file. If not, restart Tomcat.
- At this point, you may find that a
datadirectory 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-INFdirectory:- Open the
xwiki.propertiesfile and alter theenvironment.permanentDirectoryfield to read/var/lib/tomcatn/data/xwiki. - Open the
hibernate.cfg.xmlfile 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.
- Open the
- 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
/xwikiin 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
xwikiconfiguration 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-enableddirectoryln -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
Hostelement and alter thenameattribute to readxwiki. - Alter the
appBaseattribute to read/var/lib/tomcat7/webapps-xwiki. - Move the
xwikiapplication from/var/lib/tomcat7/webapps/xwikito/var/lib/tomcat7/webapps-xwiki/ROOT. - Restart Tomcat
- Add
xwikias 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.