Como habilitar o open_basedir com suPHP no CWP – Centos WebPanel

A proteção open_basedir do PHP impede que os usuários acessem arquivos fora de seu diretório home através de scripts php e acessem arquivos do sistema ou de outros usuários. O mais importante é impedir que scripts maliciosos acessem informações importantes.

O CentOS WebPanel usa o suPHP por padrão, portanto, o open_basedir não pode ser habilitado por meio do apache vhost ou pelo arquivo .htaccess com as opções: php_admin_value open_basedir.

Primeira opção – Habilitar open_basedir de forma global para todos as contas de usuários no CentOS WebPanel.

touch /usr/local/php/php.d/openbasedir.ini
echo "open_basedir = /home:/tmp:/var/tmp:/usr/local/lib/php/" > /usr/local/php/php.d/openbasedir.ini
service httpd restart

Segunda opção – Habilitar open_basedir por usuário

  • Crie o arquivo php.ini em public_html do usuário e insira
open_basedir = /home/username:/tmp:/var/tmp:/usr/local/lib/php/

**Substitua username pelo nome do usuário (Ver em List Accounts em seu Painel).

Como Otimizar o Apache no CentOS 7 com CentOS WebPanel

O Apache é um servidor web de código aberto poderoso, projetado para fornecer um equilíbrio de flexibilidade, portabilidade e desempenho. A otimização do Apache é uma tarefa importante para todo administrador de sistema.

Personalizando algumas configurações do Apache, é possível melhorar o desempenho sem adicionar hardware adicional, como RAM, CPU, etc.

Este post descreve várias opções de configuração do Apache que podem ser usadas para melhorar o desempenho do Apache sem adicionar recursos de hardware adicionais ao seu servidor.

Estas sugestões de configuração podem ser aplicadas a qualquer servidor executando o Apache 2.xx. Para simplificar a explicação, abaixo vamos abordar um servidor CentOS 7 com o Painel CentOS Web Panel .

Se não sabe onde está o httpd.conf de seu servidor web, sugiro utilizar o comando Locate. Veja Como instalar o Locate.

No CentOS 7 com Painel CentOS WebPanel edite o arquivo httpd.conf .

Nota: Caso não encontre as opções abaixo, você pode seguramente adicionar os valores após a ultima linha do seu arquivo httpd.conf

nano /usr/local/apache/conf/httpd.conf

MaxKeepAliveRequests

MaxKeepAliveRequests é o número máximo de solicitações a serem atendidas em uma conexão TCP. Esta função limita o número de solicitações permitidas por conexão. Se estiver definido como 0 (ou não definidas no arquivo), serão permitidas solicitações ilimitadas.

Mantenha essa configuração com um valor alto para o desempenho máximo do servidor.

O valor recomendado de MaxKeepAliveRequests é 500.

MaxKeepAliveRequests 500

KeepAliveTimeout

KeepAliveTimeout define o número de segundos que o Apache irá aguardar pela nova solicitação do cliente conectado, antes de fechar a conexão. (Uma vez que o servidor recebe uma requisição, a diretiva Timeout se aplica.)

O KeepAliveTimeout recomendado pode estar entre 1 a 5.

KeepAliveTimeout 5

KeepAlive

KeepAlive define se o servidor permite mais de uma solicitação por conexão. Ele pode ser usado para impedir que qualquer cliente consuma muitos dos recursos do servidor.

Por padrão, o KeepAlive está desabilitado no CentOS 7.
Uma vez que o servidor Apache está recebendo solicitações de centenas e milhares de IPs de uma só vez, essa configuração deve estar ativada.

KeepAlive On

DNS Lookups

Um grande motivo para a lentidão do servidor web Apache é o tempo necessário para realizar pesquisas de DNS. Se a opção HostnameLookups estiver on, o Apache tentará registrar o nome completo do host de cada conexão do cliente de entrada no arquivo access.log. Resolver cada nome irá demandar um pedaço significativo de tempo.

Por padrão, HostnameLookups está desativado no Apache. De qualquer forma utilize

HostnameLookups Off

Configurando MPM Prefork

O módulo MPM (Módulo de Multi-Processamento) implementa um servidor web sem encadeamento e pré-bifurcado. O Apache trabalha como padrão com o MPM Prefork. Existem ainda outros MPM como ITK , WORKER, EVENT que não iremos abordar neste post. O MPM Prefork é o mais utilizados por SysAdmins por conta de sua compatibilidade com os mais diversos hardwares, sistemas e eslabilidade.

Abaixo vamos abordar como melhorar o desempenho do Apache utilizando o módulo Apache MPM Prefork e explicar cada uma das opções:

Se você utiliza o Apache com o CentOS 7 e CentOS Web Panel, edite o arquivo httpd.conf

nano /usr/local/apache/conf/httpd.conf

localize e descomente a linha abaixo de “Server-pool management (MPM specific)” removendo o # :

Include conf/extra/httpd-mpm.conf

Agora vamos editar o arquivo httpd-mpm.conf. Porém, antes de fazer alterações, recomendo fazer um backup do arquivo:

cp /usr/local/apache/conf/extra/httpd-mpm.conf /usr/local/apache/conf/extra/httpd-mpm.conf.backup

Edite o arquivo httpd-mpm.conf , localize e substitua os valores dentro de “IfModule mpm_prefork_module

    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      150
    MaxConnectionsPerChild 3000

StartServers: define o número de processos do servidor filho, criados na inicialização. É uma boa ideia aumentar esse número em um servidor de alta carga, para que o servidor esteja pronto para lidar com muitas conexões.

MinSpareServers: define o número mínimo de processos do servidor filho ocioso. Esse valor precisará ser ajustado para servidores de alta carga.

MaxSpareServers: define o número máximo de processos do servidor filho ocioso. Quando houver mais processos do servidor filho ociosos do que os definidos pelo MaxSpareServers, o processo ocioso será eliminado.

MaxRequestWorkers: define o número máximo de solicitações simultâneas que o Apache irá tratar. Quando esse limite for atingido, qualquer outra tentativa de conexão será enfileirada.

Nota: Talvez o item de hardware mais crítico a ser levado em consideração seja a quantidade de RAM alocada para cada processo do Apache. Embora não seja possível controlar o uso diretamente, você pode restringir o número de processos filho por meio da diretiva MaxRequestWorkers (anteriormente conhecida como MaxClients no Apache 2.2), o que colocará limites no uso da RAM pelo Apache.

MaxRequestsPerChild: esta diretiva define quantas solicitações um processo filho manipulará antes de finalizar. Quando o limite for atingido, o processo filho morrerá.

Nota: Se este valor for 0, o processo nunca morrerá, obviamente consumindo mais recurso do servidor.

Conclusão

Configurar o Apache para o máximo desempenho é muito fácil. Porém, em servidores com alto tráfego sejrá necessário otimizar as configurações aqui tratadas para um resultado excelente.

Você pode experimentar as várias opções disponíveis e medir o desempenho do servidor da Web com ferramentas como ab e httperf.