Bio-Das-ProServer ================= Bio::Das::ProServer is an implementation of the BioDAS protocol, http://biodas.org/ for the serving of biological data using XML over HTTP. Bio::Das::ProServer is designed as a lightweight alternative to some other DAS servers. Version 2.0 is a drop-in replacement for previous versions but has a core based on the POE system which is much better tested and debugged than the ProServer v1 core. ProServer can be seen as the server-side complement to the Bio-DasLite client. More information can be found at the ProServer homepage: http://www.sanger.ac.uk/proserver/ INSTALLATION To install this module type the following: perl Build.PL ./Build ./Build test You may receive warnings about missing dependencies, note that only some of these are required (see DEPENDENCIES section). RUNNING There is a command-line executable in the eg directory: eg/proserver --help To start the server, type: eg/proserver -x RUNNING AS A DAEMON To start the server in daemon mode, type: eg/proserver To stop: kill -TERM `cat eg/proserver.myhostname.pid` To restart: kill -USR1 `cat eg/proserver.myhostname.pid` REQUIRED DEPENDENCIES Any missing dependencies will be reported during the build process. All are available from CPAN (http://www.cpan.org). CGI Compress::Zlib Config::IniFiles File::Spec Getopt::Long HTML::Entities HTTP::Request HTTP::Response HTTP::Date POE POE::Filter::HTTPD POE::Wheel::ReadWrite POE::Wheel::SocketFactory POSIX Socket Sys::Hostname OPTIONAL DEPENDENCIES Missing optional dependencies will also be reported in the build process. They are only required for specific functionality or plugins. DBI For all database-backed SourceAdaptor plugins LWP::UserAgent For SourceAdaptor::proxy Authenticator::http Transport::wgetz Cache::Cache For Authenticator::http Net::IP For Authenticator::ip Bio::Das::Lite For SourceAdaptor::proxy BioPerl For Transport::bioseqio EnsEMBL core API For SourceAdaptor::ensembl SECURITY Whilst every attempt is made to keep ProServer free from security holes we cannot guarantee its safety. As with all daemon services like this, it is strongly advised to take certain measures to mitigate any faults which may be present and minimised their consequences. 1. Run ProServer as a non-privileged user. Usually there is a 'nobody' user or equivalent. Running daemon services as this user means that if compromised the service has minimal access to the rest of the host. 2. Where possible run in a chroot'ed environment. This is more complicated than simply using a non-privileged user but is safer all-round. Using chroot puts the ProServer processes in a jail from which they cannot easily access the rest of the filesystem. This may be complex to set up, depending on the variety of your source adaptors and the access they require to resources outside of your ProServer installation. This method also requires a dedicated copy of all dependencies such as a perl interpreter and system libraries. 3. Another useful mechanism is to run ProServer behind a reverse-proxy. This means ProServer is never in direct communication with the client and the reverse-proxy will sanitise requests, removing some of the opportunities for attack. It also allows services to be moved behind the scenes using for example a combination of Apache and mod_rewrite on the proxy. One other possibility is to use a reverse-proxy to unify services provided by other technologies such as LDAS or Dazzle into one consolidated namespace. SCALABILITY At the Sanger Institute we run ProServer, behind an Apache reverse-proxy, on 14 2.4GHz blades serving just under 300,000 DAS requests a week for 220 sources mostly with MySQL databases. ProServer should scale comfortably being only IO-bound as it's not computationally intensive. Efficiency of data retrieval is most important. Ensure database connections and statement handles are cached and reused wherever possible. KNOWN PROBLEMS ProServer depends on source adaptors to provide details of known segments in order to correctly serve error or unknown segments. In the absence of this information responses serve empty result sets. COPYRIGHT AND LICENCE Copyright (C) 2006 by Roger M Pettett, Genome Research Ltd. http://www.sanger.ac.uk/ This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.