In my previous blog I gave a brief overview about what is MongoDB, its features and my experience with MongoDB. Now is the time to take all of you through the MongoDB integration with the popular PHP framework i.e. Yii and the steps for installing MongoDB on Amazon EC2 instance.
Installing repository for MongoDB
We can install mongoDB in our system using the repositories available for mongoDB installation. Repositories are available for both 32 bit as well as 64 bit operating system.
To install mongoDB first of all we need to create a configuration file using the following command:
/etc/yum.repos.d/mongodb.repo
There are different repositories available for 32 Bit and 64 bit operating system. Choose the repositories according to your operating system. The configurations for both type of operating system are as follows:
Configuration for a 32-bit operating system
[mongodb]
name=MongoDB Repository
baseurl=https://downloads-distro.mongodb.org/repo/redhat/os/i686/
gpgcheck=0
enabled=1
Configuration for a 64-bit operating system
[mongodb]
name=MongoDB Repository
baseurl=https://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
Installing MongoDB on centOS
In order to install MongoDB on centOS 6 you need to simply run the command below as root user or with sudo:
yum install mongo-10gen mongo-10gen-server
Once the command execution is complete, MongoDB is installed successfully and is ready to be used.
The configuration file is found under:
/etc/mongod.conf
If you make any changes in the mongod.conf file then you have to restart the service using the following command:
/etc/init/mongod restart
You can also start mongoDB using service command which is:
service mongod start
Be sure that the service has been set to start automatically; you can do this by issuing command:
chkconfig mongod on
Setting Up Rockmongo for MongoDB administration
If you are looking for a phpadmin like tool for mongoDB, RockMongo is your best bet. It is one of the best PHP MongoDB Administrator tools available today. It lets you create databases, collections and insert and fetch documents using a web interface. In this post I will also help you set up RockMongo.
[ MongoDB on the Clouds – An Introduction to an Evolution from RDBMS ]
Install Rockmongo for MongoDB on CentOS, RHEL, Debian, Ubuntu
The prerequisites to install Rockmongo include mongo-php-driver, so let us install that first using the following commands:
On CentOS, RHEL
> yum install php-devel git httpsd
On Debian, Ubuntu
> apt-get install php5-dev apache2 git
To pull the mongo-php-driver from git, perform the following:
> git clone https://github.com/mongodb/mongo-php-driver.git
> cd mongo-php-driver/
> phpize
> ./configure
> make all
> make install
If the system is unable to execute the make command then install development tools using the following command:
yum groupinstall “Development Tools”
Open php.ini and add the mongo extension so that it gets loaded
On CentOS/RHEL
> vi /etc/php.ini
On Debian, Ubuntu
> vi /etc/php5/apache2/php.ini
Append the following to it:
extension=mongo.so
Then download the latest rockmongo zip file and unzip it into root directory of the web server.
> wget
On CentOS/RHEL
> mv rockmongo-1.1.5.zip /var/www/html/
On Debian, Ubuntu
> mv rockmongo-1.1.5.zip /var/www/
Unzip the package
> unzip rockmongo-1.1.5.zip
Restart apache server
On CentOS, RHEL
> /etc/init.d/httpsd restart
On Debian, Ubuntu
> /etc/init.d/apache2 restart
Open the web browser and point it to
https://ipaddress-or-domainname/rockmongo/index.php
Login using
username: admin
password: admin
Integrating MongoDB with YII Framework
Yii is a high performance PHP framework and is popularly used for developing large scale web applications. Yii framework is widely used with MYSQL as a database, but Yii has many extensions available for using MongoDB as a backend database. To name a few of the commonly used MongoDB extensions are as follows:
We will see how mongoYii is integrated with Yii Framework.
Setting up the extension
Once your Yii application skeleton is ready you can download the source code of extension. After downloading the source code keep the extension in your application structure most probably in the extension folder.
protected/extensions/MongoYii
After you have added the source code in your application, you have to make changes in the configuration file. Open the protected/config/main.php and place the following lines in it:
'mongodb' => array( 'class' => 'EMongoClient', 'server' => 'mongodb://localhost:27017', 'db' => 'db_name' ),
You have to modify the file based on your database connection string.
The Next step is to import the MongoYii extension into your application, for that you need to add following lines in your application:
'application.extensions.MongoYii.*', 'application.extensions.MongoYii.validators.*', 'application.extensions.MongoYii.behaviors.*', 'application.extensions.MongoYii.util.*'
These are the basic steps for integration MongoYii with Yii Framework.
Using EMongoDocument for MongoDB Collection
Just like we have CActiveRecord for models of MySQL tables, in the similar manner we have EMongoDocument for using as models for MongoDB Collections. It is similar to CActiveRecord in the terms of querying using models for getting data from the collection.
class Employee extends EMongoDocument{ public $employeeName; public $location; public $address = array(); function collectionName(){ return 'employees'; } public static function model($className=__CLASS__){ return parent::model($className); } }
In the above example you can see a model for a collection “employees”. All the attributes of the collection are declared as a variable in the EMongoDocument. This model works in a similar manner as a MySQL model works. It also has find(), findOne() and findBy_id() method for querying using model.
Example: Employee::model->model()->findOne(array('username'=> 'demo123)); Employee::model->model()->find(array('location'=> 'pune'));
Now you must have got an idea of how to use MongoDB a popular database with the widely used Yii framework for creating a web application with MongoDB as its backend database. If you have any queries, do comment & we will get back to you!
Some Interesting reads from the Cloud World :
1. Optimize Big Data Analytics with a Complete Guide to Amazon Cloud’s EMR
2. AWS Cloud for Start-ups Jump Start Package at just $99.99
3. Why is Cloud Computing Big Data’s Best Friend? Hadoop in the Clouds to Answer your Doubts!
4. Building a Live AWS Kinesis Application – The Producer Class, Put Constructor & more…