## Requirements |
|
We should divide the requirements into three categories: |
|
- **Mandatory** -- you _must_ follow them |
- **Recommended** -- you generally _should_ have them unless you have good reasons. |
- **Suggested** -- you _may_ have them, they provide some useful functionality. |
|
|
### Mandatory |
|
- POSIX<sup><a href="#m1">1</a></sup> Compatible Platform. Linux and Cygwin<sup><a href="#m2">2</a></sup> are tested. |
|
In future more Free UNIX platforms are planned to be tested: OpenSolaris and FreeBSD are primary goals. |
|
- Reasonable, standard complaint, C and C++ compilers that works smoothly with autotools. |
|
GCC 3.4 and 4.1 are tested. 4.3 and probably more compilers are planned to be tested. |
- [CgiCC](http://www.gnu.org/software/cgicc/) library. Version 3.2.6 and above recommended. |
- [Boost](http://www.boost.org/) libraries 1.33.1 or higher. 1.35 and above recommended. |
- Python 2.x. It is used for compilation of templates to C++ code. |
|
### Recommended |
|
- [FastCGI](http://www.fastcgi.com/) Library including C++ bindings. |
|
FastCGI is the most popular communication protocol that |
is supported by vast majority of web servers. |
|
- One of the following web servers: |
|
- [Lighttpd](http://www.lighttpd.net/) |
- [Nginx](http://nginx.net/) |
- [Apache2](http://httpd.apache.org/) with `mod_fastcgi`. |
|
They are supported by CppCMS scripts that allow debug your applications easily. |
|
### Suggested |
|
- [OSSP mm](http://www.ossp.org/pkg/lib/mm/) shared memory allocation library. Provides process shared cache backend for mod prefork. |
- [Asio](http://tenermerx.com/Asio/) 1.0.0 and above or [Boost](http://www.boost.org/) 1.35.0 and above that includes Asio. Provides distributed cache and sessions backends. |
- [libgcrypt](http://directory.fsf.org/project/libgcrypt/) cryptography library. Provides encrypted cookies session backend. |
- [Sqlite3](http://www.sqlite.org/). It provides fast and somple DB for storage of sessions data. |
- [Sqlite3](http://www.sqlite.org/). It provides fast and simple DB for storage of sessions data. |
- [GNU gettext](http://www.gnu.org/software/gettext/) -- it provides internationalization support. |
|
It is not required for build, but it is required if you want to localize for your applications. It provides tools like xgettext. msgget and so on. CppCMS does not use its internationalization library. |
|
|
## Build |
|
### Getting sources |
|
#### From Tarboll |
|
You may download latest version from [SF Download Page](http://sourceforge.net/project/showfiles.php?group_id=209965). For example cppcms-X.Y.Z.tar.gz |
|
Untar them |
|
tar -xzvf cppcms-X.Y.Z.tar.gz |
cd cppcms-X.Y.Z |
|
#### From subversion |
|
In addition to normal requirements you need subversion client and full autotools chain |
|
svn co http://cppcms.svn.sourceforge.net/svnroot/cppcms/framework/trunk cppcms |
|
Then run: |
|
cd cppcms |
./autogen.sh |
./autogen.sh |
|
### Configuration |
|
Usually, configure script would recognize persistence of all libraries, and disable non mandatory parts if some of libraries are missing. However, you may disable them manually using following flags: |
|
--disable-forkcache Disable shared memory cache |
--disable-fastcgi Disable fastcgi interface |
--disable-tcpcache Disable distributed cache system |
--disable-crypt Disable encrypted sessions backend |
--disable-sqlite Disable Sqlite sessions backend |
|
So you run: |
|
./configure |
make |
|
If all finished without errors, run as "root": |
|
make install |
|
## Notes on binary packages |
|
At this point CppCMS project does not provide binary packages for several reasons: |
|
1. This software works with wide range of different libraries and their different versions. Linux distribution packagers should decide how to build this framework and against which libraries. |
2. Some of libraries are not available from official repositories of all popular distributions. |
3. CppCMS project provided for developers that probably should deploy their application to different environment |
where, in most of cases, that library would be build |
for their own need with modules they need. |
|
--------- |
|
1. <span id="m1"></span> Some of POSIX/UNIX Features that are used: |
|
- bash |
- Berkeley and UNIX Sockets stack including poll(2) |
- mmap, fork, signal |
- Process shared pthread mutex/rwlock (optional, recommended) |
- System V process shared sem\_post/sem\_wait |
- `/dev/urandom` |
- fcntl for file locking |
|
2. <span id="m2"></span> Pre-fork cache is currently disabled under Cygwin platform due to lack of process shared mutexes. |