Download - Make your cheap VM fly
professional services for the webconsultancy design development hosting training support
Saturday, March 2, 13
Making yourcheap VM fly!
Saturday, March 2, 13
The slidesDownload them here:
http://www.codeenigma.com/sites/default/files/field/blog-uploads/vm.pdf
Saturday, March 2, 13
Getting startedWhat do you need?
A virtual server - you can buy one (e.g. Linode, Rackspace) or you can run one on your computer (e.g. VMWare)
I’m using VirtualBox
Saturday, March 2, 13
Why would you do that?!
Saturday, March 2, 13
VirtualBox because...One reason:
VAGRANT!
It makes setting up a VM on your computer very easy
http://vagrantup.comhttp://www.vagrantbox.es
Saturday, March 2, 13
VirtualBox because...Quick plug:
16:30
Room BG104
Vagrant: A Crash Course with Marcus Deglos
Saturday, March 2, 13
Choose a base OSAssuming Linux here
You could use Ubuntu, Redhat, Debian, Mint, blah blah blah
We’re using CentOS...
Saturday, March 2, 13
THAT’S IT! I’M LEAVING!!
Saturday, March 2, 13
Don’t go, here’s why...I’m lazy
It doesn’t really matter
I’ll do a quick Ubuntu / Debian run through at the end
Please stay!
Saturday, March 2, 13
OK, let’s go...To prepare, we have:
1. Downloaded a basic CentOS base box for Vagrant
2. Brought up the network interface
3. Installed yum-priorities
4. Installed nano (I know, but I hate vim!)
Saturday, March 2, 13
OK, let’s go...We also installed a couple of repositories for CentOS:(Note, order is important.)
1. EPELrpm --import https://fedoraproject.org/static/0608B895.txt
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
2. Remirpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Saturday, March 2, 13
OK, let’s go...See also this excellent HOWTO which, though modified, is the basis for what I am demonstrating:
http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-on-centos-6.3
Saturday, March 2, 13
The databaseAt Code Enigma we use Percona, because it’s fully MySQL compatible but significantly quicker.
Percona keep their own Linux repositories:rpm --import http://www.percona.com/downloads/RPM-GPG-KEY-percona
rpm -ivh http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
Saturday, March 2, 13
The databaseDon’t forget to assign the new Percona repo a priority!
Then we can install and start the database server:yum install Percona-Server-client-55 Percona-Server-server-55 -y
service mysql start
Secure it and make sure it comes back after reboot:mysql_secure_installation
chkconfig --levels 235 mysql on
Saturday, March 2, 13
The web serverHere we use Nginx, which is much faster than Apache but there is one important thing you should know:
• No .htaccess files!
All that stuff that comes with Drupal - it needs to go in your Nginx server configuration
Saturday, March 2, 13
The web serverNginx is in the EPEL repository, so install away!
yum install nginx -y
Yup, that’s it!
Note, in CentOS the web root directory is in an odd place:
/usr/share/nginx/html
Saturday, March 2, 13
But what about PHP?Indeed, there is no PHP ‘module’ equivalent for Nginx.
Instead we use PHP-FPM, a packaged version of FastCGI
This is available for CentOS in the ‘Remi’ repository
Saturday, March 2, 13
But what about PHP?The standard set of packages needs a slight tweak:
DON’T use php-mysql
DO use php-mysqlnd instead
yum install php-fpm php-cli php-mysqlnd php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy -y
Saturday, March 2, 13
But what about PHP?Then there’s APC, opcode caching for PHP
yum install php-pecl-apc -y
And finally, let’s make sure these services start!
chkconfig --levels 235 nginx onchkconfig --levels 235 php-fpm on
Saturday, March 2, 13
Configuration timeWith all the building blocks in place, it’s time to configure!
1. The firewall - let’s allow HTTP traffic:
/etc/sysconfig/iptables
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT-A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT
Saturday, March 2, 13
Configuration time2. PHP configuration:APC needs 128M RAM (shm_size) to be effectivehttp://2bits.com/articles/importance-tuning-apc-sites-high-number-drupal-modules.html
3. Nginx configuration:- Drupal .htaccess file rules- FastCGI configuration- We have a consolidated configuration file
Saturday, March 2, 13
Configuration time/etc/php.d/apc.ini
[...]; The size of each shared memory segment, with M/G suffixeapc.shm_size=128M[...]
/etc/nginx/nginx.conf
[...]worker_processes 4;[...]keepalive_timeout 2;[...]
Saturday, March 2, 13
Configuration time/etc/nginx/conf.d/default.conf
location / { root /usr/share/nginx/html; index index.php index.html index.htm;}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000#location ~ \.php$ { root /usr/share/nginx/html; try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params;}
Saturday, March 2, 13
Configuration time/etc/nginx/conf.d/default.conf
# deny access to .htaccess files, if Apache's document root# concurs with nginx's one#location ~ /\.ht { deny all;}
Saturday, March 2, 13
Let’s Drupal!Create a database, then:
wget http://ftp.drupal.org/files/projects/drupal-7.20.tar.gztar -zxvf drupal-7.20.tar.gz
sudo mv drupal-7.20 /usr/share/nginx/sudo mv /usr/share/nginx/html /usr/share/nginx/html_oldsudo mv /usr/share/nginx/drupal-7.20 /usr/share/nginx/html
sudo mkdir /usr/share/nginx/html/sites/default/filessudo cp /usr/share/nginx/html/sites/default/default.settings.php /usr/share/nginx/html/sites/default/settings.php
Saturday, March 2, 13
Let’s Drupal!REMEMBER there are some very specific Nginx configurations for Drupal:
http://wiki.nginx.org/Drupal
Saturday, March 2, 13
OK, but where’s Varnish?Good question!
Less than 4GB RAMVarnish does more harm than good!
Saturday, March 2, 13
Other bitsWhat about drush?
http://packages.codeenigma.com/debian/pool/main/
What about Ubuntu / Debian?
All of these packages are available in the ‘dotdeb’ repo:http://www.dotdeb.org/http://www.webhostingtalk.com/showthread.php?t=1025286
Saturday, March 2, 13
Other bitsDon’t forget memcached!
http://drupal.org/project/memcache
Highly recommended as a replacement cache back-end
Available in all ‘major’ Linux repositories
We usually give memcached 512M RAM
Saturday, March 2, 13
questions?
Saturday, March 2, 13
Those slides againhttp://www.codeenigma.com/sites/default/files/field/blog-uploads/vm.pdf
Saturday, March 2, 13
professional services for the webconsultancy design development hosting training support
Saturday, March 2, 13