Google Code Hosting now supports Git!

Great news to all developers out there! Google Code hosting service now supports Git in addition to Subversion (SVN) and Mercurial. Probably the top Google Code wishlish, I’m sure open source developers appreciates Google decision to offer Git support on its free open source code hosting service.

New and existing projects may continue to use SVN and Mercurial as version control and those who wished to switch to Git may do so from the “Administer” option in the Google Code Project Dashboard

Some note about Google Code Git support:

  • Requires at least Git 1.6.6
  • Repo size limit 4GiB
  • Push pack limit of 500 MiB (soon to be lifted)
Google Code Git

For more information about Git support in Google Code, please read: Google Code Git FAQ

5 things that I look for when getting PHP / MySQL Web Hosting

1. SSH Access
Ftp access is not enough anymore as it is insecure (password is being transfered in plaintext). Besides, SSH access enables me to download updates and patch and updates directly inside the web server instead of having to upload it bit-by-bit from FTP server. Normally, some web hosting provider refuses to give SSH access out fear that their security would be compromised, well those providers aren’t for me.

2. PHP / MySQL release
Alot of webserver claimed to have the *latest* release of PHP and MySQL running on their webserver but is it true? Not all latest software are good/great, I will always ensure that the one offered by the web hosting is the most suitable for my application need.

3. Customizable DNS Record (NS)
A feature noticeably lacking in CPanel (I hate CPanel, with a passion). A customizable DNS record allows you to freely change your domain A, MX and CNAME record to point somewhere else. Sometime the domain registrar (ENOM comes in mind) lets you customize your own DNS Record without web hosting providers help. The ability to change DNS Record is important because it lets you host part of your web application somewhere else like by using Google Apps, etc.

4. Shared Hosting or Virtual Private Server (VPS)
Shared Hosting is probably the best choice if you are just starting to learn on how to host your own php/mysql application. Things to look in Shared Webhosting is whether you are within a ‘bad neighborhood’… meaning that whether my website has to share the same server/ip address with notorious spammers as this will affect website reputation. Plus, bad neighborhood is also the main cause for frequent downtime and website slow downs.

VPS is probably a better choice, but it requires some administrative skills from the site operator (read: you!) side. Things to look for in VPS hosting option is the total RAM and processor slice. If you are hosting a busy website with more than 5000++ unique visitors per day, then do not take a VPS with less than 512MB RAM, because you may find that it won’t cut it. Busy websites require higher RAM, it would also help if you use lighttpd or nginx webserver instead of the resource-hungry Apache. One more thing, when surveying for VPS provider, I will almost certainly look for the one that allows on-the-fly resource resizing or at least offer the option of letting users to re-size resources by themselves.

5. Mod Security Filters
This is in case of shared hosting — Mod security in Apache enhances the security of Apache-hosting websites. Although this feature is rarely advertised on the web hosting providers’ site, It is actually one of the most important feature to have, especially if you are going to host high-risk web application. I would prefer one that allow customization in ‘.htaccess’ file.

That’s it, the FIVE (5) things that I always look for when surverying for web hosting provider. Some of you might notice that I didn’t mention SLA (eg: 100% uptime guarantee or money back guarantee, etc). Well, to me SLA as promised by most Web Hosting provider aren’t even remotely realistic as it is not predictable, and most of the Web Hosting provider (including one that offers VPS) grossly oversell their service, so as a result, most of them fail to meet their own SLA. Don’t get me wrong, I rather host with a provider which have great track record with efficient service.

How to back up files periodically using rsnapshot and NFS in Ubuntu Linux

rsnapshot is a utility that uses rsync to synchronize files between two directories. rsnapshot makes it easier for system admin to backup crucial system data files regularly with minimal bandwidth and effort.

This guide assumes that you’ve already installed nfs-client and rsnapshot via “apt-get” utility in your Debian/Ubuntu Linux system.

Assumptions:
The backup server is connected in the same LAN as the main computer. The backup server is mounted as NFS on the main computer, ip address of the backup server is 192.168.1.100.

Step 1: Create a script to mount backup server filesystem
This is to ensure that the backup server is available at least hourly (or daily, depending on your requirements), save the file as “mount-backup-server.sh”

File content:

#!/usr/bin/bash
# mount-backup-server.sh
mount 192.168.1.100:/backup-point/  /media/backup/

Step 2: Ensure the mount script is run hourly

sudo cp mount-backup-server.sh /etc/cron.hourly
sudo chmod a+x /etc/cron.hourly/mount-backup-server.sh

Continue reading “How to back up files periodically using rsnapshot and NFS in Ubuntu Linux”

How to set the correct Android *.apk MIME Type for Apache Webserver

Android application uses *.apk file as its installation package. It is a variant of the Java JAR file format (which in turn a Zip 2.0 file). Usually the *.apk file is obtained from Android Marketplace, the official channel for getting Android application. However there are some vendors or carriers that allow *.apk file to be downloaded from 3rd-party websites.

Those who elect to upload the *.apk files on their own webserver can add the official Android APK MIME Type to their Apache Web server config file:

Option 1: edit mime.types (for those who have root access)
1. First edit the mime.types file – sudo nano /etc/apache2/mime.types
2. Then add this at the end of the file – application/vnd.android.package-archive
3. Reload the server configuration – “sudo service apache2 reload”
Option 2: edit .htaccess file (for shared server or user who do not have root access)
1. Edit .htaccess
2. Add this line – AddType application/vnd.android.package-archive

This will register the appropriate MIME type for the *.apk file so that both the server and mobile application can handle.