Magento upgrade from 1.4, 1.5, 1.6, 1.7, or 1.8 to 1.9

NOTE: this upgrade process works the same way for Magento version 1.4, 1.5, 1.6, 1.7, 1.8, and 1.9

As many magento users will know, Magento is no fun to work with-- mainly due to poor community support (the developers help paying customers; i.e. Magento Enterprise ... Only payed support there... Great for business but bad for the average or beginning user...)


So here's how we do it.


You can skip this step all together, however, please make a backup of everything prior to beginning the upgrade.

Create a test environment somewhere on your server (preferably away from your production installation)

Tags: how-to magento magento upgrade

How to install Composer and Drush LOCALLY and GLOBALLY

Drush 9.x Install Composer to your LOCAL user directory

cd ~
mkdir .composer
curl -sS | php
mv composer.phar ~/bin/composer
chmod +x ~/bin/composer
echo "PATH=$PATH:~/.composer/vendor/bin" >> ~/.bash_profile
. ~/.bash_profile

Install latest version of Drush locally

Get the latest (or whatever) version here:

composer require drush/drush

And we done...

Tags: Drupal Administration Linux drush composer

How to set max_open_files in MariaDB / MySQL in CentOS 7

Set the system wide open file limit:

vi /etc/security/limits.conf

Change/Add the following:

* soft nofile 1024000
* hard nofile 1024000
* soft nproc 10240
* hard nproc 10240

Now do this for /etc/sysctl

vi /etc/sysctl

Add the following

fs.file-max = 1024000

Set the changes

sysctl -w fs.file-max=1024000
sysctl -p
# check changes
cat /proc/sys/fs/file-max

Set the mysqld.service limit (as settings here will override *.cnf ones)

Set both /etc/systemd/system.conf and /etc/systemd/user.conf

vi /etc/systemd/system.conf
vi /etc/systemd/user.conf

Add the following under [Manager] for both:

Tags: Linux mysql mariadb

Add memcached Support to Magento

After you successfully install memcached and pecl/memcached (memcached PHP support), you will next want take full advantage of it by enabling native support for memcached in magento.

NOTE: you must have memcached and pecl/memcached already installed. Otherwise your Magento installation will break if you try following this guide.

Ok... now that the warning is out the way. Here's how we do it...

Edit your local.xml

vi ./app/etc/local.xml

Add the following between

Tags: magento memcached Linux

Easily manage magento extension installations with modman and generate-modman

Modman lets you install/uninstall magento extensions without the use of Magento Connect.

Why would you use modman?

Say you have an extension that doesn't use Magento Connect--where you upload it's contents manually. When you want to uninstall that extension, you have to tediously/manually search the installation files/folders and remove them by hand.

With modman, this is done for you perfectly--no more tedious labor.

Install modman

Let's first install modman.

1. Enable symlink support in magento: System > Configuration > Advanced > Developer , Under "Template Settings" > "Allow Symlinks" select "Yes"

2. Download and run the installer.

Tags: magento modman

How to install OPCache using DirectAdmin custombuild

If you used custombuild to install opcache, then you will need to set the opcache settings there.

cd /usr/local/directadmin/custombuild
 vi options.conf

Change opcache=no to opcache=yes


Set your opache settings here:

vi custom/opcache/opcache.ini

Here are my settings (This is for a fast server, with 128GB RAM):

Tags: Linux DirectAdmin custombuild opcache

How to install GraphicsMagick with GMagick PHP extension

Let's install GraphicsMagick!

cd /usr/local/src
tar xvfz GraphicsMagick-LATEST
cd GraphicsMagick-*
./configure --enable-shared
make install

Let's test it.

gm version 

If you get this error:

gm: error while loading shared libraries: cannot open shared object file: No such file or directory

 Do this to fix:

echo "/usr/local/lib" >> /etc/

Ok... Let's install GMagick PHP extension

Tags: Linux admin GraphicsMagick imagemagick

Enable DKIM and have Exim SMTP banner use the accounts dedicated IP in DirectAdmin for PHP mail

Enable DKIM and change the PHP mail SMTP Sender banner

To Change the "Sender" info we have to do the following:

cd /usr/local/directadmin/data/templates/custom/
cp /usr/local/directadmin/data/templates/virtual_host2.conf /usr/local/directadmin/data/templates/custom/
cp /usr/local/directadmin/data/templates/virtual_host2_secure.conf /usr/local/directadmin/data/templates/custom/
sed -i 's/`USER`@`DOMAIN`/no-reply@`DOMAIN`/g' ./virtual_host2*.conf
echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq d
Tags: Linux exim DirectAdmin DKIM spam SMTP PHP mail email

How to install an SVN version of Apache using Directadmin Custombuild

This is a quick guide to help out those trying to install an NON-RELEASE version of apache. It was made due to intermittent crashes of apache 2.4.25 with HTTP2 on CentOS with DirectAdmin.

You can see the changelog here:

Here is the DirectAdmin discussion this was first reported on:


Here's the fix:

Tags: apache http2 DirectAdmin centos

Pinterest: How to exclude images from being pinned via jQuery.

Say you have Pinterest setup on your site to allow pinning or saving of images. However, you obviously don't want this enabled for all images (ex: menu images, footer images, etc).

Here's how to exclude certain images from being recognized by Pinterest:

In Magento, you would add the following to your local.xml, under <reference name="head">:

Tags: jquery pinterest magento

HOW-TO: create a Drupal views block to display the current node content

In views section, for an existing view or newly created one, do the following:

  1. Click "Add" > "Block"
  2. Fill in whatever you normally would do in views (this is beyond the scope of this tutorial)
  3. Under "Contextual Filters" > click "Add" >  "Content: Nid" > "Provide default value" > "Content ID from URL"

And that's that... 

Tags: Drupal Views

How to install HTTP/2 on DirectAdmin

Install OpenSSL with ALPN support

cd /usr/local/src/
tar xzf openssl-1.0.2j.tar.gz
cd openssl-1.0.2j
./config --prefix=/usr/local/lib_http2 no-ssl2 no-ssl3 zlib-dynamic -fPIC
make depend
make install

Install nghttp2 - HTTP/2 Library

cd /usr/local/directadmin/custombuild
./build update
./build nghttp2

​Install HTTP/2 for Apache 2.x

cd /usr/local/directadmin/custombuild
mkdir -p custom/ap2
cp -p configure/ap2/configure.apache custom/ap2/configure.apache
vi custom/ap2/configure.apache

### REPLACE "--with-ssl=/usr" \
### WITH:

        "--enable-http2" \
        "--enable-ssl-staticlib-deps" \
        "--with-ssl=/usr/local/lib_http2" \

### Rebuild apache

./build apache

### Add HTTP/2 settings to httpd-includes.conf
Tags: DirectAdmin Linux http2 http/2

How to check if your drupal site was hacked (and how to fix it)

Install drupalgeddon on your server:

drush dl drupalgeddon

Install Site Audit:

drush dl site_audit --dev

Install Hacked:

drush dl hacked --dev; drush en hacked -y

Install Security Review:

drush en security_review -y

OPTIONAL: run all the above in a single line.

drush dl drupalgeddon -y; drush dl site_audit --dev -y; drush dl hacked --dev -y; drush en hacked -y; drush en security_review -y

Run the drupalgeddon site audit--this will also run the above modules--this will create a file called 'report.html'. Open it up and see what's up.

Tags: Drupal hack security drupalgeddon

New Linux Server Checklist (2017 Edition)

These are some of the basic things I do when I setup a new server

Get the latest directadmin.conf values

With each version of DirectAdmin, new configuration values are introduced that you may not know about. To see ALL these values do the following:

/usr/local/directadmin/directadmin c | sort -n

You can essentially copy/paste the entire results into your /usr/local/directadmin/conf/directadmin.conf replacing anything else in there.

Setup DirectAdmin with an SSL certificate


If you don't own a certificate, you can create your own with

Tags: how-to Linux Server checklist best-practice

How to install CSF (ConfigServer Security & Firewall) with DirectAdmin or WHM

Block IPs with Brute Force Monitor in DirectAdmin using CSF


Regular install of CSF

cd /usr/local/src
tar -xzf csf.tgz
cd csf

Now login as Admin into directadmin or WHM, and click the link ConfigServer Security & Firewall

You'll probably want to add your WAN IP here--you can find out what it is here:

Then add your WAN IP into Quick Allow column.

Tags: CSF firewall security Linux Server admin DirectAdmin

htaccess redirect specific domains to https

Here's how to redirect ONLY specific domains to HTTPS with .htaccess.

RewriteEngine on

# Redirect all domains to use 'www.'

​RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Redirect ONLY specific domains to HTTPS

RewriteCond %{HTTP_HOST} ^(www\.)?(||$
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

What the above does is:

MariaDb/MySQL how to fix Unknown/unsupported storage engine: InnoDB

If you changed /etc/my.cnf "innodb_log_file_size" setting, then may get this error:

 [ERROR] InnoDB: Unrecognized value JO_DIRECT for innodb_flush_method
 [ERROR] Plugin 'InnoDB' init function returned error.
 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.

You probably tried the following fix:

rm /var/lib/mysql/ib_logfile0  
rm /var/lib/mysql/ib_logfile1

However, if you set innodb_log_file_size to something large like 2G,  and tried restarting mysqld, the startup will seem like it's taking FOREVER (and it does, compared to regular startup)... and you probably force quit the restart, thinking something is wrong.

How to install PECL uploadprogress w/ PHP 7 support

Original uploadprogress doesn't seem to be developed any longer, and hence doesn't support PHP 7. However, there's a PHP 7 compatible version we can use:

cd /usr/local/src/
git clone
cd uploadprogress
make install

Now add the extension to your php.ini

vi /usr/local/lib/php.ini

Add the following to your extensions section:

Restart apache

service httpd restart

Here are additional steps you may need to take:

Or if you are using PHP 5.X:

Tags: Drupal linux server media

How to add Google Fonts to Drupal 8 theme, the PROPER way

Here's the proper way to add external google fonts.

NOTE: Important parts here are and YOURTHEMENAME.libraries.yml



'//,400,300,700|Open+Sans:300italic,400,300': { type: external, minified: true }

core: 8.x
type: theme
base theme: bootstrap

Drupal 8 drush critical update commands

There are some new drush Drupal 8 commands that are critical to updating your site. The big new one here, is "drush entitity-updates".  Which should be initiated AFTER "drush updb".

Otherwise, if you check your Drupal 8 "Status Report" you may get an error showing "Entity/field definitions: Mismatched entity and/or field definitions"--which won't be apparent, unless you check the Status Report.

So here goes... 

Clear all cashes (no longer "drush cc all"):

drush cr 


drush cache-rebuild

Update the database (this is still the same, however, you won't be done here):

drush updb

After running "drush updb", you should next run entity updates command:

drush entup


Tags: Drupal drupal 8 drush

How to install Apache Solr 5.x for use with Drupal

Here's the updated version on how-to install Apache Solr 5.x and get it running with Drupal (WITHOUT Apache Tomcat; as Solr 5.x doesn't support Tomcat anymore).

Install Java 1.8

yum install java-1.8.0-openjdk.x86_64
# or
aptitude install java8-jdk

Create a symlink to wherever your /etc/bashrc or ~/.bashrc has

export JAVA_HOME=/usr/local/jdk

set to.

Tags: apache apache solr Drupal Server admin

Fix magento 1.9 price rules "Stop Further Rules Processing"

There's a bug affecting all magento 1.9 versions, that prevents users from applying multiple coupons to their order--even if "Stop further rules processing" is NOT selected.

Basically, a customer can only apply a single coupon to their order--no stacking of coupons works in Magento 1.9.

Here's the fix, you'll need modman and generate-modman installed:

Tags: magento

Tighten SSL security: SSL certificate chain and SSLCipherSuite

Update SSLCipherSuite


Clicking the certificate info in chrome, you'll see a message:

"Your connection is encrypted using an obsolete cipher suite."


vi /etc/httpd/conf/extra/httpd-ssl.conf

Replace SSLCipherSuite with the following:


Restart Apache.

service httpd restart

Optional: Update ssl_cipher in directadmin.conf

vi /usr/local/directadmin/conf/directadmin.conf

Replace or add:

Tags: Server admin SSL DirectAdmin

Enable WHM SSH safemode if you lock yourself out

If you locked yourself out of SSH in WHM/Cpanel for whatever reason--e.g. you specified an invalid AllowUsers in /etc/ssh/sshd_config--you can reload SSH service in safemode, by pasting this into your browser's address bar:


Then login with your root credentials, and sshd will be restarted in safemode, allowing you to login and fix your /etc/ssh/sshd_config.

Once done, restart ssh:

service sshd restart
Tags: Linux ssh

How to install Apache Solr 4.6 with Apache Tomcat 7, for use with Drupal

Here's the 2014 version on how-to install Apache Solr 4.10, alongside Apache Tomcat 7, to help out with things like Drupal faceted search.

Ok... let's do this.

Install Java 1.7

yum install java-1.7.0-openjdk
# or
aptitude install java7-jdk

Done--that was quick.

Install Tomcat 7

Get the latest version of Tomcat here:

HOW TO create a Gmail filter to automatically delete emails Older than X amount of days

Let's say you want to AUTOMATICALLY delete all "Promotional" emails from your Gmail after 90 days.

Step 1:

Go to Settings -> Filters -> Create a new filter

Step 2:

Type the following into "Has the words" field:

category:promotions older_than:90d

Step 3:

Click "Create filter with this search"

Step 4:

Select "Delete it" and finally click "Create filter" button... 

And... we're done!

The key here is older_than:90d, you can just as easily create whatever time-based filter you want with that.

Tags: gmail email

How to move an account from DirectAdmin to WHM/cPanel

If you tried using WHM's Transfer Tool on very large sites, you've probably got a timeout error.

To fix this, we'll need to do this through SSH (via root) what the Transfer Tools wasn't able to do itself.


The Transfer Tool will create a /scripts directory--with all required scripts--at the base of your server, which we will use to create WHM/cPanel compatible backups.

The name of the script will look like the following: /scripts/pkgacct.YOUR_CPANEL_SERVER_NAME

Type the following to get the exact name:

ls -la /scripts/

Next, go into your /home directory to get a listing of the account names.

Tags: Server Linux cpanel DirectAdmin transfer