Pesquisar este blog

segunda-feira, 12 de julho de 2010

CPANEL com Lightttp sem Apache

Uma configuração interessante de ser efetuada em servidores de uso pesado - a troca do Apache (padrão do CPANEL) pelo Lighttp.

O
Lighttpd é um servidor WEB leve (e que embora não tenha os zilhões de módulos e aplicações nativas do Apache) pode ser sim uma ótima opção para ser usado no lugar do Apache, principalmente no consumo de memória RAM - e devido ao péssimo suporte a FastCGI do Apache, o lighttpd tornou-se muito popular na comunidade Ruby on Rails, visto que possui uma ótima implementação do protocolo.

Mais informações sobre o
Lighttp acesse: http://www.lighttpd.net/

Agora vamos ao tutorial. algumas coisas você tem que ter em mente:
  • Compile o Apache com módulo fastCGI (esqueça o SuPHP) - caso já tenha esta compilação pronta, ative-a. Você pode faze-lo via o WHM --> Software --> Apache Configuration;
  • Lembre-se que este tutorial é indicado para webservers (rodando CPANEL) com poucos domínios (mas que usam MUITOS recursos do servidor);
  • Você poderá continuar a usar o "Create Account" do CPANEL sem problemas, mas o Apache não mais estará ativado, você terá de executar manualmente a configuração de novos domínios no .conf do novo web server;
Faça o download e compilação do Lighttp - baixe a versão mais atual do http://www.lighttpd.net/ e compile segundo as instruções com o comando:
configure: ./configure --with-openssl --with-zlib --with-bzip2 --with-memcache
Será necessária a instalação do pcre-devel (yum install pcre-devel) - caso o seu sistema não o tenha já instalado. Siga então as instruções de instalação descritas em http://redmine.lighttpd.net/projects/lighttpd/wiki/InstallFromSource

Segundo Passo

Configure o arquivo /etc/lighttpd/lighttpd.conf como o exemplo abaixo:
server.modules = ( "mod_fastcgi", "mod_rewrite", "mod_dirlisting", "mod_auth", "mod_setenv", "mod_status" )
server.document-root = "/usr/local/apache/htdocs"
server.errorlog = "/etc/lighttpd/error.log"
server.username = "nobody"
server.groupname = "nobody"
index-file.names = ( "index.html", "index.htm", "index.php" )
server.tag = "Web Services"
status.status-url = "/lighttpd-status"
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
server.port = 80
include "includes/mime.conf"
include "includes/optimizations.conf"
include "includes/php.conf"
include "includes/hosts.conf"
No diretório /etc/lighttpd crie o sub-diretório includes:
mkdir includes
E dentro do mesmo crie os arquivos mime.conf, optimizations.conf, php.conf e hosts.conf, executando chmod 644 para todos eles. Estes arquivos deverão conter:

mime.conf
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar",
"" => "application/octet-stream"
)
optimizations.conf (atenção para o "server.max-worker", caso seu sistema seja 64 bits mde o mesmo para a quantidade de CPUs que você tem no servidor, caso seja 32 bits e o sistema como um todo tenha baixa carga, mantenha 1)
server.event-handler = "linux-sysepoll"
server.max-fds = 32768
server.network-backend = "linux-sendfile"
server.max-connections = 8192
server.max-keep-alive-requests = 15
server.max-keep-alive-idle = 15
server.max-read-idle = 15
server.max-write-idle = 15
server.max-worker = 1
php.conf:
fastcgi.server = ( ".php" =>
( "localhost" =>
(
"socket" => "/tmp/php-fastcgi.socket-" + var.PID,
"bin-path" => "/usr/bin/php-cgi",
"max-procs" => 20,
"idle-timeout" => 10,
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "20",
"PHP_FCGI_MAX_REQUESTS" => "500" ),
)
)
)
hosts.conf (mude o DOMINIO e USUARIO-DOMINIO ajustando os mesmos para seu sistema, e assim sucessivamente para quantos domínios forem necessários)
$HTTP["host"] =~ "^(www\.|)DOMINIO1\.com$" {
server.document-root = "/home/USUARIO-DOMINIO1/public_html/"
}

$HTTP["host"] =~ "^(www\.|)DOMINIO2\.com$" {
server.document-root = "/home/USUARIO-DOMINIO/public_html/"
}
Caso você deseje que sejam gerados LOGS de acesso e erro adicone logo abaixo da linha server.document-root:
server.errorlog = "/var/log/lighttpd/DOMINIO/error.log"
accesslog.filename = "/var/log/lighttpd/DOMINIO/access.log"
server.error-handler-404= "/e404.php"
Pare o Apache:
chkconfig httpd off
service httpd stop
Agora basta iniciar o seu novo webserevr Lighttp:
/etc/init.d/lighttpd start

4 comentários:

Fabio Mercadante disse...

Tem como usar o lightttp e o apache juntos ?

Alexandre Duran disse...

Tem sim Fabio, estou testando esta variação - tem como ambos os webservers funcionarem no sistema CPANEL, mas o CPANEL SEMPRE irá funcionar diretamente com o APACHE. Todas as configs no LIGHTTP devem ser feitas na mão.

Anônimo disse...

valeu as dica s !
abraço !

Janio Sarmento disse...

Mais fácil usar o Nginx em proxy com o Apache. Dá para fazer a configuração de tal forma que fique transparente para o usuário. Só que as estatísticas ficam totalmente FERRADAS, controle de banda, etc. Mas vale a pena.