Originalmente postado no blog: http://patch3s.wordpress.com/2009/06/29/alta-performance-apache-com-mpm-worker-e-fast-cgi/

Instalação  e  configuração de Apache 2.2 com os módulos  mpm-worker( multithreading ) e Fast-CGI.

Depois de muito procurar por este tipo de informação em sites gringos, editei este  post,  um passo a passo de como instalar e configurar um servidor web apache com esses dois módulos, conferindo um aumento de performance nos servidores web apache. Espero que seja de alguma utilidade. Estou aberto a escutar opiniões e críticas construtivas.

OS: Ubuntu 8.04 LTS Server com LVM ( Logical Volume Manager ) permitindo maior flexibilidade na manipulação das partições

Instalação do Apache

#apt-get-install apache 2
#apt-get install apache2-mpm-worker libapache2-mod-fcgid

PhP5

apt-get install php5-cgi php5-curl php5-gd php5-mysql php5-xsl


Configuração do MPM-Worker

Conf básica do MPM-Worker, configure de acordo com a sua necessidade
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule mpm_worker_module>
StartServers          2
Server Limit          16
MaxClients          150
MinSpareThreads      25
MaxSpareThreads      75
ThreadsPerChild      25
MaxRequestsPerChild   0
</IfModule>

Módulo Fast-CGI

Após a execução dos passos acima, edite os arquivos de virtualhost contidos em /etc/apache2/sites-avaiable/default e default-ssl:
e adicione o seguinte conteúdo:

“AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
Options ExecCGI”

Exemplo:

NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName host.dominio.com.br

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
Options ExecCGI

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory “/usr/lib/cgi-bin”>
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error-jwbl.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access-host.log combined
ServerSignature On

</VirtualHost>

Acrescentando essas linhas você estará habilitando o módulo fast-cgi para esse virtualhost

Salve o documento.

Crie um link simbólico em /etc/apache2/sites-enable/ apontando para /etc/apache2/sites-avaible, tanto para o arquivo default quanto para default-ssl ( ou algum outro virtualhost de sua preferência ).

Ative o módulo FastCgi:

#a2enmod fcgid

Certificado SSL

Entre na pasta

#cd /etc/ssl

Emitindo o certificado

#openssl req -config openssl.cnf -new -out nome_do_certificado.csr

Obs: O Comon Name, deverá ter o mesmo nome do servidor, exemplo: host.dominio.com.br

Retire a senha do certificado:

#openssl rsa -in privkey.pem -out my-server.key

Assinando o nosso certificado

#openssl x509 -in meu-servidor.csr -out my-server.cert -req -signkey my-server.key -days 365
ative o módulo ssl:

#ae2enmod ssl

ative o site ssl:

#ae2ensite default-ssl #(ou algum virtualhost, caso seja criado)