Quantcast
Channel: Ed's tech corner
Viewing all articles
Browse latest Browse all 32

Running webtoolkit application as nginx FastCGI on CentOS 6.x

$
0
0
Wt (pronounced as witty) is a powerful C++ library for developing web applications. Witty-based apps can be integrated as FastCGI with nginx and other web servers. This guide is about the integration of witty w/ nginx on CentOS 6.x OS.

On this how to, we'll be using the simplest witty example: hello

I assumed you already had installed a CentOS 6.x minimal x86_64.

The Steps

  1. Login as a sudoer user.
  2. Append EPEL repository by creating the file /etc/yum.repos.d/epel.repo with the following content:
  3. [epel]
    name=Extra Packages for Enterprise Linux 6 - $basearch
    #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
    mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
    failovermethod=priority
    enabled=1
    gpgcheck=0
  4. Install required packages: nginx, witty and CentOS development kit:
  5. $ sudo yum install nginx 
    $ sudo yum install wt
    $ sudo yum install fcgi
    $ sudo yum install spawn-fcgi
    $ sudo yum install wt-devel wt-examples # Only for development env
    $ sudo yum groupinstall "Development Tools" # Only for development env
    $ sudo yum install nano # Only for development env
  6. Go to Wt's examples directory and edit the CMakeLists.txt archive:
  7. $ cd /usr/lib64/Wt/examples/hello
    $ sudo nano CMakeLists.txt
    and replace
    WT_ADD_EXAMPLE(hello.wt hello.C)
    by:
    ADD_EXECUTABLE(hello.wt hello.C)
    TARGET_LINK_LIBRARIES(hello.wt ${EXAMPLES_CONNECTOR})
  8. Run CMake specifying FastCGI support & copy resulting binary to nginx document root:
  9. $ sudo rm -rf target
    $ sudo mkdir -p target
    $ cd target
    $ sudo cmake ../ -DEXAMPLES_CONNECTOR=wtfcgi -DCONNECTOR_FCGI=yes -DCONNECTOR_HTTP=no
    $ sudo make
    $ sudo cp -a hello.wt /usr/share/nginx/html/
  10. Create a new archive /etc/sysconfig/spawn-fcgi-hello.wt with the following content:
  11. FCGI_SOCKET=/var/run/hello.wt.socket
    FCGI_PROGRAM=/usr/share/nginx/html/hello.wt
    FCGI_USER=nginx
    FCGI_GROUP=nginx
    FCGI_EXTRA_OPTIONS="-M 0700"
    OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/hello.wt.socket.pid -- $FCGI_PROGRAM"
  12. Allow nginx to write at /var/spool/wt/run/:
  13. $ sudo chgrp nginx /var/spool/wt/run/
    $ sudo chmod g+w /var/spool/wt/run/
  14. Launch hello app via spawn-fcgi:
  15. $ source /etc/sysconfig/spawn-fcgi-hello.wt
    $ spawn-fcgi $OPTIONS
    now the FastCGI is running and waiting.
  16. Create a new file /etc/nginx/conf.d/wt.conf w/ the following content:
  17. server {
    listen 9091;
    server_name _;

    # by default relative to /usr/share/nginx/html
    location / {
    access_log /var/log/nginx/nginx-fastcgi-access.log;
    gzip off;

    # the full path /usr/share/nginx/html/hello.wt
    if ($uri !~ "^/hello.wt/$") {
    fastcgi_pass unix:/var/run/hello.wt.socket;
    }
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    }
  18. Restart nginx:
  19. $ service ngnix restart
  20. Visit http://HOST:9091 and enjoy it!

Viewing all articles
Browse latest Browse all 32

Trending Articles