Skip to content

Instantly share code, notes, and snippets.

@netsmertia
Forked from kbond/post.md
Created January 22, 2014 07:32
Show Gist options
  • Save netsmertia/8554810 to your computer and use it in GitHub Desktop.
Save netsmertia/8554810 to your computer and use it in GitHub Desktop.

Install git:

sudo apt-get install git

Configure Git:

touch ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
git config --global user.name "Your Name"
git config --global user.email "Your Email"

ssh-keygen -t rsa -C "Your Email"
cat ~/.ssh/id_rsa.pub

Use PHP 5.4.x:

sudo add-apt-repository ppa:ondrej/php5-oldstable
sudo apt-get update

Use PHP 5.5.x:

sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update

Install apache/php:

sudo apt-get install apache2 php5 php5-cli libapache2-mod-php5 php5-dev

Ensure this worked by visiting http://localhost/. You should see It works!.

Edit your php.ini:

sudo nano /etc/php5/cli/php.ini
  1. Add a timezone

     date.timezone = America/New_York
    
  2. Turn off short tags

     short_open_tag = Off
    
  3. Increase xdebug.max_nesting_level

     xdebug.max_nesting_level = 250
    

Install mysql (enter through password prompts to use use defaults):

sudo apt-get install mysql-server libapache2-mod-auth-mysql php5-mysql

Install phpmyadmin (choose apache2 and enter through password prompts to use default):

sudo apt-get install phpmyadmin

Edit phpmyadmin config.inc.php:

sudo nano /etc/phpmyadmin/config.inc.php

Add/edit the following (around page 42):

// ...

/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'config';

$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
$cfg['Servers'][$i]['user'] = 'root';
/* Server parameters */

// ...

Ensure this worked by visiting http://localhost/phpmyadmin.

Install useful php modules:

sudo apt-get install php5-mcrypt php5-xdebug php5-curl php5-sqlite php5-xsl php-pear php-apc

Change php.ini directory for apache to use the same config as cli:

Edit /etc/apache2/mods-enabled/php5.load to look like the following:

PHPIniDir "/etc/php5/cli"

LoadModule php5_module /usr/lib/apache2/modules/libphp5.so

Install PHPUnit:

sudo pear config-set auto_discover 1
sudo pear install pear.phpunit.de/PHPUnit

Install Composer:

sudo apt-get install curl
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

Install node.js/npm:

sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Install Bower/UglifyJs/UglifyCss/Grunt:

sudo npm install -g bower
sudo npm install -g uglify-js
sudo npm install -g uglifycss
sudo npm install -g grunt-cli

Appendix

A. Configure Apache Sites

Enable Apache mods:

sudo a2enmod rewrite vhost_alias

Add Apache site:

sudo nano /etc/apache2/sites-available/dev

Add the following:

<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /home/{user}/www
</VirtualHost>

<VirtualHost *:80>
  ServerName *.local
  ServerAlias *.local
  VirtualDocumentRoot /home/{user}/www/%1/web
</VirtualHost>

# For SSL
#<VirtualHost *:443>
#  ServerName *.local
#  ServerAlias *.local
#  VirtualDocumentRoot /home/kbond/www/%1/web
#
#  SSLEngine on
#  SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
#  SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
#</VirtualHost>

Enable the site:

sudo a2ensite dev

Restart Apache:

sudo apache2ctl restart

Ensure your sites are added to /etc/hosts:

127.0.0.1    mysite.local

B. Enable SSL

Install ssl-cert:

sudo apt-get install ssl-cert

Enable ssl and default ssl site in apache:

sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 restart

C. Install Twig C Extension

Reference: http://twig.sensiolabs.org/doc/intro.html#installing-the-c-extension

Ensure gcc is intalled:

sudo apt-get install gcc

Then run the following:

git clone https://github.com/fabpot/Twig.git
cd Twig/ext/twig/
sudo phpize
sudo ./configure
sudo make
sudo make install

Add the following to your php.ini:

extension=twig.so

Restart Apache:

sudo apache2ctl restart

D. Enable ACL

Edit your filesystem table:

sudo nano /etc/fstab

Add acl to the options column of ext4:

# <file system>  <mount point>  <type>  <options>              <dump>  <pass>
UUID=...         /              ext4    acl,errors=remount-ro  0       1

E. Install icu/php-intl from source

Download latest ICU

./configure
make
make install

Download latest intl

phpize
./configure
make
make install

Add the following to your php.ini:

extension=intl.so

F. Install pdo_dblib/mssql from source

Download latest FreeTDS and compile:

./configure --prefix=/usr/local/freetds --with-tdsver=7.0 --enable-msdblib --with-gnu-ld
make
make install

Download source for your version of php

Compile pdo_dblib:

cd ext/pdo_dblib
phpize
./configure --with-pdo-dblib=/usr/local/freetds --with-php-config=/path/to/php-config
make
make install

Compile mssql:

cd ext/mssql
phpize
./configure --with-mssql=/usr/local/freetds --with-php-config=/path/to/php-config
make
make install

Add the following to your php.ini:

extension=pdo_dblib.so
extension=mssql.so

Note: ensure these are below extension=pdo.so

Ensure dblib it is available with:

php -r "phpinfo();" | grep "PDO drivers"

Note: during ./configure if you get the error: configure: error: Cannot find php_pdo_driver.h., edit the following section in the ./configure file:

From:

if test -f $abs_srcdir/include/php5/ext/pdo/php_pdo_driver.h; then
  pdo_cv_inc_path=$abs_srcdir/ext
elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then
  pdo_cv_inc_path=$abs_srcdir/ext
elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then
  pdo_cv_inc_path=$prefix/include/php/ext
fi

To:

pdo_cv_inc_path=/path/to/php_pdo_driver.h # mine was: /usr/include/php5/ext/pdo/php_pdo_driver.h

G. Install weasyprint

Install dependencies:

sudo apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev libxml2-dev libxslt-dev

Install weasyprint:

sudo pip install weasyprint
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment