Skip to main content

Create Replication of drupal using script in linux

First of all Copy the settings.php & civicrm settings.php files & paste it as settings.php.dist & civicrm.settings.php.dist.

Edit the settings.php.dist :-
$db_url=' ';
$db_prefix = ' ';

Edit Civicrm settings.php :-
Replace the code from the file with the following code .
1)  define( 'CIVICRM_UF_DSN'           , ' ' );
2)  define( 'CIVICRM_DSN'          , ' ' );
3)  $civicrm_root = '';
4)  define( 'CIVICRM_TEMPLATE_COMPILEDIR', '' );
5)  define( 'CIVICRM_UF_BASEURL'      , '' );

After that create one script file as filename.sh ( for ex.  drupal-rep.sh)  &  copy the following code into the file.

/************************ Script file code **********************************/

echo "Have you copy files 'civicrm.settings.php.dist' and 'settings.php.dist'
      in sites/default of the source drupal ( 'y' or 'n' ) ? "
read copyFile

if [ -z $copyFile ]
then
echo "Please copy the files mention above "
exit 1
elif [ $copyFile = n ]
    then
    echo "Please copy the files mention above "
    exit 1
fi

echo -n "Enter Drupal Source Path "
read mainSource

if [ -z $mainSource ]
then
    exit 1
fi
MAIN_SOURCEPATH=$mainSource
SOURCEPATH=$MAIN_SOURCEPATH"/*"

echo -n "Enter Drupal Detination Path "
read destination

if [ -z $destination ]
then
    exit 1
fi
DESTINATION=$destination
LOGFILE=$DESTINATION/copy-log.log
DATESTAMP=`date`

echo -n "Enter Source Drupal Database Name "
read sourceDbName

if [ -z $sourceDbName ]
then
    exit 1
fi
SOURCE_DB_NAME=$sourceDbName

echo -n "Enter Source Drupal Database User Name "
read sourceDbUserName

if [ -z $sourceDbUserName ]
then
    exit 1
fi
SOURCE_DB_USER=$sourceDbUserName

echo -n "Enter Source Drupal Database Password "
read sourceDbPassword

if [ -z $sourceDbPassword ]
then
    exit 1
fi
SOURCE_DB_PASS=$sourceDbPassword

echo -n "Enter Destination Drupal Database Name "
read destinationDbName

if [ -z $destinationDbName ]
then
    exit 1
fi
DESTINATION_DB_NAME=$destinationDbName

echo -n "Enter Destination Drupal Database User Name "
read destinationDbUserName

if [ -z $destinationDbUserName ]
then
    exit 1
fi
DESTINATION_DB_USER=$destinationDbUserName

echo -n "Enter Destination Drupal Database Password "
read destinationDbPassword

if [ -z $destinationDbPassword ]
then
    exit 1
fi
DESTINATION_DB_PASS=$destinationDbPassword

echo -n "Enter Destination Database Server Name "
read destinationDbServerName

if [ -z $destinationDbServerName ]
then
    exit 1
fi
DESTINATION_DB_SERVER=$destinationDbServerName

echo -n "Enter Destination Drupal Url "
read destinationUrl

if [ -z $destinationUrl ]
then
    exit 1
fi
DESTINATION_URL=$destinationUrl

echo -n "Enter Source Civicrm Database Name "
read sourceCiviDbName

if [ -z $sourceCiviDbName ]
then
    exit 1
fi
SOURCE_CIVICRM_DB_NAME=$sourceCiviDbName

echo -n "Enter Source Civicrm Database User Name "
read sourceCiviDbUser

if [ -z $sourceCiviDbUser ]
then
    exit 1
fi
SOURCE_CIVICRM_DB_USER=$sourceCiviDbUser

echo -n "Enter Source Civicrm Database Password "
read sourceCiviDbPassword

if [ -z $sourceCiviDbPassword ]
then
    exit 1
fi
SOURCE_CIVICRM_DB_PASS=$sourceCiviDbPassword

echo -n "Enter Destination Civicrm Database Name "
read destinationCiviDbName

if [ -z $destinationCiviDbName ]
then
    exit 1
fi
DESTINATION_CIVICRM_DB_NAME=$destinationCiviDbName

echo -n "Enter Destination Civicrm Database User Name "
read destinationCiviDbUserName

if [ -z $destinationCiviDbUserName ]
then
    exit 1
fi
DESTINATION_CIVICRM_DB_USER=$destinationCiviDbUserName

echo -n "Enter Destination Civicrm Database Password "
read destinationCiviDbPass

if [ -z $destinationCiviDbPass ]
then
    exit 1
fi
DESTINATION_CIVICRM_DB_PASS=$destinationCiviDbPass

cd $MAIN_SOURCEPATH"/sites/default/files"
sudo chmod -R 777 civicrm
sudo chmod -R 777 civicrm/templates_c

#copy cose base
mkdir $DESTINATION
echo $DATESTAMP."copying code base...">>$LOGFILE
cp -R $SOURCEPATH $DESTINATION>>$LOGFILE
cp -R $MAIN_SOURCEPATH/.htaccess $DESTINATION>>$LOGFILE

#database dump
echo $DATESTAMP."copying database...">>$LOGFILE
mysqldump -u$SOURCE_DB_USER -p$SOURCE_DB_PASS $SOURCE_DB_NAME > $DESTINATION/$SOURCE_DB_NAME.sql

#create new database
echo "Creating a database for $DESTINATION_DB_NAME">>$LOGFILE
DBS=`mysql -u$DESTINATION_DB_USER -p$DESTINATION_DB_PASS -Bse 'show databases'| egrep -v 'information_schema|mysql'`
flag=0
for db in $DBS; do
if [ "$db" = "$DESTINATION_DB_NAME" ]
then
    flag=1
    echo "This database already exists : exiting now">>$LOGFILE
    break
fi
done
if [ $flag = 0 ]
then
    mysqladmin -u$DESTINATION_DB_USER -p$DESTINATION_DB_PASS create $DESTINATION_DB_NAME;
    mysql -u$DESTINATION_DB_USER -p$DESTINATION_DB_PASS $DESTINATION_DB_NAME < $DESTINATION/$SOURCE_DB_NAME.sql
fi

#civicrm database dump
echo $DATESTAMP."copying civicrm  database...">>$LOGFILE
mysqldump -u$SOURCE_CIVICRM_DB_USER -p$SOURCE_CIVICRM_DB_PASS $SOURCE_CIVICRM_DB_NAME > $DESTINATION/$SOURCE_CIVICRM_DB_NAME.sql


#create new database for CIVICRM
echo $DATESTAMP."Creating a database for $DESTINATION_CIVICRM_DB_NAME">>$LOGFILE
DBS=`mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -Bse 'show databases'| egrep -v 'information_schema|mysql'`
flag=0
for db in $DBS; do
if [ "$db" = "$DESTINATION_CIVICRM_DB_NAME" ]
then
    flag=1
    echo $DATESTAMP."This database already exists : exiting now">>$LOGFILE
    break
fi
done
if [ $flag = 0 ]
then
    mysqladmin -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS create $DESTINATION_CIVICRM_DB_NAME;
    mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS $DESTINATION_CIVICRM_DB_NAME < $DESTINATION/$SOURCE_CIVICRM_DB_NAME.sql
fi
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "truncate table "$DESTINATION_CIVICRM_DB_NAME".civicrm_group_contact_cache"
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "truncate table "$DESTINATION_CIVICRM_DB_NAME".civicrm_cache"
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "truncate table "$DESTINATION_CIVICRM_DB_NAME".civicrm_acl_contact_cache"
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "truncate table "$DESTINATION_CIVICRM_DB_NAME".civicrm_acl_cache"
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "update "$DESTINATION_CIVICRM_DB_NAME".civicrm_domain SET config_backend = NULL WHERE civicrm_domain.id =1"
mysql -u$DESTINATION_CIVICRM_DB_USER -p$DESTINATION_CIVICRM_DB_PASS -e "UPDATE "$DESTINATION_CIVICRM_DB_NAME".civicrm_preferences SET navigation = NULL"
cd $DESTINATION"/sites/default/"
rm -f settings.php
rm -rf /files/civicrm/templates_c/*
sed "s|$db_url='';|$db_url='mysqli://"$DESTINATION_DB_USER":"$DESTINATION_DB_PASS"@"$DESTINATION_DB_SERVER"/"$DESTINATION_DB_NAME"';|" files/settings.php
cp -f files/settings.php settings.php
sed "s|define( 'CIVICRM_UF_DSN'           , '' );|define( 'CIVICRM_UF_DSN'           , 'mysql://$DESTINATION_CIVICRM_DB_USER:$DESTINATION_CIVICRM_DB_PASS@$DESTINATION_DB_SERVER/$DESTINATION_CIVICRM_DB_NAME?new_link=true' );|" files/civicrm.settings.php
sed "s|define( 'CIVICRM_DSN'          , '' );|define( 'CIVICRM_DSN'           , 'mysql://$DESTINATION_CIVICRM_DB_USER:$DESTINATION_CIVICRM_DB_PASS@$DESTINATION_DB_SERVER/$DESTINATION_CIVICRM_DB_NAME?new_link=true' );|" civicrm.settings.php
sed "s|$civicrm_root = '';|$civicrm_root = '"$DESTINATION"/sites/all/modules/civicrm';|" files/civicrm.settings.php
sed "s|define( 'CIVICRM_TEMPLATE_COMPILEDIR', '' );|define( 'CIVICRM_TEMPLATE_COMPILEDIR', '"$DESTINATION"/sites/default/files/civicrm/templates_c' );|" civicrm.settings.php
sed "s|define( 'CIVICRM_UF_BASEURL'      , '' );|define( 'CIVICRM_UF_BASEURL'      , '"$DESTINATION_URL"' );|" files/civicrm.settings.php
cp -f files/civicrm.settings.php civicrm.settings.php
sudo chmod -R 777 files
sudo chmod -R 755 civicrm.settings.php
rm -f files/civicrm.settings.php
rm -f files/settings.php
rm -f civicrm.settings.php.dist
rm -f settings.php.dist
/*************************************************************/

Copy the settings.php & civicrm settings.php files in the drupal/site/default/ folder of the drupal whose replication to be create.

Run the script file on the terminal as sh filename.sh (for ex. sh drupal-rep.sh )
You will get the replication of the drupal.
If Civicrm Not work in the new drupal then rebuild menus or disable the clean url .

If u have any query please inform me to ravimane23@gmail.com.

To know more about replication of drupal Click Here

Comments

Popular posts from this blog

Set Multisite in drupal

For Linux 9.10 Please Follow the steps : 1) Extract the drupal in public html folder or any other folder.(say exampleDrupal). 2) Add below lines to exampleDrupal/sites/sites.php     $sites['site1.test'] = 'site1.test';     $sites['site2.test'] = 'site2.test'; 3)  Create two folders in exampleDrupal/sites/ folder.       as site1.test & site2.test.      OR      Using terminal run following commands :      i)  cd example.com/sites      ii) mkdir site1.test/ site2.test/ 4) Copy the default.settings.php file from  exampleDrupal/sites/default to site1.test &  site2.test folder.     OR      Using terminal run following commands :       i) cp default/default.settings.php site1.test/settings.php       ii) cp default/default.settings.php si...

To get pager on page

Use of pager query :   Drupal 4.6 - 6 :  pager_query($query, $limit = 10, $element = 0, $count_query = NULL) Perform a paged database query. Use this function when doing select queries you wish to be able to page. The pager uses LIMIT-based queries to fetch only the records required to render a certain page. However, it has to learn the total number of records returned by the query to compute the number of pages (the number of records / records per page). This is done by inserting "COUNT(*)" in the original query. For example, the query "SELECT nid, type FROM node WHERE status = '1' ORDER BY sticky DESC, created DESC" would be rewritten to read "SELECT COUNT(*) FROM node WHERE status = '1' ORDER BY sticky DESC, created DESC". Rewriting the query is accomplished using a regular expression.  $output1 .= theme('pager',null, $count, 0); This is used to get the number. We can use this pager query in "Custom Search...