Site performance is crucial to a good user experience, and also is a factor in SEO. Because Drupal sites can be very query heavy at times, their performance can suffer. Luckily, there are a few caching libraries than can solve this problem and help increase performance. In this tutorial we're going to install the Memcached library on a Media Temple DV Server, as well as configure the Memcache API and Integration module.
Memcached is described as a...
Free & open source, high-performance, distributed memory object caching system , generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.
Backup Your Server
Full disclosure, I'm not a server guy. I know basic server configuration settings, and how to navigate the server through the command line. The next steps worked for me, but becuase I'm not a server expert, I recommend you make a full backup of your server before you continue on with this tutorial.
Install Memcached on a Media Temple DV Server
If you're like me, you probably searched "How to install Memcached on a Media Temple DV Server" and found several results. Unfortunately for me, none of them worked. Again, I'm not a server guy, so I can't blame the authors as they did provided very details instructions. It was just that I ran into issues where I couldn't install a certain library, or copy a directory because of they way my server is set up.
Finally, after a lot of searching I stumped upon nLightened Development's excellent post titled Installing APC Memcached and Varnish on Media Temple DV Level 4 Centos 6.5. I want to give the author(s) of that post full credit for the commands I used to install Memcached on a Media Temple DV Server.
- The first you will need to do is enable root access on your Media Temple DV server.
- Next, you need to ssh into your server. To do that, run
ssh root@yourdomain.com
- You'll be prompted for your password with something like
root@yourdomain.com's password:
. You will not see your password being entered when you type it, so it's helpful to copy and paste. Hit enter. - Once logged in enter
cd ~
to ensure you're in the home directory. - Finally, run the following commands. Again, this is from nLightened Development's excellent post titled Installing APC Memcached and Varnish on Media Temple DV Level 4 Centos 6.5
yum install Memcached
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"
chkconfig --add memcached
cd /usr/local/src/
wget http://pecl.php.net/get/memcache
tar -xvf memcache
cd memcache-3.0.8/
/usr/bin/phpize
./configure -enable-memcache
make
make install
echo “extension=memcache.so” > /etc/php.d/memcache.ini
service httpd restart
- Confirm memcache is installed by running
telnet localhost 11211
- You should get something similar to the following
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
- Then run the following
stats
- If everything is setup correctly, you'll get an output similar to the following
STAT pid 518
STAT uptime 362776
STAT time 1449610483
STAT version 1.4.4
STAT pointer_size 64
STAT rusage_user 8.143761
STAT rusage_system 11.669226
STAT curr_connections 5
STAT total_connections 956
STAT connection_structures 20
STAT cmd_get 122913
STAT cmd_set 29485
STAT cmd_flush 0
STAT get_hits 106004
STAT get_misses 16909
STAT delete_misses 1973
STAT delete_hits 4647
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 144024662
STAT bytes_written 359296232
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 9615683
STAT curr_items 5094
STAT total_items 29485
STAT evictions 0
END
Edit php.ini
Now that memcached is installed on your server, you'll need to edit your domain specific php.ini file. Since we're dealing with a Media Temple DV, you can simply follow these steps to edit your domain specific php.ini file.
- Once on the PHP Settings page, scroll to the Additional directives section and add the following lines.
extension=memcache.so
memcache.hash_strategy="consistent"
If this doesn't work, you might need to also edited you global php.ini file, but I don't believe this is necessary.
cd ~
nano /etc/php.ini
- Then add the following
extension=memcache.so
memcache.hash_strategy="consistent"
- Finally, restart the server by running
/etc/init.d/httpd restart
Install and Enable the Drupal Memcache API and Integration Module
- Put your site in maintenance mode by going to admin/config/development/maintenance
- Install and enable Memcache API and Integration
Edit Drupal's settings.php
- Add the following to your settings.php file
$conf['cache_backends'][] = 'sites/all/modules/memcache/memcache.inc';
$conf['cache_default_class'] = 'MemCacheDrupal';
$conf['cache_class_cache_form'] = 'DrupalDatabaseCache';
$conf['memcache_servers'] = array('127.0.0.1:11211' => 'default');
$conf['memcache_bins'] = array('cache' => 'default');
- Take your site back online by going to admin/config/development/maintenance