Moving from DigitalOcean to Vultr after price change (July 2022)

Recent price change in DigitalOcean make me reconsider old friend that I rarely visit. After my workload seem to slow down I decide to make little comparison. This table is for my friend vps that use DigitalOcean before move to Vultr.

So, he will pay $4 more than usual.

Related screnshot (regular)

Related DO (premium)

Interestingly DO have new $4 package for regular (10 GB storage)

In Vultr side

Shared vCPU is enough with regular performance (for no.1 and 2 server)

For server 3, vultr also support it

reguler 1 and 2

My friend told me if vultr have $2.5 and $3.5 server but I can’t see it.

At the end, I have same price as in DigitalOcean before price change but in Vultr.

After I give this table to my friend he refuse it and modify my table into this one.

He told me to help migration process with this table within 2 weeks.

Now the process is finished. Nothing change much except server 2 that use lower memory . I suggest him to use $5 from vultr . As he’ll get double memory and storage.

I give my referral link from vultr that give him $100 to get start.

 

Saved by the bell (Vultr)

For limited time Vultr give you $50 free credit . Use this link to get the offer.

One of my client dedicated server crash due to electrical failure. They want the service run as soon as possible.

The problem is their service run with old centos 5 because they use old php 5.2 for the web based app. New version of app is not ready yet. Still baked by the programmer teams.

Vultr come to rescue by providing custom iso service. They let us using iso simply by providing link to the iso then mounting the iso then reboot to start install.

For my case, I use 64 bit iso 5.11 from centos vault here.

Get yum update work on centos 5.11

nano /etc/yum.repos.d/CentOS-Base.repo

put these lines :

[base]

name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/5.11/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[updates]

name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/5.11/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[extras]

name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/5.11/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[centosplus]

name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/5.11/centosplus//x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

[contrib]

name=CentOS-$releasever - Contrib
baseurl=http://vault.centos.org/5.11/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

yum clean all

yum update

For php 5.2.17 section I use this guide.

Testing UpCloud : another awesome VPS that support Singapore

Well, the title is bit subjective since I live in Asia then any Singapore node would be my concern. Specially new one (I don’t know about upcloud till their ads show up in my instagram feed 🙂 ).

The price also come affordable so I decide to try it with one study case, install centminmod beta!

Lets get start!

Deployment process is not hard as I already have experience with Vultr, DigitalOcean and Linode.

Enter server name and short description.

I pick Singapore zone

Choose $5/month server

I let disk name as is and pick CentOS 6.9 as operating system.

Skip ssh keys and change little in timezone and ipv6 to no (i don’t need it)

Pay attention to summary and hit ‘Deploy Server’ button.

This next section is wait 🙂

I got stuck in this part till I deposit money in billing section (might be trial mode make me stuck in this step but after deposit everything work well)

Install Centminmod Beta

I prefer to use php 7

yum -y update; curl -O https://centminmod.com/betainstaller7.sh && chmod 0700 betainstaller7.sh && bash betainstaller7.sh

wait for moment

My connection seem not stable so I got disconnected from server during centminmod installation. Continue with installation but still no luck. Nginx installation went wrong and also the rest (php, mysql).

I decide to reinstall the server

In this section I can see ‘Reinstall’ button as I want reinstall my server for clean start. Well, I hope they will add that feature.

So I delete server and create from scratch new server that run CentOS 6.9.

This time I use legacy stable CentMinMod.

yum -y update; curl -O https://centminmod.com/installer.sh && chmod 0700 installer.sh && bash installer.sh

Wow, this time everything work very fast. Might be processor plus the MaxIOPS things that do the magic.

Thank You for my friend who tell me about upcloud by using his code I get $25 for my credit. You’re also welcome to use my code by clicking HERE and get $25 for your upCloud account.

I’ll consider to deploy more server , keep up the good work upCloud!

How to upgrade storage in VPS

Yes, I know the title is not good enough for many of you but not for me. I’m in a hurry when I need this feature. Lucky me, the process is not difficult at all.

Problem. One of vps server that reside in digitalocean need to upgrade the storage as the report told me about the service not run well due to unsufficient storage.

Further investigation tell me the truth.

df -H

Filesystem Size Used Avail Use% Mounted on
/dev/vda1 32G 30G 278M 100% /
tmpfs 523M 0 523M 0% /dev/shm
/home/usertmp_donotdelete
4.0G 12M 3.8G 1% /tmp

Well, only 278M left after delete log file and a few old backup files.

I know if digitalocean provide volume service and now its time to use it 🙂

Click the ‘Add Volume’ button lead me to this display.

Enter size for this volume and set the name. Hit Create Volume button to start create the space.

Wow, really cool. You just need to copy and the command. It just works!

Step1 :

sudo mkfs.ext4 -F /dev/disk/by-id/scsi-0DO_Volume_skripsi

mke2fs 1.41.12 (17-May-2010)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1966080 inodes, 7864320 blocks
393216 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
240 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Step 2 :

sudo mkdir -p /mnt/skripsi; sudo mount -o discard,defaults /dev/disk/by-id/scsi-0DO_Volume_skripsi /mnt/skripsi; echo /dev/disk/by-id/scsi-0DO_Volume_skripsi /mnt/skripsi ext4 defaults,nofail,discard 0 0 | sudo tee -a /etc/fstab

Check if mounted

mount

/dev/vda1 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/home/usertmp_donotdelete on /tmp type ext4 (rw,noexec,nosuid,loop=/dev/loop0)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sda on /mnt/skripsi type ext4 (rw,discard)

Wow, in less than 5 minutes the job gets done and everyone happy 🙂

Thank You DigitalOcean, good work.

How to install php 5.2.17 on CentOS 6.9

Long time no see 🙂 . Being busy with a few machines that got EOL phase. Yes, many legacy app require PHP 5.2.17 but developer nor the company refuse to upgrade. Now, the machine also reach end of life (CentOS 5.11) . The only option available is upgrade the OS with CentOS 6 or CentOS 7.

I use VPS to simulate the process and write it here for documentation purpose, lets get start!

Upgrade to latest CentOS 6

yum update

Install required files

yum install gcc make httpd-devel libxml2-devel bzip2-devel openssl-devel curl-devel gd-devel libc-client-devel libmcrypt-devel libmhash-devel mysql55-devel aspell-devel libxslt-devel nano wget

download php 5.2

wget http://museum.php.net/php5/php-5.2.17.tar.gz 
tar -zxvf php-5.2.17.tar.gz
cd php-5.2.17

Configure

./configure --prefix=/usr/local/php52 --with-apxs2=/usr/sbin/apxs --with-config-file-path=/usr/local/lib/php52/ --disable-posix --enable-bcmath --enable-calendar --enable-exif --enable-fastcgi --enable-ftp --enable-gd-native-ttf --enable-libxml --enable-magic-quotes --enable-mbstring --enable-pdo --enable-soap --enable-sockets --enable-wddx --enable-zip --with-bz2 --with-curl --with-curlwrappers --with-freetype-dir --with-gd --with-gettext --with-jpeg-dir --with-kerberos --with-libxml-dir --with-libxml-dir --with-mcrypt --with-mhash --with-mime-magic --with-mysql --with-mysqli --with-openssl --with-openssl-dir --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pic --with-png-dir --with-pspell --with-sqlite --with-ttf --with-xmlrpc --with-xpm-dir --with-xsl --with-zlib --with-zlib-dir

Collection off problems occured during install

problem 1 :

configure: error: libjpeg.(a|so) not found.

solution

ln -s /usr/lib64/libjpeg.so /usr/lib/libjpeg.so

problem 2 :

configure: error: libXpm.(a|so) not found.

solution

ln -s /usr/lib64/libXpm.so /usr/lib/libXpm.so

problem 3 :

configure: error: mcrypt.h not found. Please reinstall libmcrypt.

solution

yum install epel-release
yum install libmcrypt-devel

problem 4 :

configure: error: Please reinstall libmhash – I cannot find mhash.h

solution

yum install libmhash-devel

problem 5 :

configure: error: Cannot find MySQL header files under yes.

solution

yum install mysql-server mysql-devel
ln -s /usr/lib64/mysql /usr/lib/mysql

problem 6 :

configure: error: libpng.(a|so) not found

solution

ln -s /usr/lib64/libpng.so /usr/lib/libpng.so

Install php 5.2.17

make && make install

….
………
Installing PEAR environment: /usr/local/php52/lib/php/
[PEAR] Archive_Tar – installed: 1.3.7
[PEAR] Console_Getopt – installed: 1.2.3
[PEAR] Structures_Graph- installed: 1.0.3
[PEAR] XML_Util – installed: 1.2.1
[PEAR] PEAR – installed: 1.9.1
Wrote PEAR system config file at: /usr/local/php52/etc/pear.conf
You may want to add: /usr/local/php52/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/php52/include/php/ext/pdo/

Edit httpd.conf

Make sure you have these lines in httpd.conf

nano /etc/httpd/conf/httpd.conf

LoadModule php5_module /usr/lib64/httpd/modules/libphp5.so
AddType application/x-httpd-php .php .phtml

Start Apache and mysql service

service httpd start
service mysqld start

Make permanent service

chkconfig --level 35 httpd on
chkconfig --level 345 mysqld on

Firewall Setting

iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

Done.

How to install ioncube loader on easyengine + php 7

I need to test chat engine from arrowchat and as usual I try to document the process in this blog. Arrowchat provide trial for 10 days. This version encrypted with ioncube and the server need to use ioncube loader.

I learn the hard way just to try arrowchat install display 🙂

ee site create chat.score.com --mysql --php7

Remove php 5.6 from system

ee stack remove --php

Check running php process :

ps ax | grep php

1068 ?        Ss     0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf)

Copy file .so

ls /usr/lib/php/

20121212  20131226  20151012  20160303  7.0  php-helper  php-maintscript-helper  php7.0-fpm-reopenlogs  session-clean

ls /usr/lib/php/20160303/

igbinary.so  imagick.so  memcache.so  memcached.so  msgpack.so  redis.so  xdebug.so

Send ioncube loader

scp Downloads/ioncube/ioncube_loader_lin_7.0.so root@ip:/root

mv /root/ioncube_loader_lin_7.0.so /usr/lib/php/20160303/

php.ini add in last one :

nano nano /etc/php/7.0/fpm/php.ini

zend_extension = /usr/lib/php/20160303/ioncube_loader_lin_7.0.so

restart nginx and friends

ee stack restart

PHP5.6-FPM is not installed
Restart : nginx     [OK]
Restart : php7.0-fpm[OK]
Restart : mysql     [OK]
Restart : postfix   [OK]

Upload arrowchat

scp Downloads/arrowchat_trial_v2.0.1.zip root@ip:/root
mv /root/arrowchat_trial_v2.0.1.zip .

cat ../ee-config.php

<?php
define(‘DB_NAME’, ‘chat_score_com’);
define(‘DB_USER’, ‘chat_score_com’);
define(‘DB_PASSWORD’, ‘yMlgjwRHUDpQv23’);
define(‘DB_HOST’, ‘localhost’);

tail -f ../logs/error.log

2017/04/18 03:34:56 [error] 2404#0: *28 FastCGI sent in stderr: “PHP message: PHP Fatal error:  The file /var/www/chat.score.com/htdocs/arrowchat/index.php was encoded by the ionCube Encoder for PHP 5.0 and cannot run under PHP 7.0.
Please ask the provider of the script to provide a version encoded with the ionCube Encoder for PHP 5.6. in Unknown on line 0” while reading response header from upstream, client: 36.77.133.96, server: chat.score.com, request: “GET /arrowchat/ HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9070”, host: “chat.score.com”

Reinstall php 5.6

ee stack install --php

Remove php 7.0

ee stack remove --php7

PHP 7.0 not supported.
Are you sure you to want to remove from server.
Package configuration will remain on server after this operation.
Any answer other than “yes” will be stop this operation :  yes
Removing packages, please wait…
Successfully removed packages
PHP5.6-fpm found on system.
Verifying and installing missing packages,

Reupload ioncube for php 5.6

scp Downloads/ioncube/ioncube_loader_lin_5.6.so root@ip:/root

mv /root/ioncube_loader_lin_5.6.so /usr/lib/php/20151012/

edit php.ini

nano /etc/php/5.6/fpm/php.ini

zend_extension = /usr/lib/php/20151012/ioncube_loader_lin_5.6.so

Restart nginx

ee stack restart --nginx

Restart : nginx     [OK]

Update php version to old one

ee site update chat.score.com --php7=off

Summary :

If you want to try arrowchat then you’ll need make sure that you use php 5.6 🙂 . NO php 7 support at this moment.

How to setup your own Invoice Ninja server with $2.5/mo budget

My friend ask me to test Invoice Ninja on my server. This software is very popular since you can do many things with invoice. This software made with Laravel 5.2 and I’ve test it ‘hard way’ in my vps .I think I can share simpler way to get this software run in affordable vps.

This documentation using Vultr vps smallest server and serverpilot free account. In nutshell, you have great invoice software with free control panel 🙂

Lets get start!

Setup VPS Server

VPS provider is Vultr. They provide the plan with pricing $2.5/month.

I use Ubuntu (14.04 64 bit) with following specs : 512MB and 20GB SSD storage.

After hit deploy button write down these information :

  1. Ip address
  2. username (root)
  3. password for vps server

Setting URL for access Invoice Ninja

I use Simple Zone Editor from my cpanel hosting to set A record for subdomain http://ninja.hostingformula.net

update :

I change my dns manager to cloudflare.

$ dig ns hostingformula.net

; <<>> DiG 9.9.5-3ubuntu0.13-Ubuntu <<>> ns hostingformula.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47657
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;hostingformula.net.        IN    NS

;; ANSWER SECTION:
hostingformula.net.    84500    IN    NS    naomi.ns.cloudflare.com.
hostingformula.net.    84500    IN    NS    dom.ns.cloudflare.com.

;; Query time: 4528 msec
;; SERVER: 108.61.10.10#53(108.61.10.10)
;; WHEN: Tue Apr 04 05:52:45 UTC 2017
;; MSG SIZE  rcvd: 102

For cloud flare user just assign A record to vps ip address.

This url is not working yet but we’ll working on it 🙂 More

How to transfer self hosted vps wordpress to cpanel hosting

Another case for hostingformula presented by my brother 🙂 . He use vps for his blog that backed by wordpress. Not critical blog actually. He use it for daily ramblings and so on. Unfortunately his vps expire and he already get cpanel hosting for his next place. He ask me to transfer his blog as soon as possible.

The plan for his blog are :

Request for ssh access

Many cpanel hosting support ssh but this feature not enabled by default. You have to open a ticket and ask for activate ssh access for your cpanel account. Note : every hosting company have different policy including ssh port. Usually its not 22 but you ask for exact port for sure.

Use scp

My brother cpanel hosting is very limited in space. He’s current use around 400 MB and his cpanel hosting space is 500 MB. Very tight huh 🙂 . Scp come for rescue in this case. The exact command for scp transfer from vps to cpanel :

scp -P 24579 -r wp-content usernamecpanel@ipaddress:.

24579 is ssh port  (your webhosting ssh port is vary)

-r is recursive mode transfer

wp-content ; wordpress heavily use wp-content folder to store plugins, uploaded image, backup etc. I need only this folder as I can download latest wordpress code from wordpress.org .

Fix Permission

Many cpanel hosting use suphp . You’ll need to fix permisson for folder (755) and files (644) or you’ll get annoying error message when you access your wordpress blog.

Quick commands :

find wordpress_folder/ -type d -print0 | xargs -0 chmod 0755

find wordpress_folder/ -type f -not -name “*.pl” -not -name “*.cgi” -not -name “*.sh” -print0 | xargs -0 chmod 0644

Done. The plan is complete now 🙂

Maybe I’ll let my brother to do it himself now and I’ll check his work.

Bonus Plan

To avoid downtime he need to set cloudflare account and activate it for dns only. When everything is fine then he can activate proxy function.

Fix Crawl 404 Error on Google Search Console

I just find out that one of my blog got hacked. The intruder put a file in wp-content directory and cause 404 error .

crawl_hacked_page

Wow, huge one (77,630) error.

What I’ve done to fix this error :

  1. Delete the page ; xx-data.php
  2. Select all error from google search console and click ‘Mark as Fixed’
  3. Request xx-data.php removal from Google index

haacked_page

Let see if I see another error. Will update this post soon.

Fix MySQL 113 error

Yesterday I got 113 error code from MySQL when I try to test access it from network.

The machine have 2 lan cards (192.168.103.254 and 192.168.1.89). Both of them are active and I can ping it.

# mysql -ualam -p -h 192.168.103.254
Enter password:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.103.254’ (113)
# mysql -ualam -p -h 192.168.1.89
Enter password:
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘192.168.1.89’ (113)

After see the major.io post about MySQL error codes . I find out that the problem might came from firewall.

Check current firewall state :

# cat /etc/sysconfig/iptables

# Generated by iptables-save v1.3.5 on Thu Aug 13 13:13:27 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [389671:206304610]
:RH-Firewall-1-INPUT – [0:0]
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 8082 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -j RH-Firewall-1-INPUT
-A INPUT -i eth0 -p tcp -m tcp –dport 3306 -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp –dport 3306 -j ACCEPT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp –icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp –dport 5353 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp –dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Aug 13 13:13:27 2015

Well, this line :

-A INPUT -j RH-Firewall-1-INPUT

is the source of problem. Edit the order of rule and restart iptables.

# mysql -ualam -p -h 192.168.1.89
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6152
Server version: 5.1.58-log MySQL Community Server (GPL) by Utter Ramblings

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>

Mission accomplish 🙂

Cpanel tip : Speed up your wordpress with proper PHP version

I don’t have much money for using expensive web hosting or vps or dedicated server for my wordpress blog. Is there any way to speed it up without touch plugin or something else?

Well, using cache is the best way to achieve blazing fast wordpress but one trick I found is using proper PHP version.

Yes, using latest PHP version is dead simple way to make wordpress faster.

By default cpanel user don’t get latest version, for example in my cpanel I see this :

php-cpanel1

For latest PHP version you can refer to php.net site :

php-cpanel2As you can see there are 3 version :

  1. PHP 5.6.11
  2. PHP 5.5.27
  3. PHP 5.4.43

Since I use cpanel I can not compile nor install latest PHP version as I used to using VPS but I can use closest version to 5.6.11.

Click “select php version” under software and services menu.

php-cpanel3

By default native php (the ones that come with server operating system) will be shown.

php-cpanel4

Choose 5.6 from drop down and click save as current.

php-cpanel5

Of course you can choose extensions. Only use the one that you use. For example if you only use mysql then you need to disable pgsql (postgresql) from extension.

How do I know if I already use PHP 5.6?

Create new file using file manager facility and save it as coba.php with these lines :

<?php

phpinfo();

?>

save and open from web browser. If you see like this one then your previous configuration is working well.

php-cpanel6

How to enable phalcon php in cpanel shared hosting

Long time not see you guys 🙂 . Being busy with new toys called Phalcon PHP . Yes, this tool is very awesome in my opinion and I use it with my vps. Since this blog also run in vps so I just surprise when I see PhalconPHP also supported in cpanel hosting that I also use.

Yes, namecheap also enable PhalconPHP in their shared hosting package.

How do I know if PhalconPHP work in my cpanel?

Create simple file :

Login to cpanel and click ‘File Manager’ -> New File

phal1

Enter these lines :

<?php
phpinfo();
?>

save the file and access it online.

By default you will not see PhalConPHP extension enabled.

Change PHP version and enable PhalCon PHP extension for Cpanel

Click “Select PHP version”

phal3

Select PHP 5.5 and set this version as current.

Then choose ‘phalcon’ from extension supported list.

phal2

 

Click save.

Then you have working Phalcon PHP support.

Current usage in my namecheap account.

phal4

 

Time to fly with phalcon 🙂

For vps, you refer to this post. (install multiple php on ubuntu 16.04 vps).

 

 

 

 

WordPress and Cpanel main domain

Last Cyber Friday 2014 I got chance to try namecheap hosting. Its shared hosting package that normally priced $9,88/year . The price is only for 1st year but worth to try since I only got it for $0,98. The price is very good but since people often neglect it I prefer to act vice versa. I’ll use this hosting package for my family blog.

Domain and Sub Domain

The blog itself consist from :

1. Main domain

2. 4 sub domain but my wife told me to only activate 3 sub domain.

Size

Size of family blog (main domain + all sub domain is around 500 MB) in zip format.

$ du -sh zip
508M    zip

Traffic

The traffic is not big :

– less than 100 uv (unique visitor) for main domain

– less than 1000 uv for all sub domain (my wife blog is more famous than my blog hahaha). More

How to resolv looping error after change server

Hostingformula currently switch to cheap vps server. Old hosting provider using cpanel and everything went fine . Almost perfect in migration process except one thing.

I forgot about cloudflare.

cloudflare-vps-looping

Yes. I forgot if I enable cloudflare for this domain and the result is bad. Looping error caused by www mapping that set automatically by cloudflare kill this blog.

Solution for this kind of error is simple :

1. Disable cloudflare for your domain by visit cloudlfare or

2. Visit cpanel, click Simple DNS setting and ‘delete’ any entry related to cloudflare (see picture above for example).

How to test if the problem disappear?

Problem left after this action is dns propagation. You can install vpn software like hotspotshield or related to try visit your blog / website again.

3. Use intodns to verify the dns change. If intodns told you right ip address then you’re on right track.

4. Patient. Other problem left is client dns. Since you can not force client to use google or opendns for resolve your new server the only option is be patient.

How to move Joomla website to VPS

A friend of mine that not seen for years contact me. He had problem with his school website. Headmaster give him order to take care their website that seem to abandoned by current holder. Every time they (school) contact him. No respond and no email. He ask me to see it and if possible solve it immediately.

Update : if you’re in hurry then you can use Fiverr service that will do the job ($5 per site). Click here to see the service.

After ask the website hosting representative we have clues where do we must start.

  1. Create official letter from school about domain ownership.
  2. Scan the letter and send it to hosting company

The process itself is not straightforward as current holder respond to hosting company email and the phone but not respond to us. After a month the progress finally move to right direction. Current holder not paid for hosting fee and that’s the reason for my friend. Contact hosting company and finally they approve account moving and switching.

Since the hosting company suspend the account for its late payment then the website is not accessible anymore and only display ‘account suspended’ message. My friend ask me if I can give him temporary place for their school. I agree to give him a space with exchange. I must do the transfer process myself. I like to see how to transfer joomla based website to vps.

Lets get start!

Backup Joomla Website

Fortunately my friend already download the backup file. Its tar.gz file (backup-11.15.2014_11-29-19_domain.tar.gz ).

Send Joomla backup file to vps

After copying the file to my laptop I initiate transfer using scp.

scp backup-11.15.2014_11-29-19_domain.tar.gz root@ipaddress:/root

the process depend on internet speed and file size. For my case, it took around 1 hour to upload 132MB of file.

Creating New Domain on VPS

I use Easyengine that I use in previous post for host wordpress. Joomla also created with php and utilize mysql. So I choose php+mysql website.

# ee site schooldomainname --mysql

The command will generate all required files including database plus its credentials at /var/www/schooldomainname/ee-config.php

To see database name, database user database password and database host created by easyengine you can use :

cat /var/www/schooldomainname/ee-config.php

Extract Joomla Backup on VPS

I use same VPS that powered by Vultr for WordPress. Time for extract backup file.

# mv backup-11.15.2014_11-29-19_schooldomainname.tar.gz /var/www/schooldomainname/

# cd /var/www/schooldomainname/

# tar xvzf backup-11.15.2014_11-29-19_schooldomainname.tar.gz

# ls
addons     cron          fp              httpfiles  meta  mysql             pds              psql_users.sql    resellerpackages  shell      sslkeys      userdata  vf
bandwidth  digestshadow  has_sslstorage  locale     mm    mysql-timestamps  proftpdpasswd    quota             sds               ssl        suspended    va
counters   dnszones      homedir         logaholic  mma   mysql.sql         psql             resellerconfig    sds2              sslcerts   suspendinfo  vad
cp         domainkeys    homedir_paths   logs       mms   nobodyfiles       psql_grants.sql  resellerfeatures  shadow            ssldomain  userconfig   version

Looks like this backup file created by my friend taken from cpanel backup wizard.

I just need to find out where joomla files and its database located.

Finding Joomla Files + Database

After search for while I can see where is the location of Joomla files. Its in :

homedir/public_html

Database file located in :

mysql

Move Joomla folder to Easyengine public folder

Next step is move joomla folder found from previous step to easyengine folder.

#cd /var/www/schooldomainname

# mv backup-11.15.2014_11-29-19_schooldomainname/homedir/public_html .
# mv tes/backup-11.15.2014_11-29-19_schooldomainname/mysql/schooldomainname.sql .

Edit configuration file of Joomla

The configuration file located in configuration.php . Edit $user, $password and $db .

#nano htdocs/configuration.php

save the file.

Import Joomla Database File

# mysql -udb_user -p db_name < schooldomainname.sql
Enter password:
#

Make Joomla website live

# ee site enable schooldomainame

Thats it. Try to reload it via web browser and everything load fine so far.

My friend happy with the migration process. The load speed is incredible and they can add their content again and if they like it then they can make their own server with Vultr.

Lesson learned :

  1. Never use personal email address as contact, billing etc for school domain. Always use school email address. Beside this touch make everything official also prevent future problem like my friend case.
  2. If possible use the longest period for registering school domain. Yearly renewed domain is not suitable for a school.

Cheap Forex VPS Do it Yourself Server

One of my reader shout me an email about his problem. He get free forex vps from his broker after he met required deposit amount but he got disappointed with the quality. Its low end vps that running Windows 2003 and restrict him on EA usage. He don’t know how his broker monitor his vps but when he try to use his VPS running EA for another broker the connection get worst and he got warning. He must utilize the server only for the broker who give him vps not for others. He already search for cheap forex vps but still not sure which one he must choose. Lightweight vps he ever try is not run anti virus and very minimal installation. Only Windows 2003 with built in IE browser. To many networking problem and maintenance force him to abandon his server.

Another consideration is Windows Server 2003 end of life that will happen on July 14, 2015. While newer version need more requirement that mean more money when you deploy newer Windows server. Yes, according to Microsoft Technet the requirement for Windows 2003 server is quite low (x86 based computer need 256 MB recommended minimum and 512 MB minimum for x64 based computer). I think that the only consideration why many forex vps provider out there still deploy this version.

Since he only need stable and cheap vps server for his forex activity he want me to give my opinion. Is he can build his own forex vps server that also easy to use like Windows. I agree to answer and promise him to make a post for his question when time permit. After 2 weeks when I have time I start test possibility of using other operating system other than Windows as Forex vps. I came with conclusion : Yes, he can. He can build his own server and I think the server is stable too. More

How to recover email service (google apps) after downtime

One of our friend domain is down due to web hosting problem. Main domain of hosting service is not renewed at proper time and the contact person is not responding. Two things that need to get recovered:

1. Domain and email service

2. Website file and database

Since we don’t know where is the main host reside then nearest option we have is recover email service that fortunately using google apps. Another fortune we have is domain access is in my control so I can recover it quickly. Here the steps :

Update name server to new one

Since the domain registrar is namecheap I can easily use namecheap nameserver. Simply by click :

Domain Name -> Transfer DNS to Us

Change MX record to Google Apps setting

Click Host Management -> Mail Settingssetting google apps record on namecheap

Pick “User” and Choose “automatically set MX records necessary for Google Apps Email.

Save changes.

Click Save changes one more time.

choose mx record to point only for google apps

At this time namecheap will update mx record and user can relax now. Waiting for propagation time (maximum 3 x 24 hours).

You also able to verify setting by using intodns service.

Enter domain name and click report button. Pay attention for result, specially on MX section. If you also see like this one then everything is fine.

mx record result viewed from intodns side

Another work to do after this work is pointing A record to my vps for temporary service.

Fix hatom error (missing author, entry-title and updated) in live-wire wordpress theme

Another theme is need to fix after emphaino case. This time hatom error came to live-wire theme.

Quick fix for error :

1. Open Admin dashboard

2. Click Appearance -> Editor

Choose content.php

Fix missing:updated error and missing:author

find :

<?php echo apply_atomic_shortcode( ‘byline’, ‘<div class=”byline”>’ . __( ‘Published by [entry-author] on [entry-published] [entry-comments-link before=” | “] [entry-edit-link before=” | “]’, ‘live-wire’ ) . ‘</div>’ ); ?>

change into :

<span class=”vcard author post-author “><span class=”fn”><span class=”post-date updated”><?php echo apply_atomic_shortcode( ‘byline’, ‘<div class=”byline”>’ . __( ‘Published by [entry-author] on [entry-published] [entry-comments-link before=” | “] [entry-edit-link before=” | “]’, ‘live-wire’ ) . ‘</div>’ ); ?></span></span></span>

Fix missing:entry title error

find :

<?php echo apply_atomic_shortcode( ‘entry_title’, ‘[entry-title]’ ); ?>

change into :

<span class=”entry-title”><?php echo apply_atomic_shortcode( ‘entry_title’, ‘[entry-title]’ ); ?></span>

Click Update File.

Testing again via google webmaster snippet tools and voila, everything fine now.

How to fix hatom error in google webmaster tools : emphaino theme case

I used to visit google webmaster tools for checking error related to my blog. Update new theme, changing hosting, domain propagation sometime went bad after sometime. Google webmaster tools is my friend to detect such error.

When I log in to google webmaster tools I found “exclamation mark” next to “search appearance” of this domain.

hatom_wordpress1

Further click lead me to structured data error.

Wow, 191 item with error.

hatom_wordpress2

Click the number give me ore detail error about blog post that affected with that error.

hatom_wordpress3

Further check using richsnippets tools give me exact error.

hatom_wordpress4

Its seem that I only need to fix ‘updated’ error section. Raymondware give great explanation about other error that might encounter.

Solution :

Login to wordpress admin page :

1. Click Appearance -> Editor

By default you need to look for single.php and see the content.

Looking for ‘date’ section and wrap it with class “post-date-updated”. Unfortunately in my case ( I use Emphaino theme) I must digging more to find relevant php file that contain the target. Its in ‘content-single.php”.

hatom_wordpress5

Change :

<?php emphaino_posted_on(); ?>

Into :

<span class=”post-date updated”><?php emphaino_posted_on(); ?></span>

Save and retry look it up from richsnippet tools.

hatom_wordpress6

The error is gone now 🙂

Softaculous Tips for WordPress Installation

wordpress_tips1Common problem that exist for ‘hack attack’ on wordpress are :

1. Old wordpress version

2. Using old theme

3. Using old plugins

Those 3 factors combined together and lead to ‘unstable’ self hosting wordpress.

Newest wordpress offer automatic upgrade for the version but you must do the rest (upgrading theme and plugins).

Those issue corrected by Softaculous. If you want to install new blog I suggest you to use these settings :

1. Database name : enter your blog name as component. ex, if your blog is about flower then fill flowerdb or mydbflower. It will save you from headache in the future.

2. Table prefix : enter shortname of your blog, ex: flo_ . Don’t use wp_ .

3. Use strong password. You can click ‘key’ icon next to admin password input.

4. Use advanced option. Make sure to check 3 options (auto upgrade, auto upgrade wordpress plugin and auto upgrade wordpress theme).

Using that setting will give you ‘health’ wordpress that give you long run blogging platform without worrying about late update action.

How about existing blog?

I’ll create separate post to explain it in step by step mode.

stay tune!