Cppcms
Jump to navigation
Jump to search
Environment
# cat /etc/debian_version 6.0.6 # gcc -v gcc version 4.4.5 (Debian 4.4.5-8) # uname -r 3.2.0-0.bpo.3-amd64
Build and install
CppCMS
apt-get install g++ cmake python zlib1g-dev libpcre3-dev libicu-dev libgcrypt11-dev mkdir /usr/local/cppcms chown nobody:nogroup /usr/local/cppcms su -s /bin/bash nobody cd /tmp wget "http://ufpr.dl.sourceforge.net/project/cppcms/cppcms/1.0.2/cppcms-1.0.2.tar.bz2" tar -xjf cppcms-1.0.2.tar.bz2 cd cppcms-1.0.2 mkdir build cd build/ cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/cppcms make make test make install exit
CppDB
mkdir /usr/local/cppdb chown nobody:nogroup /usr/local/cppdb su -s /bin/bash nobody cd /tmp wget -c http://ufpr.dl.sourceforge.net/project/cppcms/cppdb/0.3.1/cppdb-0.3.1.tar.bz2 tar -xjf cppdb-0.3.1.tar.bz2 cd cppdb-0.3.1 mkdir build cd build/ cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/cppdb make make install exit
Prepare your HTTP server
Apache
Depends
# deb http://ftp.debian.org/debian stable main contrib non-free apt-get install libapache2-mod-fastcgi a2enmod fastcgi
Apache config
from http://whocares.de/fastcgiexternalserver-demystified/all/1/
<IfModule mod_fastcgi.c> FastCGIExternalServer /tmp/my_app.fastcgi -host 127.0.0.1:9000 Alias /my_app /tmp/my_app.fastcgi </IfModule>
Nginx
Add the follow lines on your nginx.config in the section server:
location /my_app { # We should manually create PATH_INFO # variable using URL rewriting set $path_info ""; if ( $fastcgi_script_name ~ ^/my_app(.*)$ ) { set $path_info $1; } fastcgi_param PATH_INFO $path_info; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; }
First CppCms app
#include <cppcms/application.h> #include <cppcms/applications_pool.h> #include <cppcms/service.h> #include <cppcms/http_response.h> #include <iostream> class my_hello_world : public cppcms::application { public: my_hello_world(cppcms::service &srv) : cppcms::application(srv) { } virtual void main(std::string url); }; void my_hello_world::main(std::string /*url*/) { response().out()<< "<html>\n" "<body>\n" " <h1>Hello World</h1>\n" "</body>\n" "</html>\n"; } int main(int argc,char ** argv) { try { cppcms::service srv(argc,argv); srv.applications_pool().mount(cppcms::applications_factory<my_hello_world>()); srv.run(); } catch(std::exception const &e) { std::cerr<<e.what()<<std::endl; } } // vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4
Compile and Run
The examples are in the source path:
g++ -Wall -I /usr/local/cppcms/include/ my_app.cpp -o my_app -L /usr/local/cppcms/lib -lcppcms -lbooster cat > config.js << EOF { "service" : { "api" : "fastcgi", "port" : 9000 }, "http" : { "script" : "/my_app" }, } EOF LD_LIBRARY_PATH=/usr/local/cppcms/lib/ ./my_app -c config.js
See the result on http://localhost/my_app
Set-up an Eclipse CDT project =
Create an Eclipse project, maybe like there
Configure Index
- Project -> Properties
- C/C++ General -> Paths and Symbols
- switch to tab 'Includes'
- select 'GNU C++' an click 'Add...'
- Directory: "/usr/local/cppcms/include"
- click 'OK'
- switch to tab 'Library Paths'
- click 'Add...'
- Directory: "/usr/local/cppcms/lib"
- click 'OK'
- click 'OK' again
Configure to Run and Debug
- Run -> Debug Configurations
- select 'C/C++ Application'
- click on 'New launch configuration'
- Name: "TestCppCms Debug"
- C/C++ Application: "TestCppCms/build/debug/TestCppCms"
- to tab 'Arguments'
- Program arguments: "-c config.js"
- Working directory: "${workspace_loc:TestCppCms/TestCppCms}"
- to tab 'Environment'
- click New...
- Name: "LD_LIBRARY_PATH"
- "/usr/local/cppcms/lib/"
- click Ok
- click on Close
Now you can see the debug working, and run the page on http://localhost/my_app