I would suggest that you look at ruid2 (pre-built packages), which allows all HTTP requests to a domain to run as the owner of that domain instead of as the Apache user. One of the complaints about this is that it will not run properly with FastCGI.
This is how I loaded it on a CentOS 6 x86_64 server:
- As root cd to
/root
- Download the latest atomic-release rpm from http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/
- Install atomic-release rpm:
rpm -Uvh atomic-release*rpm
- Install mod_ruid2 rpm package:
yum install mod_ruid2
This will result in these files on your OS:
/etc/httpd/conf.d/ruid2.conf
/usr/lib64/httpd/modules/mod_ruid2.so
/usr/share/doc/mod_ruid2-0.9.1/
/usr/share/doc/mod_ruid2-0.9.1/LICENSE
/usr/share/doc/mod_ruid2-0.9.1/README
After you install mod_ruid2-0.9.6-3.el6.art.x86_64 (or current version) run the command `apachectl -t -D DUMP_MODULES`
Look for something like this to result:
Loaded Modules:
core_module (static)
mpm_prefork_module (static)
http_module (static)
so_module (static)
auth_basic_module (shared)
auth_digest_module (shared)
authn_file_module (shared)
authn_alias_module (shared)
authn_anon_module (shared)
authn_dbm_module (shared)
authn_default_module (shared)
authz_host_module (shared)
authz_user_module (shared)
authz_owner_module (shared)
authz_groupfile_module (shared)
authz_dbm_module (shared)
authz_default_module (shared)
ldap_module (shared)
authnz_ldap_module (shared)
include_module (shared)
log_config_module (shared)
logio_module (shared)
env_module (shared)
ext_filter_module (shared)
mime_magic_module (shared)
expires_module (shared)
deflate_module (shared)
headers_module (shared)
usertrack_module (shared)
setenvif_module (shared)
mime_module (shared)
dav_module (shared)
status_module (shared)
autoindex_module (shared)
info_module (shared)
dav_fs_module (shared)
vhost_alias_module (shared)
negotiation_module (shared)
dir_module (shared)
actions_module (shared)
speling_module (shared)
userdir_module (shared)
alias_module (shared)
substitute_module (shared)
rewrite_module (shared)
proxy_module (shared)
proxy_balancer_module (shared)
proxy_ftp_module (shared)
proxy_http_module (shared)
proxy_ajp_module (shared)
proxy_connect_module (shared)
cache_module (shared)
suexec_module (shared)
disk_cache_module (shared)
cgi_module (shared)
version_module (shared)
fcgid_module (shared)
perl_module (shared)
php5_module (shared)
python_module (shared)
ruid2_module (shared)
ssl_module (shared)
If it's there, you're good to go.
Next, make the required additions to the ruid2.conf
file.
Note that since Plesk set my master account up using the /var/www/vhosts/mydomain.com/httpdocs
path, I added this first:
<Directory /var/www/vhosts/mydomain.com/httpdocs>
RMode stat
RUidGid apache apache
RGroups apache psaserv
</Directory>
Then, it set up additional domain websites using the /var/www/vhosts/mydomain.com/myotherdomain.com
path, so I added this for each of those:
<Directory /var/www/vhosts/mydomain.com/myotherdomain.com>
RMode stat
RUidGid apache apache
RGroups apache psaserv
</Directory>