From 9e736319705ab578131ac1accb828418e4c83304 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 6 Mar 2014 17:36:58 -0500 Subject: [PATCH] LP#1268619: websockets: config continued Signed-off-by: Bill Erickson --- README.websockets | 50 ++++------------- .../websockets/{websockets.conf => apache2.conf} | 62 ++++++++++++++++------ examples/apache2/websockets/ports.conf | 13 ----- 3 files changed, 56 insertions(+), 69 deletions(-) rename examples/apache2/websockets/{websockets.conf => apache2.conf} (58%) delete mode 100644 examples/apache2/websockets/ports.conf diff --git a/README.websockets b/README.websockets index a2a60d2..2ad3522 100644 --- a/README.websockets +++ b/README.websockets @@ -1,55 +1,27 @@ - -Websockets installation instructions for Debian: +Websockets installation instructions for Debian # TODO: Most of this can be scripted. -# TODO: Better handling of external dependencies (websocket_plugin.h). # ! as root ! # Perform these steps after installing OpenSRF. -# create the websocket Apache instance -# see also /usr/share/doc/apache2/README.multiple-instances -% sh /usr/share/doc/apache2.2-common/examples/setup-instance websockets - -# update configs -% cp examples/apache2/websockets/websockets.conf /etc/apache2-websockets/sites-available/ -% cp examples/apache2/websockets/ports.conf /etc/apache2-websockets/ - -# activate the websockets configuration -% a2ensite-websockets websockets.conf - -# deactivate the default site -% a2dissite-websockets default - -# remove most of the mods with this shell script -# you may have to do this twice, depending on the order in which -# they are removed. (Some modules rely on other modules). - -MODS=$(apache2ctl-websockets -M | grep shared | grep -v 'Syntax OK' | sed 's/_module//g' | cut -d' ' -f2 | xargs); -for mod in $MODS; do - if [ $mod = 'mime' -o $mod = 'ssl' -o $mod = 'websocket' ]; then - echo "* Leaving module $mod in place"; - else - echo "* Disabling module $mod"; - a2dismod-websockets $mod; - fi; -done - -# follow the instructions for installing Apache mod_websockets at -# https://github.com/disconnect/apache-websocket - # install the apache-websocket module % cd tmp # or wherever % git clone https://github.com/disconnect/apache-websocket % cd apache-websocket % apxs2 -i -a -c mod_websocket.c +# create the websocket Apache instance +# see also /usr/share/doc/apache2/README.multiple-instances +% sh /usr/share/doc/apache2.2-common/examples/setup-instance websockets + # remove from the main apache instance % a2dismod websocket -# add to the websocket instance -% a2enmod-websockets websocket -# OPTIONAL: add these configuration variables to +# update configs +% cp OpenSRF/examples/apache2/websockets/apache2.conf /etc/apache2-websockets/ + +# OPTIONAL: add these configuration variables to # /etc/init.d/apache2-websockets/envvars and adjust as needed. # export OSRF_WEBSOCKET_IDLE_TIMEOUT=60 # export OSRF_WEBSOCKET_IDLE_CHECK_INTERVAL=5 @@ -58,7 +30,7 @@ done # # IDLE_TIMEOUT specifies how long we will allow a client to stay connected # while idle. A longer timeout means less network traffic (from fewer -# websocket CONNECT calls), but it also means more Apache processes are +# websocket CONNECT calls), but it also means more Apache processes are # tied up doing nothing. # # IDLE_CHECK_INTERVAL specifies how often we wake to check the idle status @@ -72,5 +44,3 @@ done # fire up the secondary Apache instance errors will appear in # /var/log/apache2-websockets/error.log % /etc/init.d/apache2-websockets start - - diff --git a/examples/apache2/websockets/websockets.conf b/examples/apache2/websockets/apache2.conf similarity index 58% rename from examples/apache2/websockets/websockets.conf rename to examples/apache2/websockets/apache2.conf index 6b8433a..0aaca73 100644 --- a/examples/apache2/websockets/websockets.conf +++ b/examples/apache2/websockets/apache2.conf @@ -1,19 +1,47 @@ -# :vim set syntax apache -# -# This is the top-level configuration file for the -# apache2-websockets instance. For example, in Debian -# this file lives in /etc/apache2-websockets/sites-available/ - -LogLevel info -# - log locally -CustomLog /var/log/apache2-websockets/access.log combined -ErrorLog /var/log/apache2-websockets/error.log -# Add the PID to the error log (Apache 2.4 only) -# ErrorLogFormat "[%t] [%P] [%l] [pid %P] %F: %E: [client %a] %M" - -# ---------------------------------------------------------------------------------- -# Set up our SSL virtual host -# ---------------------------------------------------------------------------------- +# This is the main Apache server configuration file for the OpenSRF +# WebSockets gateway. + +# if we don't want to run as "opensrf", change the LockFile +LockFile ${APACHE_LOCK_DIR}/accept.lock +PidFile ${APACHE_PID_FILE} +User ${APACHE_RUN_USER} +Group ${APACHE_RUN_GROUP} + +DefaultType None +HostnameLookups Off +ErrorLog ${APACHE_LOG_DIR}/error.log +LogLevel warn + +# only affects the initial connection, which should be quick. +Timeout 30 + +# WebSockets is KeepAlive on steroids +KeepAlive Off + + + StartServers 5 + MinSpareServers 5 + MaxSpareServers 20 + # use ServerLimit to raise beyond 256 + MaxClients 256 + MaxRequestsPerChild 0 + + +# include the exact mods we need +Include mods-available/mime.load +Include mods-available/mime.conf +# SSL requires mime +Include mods-available/ssl.load +Include mods-available/ssl.conf +Include mods-available/websocket.load + +LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined +LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined +LogFormat "%h %l %u %t \"%r\" %>s %O" common +LogFormat "%{Referer}i -> %U" referer +LogFormat "%{User-agent}i" agent + +# WebSockets via SSL Listen 7682 NameVirtualHost *:7682 @@ -29,6 +57,7 @@ NameVirtualHost *:7682 SSLCertificateKeyFile /etc/apache2/ssl/server.key +# WebSockets via non-SSL Listen 7680 NameVirtualHost *:7680 @@ -37,6 +66,7 @@ NameVirtualHost *:7680 DocumentRoot /var/www +# OpenSRF WebSockets gateway SetHandler websocket-handler WebSocketHandler /usr/lib/apache2/modules/osrf_websocket_translator.so osrf_websocket_init diff --git a/examples/apache2/websockets/ports.conf b/examples/apache2/websockets/ports.conf deleted file mode 100644 index aaa4dd5..0000000 --- a/examples/apache2/websockets/ports.conf +++ /dev/null @@ -1,13 +0,0 @@ -# non-SSL websocket connections - -Listen 7680 - -# SSL websocket connections - - - Listen 7682 - - - - Listen 7682 - -- 2.11.0