Monday, November 5, 2012

Git + CentOS + Step by Step

Git + CentOS + Step by Step

Install the git

yum install git

Define Global variables
[root@GOLDMASTER ~]# git config --global user.name "myName"
[root@GOLDMASTER ~]# git config --global user.email "myName@myDomain.com"

Make a directory where you want your repository
[root@GOLDMASTER ~]# mkdir /opt/repository
[root@GOLDMASTER ~]# cd /opt/repository/
[root@GOLDMASTER repository]# git config --global color.ui auto

Make your repositry
[root@GOLDMASTER repository]# mkdir project
[root@GOLDMASTER repository]# cd project/

Initialize the repository
[root@GOLDMASTER project]# git init
Initialized empty Git repository in /opt/repository/project/.git/

It will create a .git directory

[root@GOLDMASTER project]# ls -la
total 12
drwxr-xr-x 3 root root 4096 Nov  5 19:47 .
drwxr-xr-x 4 root root 4096 Nov  5 19:47 ..
drwxr-xr-x 7 root root 4096 Nov  5 19:47 .git
[root@GOLDMASTER project]#

Add docs and files in the repository    
[root@GOLDMASTER project]# mkdir docs
[root@GOLDMASTER project]# cd docs/
[root@GOLDMASTER docs]# vim testdoc.txt
[root@GOLDMASTER docs]# cd ..
[root@GOLDMASTER project]# ls
docs
[root@GOLDMASTER project]# git add .
[root@GOLDMASTER project]# git commit -m " my first commit"
[master (root-commit) 600533f]  my first commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 docs/testdoc.txt


Each time you make a change you want to track, you need to commit it.
In Git committing a change and sharing that change are two different processes...which is not a case in CVS.

Clone the Project Repository


[root@GOLDMASTER repository]# ls
project
[root@GOLDMASTER repository]# git clone project/ /var/local/project
Initialized empty Git repository in /var/local/project/.git/
[root@GOLDMASTER repository]#










If you create the file ~/.gitconfig  & put write the below lines then you can create the aliases as shown below.

[user]
  name = YOUR NAME
  email = you@yourDomain.com

[alias]
  st = status
  di = diff
  co = checkout
  ci = commit -am
  br = branch
  brr = branch -r
  bra = branch -a
  sta = stash
  pl = pull
  ps = push
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
  wc = whatchanged --pretty=oneline

[color]
  ui = true
  diff = auto
  status = auto
  branch = auto

[push]
  default = tracking

[color "branch"]
  current = green bold
  local = yellow
  remote = green

[color "diff"]
  meta = cyan bold
  frag = magenta bold
  old = red bold
  new = green bold

[color "status"]
  added = magenta
  changed = green
  untracked = cyan

[core]
  pager = less -FRSX
  whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
  excludesfile = /home/YOU/.gitignore
  editor = vim
  autocrlf = input
  quotepath = false

[merge]
  tool = vimdiff

[apply]
  whitespace = warn

[gc]
  reflogexpire = 300
  reflogexpireunreachable = 90

[format]
  pretty = %C(yellow)%h%Creset %s %C(red)(%cr)%Creset

[github]
  user = YOU
  token = YOURS

# vi:filetype=gitconfig:tabstop=2:expandtab

 

Thursday, November 1, 2012

Memcache + CentOS

Install Memcached from Source
Download the latest source from http://www.memcached.org website.
  • # cd /usr/src
  • # wget http://memcached.googlecode.com/files/memcached-1.4.13.tar.gz
  • # tar zxvf memcached-1.4.13.tar.gz
  • # cd memcached-1.4.13
  • # ./configure –with-libevent
  • # make all && make install
Install the libmemcached
libMemcached is an open source C/C++ client library and tools for the memcached server (http://danga.com/memcached). It has been designed to be light on memory usage, thread safe, and provide full access to server side methods. You can download the latest version from http://libmemcached.org/libMemcached.html
  • # wget https://launchpad.net/libmemcached/1.0/1.0.4/+download/libmemcached-1.0.4.tar.gz
  • # tar zxvf libmemcached-1.0.4.tar.gz
  • # cd libmemcached-1.0.4
  • # ./configure
  • # make && make install
It is advisable to run/start the memcached process as non-root user. We need to create  a daemon starter scripts for memcached.
  • # touch /etc/memcached.conf
in /etc/memcached.conf place the following code.
#Memory size  (adjust this according to your settings)
-m 64
# default port
-p 11211
# user to run daemon nobody/apache/www-data
-u nobody
# only listen locally
-l 127.0.0.1
 
Create the startup files.
Using SSH Terminal, execute the following command
  • # touch /etc/init.d/memcached
  • # chmod +x /etc/init.d/memcached
in /etc/init.d/memcached place the follwing code.
#!/bin/bash
#
# memcached This shell script takes care of starting and stopping
# standalone memcached.
#
# chkconfig: – 80 12
# description: memcached is a high-performance, distributed memory
# object caching system, generic in nature, but
# intended for use in speeding up dynamic web
# applications by alleviating database load.
# processname: memcached
# config: /etc/memcached.conf
# Source function library.
. /etc/rc.d/init.d/functions
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/memcached
DAEMONBOOTSTRAP=/usr/local/bin/start-memcached
DAEMONCONF=/etc/memcached.conf
NAME=memcached
DESC=memcached
PIDFILE=/var/run/$NAME.pid
[ -x $DAEMON ] || exit 0
[ -x $DAEMONBOOTSTRAP ] || exit 0
RETVAL=0
start() {
echo -n $”Starting $DESC: “
daemon $DAEMONBOOTSTRAP $DAEMONCONF
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $PIDFILE
echo
return $RETVAL
}
stop() {
echo -n $”Shutting down $DESC: “
killproc $NAME
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $PIDFILE
return $RETVAL
}
# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $”Usage: $0 {start|stop|restart|status}”
exit 1
esac
exit $RETVAL
 Using SSH Terminal, execute the following command
  • # touch /usr/local/bin/start-memcached
  • # chmod +x  /usr/local/bin/start-memcached
in /usr/local/bin/start-memcached place the following code.
#!/usr/bin/perl -w
# start-memcached
# 2003/2004 – Jay Bonci
# This script handles the parsing of the /etc/memcached.conf file
# and was originally created for the Debian distribution.
# Anyone may use this little script under the same terms as
# memcached itself.
use strict;
if ($> != 0 and $< != 0) {
print STDERR “Only root wants to run start-memcached.\n”;
exit;
}
my $etcfile = shift || “/etc/memcached.conf”;
my $params = [];
my $etchandle;
# This script assumes that memcached is located at /usr/bin/memcached, and
# that the pidfile is writable at /var/run/memcached.pid
my $memcached = “/usr/local/bin/memcached”;
my $pidfile = “/var/run/memcached.pid”;
# If we don’t get a valid logfile parameter in the /etc/memcached.conf file,
# we’ll just throw away all of our in-daemon output. We need to re-tie it so
# that non-bash shells will not hang on logout. Thanks to Michael Renner for
# the tip
my $fd_reopened = “/dev/null”;
sub handle_logfile {
my ($logfile) = @_;
$fd_reopened = $logfile;
}
sub reopen_logfile {
my ($logfile) = @_;
open *STDERR, “>>$logfile”;
open *STDOUT, “>>$logfile”;
open *STDIN, “>>/dev/null”;
$fd_reopened = $logfile;
}
# This is set up in place here to support other non -[a-z] directives
my $conf_directives = {
“logfile” => \&handle_logfile
};
if (open $etchandle, $etcfile) {
foreach my $line (<$etchandle>) {
$line =~ s/\#.*//go;
$line = join ‘ ‘, split ‘ ‘, $line;
next unless $line;
next if $line =~ /^\-[dh]/o;
if ($line =~ /^[^\-]/o) {
my ($directive, $arg) = $line =~ /^(.*?)\s+(.*)/;
$conf_directives->{$directive}->($arg);
next;
}
push @$params, $line;
}
}
unshift @$params, “-u root” unless (grep $_ eq ‘-u’, @$params);
$params = join ” “, @$params;
if (-e $pidfile) {
open PIDHANDLE, “$pidfile”;
my $localpid = ;
close PIDHANDLE;
chomp $localpid;
if (-d “/proc/$localpid”) {
print STDERR “memcached is already running.\n”;
exit;
} else {
`rm -f $localpid`;
}
}
my $pid = fork();
if ($pid == 0) {
reopen_logfile($fd_reopened);
exec “$memcached $params”;
exit(0);
} elsif (open PIDHANDLE,”>$pidfile”) {
print PIDHANDLE $pid;
close PIDHANDLE;
} else {
print STDERR “Can’t write pidfile to $pidfile.\n”;
}

Test the startup script. This command will start memcached server.
  • # /etc/init.d/memcached restart
Add memcached as autostart daemon. This command will make sure that memcached will start automatically on when your server restart.
  • # /sbin/chkconfig memcached on

Install the Memcache PECL Extension for PHP
Even though memcached is happily running on the server, it’s not accessible from PHP without the PECL extension. Fortunately this is a very easy process, just use the pecl command.
  • # pecl install memcache
Make sure that extension=memcache.so is in your php.ini (it should be added in there automatically if not, add it).
Restart Apache

/tmp noexec

 remount /tmp to make it executable by issuing the following command:
# mount -o remount,exec /tmp
Once you’re done,  set /tmp back to noexec:
# mount -o remount,noexec /tmp