How to setup the perfect development environment
Roel De Meester
07/02/10 Fosdem 2010 : Drupal Dev Machine
How to setup the perfect development environment
Towards some drupal development environment
07/02/10 Fosdem 2010 : Drupal Dev Machine
Poll
● Want to see installation process ?
● Want to discuss the result ?
07/02/10 Fosdem 2010 : Drupal Dev Machine
LAMP Server
● Start from a freshly installed UBUNTU
● Needs● xAMP Stack● Ready for drupal● Ready for drush● Ready to code
07/02/10 Fosdem 2010 : Drupal Dev Machine
LAMP Server – the script 1/2
#PREPARE ubuntu dev machinesudo apt-get update#sudo apt-get upgradesudo tasksel install lamp-server sudo apt-get install phpmyadminsudo apt-get install php5-clisudo apt-get install curl php5-curlsudo apt-get install php5-xdebugsudo apt-get install subversionsudo apt-get install php5-dev php-pear
07/02/10 Fosdem 2010 : Drupal Dev Machine
LAMP Server – the script 2/2
sudo sed -i 's/memory_limit = .*/memory_limit = 128M/' /etc/php5/apache2/php.ini
sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 128M/' /etc/php5/apache2/php.inisudo sed -i 's/post_max_size = .*/post_max_size = 256M/' /etc/php5/apache2/php.ini
#better uploadprogress barsudo pecl install uploadprogresssudo sed -i '/; extension_dir directive above/ a\extension=uploadprogress.so' /etc/php5/apache2/php.ini
#cleanurl sudo sed -i 's/AllowOverride (None)/AllowOverride All/' /etc/apache2/sites-available/defaultsudo a2enmod rewrite && sudo /etc/init.d/apache2 restart
07/02/10 Fosdem 2010 : Drupal Dev Machine
LAMP Server – Automated
mkdir ~/bincd ~/binrm setup_ubuntu.shwget http://krimson.be/sites/default/files/setup_ubuntu.sh && chmod +x *.sh && ./setup_ubuntu.sh
07/02/10 Fosdem 2010 : Drupal Dev Machine
Drush
● Control Drupal from Terminal
● Needs● php-cli● curl● drush
07/02/10 Fosdem 2010 : Drupal Dev Machine
Drush – the script 1/3#default directory structureDEFAULT_WORKSPACE=$HOME/workspaceif [ ! -d "$DEFAULT_WORKSPACE" ];then echo "create workspace folder" mkdir $DEFAULT_WORKSPACEficd $DEFAULT_WORKSPACE
#install drush#NOTE : WHEN changing the drush folder, also update the $PROFILE_PATHDRUSH_ROOT=$DEFAULT_WORKSPACE/drushPROFILE_PATH='\n # set PATH so it includes drush if it exists \nif [ -d "$HOME/workspace/drush" ] ; then \n\t PATH="$HOME/workspace/drush:$PATH" \nfi \n'
07/02/10 Fosdem 2010 : Drupal Dev Machine
DRUSH – the script 2/3
DRUSH_VERSION=2.1DRUSH_TGZ=drush-All-Versions-$DRUSH_VERSION.tar.gz if [ ! -d "$DRUSH_ROOT" ];then echo "grabbing drush" wget http://ftp.drupal.org/files/projects/$DRUSH_TGZ if [ -a "$DRUSH_TGZ" ];then tar -zxvf $DRUSH_TGZ rm $DRUSH_TGZ else echo "ERROR : unable to download $DRUSH_TGZ" fifi
#add drush to path
07/02/10 Fosdem 2010 : Drupal Dev Machine
DRUSH – the script 3/3if grep -q drush ~/.profile then echo 'DRUSH already in path' else echo -e $PROFILE_PATH >> ~/.profile source ~/.profile echo '----------------------------------------------------------------------| Please update your path by reloading your .profile. || Just run the command at the bottom from your terminal. || Note : this will only work in current shell. if you want a decent || DEV environment, you should logout/login. || || the command to run : || || . ~/.profile |----------------------------------------------------------------------'fi
07/02/10 Fosdem 2010 : Drupal Dev Machine
DRUSH – Automated
mkdir ~/bincd ~/binrm setup_drush.shwget http://krimson.be/sites/default/files/setup_drush.sh && chmod +x *.sh && ./setup_drush.sh
07/02/10 Fosdem 2010 : Drupal Dev Machine
An IDE
● Eclipse – VI – Emacs – Bluefish- geany - ..
07/02/10 Fosdem 2010 : Drupal Dev Machine
Install Eclipse – the steps
● Install JRE – Java Runtime
● Manual or APT-Get ?
● Startup script
● Eclipse has● Code completion● Debug support● Version Control support
● Eclipse is heavy to launch
07/02/10 Fosdem 2010 : Drupal Dev Machine
Install Eclipse – the script 1/2
#!/usr/bin/php -q<?php$ECLIPSE_DOWNLOAD_URL="http://d2u376ub0heus3.cloudfront.net/technology/epp/downloads/release/galileo/SR1/eclipse-php-galileo-SR1-linux-gtk.tar.gz";$ECLIPSE_TAR_NAME=basename($ECLIPSE_DOWNLOAD_URL);$ECLIPSE_NEW_FOLDER_NAME="eclipse-pdt-galileo";$ECLIPSE_BIN_FILE="eclipse";
echo "#Install JAVA Runtime\n";passthru("sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts");
echo "#Get Eclipse ("+$ECLIPSE_NEW_FOLDER_NAME+") \n";passthru("mkdir -p ~/bin/packages");
# ...to be continued
07/02/10 Fosdem 2010 : Drupal Dev Machine
Install Eclipse – the script 2/2
exec("wget " . $ECLIPSE_DOWNLOAD_URL); system("mv " . $ECLIPSE_TAR_NAME . " ~/bin/packages/"); system("cd ~/bin/packages/ && tar -zxvf $ECLIPSE_TAR_NAME && rm $ECLIPSE_TAR_NAME && mv eclipse $ECLIPSE_NEW_FOLDER_NAME");
if (!file_exists($ECLIPSE_BIN_FILE)){$fh = fopen($ECLIPSE_BIN_FILE, 'w') or die("can't open file
$ECLIPSE_BIN_FILE\n");$stringData = "#/bin/bash\n";fwrite($fh, $stringData);$stringData = "`~/bin/packages/$ECLIPSE_NEW_FOLDER_NAME/eclipse
-data ~/eclipse-workspace -vmargs -Xms128M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=512M &> /dev/null` & \n";
fwrite($fh, $stringData);fclose($fh);
system("chmod u+x eclipse && mv eclipse ~/bin/eclipse") ; }?>
07/02/10 Fosdem 2010 : Drupal Dev Machine
Eclipse – Automated
cd ~/binwget http://krimson.be/sites/default/files/setup_eclipse.php.txt && mv setup_eclipse.php.txt setup_eclipse.php && chmod +x *.php && ./setup_eclipse.php
07/02/10 Fosdem 2010 : Drupal Dev Machine
Eclipse – Extra's
● CSS Editing : Aptana
http://update.aptana.com/install/studio
● SVN Version Control : subclipsehttp://subclipse.tigris.org/update_1.6.x
● Unfuddle : Mylyn Connectorhttp://unfuddle.com/downloads/plugins/mylyn/e3.5/update-site/
● Drupal settings + Drush launcher
http://xtnd.us/downloads/eclipse
07/02/10 Fosdem 2010 : Drupal Dev Machine
Eclipse – Configuration● Mylyn
● Allows you to list tasks from bug tracking sytem● Allows you to start working on task and keep
track of all 'touched' files and provides context around a bug.
● Allows you to close tasks from within eclipse● Unfuddle HAS a connector!
● Xdebug - krimson.be/articles/debugging-drupal-6-using-xdebug
● Allows you to go through your running code step by step
●
07/02/10 Fosdem 2010 : Drupal Dev Machine
Your company standards
● How we do it @ Krimson
● svn_new_project.sh spellen● Checkout, virtualhost, database, multidomain,
load db dump, done ● Internal commands + conventions keeps us up
to speed
07/02/10 Fosdem 2010 : Drupal Dev Machine
Drupal – Extra's
● devel module● print functions - dsm● theme developer
● switch users● http://drupal.org/project/masquerade
● Prevent test mails to prime ministers● http://drupal.org/project/reroute_email
● http://drupal.org/project/schema
● http://drupal.org/project/coder
07/02/10 Fosdem 2010 : Drupal Dev Machine
Firefox – Extra's
● Firebug
● Webdeveloper toolbar