Xebra Installation
About | Installation | Documentation | Tutorials | Frequently Asked Questions
Contents
Installations
There are two ways to install Xebra:
- Automatic
- A script for Ubuntu 9.04 that sets up xebra and also installs apache
- A Windows Installer that contains xebra and apache and sets it up
- Manual (Step-by-step guide)
- Ubuntu 9.04 with Apache
- Windows with Apache
- Windows with IIS7
A few notes
- All of xebra is compiled with the -experiment option. We haven't tested to compile anything in non-experimental mode.
- Currently (rev 80407), for all types of installation you have to adapt a files in ISE_LIBRARY to make it work since there is a bug in the eiffel argument parser library: In the class ISE_EIFFEL/experimental/library/argument_parser/parsers/argument_base_parser.e in the feature arguments: ARRAY [STRING] replace the line
create Result.make (1, l_result.count)
with
create Result.make_filled ("", 1, l_result.count)
Ubuntu Installation Script
Note: This script was tested with Xebra revision 80408, EiffelStudio 6.5.8.294 and Ubuntu 9.04
Run this script (the current revision): https://svn.eiffel.com/eiffelstudio/trunk/Src/framework/web/xebra/tools/scripts/linux/install_xebra_ubuntu.sh
The script expects $XEBRA_DEV, $ISE_EIFFEL and $ISE_LIBRARY to be set. It uses svn, wget and vim. Also make sure you add the eiffelstudio bin folder to your PATH.
The script will checkout xebra to $XEBRA_DEV, compile the server and translator, download, install and configure apache to $XEBRA_DEV/apache. Apache will be configured to listen on port 55000 (instead of 80) in order to not interfere with an already installed http server. After the script was successfully run you need to set $XEBRA_LIBRARY to $XEBRA_DEV/library.
To test you installation run
$XEBRA_DEV/bin/launch_apache.sh $XEBRA_DEV/bin/launch_server.sh
and then browse to
http://localhost:55000/helloworld
Windows Installer (NEW)
Note: This installer was tested with Xebra revision 80407, EiffelStudio 6.5.8.294, on Windows XP SP2
Runs the installer at:
To test your installation click "Launch Xebra Full" in the "Eiffel Xebra" folder in your start menu. This will launch apache and the xebra server and it will open "localhost:55000/helloworld" in your browser. The server will then start compiling the xebra precompile library and generate the helloworld webapp. It can take a minute to do so the first time. While compiling you will see a page saying "Application 'helloworld' is compiling...". After a while hit F5 and you should see "Hello WORLD!" (or "Hello world!").
Manual Installation
This guide expects Eiffel Studio to be installed to $ISE_EIFFEL and the source to be checked out to $EIFFEL_SRC (only the folder 'framework' is needed).
Checkout Xebra
- Define $XEBRA_DEV and checkout xebra from https://svn.eiffel.com/eiffelstudio/trunk/Src/framework/web/xebra/ to $XEBRA_DEV
- Define $XEBRA_LIBRARY to $XEBRA_DEV/eiffel_projects/library
Install HTTP Server
Ubuntu 9.04 with Apache 2.2.11
Note:
- Mod_xebra does currently not run with the apache distribution that comes with ubuntu.
- Download apache unix source from http://httpd.apache.org/download.cgi
- Extract
- Define $APACHE2 where you want to install apache, e.g. to $XEBRA_DEV/apache
- Run the following commands in the extracted folder:
CFLAGS="-ggdb" ./configure --prefix=$APACHE2 make make install
- Compile the module by running
cd $XEBRA_DEV/c_projects/apache_mod_xebra $APACHE2/bin/apxs -c mod_xebra.c mod_xebra.h
- Install the module to apache by running
$APACHE2/bin/apxs -i mod_xebra.la
- Add the following lines to $APACHE2/conf/httpd.conf:
#Xebra Module LoadModule xebra_module modules/mod_xebra.so <IfModule xebra_module> AddHandler mod_xebra .xeb AddHandler mod_xebra .xrpc XebraServer_port 55001 XebraServer_host "127.0.0.1" XebraServer_max_upload_size 10000000 XebraServer_upload_path "/tmp" DirectoryIndex index.xeb <Files ~ "\.(ini|e|ecf)$"> Order allow,deny Deny from all </Files> <Directory ~ "EIFGENs"> Order allow,deny Deny from all </Directory> </IfModule>
- Also in httpd.conf, change DocumentRoot to {path to xebra}\www and don't forget the directory options below the line # This should be changed to whatever you set DocumentRoot to.
- Create the directory /tmp or choose another temp upload directory.
- Restart apache
$APACHE2/bin/apachectl restart
- Browse to http://localhost/test.xeb. You should see a message saying Cannot connect to XebraServer. See apache error log.
- Hint: keep an eye on the apache error log
tail -f $APACHE2/logs/error_log
Windows with Apache 2.2.11
Note
- If mod_xebra.so was compiled with VS2008, it has a delay-load dependency on the Visual C++ 9.0 debug runtime library, msvcr90d.dll. This dll comes with Visual Studio 2008 C++ including the free Visual Studio 2008 C++ Express edition. This file can be copied in to the System32 directory. If this DLL is not found you will get an Apache error Cannot load C:/Xebra/httpd/modules/mod_xebra.so into server: This application has failed to start because the application configuration is incorrect.
- Download apache windows binary from http://httpd.apache.org/download.cgi
- Install (Choose Custom Installation and install Build Headers and Libraries as well)
- Copy $XEBRA_DEV/c_projects/apache_mod_xebra/mod_xebra.so to your Apache2.2\modules folder.
- Note: If you use a newer version of apache than 2.2.11 please compile mod_xebra yourself to avoid any possible errors, see Xebra Apache Module Windows.
- Add the following lines to Apache2.2\conf\httpd.conf:
#Xebra Module LoadModule xebra_module modules/mod_xebra.so <IfModule xebra_module> AddHandler mod_xebra .xeb AddHandler mod_xebra .xrpc XebraServer_port 55001 XebraServer_host "127.0.0.1" XebraServer_max_upload_size 10000000 XebraServer_upload_path "c:\tmp" DirectoryIndex index.xeb <Files ~ "\.(ini|e|ecf)$"> Order allow,deny Deny from all </Files> <Directory ~ "EIFGENs"> Order allow,deny Deny from all </Directory> </IfModule>
- Also in httpd.conf, change DocumentRoot to {path to xebra}\www and don't forget the directory options below the line # This should be changed to whatever you set DocumentRoot to.
- Create the directory c:\tmp or choose another temp upload directory.
- Restart Apache
- Browse to http://localhost/test.xeb. You should see the a message saying Cannot connect to XebraServer. See apache error log.
Windows with IIS7
- Open %XEBRA_DEV%\c_projects\iis_xebra_handler\XebraEventSourceInstaller\XebraEventSourceInstaller.sln in VS2008
- Compile and run (This will install the XebraHandler source to the Windows Event Log. This cannot be performed by the handler because it lacks permissions.)
- (Optional) Open %XEBRA_DEV%\c_projects\iis_xebra_handler\Xebra.sln in VS2008 and compile
- Create a new site in IIS and point it to %XEBRA_DEV%\www
- Copy %XEBRA_DEV%\c_projects\iis_xebra_handler\website\web.config to %XEBRA_DEV%\www
- Copy %XEBRA_DEV%\c_projects\iis_xebra_handler\website\bin to %XEBRA_DEV%\www
Mac OS X with Apache
Note:
- If you're using the version of EiffelStudio from MacPorts, environment variables must be set within the startup script. /Applications/MacPorts/Eiffel64/EiffelStudio/Contents/Resources/EiffelLauncher
- Save yourself a ton of hassle and just sudo chmod -R 777 * both the $ISE_EIFFEL and $EIFFEL_SRC directories.
- Get Apache V2 from Mac Ports
sudo port install apache2
- Copy $XEBRA_DEV/www/* to /opt/local/apache2/htdocs
- Compile the module by running
cd $XEBRA_DEV/c_projects/apache_mod_xebra sudo /opt/local/apache2/bin/apxs -c -Wc,-ggdb -I$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/include mod_xebra.c mod_xebra.h
- Install the module to apache by running
sudo /opt/local/apache2/bin/apxs -i mod_xebra.la
- Prepare to edit the protected httpd.conf file by running the command:
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit Within TextEdit, which now is running under sudo, open /opt/local/apache2/conf/httpd.conf
- Add the following lines to /opt/local/apache2/conf/httpd.conf:
#Xebra Module LoadModule xebra_module modules/mod_xebra.so <IfModule xebra_module> AddHandler mod_xebra .xeb AddHandler mod_xebra .xrpc XebraServer_port 55001 XebraServer_host "127.0.0.1" XebraServer_max_upload_size 10000000 XebraServer_upload_path "/tmp" DirectoryIndex index.xeb <Files ~ "\.(ini|e|ecf)$"> Order allow,deny Deny from all </Files> <Directory ~ "EIFGENs"> Order allow,deny Deny from all </Directory> </IfModule>
- Also in httpd.conf, change DocumentRoot to {path to xebra}\www and don't forget the directory options below the line # This should be changed to whatever you set DocumentRoot to.
- Create the directory /tmp or choose another temp upload directory.
- The default MacPorts apache install will listen on port 80
- Restart apache
sudo /opt/local/apache2/bin/apachectl restart
- Browse to http://localhost/test.xeb. You should see a message saying "Cannot connect to XebraServer. See apache error log."
- Hint: keep an eye on the apache error log
tail -f $APACHE2/logs/error_log
Compile the Translator and Server
- First we need to compile the xebra precompile library:
Linux
ec -experiment -config $XEBRA_DEV/eiffel_projects/library/xebra_precompile/xebra_precompile.ecf -target xebra_precompile -c_compile -clean -precompile -project_path $XEBRA_DEV/eiffel_projects/library/xebra_precompile
Windows
ec -experiment -config %XEBRA_DEV%\eiffel_projects\library\xebra_precompile\xebra_precompile.ecf -target xebra_precompile -c_compile -clean -precompile -project_path %XEBRA_DEV%\eiffel_projects\library\xebra_precompile
- Then run:
Linux
ec -experiment -config $XEBRA_DEV/eiffel_projects/xebra_translator/xebra_translator.ecf -target xebra_translator -c_compile -clean -finalize -project_path $XEBRA_DEV/eiffel_projects/xebra_translator ec -experiment -config $XEBRA_DEV/eiffel_projects/xebra_server/xebra_server.ecf -target xebra_server -c_compile -clean -finalize -project_path $XEBRA_DEV/eiffel_projects/xebra_server
Windows
ec -experiment -config %XEBRA_DEV%\eiffel_projects\xebra_translator\xebra_translator.ecf -target xebra_translator -c_compile -clean -finalize -project_path %XEBRA_DEV%\eiffel_projects\xebra_translator ec -experiment -config %XEBRA_DEV%\eiffel_projects\xebra_server\xebra_server.ecf -target xebra_server -c_compile -clean -finalize -project_path %XEBRA_DEV%\eiffel_projects\xebra_server
Run the Xebra Server
See Server Administration for how to run the server.