como você obtém dois servidores trabalhando em uma máquina?

1

Eu quero hospedar cinco sites em um VPS que acabei de comprar.

  1. um site PHP chamado domain.com
  2. um site do django chamado beta.domain.com
  3. phpmyadmin, que será domain.com/phpmyadmin
  4. phppgadmin, que será beta.domain.com/phppgadmin
  5. e outro site do django chamado domain2.com

Todos os sites do django estarão rodando com o mod_wsgi no apache, e todos os sites do PHP estarão rodando em nginx com o fastcgi.

Sou um desenvolvedor, não um administrador de sistemas, por isso estou tendo dificuldades em descobrir a melhor maneira de fazer isso. A razão pela qual eu estou rodando meu PHP do nginx é porque eu não quero instalar o mod_php, o que me permite usar o MPM worker no apache.

Atualmente, tenho o nginx sendo executado fora da porta 8080 e o apache sendo executado na porta 80. Quando vou para o domínio.com, ele exibe o site do django. Quando eu vou para domain.com:8080, ele traz o site PHP.

Como eu disse antes, eu não sou uma pessoa do servidor, então essas coisas estão fazendo minha cabeça girar. Existe alguma maneira de acessar coisas do nginx sem especificar o número da porta no URL?

    
por nbv4 09.11.2009 / 04:45

4 respostas

2

Basicamente, quando você coloca "domain.com", o navegador da Web na verdade acessa "domain.com:80" (a porta 80 é a porta HTTP padrão).

Você só pode atribuir um aplicativo por porta em um computador, portanto, apenas um pode ouvir a porta HTTP padrão (80) e o outro terá que usar outra porta.

Existem três maneiras de contornar isso:

1) a maneira correta seria usar nginx como seu servidor web principal (ou seja, escutando na porta http padrão 80), definir o Apache para escutar em outra porta (por exemplo, 8080) e configurar um 'proxy reverso' (google é seu amigo aqui). Esta é a configuração ideal. É preciso um pouco mais de esforço para configurar, mas existem centenas de guias que são realmente úteis.

2) use o nginx para servir os sites do django (se isso for possível?)

3) de uma maneira rápida e fácil (embora não seja recomendado), supondo que os sites PHP sejam apenas para webmasters e que os sites django não precisem de https, você pode configurar os sites PHP para executar HTTPS. Dessa forma, você poderia ter o Apache sendo executado na porta 80 (padrão HTTP) e no nginx em execução na porta 443 (HTTPS padrão). Basta colocar 'https: //' em vez de 'http: //' e você chegará à porta 443.

    
por 09.11.2009 / 05:10
2

IMO, não há necessidade de executar aplicativos da web em ambos os servidores da web.

Devido ao fato de que não consigo encontrar um gerenciador de processos fastcgi independente e confiável standalone , eu executaria os aplicativos Django e PHP no Apache, usando mod_wsgi para Django e mod_fcgid para aplicativos PHP. A única coisa que eu consideraria executar em um serviço da Web separado seria arquivos estáticos . Tanto o nginx quanto o lighttpd são excelentes para servir arquivos estáticos. Por "arquivos estáticos" eu não quero dizer apenas imagens, folhas de estilo ou javascript, mas também páginas HTML estáticas geradas por seus aplicativos da Web como parte de um mecanismo de armazenamento em cache.

Em relação ao mod_php, isso não será necessário, já que você estará executando o PHP no modo fastcgi usando mod_fcgid. Isso também permitirá que você use o MPM worker (encadeado).

Espero que isso lhe dê algumas dicas.

    
por 09.11.2009 / 06:02
1

É melhor usar o apache como backend, com o proxy nginx na porta 80. O Nginx pode armazenar páginas em cache e encaminhar hosts específicos para a porta do apache 8080.

location / {
    proxy_pass        http://localhost:8000;
    proxy_set_header  Host       $host;
    proxy_set_header  X-Real-IP  $remote_addr;
}
    
por 09.11.2009 / 05:01
0

Coloque-os em portas ou IPs diferentes. Faça com que um servidor ouça 127.0.0.2 em vez de 127.0.0.1, se for apenas para desenvolvimento local.

Para veiculação pública, sugiro apenas usar fastcgi (fcgid se estiver usando o apache) para tudo. Não há realmente necessidade de todas essas substituições, como o wsgi; O fastcgi é ótimo, e muito mais flexível (no qual você pode rodar o python2.5 e o python3.1 e o ruby lado a lado, por exemplo).

    
por 09.11.2009 / 08:11