AppSuite:Apache Configuration

From Open-Xchange

API status: In Development

Apache Configuration

To setup your development environment please follow these steps.

Setup build system

  1. Check out the UI from git
  2. Figure out Apache's document root. Common places are:
    MacOS: /Library/WebServer/Documents
    Linux: /var/www
  3. Create a new folder appsuite in Apache's document root
  4. You need node.js to build the UI. For MacOS (use /var/www instead of /Library/WebServer/Documents for debian).

Installing node.js

  1. Visit https://sites.google.com/site/nodejsmacosx/ and install stable version.
  2. Open terminal
  3. Set environment variable:
    export buildir="/Library/WebServer/Documents/appsuite"
  4. Build UI: ./build.sh
  5. Note: Instead of exporting the builddir every time your want to build the ui or run the appserver, you can also create a file local.conf and set the directory in there. This way, every time the buildsystem or appserver runs, it automatically picks up the correct directory.
    local.conf: export buildir="/Library/WebServer/Documents/appsuite"

AppServer

Run the app loading server: ./appserver.sh Don't worry: If it doesn't tell you anything it's happily running.

Apache config

Make sure Apache loads the following modules:
mod_proxy, mod_proxy_ajp, mod_expires, mod_deflate, mod_rewrite, mod_headers, mod_mime, and mod_setenvif

Tell your Apache to process .htaccess files and how to connect to backend:

ProxyPass /appsuite/api/apps/load/ http://localhost:8337/apps/load/
ProxyPass /appsuite/api ajp://127.0.0.1:8009/ajax 
# optional parameters: retry=0 connectiontimeout=5 timeout=10

<Directory /Library/WebServer/Documents/appsuite>
  Options None +FollowSymLinks
  AllowOverride Indexes FileInfo
</Directory>

Use the proper document root depending on your OS or custom configuration! If backend does not run on localhost (127.0.0.1), you have to adjust the ProxyPass directive.

Restart Apache, e.g. sudo apachectl restart. And please double check everything you're doing!

Setup SSL support on MacOS

Based on: http://webdevstudios.com/2013/05/24/how-to-set-up-ssl-with-osx-mountain-lions-built-in-apache/

  • Open terminal and go to /private/etc/apache2
  • Become root: sudo su
  • mkdir ssl
  • Open the httpd.conf file in your text editor
    • Make sure the SSL module is enabled if it’s not. Do this by uncommenting (aka, remove the ‘#’ symbol in front) the line that looks like: LoadModule ssl_module libexec/apache2/mod_ssl.so
    • In the same file search for and uncomment (remove the #) this line: Include /private/etc/apache2/extra/httpd-ssl.conf
    • Save and close.
  • Now open the httpd-ssl.conf file in your text editor
    • Make sure ServerName line looks like: ServerName localhost
    • Modify ServerAdmin line to use one of your email addresses
    • SSLCertificateFile "/private/etc/apache2/ssl/ssl.crt"
    • SSLCertificateKeyFile "/private/etc/apache2/ssl/ssl.key"
    • In the same file comment out (add a # to the beginning of the line) the SSLCACertificatePath and SSLCARevocationPath lines if they’re not already.
    • Save and close.
  • Now go to folder /private/etc/apache2/ssl
    • openssl genrsa -des3 -out server.key 1024
      Pass-phrase can be anything stupid, we'll remove it
    • openssl req -new -key server.key -out server.csr
    • cp server.key server.key.org
      openssl rsa -in server.key.org -out server.key
    • openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  • Restart apache: apachectl restart