make your cheap vm fly
DESCRIPTION
Greg Harvey from Code Enigma presented their server configuration - our recipe for super-fast, robust and reliable performance from cheap virtual hardware. http://hosting.codeenigma.com/TRANSCRIPT
![Page 1: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/1.jpg)
professional services for the webconsultancy design development hosting training support
Saturday, March 2, 13
![Page 2: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/2.jpg)
Making yourcheap VM fly!
Saturday, March 2, 13
![Page 3: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/3.jpg)
The slidesDownload them here:
http://www.codeenigma.com/sites/default/files/field/blog-uploads/vm.pdf
Saturday, March 2, 13
![Page 4: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/4.jpg)
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
![Page 5: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/5.jpg)
Why would you do that?!
Saturday, March 2, 13
![Page 6: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/6.jpg)
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
![Page 7: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/7.jpg)
VirtualBox because...Quick plug:
16:30
Room BG104
Vagrant: A Crash Course with Marcus Deglos
Saturday, March 2, 13
![Page 8: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/8.jpg)
Choose a base OSAssuming Linux here
You could use Ubuntu, Redhat, Debian, Mint, blah blah blah
We’re using CentOS...
Saturday, March 2, 13
![Page 9: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/9.jpg)
THAT’S IT! I’M LEAVING!!
Saturday, March 2, 13
![Page 10: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/10.jpg)
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
![Page 11: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/11.jpg)
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
![Page 12: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/12.jpg)
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
![Page 13: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/13.jpg)
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
![Page 14: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/14.jpg)
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
![Page 15: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/15.jpg)
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
![Page 16: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/16.jpg)
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
![Page 17: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/17.jpg)
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
![Page 18: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/18.jpg)
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
![Page 19: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/19.jpg)
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
![Page 20: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/20.jpg)
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
![Page 21: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/21.jpg)
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
![Page 22: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/22.jpg)
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
![Page 23: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/23.jpg)
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
![Page 24: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/24.jpg)
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
![Page 25: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/25.jpg)
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
![Page 26: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/26.jpg)
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
![Page 27: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/27.jpg)
Let’s Drupal!REMEMBER there are some very specific Nginx configurations for Drupal:
http://wiki.nginx.org/Drupal
Saturday, March 2, 13
![Page 28: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/28.jpg)
OK, but where’s Varnish?Good question!
Less than 4GB RAMVarnish does more harm than good!
Saturday, March 2, 13
![Page 29: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/29.jpg)
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
![Page 30: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/30.jpg)
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
![Page 31: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/31.jpg)
questions?
Saturday, March 2, 13
![Page 32: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/32.jpg)
Those slides againhttp://www.codeenigma.com/sites/default/files/field/blog-uploads/vm.pdf
Saturday, March 2, 13
![Page 33: Make your cheap VM fly](https://reader034.vdocuments.us/reader034/viewer/2022051514/54b698d94a795968278b4625/html5/thumbnails/33.jpg)
professional services for the webconsultancy design development hosting training support
Saturday, March 2, 13