O RHEL 4 pode ter duas instâncias do apache httpd em execução usando dois arquivos de configuração diferentes?

7

Temos uma instância do Red Hat Enterprise Linux 4 executando o Apache na porta padrão. Queremos adicionar uma segunda instância do Apache que podemos reiniciar completamente separada da primeira instância. Podemos fazer isso?

Talvez haja outro servidor da Web fácil de manter que possa executar scripts PHP muito simples em uma porta não padrão? Queremos ser capaz de acionar um script php remotamente sem usar a instância padrão do Apache em execução no servidor RHEL. Alguma idéia?

    
por Geo 25.06.2009 / 22:03

6 respostas

9

Em um ambiente típico, você pode criar uma cópia do httpd.conf e modificar as seguintes propriedades no novo arquivo.


# pid file
PidFile run/httpd.pid

# http listen port
Listen 80

# log files
ErrorLog logs/error_log
CustomLog logs/access_log combined

# server name
ServerName default_host_name

# document root for the default site
DocumentRoot "/var/www/html"

E, dependendo da sua implementação, pode ser necessário modificar propriedades adicionais, como o LockFile (se você estiver executando em um NFS)

E como sempre, você terá que personalizar as definições do host virtual se as usar.

Controlando a nova instância

Digamos, por exemplo, se o nome do arquivo recém-copiado é /etc/httpd/conf/instance1.conf, então você pode iniciar esta nova instância usando o seguinte comando

httpd -f /etc/httpd/conf/instance1.conf -k start

Outra opção útil do comando httpd será a opção -t para testar erros no arquivo de configuração.

httpd -f /etc/httpd/conf/instance1.conf -t

Veja 'man 8 httpd' para mais informações sobre como usar o comando httpd.

E, como os outros sugeriram, você pode criar um script de inicialização separado para ajudá-lo a gerenciar essa instância. O script RH /etc/init.d/httpd de ações deve funcionar como um ponto de partida.

    
por 26.06.2009 / 17:04
3

Sim, é bem simples. Você basicamente só precisa iniciar a segunda instância com um arquivo de configuração não padrão na linha de comando. Se você fizer uma pesquisa na Web para "várias instâncias do apache", deverá encontrar o que precisa.

    
por 25.06.2009 / 22:09
2

Crie dois scripts de inicialização, ambos apontando para diferentes arquivos de configuração (opção -f). Lembre-se de fazer 2 arquivos pid diferentes.

    
por 25.06.2009 / 22:14
2

Ter dois arquivos de configuração diferentes faz com que você faça parte do caminho. Além dos arquivos PID que Kristaps mencionou, você precisará escutar em diferentes portas (exceto 80 e 443) ou ligar a uma interface diferente.

    
por 25.06.2009 / 22:43
1

Copie os arquivos de configuração em / etc / httpd para outro diretório. Modificá-los, alterando o ServerRoot, DocumentRoot e outras variáveis relacionadas ao caminho no httpd.conf e outros. Em seguida, crie um script de inicialização separado que chame httpd -f

    
por 25.06.2009 / 22:22
1

Isso é definitivamente possível. A criação de dois scripts init.d para separar essas instâncias seria a melhor maneira de fazer isso, você poderia realmente usar o script 'httpd' fornecido e modificá-lo para suas opções a serem usadas em sua segunda instância.

Os scripts de inicialização apenas executam os serviços com as opções preferidas. Você também pode iniciar outras instâncias através da linha de comando usando o binário a qualquer momento.

/ usr / sbin / apachectl

Isso é tudo que o script init.d faz, exceto que preenche opções como Idioma, Arquivo de Configuração e outras opções. De fato, os scripts init.d geralmente fazem referência a variáveis criadas em outros lugares, como / etc / sysconfig / httpd. Alterar variáveis nesse arquivo é para o seu script init.d, que usa o binário. É apenas uma cadeia de código moderadamente simples.

    
por 25.06.2009 / 22:26