Skip to content

Commit

Permalink
Updated and converted README to markdown and added Travis CI status
Browse files Browse the repository at this point in the history
  • Loading branch information
ruven committed Jul 17, 2014
1 parent 2431b45 commit d41e917
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 33 deletions.
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
language: cpp

compiler:
- clang
- gcc

script:
- ./autogen.sh
- ./configure && make
80 changes: 47 additions & 33 deletions README
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
-----------------------------------------------------------------------
IIPImage - High Resolution Streaming Imaging Server
-----------------------------------------------------------------------
IIPImage - High Resolution Streaming Image Server
=================================================

[![Build Status](https://travis-ci.org/ruven/iipsrv.svg)](https://travis-ci.org/ruven/iipsrv)

ABOUT:
ABOUT
-----
IIPImage is an advanced high-performance feature-rich imaging server system for web-based streamed viewing and zooming of ultra high-resolution
images. It is designed to be fast and bandwidth-efficient with low processor and memory requirements. The system can comfortably handle gigapixel size images as
well as advanced image features such as both 8 and 16 bit depths, CIELAB colorimetric images and scientific imagery such as multispectral images, image sequences and 3D surface topologies.


FEATURES:
--------
FEATURES
--------
* Fast lightweight embeddable FastCGI server module
* High performance with inbuilt configurable cache
* Support for gigapixel images
Expand All @@ -29,14 +29,14 @@ FEATURES:



DOCUMENTATION:
DOCUMENTATION
-------------
Detailed class descriptions (generated using doxygen) are available in the
doc subdirectory



LICENCE:
LICENCE
-------
iipsrv is released under the GNU General Public License (GPL). See the copyright
notice COPYING in this directory for licensing details or go to
Expand All @@ -51,24 +51,26 @@ See COPYING.FCGI for licensing information for these libraries.



REQUIREMENTS:
REQUIREMENTS
------------
Requirements: libtiff, zlib and the IJG JPEG development libraries.
Optional: libmemcached (for Memcached) and Kakadu (for JPEG2000)

Plus, of course, an fcgi-enabled web server. The server has been successfully
tested on the following servers:
Apache (http://httpd.apache.org),
Lighttpd (http://www.lighttpd.net)
IIS (http://www.iis.net)
MyServer (http://www.myserverproject.net)
- Apache (http://httpd.apache.org),
- Lighttpd (http://www.lighttpd.net)
- IIS (http://www.iis.net)
- MyServer (http://www.myserverproject.net)
- NginX (http://www.nginx.org)
- Java Application Servers (Tomcat, JBoss)

Example server configurations are shown below.



BUILDING:
--------
BUILDING
--------
The standard autoconf build process should work fine. If you want to allow
dynamic loading of 3rd party image decoders, use the configure option
--enable-modules. There is a version of the FCGI development library included
Expand All @@ -78,17 +80,16 @@ path using --with-fcgi-incl=<path> and --with-fcgi-lib=<path>.

If this is an SVN or Git development version, first generate the autoconfigure
environment using autogen.sh:
./autogen.sh

Otherwise for release versions, use configure directly:
./autogen.sh

eg.
./configure
make
Otherwise for release versions, use configure directly:

./configure
make


OPTIONAL LIBRARIES: MEMCACHED:
OPTIONAL LIBRARIES: MEMCACHED
-----------------------------
IIPImage is able to use Memcached (http://www.memcached.org), a high-performance,
distributed memory object caching system. If enabled, IIPImage will cache
Expand All @@ -99,18 +100,19 @@ during the build process.



OPTIONAL LIBRARIES: KAKADU:
OPTIONAL LIBRARIES: KAKADU
--------------------------
IIPImage is able to decode JPEG2000 images via the Kakadu SDK
(http://www.kakadusoftware.com). This is, however, not open source and will
need to purchase a license for the source code. In order to use, first build
the Kakadu SDK as per the instructions supplied with the SDK. Then, the
following parameters to the ./configure command
--with-kakadu=/path/to/kakadu/distribution

--with-kakadu=/path/to/kakadu/distribution



INSTALLATION:
INSTALLATION
------------
Simply copy the executable called iipsrv.fcgi in the src subdirectory into
the web server fcgi directory. If one does not exist, simply create one, called,
Expand All @@ -119,7 +121,7 @@ executable.



CONFIGURATION:
CONFIGURATION
-------------
There are several startup variables that can be passed to the server.
They are all optional.
Expand Down Expand Up @@ -190,7 +192,7 @@ handler(s).



IMAGE PATHS:
IMAGE PATHS
-----------
The images paths given to the server via the FIF variable must be
absolute paths on the server machine (eg. FIF=/images/test.tif)
Expand All @@ -201,13 +203,14 @@ able to access and read the images!



EXAMPLE SERVER CONFIGURATIONS:
EXAMPLE SERVER CONFIGURATIONS
-----------------------------

Apache and mod_fastcgi:
# Apache and mod_fastcgi:
----------------------
httpd.conf example extract:

```
--------------------------------------------------------------------
# Create a directory for the iipsrv binary
ScriptAlias /fcgi-bin/ "/usr/local/httpd/fcgi-bin/"
Expand All @@ -232,6 +235,7 @@ FastCgiServer /usr/local/httpd/fcgi-bin/iipsrv.fcgi \
-initial-env JPEG_QUALITY=50 \
-initial-env MAX_CVT=3000
--------------------------------------------------------------------
```



Expand All @@ -241,11 +245,14 @@ Apache and mod_fcgid:
mod_fcgid is a binary compatible replacement for mod_fastcgi. It works in the
same way, but is configured differently. Load the module like this:

LoadModule fcgid_module /path/to/apachemodules/mod_fcgid.so

LoadModule fcgid_module /path/to/apachemodules/mod_fcgid.so


Here is an example configuration. Note that mod_fcgid does not have a
FastCgiServer directive and there is no need to explicitly start the server:

```
-------------------------------------------------------------------
# Create a directory for the iipsrv binary
ScriptAlias /fcgi-bin/ "/var/www/localhost/fcgi-bin/"
Expand Down Expand Up @@ -274,6 +281,7 @@ FcgidIdleTimeout 0
FcgidMaxProcessesPerClass 1

-------------------------------------------------------------------
```

Note that on CentOS, FcgidIPCDir is configured by default to
/var/log/httpd/fcgidsock, which may not be writable by Apache. If this is the case,
Expand All @@ -284,6 +292,7 @@ Lighttpd:
--------
lighttpd.conf example extract:

```
--------------------------------------------------------------------
fastcgi.server = ( "/fcgi-bin/iipsrv.fcgi" =>
(( "host" => "127.0.0.1",
Expand All @@ -303,6 +312,7 @@ fastcgi.server = ( "/fcgi-bin/iipsrv.fcgi" =>
))
)
--------------------------------------------------------------------
```


spawn-fcgi:
Expand All @@ -313,19 +323,20 @@ full web server. Simply spawn the iipsrv process on the command line. The
process can be bound to an IP address and port for backend load-balancing
configurations. For example:

spawn-fcgi -f src/iipsrv.fcgi -a 192.168.0.1 -p 9000
spawn-fcgi -f src/iipsrv.fcgi -a 192.168.0.1 -p 9000


MyServer:
--------
Simply run the MyServer configuration and in the MIME section, choose the .fcgi extension
and select:

```
--------------------------------------------------------------------
MIME Type: application octet-stream
Action: Execute self contained FastCGI
Manager: NONE
--------------------------------------------------------------------
```


Java Application Servers (Tomcat, Jetty, JBoss etc)
Expand All @@ -335,6 +346,7 @@ IIPImage can also be used with Java Application Servers such as Apache Tomcat, J
the JFastCGI jar file to your webapp and add the following to your web.xml configuration file in order to
re-route FCGI requests to the IIPImage server on the specified port.

```
<!-- Gateway Servlet to IIPImage FCGI server -->

<servlet>
Expand All @@ -350,6 +362,7 @@ re-route FCGI requests to the IIPImage server on the specified port.
<servlet-name>fcgi</servlet-name>
<url-pattern>/cgi-bin/iipsrv.fcgi</url-pattern>
</servlet-mapping>
```

You then need to start an instance of the server on the requested port (6667 in this example) using
spawn-cgi (see spawn-cgi section above).
Expand All @@ -360,18 +373,19 @@ Command Line:

It is also possible to start iipsrv on the command line. For example:

iipsrv.fcgi --bind 192.168.0.1:9000
iipsrv.fcgi --bind 192.168.0.1:9000

where the argument given to bind is the socket on which to listen to FCGI
requests. Your web server should, therefore, be configured to use this socket.
For example with lighttpd:

```
fastcgi.server = (
"/fcgi-bin/iipsrv.fcgi" => (
("host"=>"192.168.0.1", "port"=>9000, "check-local"=>"disable")
)
)

```



Expand Down
1 change: 1 addition & 0 deletions README.md

0 comments on commit d41e917

Please sign in to comment.