SELinux is one way in which permissions can be denied, but you haven't mentioned file permissions. Ensure that the permissions on the directory allow the httpd user the ability to read and execute files in the directory. This is could be accomplished with the following:
chown -R root:httpd /home/websites/public_html
chmod -R 755 /home/websites/public_html
root is the owner and httpd is the group that you want to allow access (the httpd user should be in the httpd group already). You should probably substitute root for an administrative user that you want to be able to modify files (the first octet, 7, grants the owner write permissions).
Also bear in mind that this affects all subdirectories and files within.
Update (in response to your comment that it didn't work - this is a bit long for a comment)
This will eliminate file permissions as being the problem. As root:
su apache -s /bin/bash
As "apache":
cd /home/websites/public_html/mysite.com
ls -lah
cat <somefile>
If this doesn't work, we have a file permissions issue. I don't have a CentOS6 machine to test but it could be that the apache user doesn't have rights to cd into /home. This would make sense as really public html really shouldn't be stored here. You could try moving it to /srv/www/public_html or /var/www/public_html.
* Update2 *
In response to your edits on the original question, the problem seems to be this:
drwx------ 3 websites websites 4096 Oct 17 14:52 .
(where "." in this case is /home/websites)
This means only the websites user can access the directory, apache will not be able to list its contents. Do this and it should work:
chown websites:apache /home/websites
chmod 750 /home/websites
The CentOS 6 installer loads the policies in permissive mode by default (which I confirmed by running dmesg during the installation). That meant by the post installation step, SELinux is already active. As long as it is running, it doesn't look like you can remove the attributes.
You will have to pass the following someplace prior to the start of the installation (right at the end of kernel the boot loader line):
selinux=0
So something like this:
kernel /boot/vmlinuz-2.4.20-XXXXXXXXX ro root=/dev/hda1 nousb selinux=0
Here is what happens when you attempt to remove the attributes while in permissive mode (forgive the formatting, SF appears to be unhappy):
[root@centos6dev test]# find . -exec setfattr -x security.selinux {} \;
setfattr: .: Permission denied
setfattr: ./test2: Permission denied
setfattr: ./test3: Permission denied
setfattr: ./test: Permission denied
With selinux disabled from grub at boot time:
[root@centos6dev test]# ls -Z
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test2
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 test3
[root@centos6dev test]# find . -exec setfattr -x security.selinux {} \;
[root@centos6dev test]# ls -la
total 8
drwxr-xr-x 2 root root 4096 Dec 13 22:27 .
dr-xr-x---. 4 root root 4096 Dec 13 22:27 ..
-rw-r--r-- 1 root root 0 Dec 13 22:27 test
-rw-r--r-- 1 root root 0 Dec 13 22:27 test2
-rw-r--r-- 1 root root 0 Dec 13 22:27 test3
[root@centos6dev test]# ls -Z
-rw-r--r-- root root ? test
-rw-r--r-- root root ? test2
-rw-r--r-- root root ? test3
Based on this as well as this bug report, this probably means you won't be able to remove the attributes in the post install. So as I outlined, you'll need to disable selinux prior to booting up the installation.
(or you can just leave it alone and learn to live with it. :) ).
Best Answer
The kernel you are using was built without SELinux support. Using a stock kernel will not include the appropriate parts for your VPS. Rebuilding the kernel with SELinux support will cause the VPS parts to not work. You cannot use SELinux on your VPS.