Sie sind hier Home » Linux » Shell Skripte » Zend Framework mit Doctrine automatisch installieren

Zend Framework mit Doctrine automatisch installieren

Eine der ausgereiftesten Datenbankabstraktionsschichten für PHP ist mit Doctrine entstanden. Wenn Sie also auf der Suche nach einem ORM sind, das über den Funktionsumfang von Zend_Db hinausgeht, sollten Sie sich ein kleines Testprojekt anlegen, um Doctrine einmal zu testen. Im schlimmsten Fall kommen Sie zu der Erkenntnis, dass es sich auf für Sie lohnen könnte das Zend Framework zusammen mit dem Doctrine ORM einzusetzen.

Mit dem folgenden Bash Script lassen sich die jeweils aktuelle Releases des Zend Framework, als auch des Doctrine ORM automatisiert herunterladen, sowie eine aktuelle Projektstruktur erstellen.

Vorgehensweise

Wechseln Sie in das Verzeichnis Ihrer Webprojekte.

 
#Beispiel:
cd /var/www/
mkdir zenddoctrine
cd zenddoctrine
 

Laden Sie sich das Skript herunter.

 
wget http://downloads.libatech.biz/zend_doctrine
 

Passen Sie die Datenbankdaten Ihren Gegebenheiten an.

Machen Sie das Skript ausführbar.

 
chmod +x zend_doctrine
 

Führen Sie das Skript aus.

 
./zend_doctrine
 

Nun haben Sie eine komplette Projektstruktur, um mit dem Zend Framework in Verbindung mit dem ORM Doctrine arbeiten zu können.

Beachten Sie, dass Sie, als auch der Benutzer unter dem Ihr Webserver läuft, die nötigen Rechte auf das Directory besitzen muss. Passen Sie daher die Rechte entsprechend an.

 
#Beispiel - Webserver läuft unter www-data und Sie sind Mitglied der Gruppe www-data:
sudo chown -R www-data:www-data /var/www/zenddoctrine/
sudo chmod -R g+w /var/www/zenddoctrine/
 
 
#!/bin/bash
#################################
# Zend mit ORM Doctrine installieren
# und einrichten
#
# Author: R. Gemander (Libatech)          
# Web: http://www.libatech.biz                 
# License: GPL      
#################################
#Datenbankdaten anpassen
DBUSER="dbuser"
DBPASSWORD="dbpassword"
DBNAME="dbname"
DBHOST="localhost"
#################################
# Downloadlinks, Filenames and Foldernames
ZENDFRAMEWORKRELEASE="1.10.2"
ZENDFRAMEWORKFOLDER="ZendFramework-$ZENDFRAMEWORKRELEASE-minimal"
ZENDFRAMEWORK="$ZENDFRAMEWORKFOLDER.zip"
DOCTRINETAR="Doctrine-1.2.1.tgz"
DOCTRINETARFOLDER="Doctrine-1.2.1"
ZENDFRAMEWORKLINK="http://framework.zend.com/releases/ZendFramework-$ZENDFRAMEWORKRELEASE/$ZENDFRAMEWORK"
DOCTRINELINK="http://www.doctrine-project.org/download/1_2_1/format/tgz/package/"
#################################
#first build a Basic Folder Structure
APPDIR="application"
CONFDIR="$APPDIR/config"
CONTRDIR="$APPDIR/controllers"
DOCTRINEDIR="$APPDIR/doctrine"
DATADIR="$DOCTRINEDIR/data"
FIXURESDIR="$DOCTRINEDIR/fixtures"
SQLDIR="$DOCTRINEDIR/sql"
MIGRATIONSDIR="$DOCTRINEDIR/migrations"
SCHEMADIR="$DOCTRINEDIR/schema"
MODELSDIR="$APPDIR/models"
VIEWSDIR="$APPDIR/views"
SCRIPTSDIR="$VIEWSDIR/scripts"
LIBDIR="library"
DOCTRINEDIR="$LIBDIR/doctrine"
ZENDDIR="$LIBDIR/zendframework"
PUBDIR="public"
CLIDIR="scripts"
###############################
#Binarys 
MKDIR="$(which mkdir)"
WGET="$(which wget)"
UNZIP="$(which unzip)"
TAR="$(which tar)"
# check binarys
for i in $MKDIR $WGET $UNZIP $TAR
do
  if ! type $i >/dev/null 2>&1 
  then
    echo -e "FEHLER: Das Programm $i wurde nicht gefunden. Installieren Sie das Programm $i. Breche ab!"
    exit
  fi
done
###############################
#internals
ZEND="Zend"
DOCTRINE="Doctrine"
WORKINGDIR="`pwd`"
###############################
#create Folder Structure
for FOLDER in $APPDIR $CONFDIR $CONTRDIR $DOCTRINEDIR $DATADIR $FIXURESDIR $SQLDIR $MIGRATIONSDIR $SCHEMADIR $MODELSDIR $VIEWSDIR $SCRIPTSDIR $LIBDIR $DOCTRINEDIR $ZENDDIR $PUBDIR $CLIDIR
do 
  echo -n "Create Folder $FOLDER"
  $MKDIR -p $FOLDER
  echo ".....done"
done 
###############################
#get Zend Framework
echo "get Zend Framework"
cd $ZENDDIR
$WGET $ZENDFRAMEWORKLINK
echo -n "Unzip $ZENDFRAMEWORK ... "
$UNZIP $ZENDFRAMEWORK
echo "done, delete $ZENDFRAMEWORK"
rm $ZENDFRAMEWORK
#echo "rename $ZENDFRAMEWORKFOLDER to $ZEND"
echo "get needed Zend Files"
cp -R "$ZENDFRAMEWORKFOLDER/library/Zend/" $ZEND
rm -R $ZENDFRAMEWORKFOLDER
cd "../.."
clear
###############################
#get Doctrine
echo "get Doctrine ORM"
cd  $DOCTRINEDIR
wget $DOCTRINELINK
echo "Unpack $DOCTRINETAR"
tar xzf $DOCTRINETAR
echo "done, delete $DOCTRINETAR"
rm $DOCTRINETAR
#echo "rename $DOCTRINETARFOLDER to $DOCTRINE"
#mv $DOCTRINETARFOLDER $DOCTRINE
echo "get needed Doctrine Files"
cp -R "$DOCTRINETARFOLDER/lib/Doctrine/" $DOCTRINE
cp -R "$DOCTRINETARFOLDER/lib/vendor/" "vendor"
cp "$DOCTRINETARFOLDER/lib/Doctrine.php" "Doctrine.php"
rm -R $DOCTRINETARFOLDER
rm "package.xml"
cd "../.."
clear
################################
#Building application
INDEXFILE="$PUBDIR/index.php";
echo -n "Create $INDEXFILE"
touch $INDEXFILE
echo "<?php" >>$INDEXFILE
echo "require '../application/bootstrap.php';" >>$INDEXFILE
echo "?>" >>$INDEXFILE
echo "... done"
HTFILE="$PUBDIR/.htaccess"
echo -n "Create $HTFILE" 
touch $HTFILE
echo 'RewriteEngine on' >>$HTFILE
echo 'RewriteCond %{SCRIPT_FILENAME} !-f' >>$HTFILE
echo 'RewriteRule ^(.*)$ index.php/$1' >>$HTFILE
echo "... done"
GLOBALFILE="$APPDIR/global.php"
echo -n "Creating $GLOBALFILE"
touch $GLOBALFILE
echo "<?php " >>$GLOBALFILE
echo "error_reporting(E_ALL | E_STRICT); " >>$GLOBALFILE
echo "ini_set('display_startup_errors', 1); " >>$GLOBALFILE
echo "ini_set('display_errors', 1); " >>$GLOBALFILE
echo "date_default_timezone_set('Europe/Berlin'); " >>$GLOBALFILE
echo -e "\n/* " >>$GLOBALFILE
echo " * Setup libraries & autoloaders " >>$GLOBALFILE
echo " */ " >>$GLOBALFILE
echo -e "\nset_include_path('$WORKINGDIR/$ZENDDIR' " >>$GLOBALFILE
echo -e "\t\t. PATH_SEPARATOR . '$WORKINGDIR/$DOCTRINEDIR' " >>$GLOBALFILE
echo -e "\t\t. PATH_SEPARATOR . '$WORKINGDIR/$DOCTRINEDIR/vendor/sfYaml' " >>$GLOBALFILE
echo -e "\t\t. PATH_SEPARATOR . dirname(__FILE__).'/models' " >>$GLOBALFILE
echo -e "\t\t. PATH_SEPARATOR . dirname(__FILE__).'/models/generated' " >>$GLOBALFILE
echo -e "\t\t. PATH_SEPARATOR . get_include_path()); " >>$GLOBALFILE
echo "require_once 'Zend/Loader/Autoloader.php'; " >>$GLOBALFILE
echo '$loader = Zend_Loader_Autoloader::getInstance(); ' >>$GLOBALFILE
echo '$loader->setFallbackAutoloader(true);' >>$GLOBALFILE
echo -e "\n/* " >>$GLOBALFILE
echo " * Set super-global data " >>$GLOBALFILE
echo " */ " >>$GLOBALFILE
="benutzer"
echo -e "\nDoctrine_Manager::connection('mysql://$DBUSER:$DBPASSWORD@$DBHOST/$DBNAME'); " >>$GLOBALFILE
echo -e "\n/* " >>$GLOBALFILE
echo " * Configure Doctrine " >>$GLOBALFILE
echo " */ " >>$GLOBALFILE
echo -e "\nZend_Registry::set('doctrine_config', array( " >>$GLOBALFILE
echo -e "\t\t'data_fixtures_path'  =>  dirname(__FILE__).'/doctrine/data/fixtures', " >>$GLOBALFILE
echo -e "\t\t'models_path'         =>  dirname(__FILE__).'/models', " >>$GLOBALFILE
echo -e "\t\t'migrations_path'     =>  dirname(__FILE__).'/doctrine/migrations', " >>$GLOBALFILE
echo -e "\t\t'sql_path'            =>  dirname(__FILE__).'/doctrine/data/sql', " >>$GLOBALFILE
echo -e "\t\t'yaml_schema_path'    =>  dirname(__FILE__).'/doctrine/schema' " >>$GLOBALFILE
echo ")); " >>$GLOBALFILE
echo "... done"
BOOTSTRAP="$APPDIR/bootstrap.php"
echo -n "Creating $BOOTSTRAP"
touch $BOOTSTRAP
echo "<?php" >>$BOOTSTRAP
echo "require dirname(__FILE__).'/global.php';" >>$BOOTSTRAP
echo "Zend_Controller_Front::run(dirname(__FILE__).'/controllers');" >>$BOOTSTRAP
echo "?>" >>$BOOTSTRAP
echo "... done"
CLIFILE="$CLIDIR/doctrine-cli"
echo -n "Creating $CLIFILE"
echo "#!/usr/bin/env php" >>$CLIFILE
echo "<?php" >>$CLIFILE
echo "require dirname(__FILE__).'/../application/global.php';" >>$CLIFILE
echo '$cli = new Doctrine_Cli(Zend_Registry::get("doctrine_config"));' >>$CLIFILE
echo '$cli->run($_SERVER["argv"]);' >>$CLIFILE
chmod +x $CLIFILE
echo "... done"
clear 
mkdir "application/views/scripts/index"
echo 'All Done - you are ready to go.'
 

Es wurden noch keine Kommentare zu diesem Script hinterlegt

Einen Kommentar zu diesem Script hinterlassen

Name (optional):
E-Mail (optional):
Kommentar (erforderlich):

Kommentarschutz, bitte nicht aktivieren

Bookmark

Diese Beiträge könnten Sie auch interessieren