#Introduction If you're a php developer on ubuntu, there comes the time where you have to install/reinstall your system. I did it already a few times and i decided to write down the steps for a typical web developer stack with php. I hope it's a help also for you! #Installation stack * [PHP Storm](#phpstorm) * [Git / Github](#git) #Installation General Environment <a name="phpstorm"></a> ##PHP Storm * Download and install PHP Storm - http://www.jetbrains.com/phpstorm/ * Install Sun JDK - http://www.webupd8.org/2012/01/install-oracle-java-jdk-7-in-ubuntu-via.html * increase file watching limit (http://confluence.jetbrains.net/display/IDEADEV/Inotify+Watches+Limit) * add `fs.inotify.max_user_watches = 524288` to `/etc/sysctl.conf` * apply change `sudo sysctl -p` <a name="git"></a> ##git * `sudo apt-get install git` * `git config --global color.branch auto` * `git config --global color.diff auto` * `git config --global color.status auto` * Manual on how to install ssh keys on github http://help.github.com/linux-set-up-git/ ##memcache * `sudo apt-get install memcached` * `sudo apt-get install php5-memcache` ##apache2 * `sudo apt-get install apache2` * `sudo a2enmod rewrite` * `sudo apt-get install libapache2-mod-php5` ##nginx * `sudo apt-get install nginx php5-fpm` * edit listen port in /etc/php5/fpm/pool.d/www.conf * `listen = 127.0.0.1:9009` * `sudo /etc/init.d/php5-fpm restart` * `sudo service nginx restart` ##mysql * `sudo apt-get install mysql-server` * `sudo apt-get install php5-mysql` ##PHP SQLite * `sudo apt-get install php5-sqlite` * comment `extension=sqlite.so` in `/etc/php5/conf.d/sqlite.ini` ##gmagick * `sudo apt-get install graphicsmagick libgraphicsmagick1-dev` * `sudo pecl install gmagick-beta` * Create file /etc/php5/conf.d/gmagick.ini and add a line `extension=gmagick.so` #Installation PHP Environment ##PHP * `sudo apt-get install php5-cli php5-common php-apc php-pear php5-xdebug php5-curl php5` * `sudo apt-get install php5-xsl` * `sudo apt-get install php5-intl` ##PEAR * `sudo pear channel-update PEAR` * `sudo pear upgrade PEAR` ##PHING * `sudo pear channel-discover pear.phing.info` * `sudo pear install phing/phing` #Installation of QA Environment ##CodeSiffer * `sudo pear install PHP_CodeSniffer` * README Symfony2 Coding Standard * [public](https://github.com/opensky/Symfony2-coding-standard) * [private](https://github.com/nzzdev/Symfony2-coding-standard/blob/master/README.md) ##PHPUnit * `sudo apt-get remove phpunit` (necessary if you already have installed phpunit via apt-get) * `sudo pear channel-discover pear.phpunit.de` * `sudo pear channel-discover pear.symfony-project.com` * `sudo pear channel-discover components.ez.no` * `sudo pear update-channels` * `sudo pear upgrade-all` * `sudo pear install --alldeps phpunit/PHPUnit` * `sudo pear install --force --alldeps phpunit/PHPUnit` #Configuration ##Apache2 Assume you want to have your projects in /home/your_username/eos * Change user/group of Apache2 * edit `/etc/apache2/apache2.conf` * set `User your_username` * set `Group your_usergroup` ##PHP * Edit /etc/php5/cli/php.ini for for all webservers * Edit /etc/php5/apache2/php.ini if you have installed apache2 * Edit /etc/php5/fpm/php.ini if you have installed nginx and fpm * memory_limit = 512m * display_errors = On * html_errors = On * post_max_size = 32m * upload_max_filesize = 32m * default_charset = utf8 * allow_url_fopen = On * Edit /etc/php5/cli/conf.d/xdebug.ini * xdebug.max_nesting_level = 1000 #Debugging with XDebug on Browser and Command line ##Configuration * Edit /etc/php5/cli/conf.d/xdebug.ini * xdebug.remote_enable=On * xdebug.remote_host=localhost * xdebug.remote_port=9002 * xdebug.remote_handler=dbgp * `sudo service apache2 restart` * Add to /home/<your_username>/.bashrc * export XDEBUG_CONFIG="PHPSTORM"; * reload bash settings * `source ~/.bashrc` * Edit Settings in PHPStorm * Go to File->Settings->PHP->Debug * Change XDebug Debug Port to 9002 * Install Easy XDebug Plugin for Firefox * https://addons.mozilla.org/de/firefox/addon/easy-xdebug/ ##Debugging via Firefox * Firefox: Click on ‘StartXDebug Session’ Symbol on bottom right * PHPStorm: Click on Run->Start Listen PHP Debug Connections * Set a breakpoint and do call via firefox browser ##Debugging via Console * PHPStorm: Click on Run->Start Listen PHP Debug Connections * Set a breakpoint and run a console command ##PHPStorm Config * for PHPUnit Code Completion add PHPUnit path under file->settings-directories * Usually it’s stored in `/usr/share/php/PHPUnit` #Apache2 config example * Assume you want to have your project in `/home/username/my_webside` * Edit `/etc/hosts` * Add `127.0.0.1 www.my_webside.lo` * Create file `/etc/apache2/sites-available/www.my_webside.lo` * edit file (with example config) ```shell <VirtualHost *:80> ServerName www.my_webside.lo DocumentRoot /home/username/my_webside/web ErrorLog ${APACHE_LOG_DIR}/www.my_webside.lo.error.log CustomLog ${APACHE_LOG_DIR}/www.my_webside.lo.access.log common </VirtualHost> ``` * create symbolic link to enable a site: * `sudo ln -s /etc/apache2/sites-available/www.my_webside.lo /etc/apache2/sites-enabled/www.my_webside.lo` * `sudo /etc/init.d/apache2 restart`