Coder Social home page Coder Social logo

ratel's Introduction

Build Status

Ratel is a api server solution using c/c++:sunglasses:. It is based on spawn-fcgi, fastcgi, fastcgi++, boost and many other libraries which can achieve through github.

Library

  • spawn-fcgi
    ratel/app fork process via spawn-fcgi.

  • fcgi or fastcgi
    A blocking fastcgi based network library. Because of the feature of blocking, Ratel discard, and here just take it to compare with the next non-blocking network library.

  • fastcgi++
    A non-blocking fastcgi based network library with c++14, which means our compiler must be support c++14. One receiver-thread(as producer) accept request asynchronously, and push all request to a container which other multi-thread(act as consumer) pull from and handle.

  • log
    1.The log module in ratel is based on boost.log, and version must be at least 1.54.0.
    2.Instead of verboss "<<", it use printf-style syntax:sunglasses:, which means we can log like this:

Log(info, "Num:%d, note:%s", 1, "log here");

Quick start

On Ubuntu 14.04, start with the following steps:

# 1. Add toolchain repo:
$ sudo apt-add-repository "ppa:ubuntu-toolchain-r/test"
$ sudo apt-get update

# 2. Install toolchain
$ sudo apt-get install gcc-7 g++-7

# 3. Enable gcc7:
$ sudo ln -s /usr/bin/gcc-7 /usr/bin/gcc -f
$ sudo ln -s /usr/bin/g++-7 /usr/bin/g++ -f

# 4. The default boost repo version on ubuntu 14.04 is 1.54.0:
$ sudo apt-get install libboost-log1.54-dev \
                       libboost-system1.54-dev \
                       libboost-thread1.54-dev \
                       libboost-filesystem1.54-dev

# 5. Install mysql-connector-c++
$ wget https://dev.mysql.com/get/Downloads/Connector-C++/mysql-connector-c++-1.1.9-linux-ubuntu14.04-x86-64bit.tar.gz
$ tar -xzvf mysql-connector-c++-1.1.9-linux-ubuntu14.04-x86-64bit.tar.gz
$ sudo cp -drf mysql-connector-c++-1.1.9-linux-ubuntu14.04-x86-64bit/lib/* /usr/lib

If CentOS7.4, you can get started in five steps:

# 1. Install a package with repository for your system:
$ sudo yum install centos-release-scl-rh

# 2. Install the collection:
$ sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-gdb

# 3. Start using software collections:
$ source /opt/rh/devtoolset-7/enable

# 4. The default boost from yum on centos7.4 is 1.53.0, we have to download 1.54.0 and build.
$ cd ~
$ wget -q https://sourceforge.net/projects/boost/files/boost/1.54.0/boost_1_54_0.tar.gz
$ tar -xzf boost_1_54_0.tar.gz
$ cd boost_1_54_0
$ ./bootstrap.sh
$ ./b2 --with-log --with-thread --with-system --with-filesystem
$ sudo cp -drf boost /usr/include
$ sudo cp -drf stage/lib/* /usr/lib64

# 5. Install mysql-connector-c++
$ wget https://dev.mysql.com/get/Downloads/Connector-C++/mysql-connector-c++-1.1.9-linux-el7-x86-64bit.tar.gz
$ tar -xzvf mysql-connector-c++-1.1.9-linux-el7-x86-64bit.tar.gz
$ sudo cp -drf mysql-connector-c++-1.1.9-linux-el7-x86-64bit/lib/* /usr/lib64

Then, clone and make like this:

$ git clone https://github.com/xujintao/ratel
$ cd ratel
$ ./build.sh
$ ./restart.sh

Now, it should be running well locally. Next we will show how to deploy it to field server by travis-ci.

Deploy

  1. Travis-CI git ratel project clone from github, building with the help of docker4cpp container, and then package all the result directely to test/product server or build runtime images to docker hub.

  2. c++ runtime

runtime CentOS7.4 ubuntu14.04
libc /usr/lib64/libc-2.17.so (2012.12.25) /lib/x86_64-linux-gnu/libc-2.19.so (2014.2.7)
libstdc++(c++11) /usr/lib64/libstdc++.so.6.0.19 (2014.5.22) /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19 (2014.5.22)
libstdc++(c++17) /opt/rh/devtoolset-7/.../x86_64-redhat-linux/7/* (2017-12-25) /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24 (2017.8.20)

GCC Development Plan
ABI Policy and Guidelines

License

MIT

ratel's People

Contributors

xujintao avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.