/ nginx

Confluence NGINX Installation

Mit diesem kleinen Guide könnt ihr Confluence hinter einem NGINX Server installieren.
Ein Grund dafür ist die bessere Performance von NGINX gegenüber Apache.

Confluence herunterladen, ausführbar machen und den Installer starten. x.x.x.x mit der jeweiligen Version ersetzen, die Installiert werden soll. Den Installer gibt es hier.

cd /tmp 
wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-x.x.x-x64.bin 
chmod a+x atlassian-confluence-x.x.x.x64.bin 
./atlassian-confluence-x.x.x.x64.bin 

Es folgt ein Installer.
Die Default-Settings sind OK.

See where Confluence will be installed and the settings that will be used.
Installation Directory:/opt/atlassian/confluence 
Home Directory: /var/atlassian/application-data/confluence 
HTTP Port: 8090 
RMI Port: 8000 
Install as service: Yes

Läuft alles glatt, quittiert Confluence den Installationsvorgang mit dieser Meldung:

Please wait a few moments while Confluence starts up.
Launching Confluence ...
Installation of Confluence 5.9.7 is complete
Your installation of Confluence 5.9.7    is now ready and can be accessed via your browser.
Confluence 5.9.7 can be accessed at http://localhost:8090

Datenbank konfigurieren

Die Datenbank benötigt einige Optimierungen für Confluence.

vim /etc/mysql/my.cnf  

hinzufügen:

[mysqld]
# added for confluence
character-set-server    = utf8
collation-server        = utf8_bin
default-storage-engine  = INNODB
# innodb_log_file_size  = 2048M
# end added for confluence 

Den Wert von max_allowed_packet erhöhen:

 max_allowed_packet      = 256M

Datenbank für Confluence erstellen

mysql -u root -p
CREATE DATABASE confluence CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON confluence.* TO 'confluenceuser'@'localhost' IDENTIFIED BY '{YOURPASSWORD}';

Confluence Datenbank-Treiber installieren

Möchte man z.B. MySQL nutzen, muss man nun noch einen Datenbank-Treiber bereitstellen. Die Treiber gibt es leider nicht bei Atlassian (die Dokumentation ist an dieser Stelle arg outdated und verwirrend).

Den Connector/J 5.1.38 direkt von mysql.com beziehen: hier und an die richtige[1] Stelle extrahieren / kopieren.

wget http://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.38.tar.gz  
mv mysql-connector-java-5.1.38.tar.gz     /opt/atlassian/confluence/confluence/WEB-INF/lib
cd /opt/atlassian/confluence/confluence/WEB-INF/lib 
tar -zxvf mysql-connector-java-5.1.38.tar.gz mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar  
mv mysql-connector-java-5.1.38/mysql-connector-java-5.1.38-bin.jar . 
rm /opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.38.tar.gz 
rm -rf /opt/atlassian/confluence/confluence/WEB-INF/lib/mysql-connector-java-5.1.38 

Nun Confluence im Browser öffnen localhost:8090 und mit dem Installer weiterarbeiten. Am Besten nun Production Install wählen.

Dem Database-Setup Assistenten folgen. Es ist meist OK, die JDBC Datasource Connection zu wählen.
Confluence Database Setup Direct JDBC Connection

WIRKLICH LANGE WARTEN

An dieser Stelle habe ich ziemlich viel Zeit verloren, da der DB-Setup-Vorgang eine halbe Ewigkeit dauerte und die Logfile bereits einen Timeout zum Vorschein brachte.

NGINX Proxy vor Confluence schalten

Zunächst in der Datei <CONFLUENCE-INSTALL>/conf/server.xml diese Einstellung in den Connector schreiben (z.B. ganz am Ende anhängen).

proxyName="confluence.{YOURHOSTNAME}.de" proxyPort="80"

und Confluence neu starten.

NGINX Proxy Config

In /etc/nginx/sites-available/default diese Zeilen einfügen. Den Rest löschen (bei Setup, in dem man nur Confluence auf der Maschine haben möchte).

server {
    listen 0.0.0.0:80;
    server_name confluence.{YOURHOSTNAME}.de;
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8090/;
    }
}

Der Symlink sollte schon da sein. Falls nicht:

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default 

Danach NGINX neu starten.

NGINX Proxy Timeout Increase

In /etc/nginx/nginx.conf hinzufügen:

##
# Proxy Timeout Increase 
## 
proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600;

NGINX Confluence Post Size erhöhen

Da wir schon da sind, können wir auch gleich die maximale Größe der Dateien, die Confluence per POST-Request erhalten kann, erhöhen (z.B. auf 25MB).

## 
# POST size increase 
## 
client_max_body_size	    25M;

Fehgeschlagene Installation fixen

Es kann sein, dass eine Installation nicht sauber durchläuft und man von vorne starten muss. Meckert der Confluence Installer dann über sich in Benutzung befindende Ports, muss man die darauf zugreifenden Prozesse killen.

The following default options cannot be used. You will be asked to provide alternatives for these options.

  • HTTP Port (In use)
  • Control Port (In use)

Herausfinden, was auf dem Port läuft:

 lsof -i:8000 -t 
 #kill it 

Nützliche Commands

Die Logfiles befinden sich an dieser Stelle (default):

/opt/atlassian/confluence/logs/catalina.out


  1. Es ist sehr schlecht von Atlassian dokumentiert; der Pfad ist tatsächlich wie angegeben (2x /confluence/) ↩︎