Difference between revisions of "Third-party software integration: Apache"

From OpenKM Documentation
Jump to: navigation, search
Line 32: Line 32:
 
</source>
 
</source>
  
If you don't want to show the '''/OpenKM''' context, try to add this to your VirtuaHost configuration:
+
If you don't want to show the '''/OpenKM''' context, try this as your VirtualHost configuration:
  
 
<source lang="apache">
 
<source lang="apache">
RewriteEngine on
+
<VirtualHost *>
RewriteCond %{REQUEST_URI} /OpenKM*
+
  ServerName openkm.your-domain.com
RewriteRule ^(/.*)$ http://127.0.0.1:8080$1 [P]
+
  ProxyPass ajp://127.0.0.1:8009/OpenKM
ProxyPassReverse / http://127.0.0.1:8080/
+
  ProxyPassReverse http://openkm.your-domain.com/OpenKM
 +
  ErrorLog /var/log/<your-domain>.com-error.log
 +
  CustomLog /var/log/<your-domain>.com-access.log combined
 +
 
 +
  RewriteEngine on
 +
  RewriteCond %{REQUEST_URI} /OpenKM*
 +
  RewriteRule ^(/.*)$ http://127.0.0.1:8080$1 [P]
 +
  ProxyPassReverse / http://127.0.0.1:8080/
 +
</VirtualHost>
 
</source>
 
</source>
  

Revision as of 21:02, 10 January 2011

Expose OpenKM directly from JBoss can be dangerous if you need the application to be accessed from Internet. Also this 8080 may be closed by a firewall. For these reasons, is a good idea expose your OpenKM installation through the standard web port 80. In the following steps we explain how to configure Apache to handle these request and forward to JBoss application server using the AJP13 protocol.

From the Apache documentation: The AJP13 protocol is packet-oriented. A binary format was presumably chosen over the more readable plain text for reasons of performance. The web server communicates with the servlet container over TCP connections. To cut down on the expensive process of socket creation, the web server will attempt to maintain persistent TCP connections to the servlet container, and to reuse a connection for multiple request/response cycles.

The first thing in to install the required Apache software. From Debian / Ubuntu you can install Apache with a single command:

$ sudo aptitude install apache2

Edit the file called /etc/apache2/apache2.conf and configure a ServerName to prevent warnings in the Apache startup process:

ServerRoot "/etc/apache2"
ServerName "your-domain.com"

Enable the proxy module, needed to forward petitions to JBoss:

$ sudo a2enmod proxy_ajp

Now create the configuration file /etc/apache2/sites-available/openkm.conf with this content:

<VirtualHost *>
    ServerName openkm.your-domain.com
    RedirectMatch ^/$ /OpenKM
    <Location /OpenKM>
        ProxyPass ajp://127.0.0.1:8009/OpenKM
        ProxyPassReverse http://openkm.your-domain.com/OpenKM
    </Location>
    CustomLog /var/log/apache2/openkm-access.log combined
</VirtualHost>

If you don't want to show the /OpenKM context, try this as your VirtualHost configuration:

<VirtualHost *>
  ServerName openkm.your-domain.com
  ProxyPass ajp://127.0.0.1:8009/OpenKM
  ProxyPassReverse http://openkm.your-domain.com/OpenKM
  ErrorLog /var/log/<your-domain>.com-error.log
  CustomLog /var/log/<your-domain>.com-access.log combined
  
  RewriteEngine on
  RewriteCond %{REQUEST_URI} /OpenKM*
  RewriteRule ^(/.*)$ http://127.0.0.1:8080$1 [P]
  ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

Nota advertencia.png If after restart Apache you see a warning like:
[warn] NameVirtualHost *:80 has no VirtualHosts
you have to change the virtual host definition from <VirtualHost *> to <VirtualHost *:80>

The VirtualHost ServerName must be other than ServerName in the main Apache configuration. Enable this site configuration:

$ sudo a2ensite openkm.conf

You have to enable explicity the proxy access editing the Apache configuration file /etc/apache2/mods-available/proxy.conf:

<IfModule mod_proxy.c>
  #turning ProxyRequests on and allowing proxying from all may allow
  #spammers to use your proxy to send email.

  ProxyRequests Off

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
    Deny from all
    #Allow from .example.com
  </Proxy>

  # Enable/disable the handling of HTTP/1.1 "Via:" headers.
  # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
  # Set to one of: Off | On | Full | Block

  ProxyVia On
</IfModule>

Finally restart Apache:

$ sudo /etc/init.d/apache2 restart

Now you can access your OpenKM installation from http://openkm.your-domain.com/. Another advantage of using Apache is that you can log OpenKM access and generate web statistics.

For more info, visit: