Instalando o suPHP no Cloud Server Linux

Passo 1

Acesse seu Cloud Server Linux via SSH e baixe os fontes do suPHP diretamente do site do desenvolvedor, www.suphp.org, com o comando: wget http://www.suphp.org/download/suphp-0.7.1.tar.gz

Passo 2

Após o download, vamos crie o diretório modulos dentro do httpd com o comando: mkdir /etc/httpd/modulos

Passo 3

Agora, extrair o código fonte com o comando: tar -xvzf suphp-0.7.1.tar.gz

Passo 4

Acesse o diretório do suPHP com o comando cd suphp-0.7.1 e edite o arquivomod_suphp.c com o comando vi src/apache2/mod_suphp.c

Passo 5

Na linha que contéma informação suPHP_ConfigPath, altere o parametro OR_OPTIONSpara RSRC_CONF|ACCESS_CONF, salve e saia do arquivo.
OBS: Antes de dar continuidade, instale o pacote gcc-c++ com o comando: yum install gcc-c++

Passo 6

Volte ao diretório do suPHP e compile o código com o comando: ./configure --with-apxs=/usr/sbin/apxs --with-apr=/usr/bin/apr-1-config --with-apache- user=daemon --with-min-uid=100 --with-min-gid=100 --with-php=/usr/bin/php-cgi

Passo 7

Com o código fonte compilado e configurado sem erros, instale o suPHP com o comandomake concatenando com o make install: make && make install

Passo 8

Após a instalação, crie o arquivo suphp.conf no diretório /usr/local/etc/

Passo 9

Insira as seguintes linhas no arquivo criado:
[global]
;Path to logfile
logfile=/var/log/httpd/suphp.log
;Loglevel
loglevel=warn
;User Apache is running as
webserver_user=apache
;Path all scripts have to be in
docroot=/home
;Path to chroot() to before executing script
;chroot=/mychroot
allow_file_group_writeable=true
allow_file_others_writeable=false
allow_directory_group_writeable=true
allow_directory_others_writeable=false
;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true
;Send minor error messages to browser
errors_to_browser=true
;PATH environment variable
env_path=/bin:/usr/bin
;Umask to set, specify in octal notation
umask=0000
; Minimum UID
min_uid=100
; Minimum GID
min_gid=100
[handlers]
;Handler for php-scripts
x-httpd-php="php:/usr/bin/php-cgi"
x-httpd-php5="php:/usr/bin/php-cgi"
;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

Passo 10

Agora, crie o arquivo mod_suphp.conf, dentro de modulos, com o comando vi /etc/httpd/modulos/mod_suphp.conf e insira as seguintes linhas:
# This is the Apache server configuration file providing suPHP support.
# It contains the configuration directives to instruct the server how to
# serve php pages while switching to the user context before rendering.
### Uncomment to activate mod_suphp
#suPHP_AddHandler x-httpd-php
suPHP_Engine on
# This option tells mod_suphp if a PHP-script requested on this server (or
# VirtualHost) should be run with the PHP-interpreter or returned to the
# browser "as it is".
suPHP_ConfigPath /usr/local/etc
# This option tells mod_suphp which path to pass on to the PHP-interpreter
# (by setting the PHPRC environment variable).
# Do *NOT* refer to a file but to the directory the file resists in.
#
# E.g.: If you want to use "/path/to/server/config/php.ini", use "suPHP_Config
# /path/to/server/config".
#
# If you don't use this option, PHP will use its compiled in default path.
AddHandler x-httpd-php .php
AddHandler x-httpd-php5 .php
AddHandler x-httpd-php4 .php4
suPHP_AddHandler x-httpd-php
suPHP_AddHandler x-httpd-php4
suPHP_AddHandler x-httpd-php5
suPHP_AddHandler php-script
suPHP_AddHandler php4-script
suPHP_AddHandler php5-script
AddType application/x-httpd-php .php .php5

Passo 11

Edite o .conf do Apache com o comando vi /etc/httpd/conf/httpd.conf e insira a seguinte linha: LoadModule suphp_module modules/mod_suphp.so. Salve e saia do arquivo.

Passo 12

Agora edite .conf do seu site com o comando vi /etc/httpd/vHost/site.com.conf, e insira as três linhas informadas abaixo:
Include modulos/mod_suphp.conf
suPHP_ConfigPath /home/site.com/www
suPHP_UserGroup site.com site.com

Salve e saia do arquivo.

Passo 13

Agora de as devidas permissões para o seu diretório dentro da /home com o comandochmod 751 site.com -R, e defina o dono e grupo dos diretórios com o comando chown site.com:site.com site.com -R

Passo 14

Reinicie o Apache com o comando service httpd restart e acesse o seu phpinfo por um navegador web e note que:
1. O Server API agora roda em CFI/FastCGI, ou seja, o PHP se controla e não precisa mais do Apache para interpretar as páginas em PHP.
2. Cada site terá seu prórprio php.ini, o que permite uma maior segurança para os sites.