Segurança, velocidade, conformidade e flexibilidade - tudo isso descreve o pron lighty, que está redefinindo rapidamente a eficiência de um servidor web, uma vez que é projetado e otimizado para ambientes de alto desempenho Com uma pequena pegada de memória em comparação com outros servidores web, Cpu-load e conjunto de recursos avançados FastCGI, SCGI, Auth, Compressão de Saída, URL-Reescrita e muitos mais é a solução perfeita para cada servidor que está sofrendo problemas de carga E melhor de tudo é s Open Source licenciado sob a licença BSD revisado . Poderes vários populares Web 2 0 sites Sua alta velocidade io-infra-estrutura lhes permite escalar várias vezes melhor com o mesmo hardware do que com servidores web alternativos. Este servidor web rápido e sua equipe de desenvolvimento criar um servidor web com as necessidades do futuro Web em mind. Faster FastCGIET atende modmailbox. Its arquitetura orientada a eventos é otimizado para um grande número de conexões paralelas keep-alive que é importante para aplicações de alto desempenho AJAX. Janeiro 14, 2017.Important changes. bug corrige bug-fix-only Eu tenho um servidor dedicado com 1GB s dedicado, 4GB ram e 4cpus Eu tenho arquivos estáticos para download de 300mb para 900mb Eu estava testando sobre o Apache, Nginx e. Apache faz muitas ameaças e depois de 200 conexões vai muito alto para apache Ele sa NÃO GO. Nginx após 100 conexões ele vai muito alto assim que sa NÃO VÃO qualquer um. Até agora é muito bom como é um servidor single-threaded Com 500 conexões simultâneas a carga fica em 0 90 - 1 10 muito bom, mas eu estou enfrentando um problema de velocidade de download, ele vai mais lento, mesmo quando eu tenho 1GBps dedicado porta, vejo o Iptraf e com 500 conexões simultâneas não vai mais do que 250000 KB s Com apache e nginx às vezes ele foi para 700000 KB s o upstream no servidor eu mudei entre sendfile e writev na configuração e tem o mesmo resultado. Eu não estou usando Qualquer php ou fast-cgi, apenas o download direto diretamente para o arquivo, por exemplo, e ele faz o download do arquivo. Vou anexar algumas informações aqui para você me ajudar a descobrir isso. Top commandstat - um grep 80 wc - l. What Devo mudar para fazer o download de clientes mais rápido, eles disseram que às vezes downloads mais lento do que 10 KB s. O problema aqui não é o seu servidor web, que é realmente não é projetado como um protocolo de download de arquivo É o Hyper Text Transport Protocol, E muitas das decisões em torno do foco no Hyperlinked Tex T aspecto - tamanho dos arquivos são esperados para ser pequeno, em algumas dúzias Kb e certamente sob um Mb A infra-estrutura web tira proveito deste fato em um monte de suas abordagens para cache de dados, etc Em vez de usar para algo que realmente isn t projetado Para, gostaria de recomendar olhando para usar um mecanismo de transporte diferente. FTP File Transfer Protocol FTP foi projetado especificamente para transferir arquivos de tamanho arbitrário, e doesn t fazer as mesmas suposições como software Se tudo o que você está fazendo é downloads estáticos, a sua página web HTML Pode ligar para os arquivos estáticos com um link ftp e configurar um servidor FTP para permitir o download anônimo é geralmente direta Verifique o servidor FTP s docs para detalhes Navegadores desde IE6 FF2 têm suporte FTP básico nativamente, o usuário médio não terá fluxo de trabalho diferente do que Usual Esta não é provavelmente a melhor abordagem como o FTP foi projetado muito antes e como Perry mencionado, muito antes de termos meio arquivo gig. CDN Usando uma rede de distribuição de conteúdo como Amazon s S3 doesn t tecnicamente obter em torno de usar, mas ele permite que você não precisa se preocupar com seus usuários sobrecarregando seu servidor como você está vendo. BitTorrent Se seus usuários são um pouco mais tech savy, considere a configuração de seu servidor até semear o arquivo estático indefinidamente, então Publicar links de ímã em seu site No pior caso, um único usuário vai experimentar um download direto do seu servidor, usando um protocolo que realmente sabe como lidar com arquivos grandes No melhor dos casos, suas centenas de usuários serão tanto leech e semente eachother, Reduzindo drasticamente a carga do seu servidor Sim, isso exigia que seus usuários soubessem como executar e configurar o bittorrent, o que provavelmente não é o caso, mas é um paradigma interessante para downloads de arquivos. Tomar questão com a declaração FTP foi projetado especificamente para transferir arquivos maiores do que o que pode manipular como FTP foi projetado muito antes de haver qualquer 300MB - 900MB arquivos e muito antes de nunca existiu Talvez o respondente significava algo Um pouco diferente, mas como ele está Eu acho que a resposta é enganosa O problema do OP é provável a sua configuração e não tem nada a ver com o protocolo em uso Perry Jun 16 12 at 20 04 Perry Você está absolutamente correto, a minha caracterização de FTP é Errado, e dependendo da configuração que poderia muito bem ter problemas semelhantes com IO Eu tinha a intenção de minha resposta para se transformar em um endosso do BitTorrent Para entregar arquivos grandes, é o pior mecanismo de transporte possível de usar Nós, como profissionais de TI deve se mover para o uso de técnicas mais adequadas Para resolver problemas David Souther Jun 17 12 at 13 34. 1 4 em sistemas Unix. Esta seção contém notas e dicas específicas para 1 4 instalações de PHP em sistemas Unix. Por favor, use o trac para aprender a instalar corretamente antes de continuar. Fastcgi é O SAPI preferido para conectar PHP e Fastcgi é automatizado habilitado em php-cgi em PHP 5 3, mas para versões mais antigas configure o PHP com --enable-fastcgi Para confirmar que PHP tem fastcgi habilitado, php - v deve Contém PHP 5 2 5 cgi-fcgi Antes do PHP 5 2 3, fastcgi foi habilitado no php binário não havia php-cgi. Letting spawn php processes. To configurar para se conectar a php e spawn fastcgi processos, edite Sockets são os preferidos para conectar Para processos fastcgi no sistema local. Exemplo 1 Parcial. A diretiva bin-path permite gerar processos fastcgi dinamicamente PHP gerará filhos de acordo com a variável de ambiente PHPFCGICHILDREN A diretiva bin-environment define o ambiente para os processos gerados PHP irá matar uma criança Processo após o número de pedidos especificados por PHPFCGIMAXREQUESTS é atingido As diretrizes min-procs e max-procs geralmente deve ser evitado com PHP PHP gerencia seus próprios filhos e caches de código secreto como APC só irá compartilhar entre as crianças gerenciadas por PHP Se min-procs é definido Para algo maior do que 1, o número total de php respondedores será multiplicado PHPFCGICHILDREN 2 min-procs 16 crianças dá 32 respondders. Spawning com spawn-fcgi. Fornece um programa chamado spawn-fcgi para facilitar o processo de gerar fastcgi processos mais fáceis. Spawning php-cgi. It é possível desovar processos sem spawn-fcgi, embora um pouco de pesado de elevação é necessário Definir o PHPFCGICHILDREN ambiente var controla quantos As crianças PHP irá spawn para lidar com pedidos recebidos Definir PHPFCGIMAXREQUESTS irá determinar quanto tempo em pedidos cada criança vai viver Aqui sa simples script bash para ajudar a gerar php respondders. Example 2 Spawning FastCGI Respondedores .-- Iniciar - bin bash. Usr bin spawn-fcgi - s - f usr bin php-cgi - c - u - g - C 4 - P - F 12 - End. 1 5 - Configuração - Iniciar. , Stats MIRRORLANGUAGE kr, MIRRORSTATS 1. round-robin habilitar fastcgi 16 - Fim. 1 4 Unix. Unix 1 4 PHP. Trac. PHP SAPI fastcgi fastcgi PHP 5 php-php cgi-php php-cgi-php PHP PHP-cc-php php-cc-php php-ccc php php php-cc php php-ccc php php php php-ccc php php-php php. Php. Php fastcgi fastcgi. bin-caminho fastcgi PHP PHPGICILDREN bin-ambiente PHPFCGIMAXREQUESTS PHP matar min-procs max-procs PHP PHP APC código de operação PHP min-procs 1 PHP PHPFCGICHILDREN 2 min-procs 16 32.spawn-fcgi. Spawn-fcgi fastcgi. spawn-fcgi PHPFCGICHILDREN PHP PHPFCIMAXREQUESTS php bash .2 FastCGI .-- Iniciar - bin bash. Usr bin spawn-fcgi - s - f usr bin php-cgi - c - u - g - C 4 - P - F 12 - End. 1 5 - Configuração - Iniciar. , Stats MIRRORLANGUAGE kr, MIRRORSTATS 1. round-robin habilitar fastcgi 16 - End. Apache Tutorial Conteúdo Dinâmico com CGI. A CGI Common Gateway Interface define uma maneira de um servidor web interagir com programas externos de geração de conteúdo, que são freqüentemente referidos Para como programas CGI ou scripts CGI É a maneira mais simples e mais comum para colocar conteúdo dinâmico em seu site Este documento será uma introdução para a criação de CGI em seu servidor web Apache e começar a escrever programas CGI. Para que seus programas CGI funcionem corretamente, você precisará ter o Apache configurado para permitir a execução CGI. Existem várias maneiras de fazer isso. Nota Se o Apache foi construído com suporte a módulos compartilhados, você precisa se certificar de que o módulo está carregado no seu Precisará certificar-se de que a diretiva LoadModule não foi comentada. Uma diretiva configurada corretamente pode se parecer com isto. No Windows, ou usando um MPM não threadado como prefork, uma diretiva configurada corretamente pode se parecer com isto. A diretiva riptAlias diz ao Apache que um determinado diretório é reservado para programas CGI. O Apache assumirá que cada arquivo neste diretório é um programa CGI e tentará executá-lo quando esse recurso específico for solicitado por um cliente. A diretriz ScriptAlias parece. ScriptAlias cgi-bin usr local apache2 cgi-bin. O exemplo mostrado é a partir do seu arquivo de configuração padrão, se você instalou o Apache no local padrão A diretriz ScriptAlias é muito parecida com a diretriz Alias, que define um prefixo de URL que é mapeado para Um diretório específico Alias e ScriptAlias são geralmente usados para diretórios que estão fora do diretório DocumentRoot A diferença entre Alias e ScriptAlias é que ScriptAlias tem o significado acrescentado que tudo sob esse prefixo URL será considerado um programa CGI Então, o exemplo acima diz ao Apache Que qualquer pedido de um recurso começando com cgi-bin deve ser servido a partir do diretório usr local apache2 cgi-bin e deve ser trea Por exemplo, se a URL for solicitada, o Apache tentará executar o arquivo e retornar a saída. Naturalmente, o arquivo terá de existir, ser executável e retornar a saída de uma maneira específica, ou Apache Irá retornar uma mensagem de erro. CGI programas são muitas vezes restritas a ScriptAlias ed diretórios por razões de segurança Desta forma, os administradores podem controlar rigorosamente quem está autorizado a usar CGI programas No entanto, se as precauções de segurança adequadas são tomadas, não há razão para programas CGI Não pode ser executado a partir de diretórios arbitrários Por exemplo, você pode desejar que os usuários tenham conteúdo da web em seus diretórios base com a diretiva UserDir Se eles quiserem ter seus próprios programas CGI, mas não têm acesso ao diretório cgi-bin principal, eles Terá de ser capaz de executar programas CGI em outro lugar. Existem duas etapas para permitir a execução CGI em um diretório arbitrário Primeiro, o manipulador cgi-script deve ser ativado usando a diretiva AddHandler ou SetHandler Segundo, ExecCG Eu devo ser especificado na diretiva Options. Você poderia explicitamente usar a diretiva Options, dentro do arquivo de configuração do servidor principal, para especificar que a execução CGI foi permitida em um diretório particular. Diretório usr local apache2 htdocs somedir Opções ExecCGI Directory. The acima diretiva diz Apache para permitir a execução de arquivos CGI Você também precisará dizer ao servidor quais arquivos são arquivos CGI A seguinte diretiva AddHandler diz ao servidor para tratar todos os arquivos com a extensão cgi ou pl como CGI programs. AddHandler cgi script. O tutorial mostra Como ativar programas CGI se você não tem acesso a. Para permitir a execução de um programa CGI para qualquer arquivo que termina em diretórios de usuários, você pode usar a seguinte configuração. Directory home publichtml Opções ExecCGI AddHandler cgi-script Directory. If você deseja designar um Cgi-bin subdiretório de um diretório do usuário onde tudo será tratado como um programa CGI, você pode usar o seguinte. Diretório home publichtml cgi-bin Opções ExecCGI SetHandler cgi-script Directory. There são duas diferenças principais entre programação regular, e programação de CGI. Primeiro, toda a saída de seu programa CGI deve ser precedida por um cabeçalho de tipo MIME Este é o cabeçalho que informa o cliente que tipo de conteúdo é Recebendo Na maioria das vezes, isso vai parecer. Em segundo lugar, sua saída precisa ser em HTML, ou algum outro formato que um navegador será capaz de exibir Na maioria das vezes, isso será HTML, mas ocasionalmente você pode escrever um CGI Programa que gera uma imagem gif, ou outro conteúdo não-HTML. Apart dessas duas coisas, escrevendo um programa CGI será muito parecido com qualquer outro programa que você pode escrever. O seguinte é um exemplo de programa CGI que imprime uma linha para o seu Browser Digite o seguinte, salve-o em um arquivo chamado e coloque-o no diretório cgi-bin. Usr bin perl imprimir texto de conteúdo html nn print Olá, World. Even se você não está familiarizado com Perl, você deve ser capaz de ver o que está acontecendo aqui A primeira linha diz ao Apache ou qualquer shell que você está executando em que este O programa pode ser executado alimentando o arquivo para o intérprete encontrado no local usr bin perl A segunda linha imprime a declaração de tipo de conteúdo de que falamos, seguida de dois pares de retorno de retorno de carriage-puts Coloca uma linha em branco após o cabeçalho, para indicar O fim dos cabeçalhos eo início do corpo A terceira linha imprime a seqüência de caracteres Hello, World E que s o fim dela. Se você abrir o seu navegador favorito e dizer-lhe para obter o endereço. ou onde quer que você coloque o arquivo, Você verá uma linha Olá, Mundo aparecer na janela do seu navegador Não é muito excitante, mas uma vez que você começa a trabalhar, você terá uma boa chance de obter apenas sobre qualquer coisa working. There são quatro coisas básicas que você pode ver em Seu navegador quando tentar acessar O seu programa CGI a partir da web. A saída do seu programa CGI Grande Isso significa que tudo funcionou bem Se a saída está correta, mas o navegador não está processando corretamente, verifique se você tem o tipo correto de conteúdo definido em seu programa CGI Código fonte do seu programa CGI ou uma mensagem POST Method Not Allowed Isso significa que você não configurou corretamente o Apache para processar seu programa CGI Releia a seção sobre a configuração do Apache e tente encontrar o que você perdeu Uma mensagem começando com Forbidden Isso significa que não há Um problema de permissões Verifique o log de erro do Apache e a seção abaixo sobre permissões de arquivos Uma mensagem dizendo Internal Server Error Se você verificar o log de erros do Apache você provavelmente encontrará que ele diz Final prematura de cabeçalhos de script, possivelmente junto com uma mensagem de erro gerada pelo seu Programa CGI Neste caso, você vai querer verificar cada uma das seções abaixo para ver o que pode estar impedindo seu programa CGI de emitir os cabeçalhos apropriados. Lembre-se que o s Erver não funciona como você Isso é, quando o servidor começa acima, está funcionando com as permissões de um usuário unprivileged - geralmente ninguém ou www - e assim que precisará permissões extra executar limas que são possuídas por você Geralmente, a maneira Para dar um arquivo de permissões suficientes para ser executado por ninguém é dar a todos a permissão de execução no arquivo. Além disso, se o programa lê ou escreve para qualquer outro arquivo, esses arquivos terão de ter as permissões corretas para permitir isso. Quando você executa um programa a partir de sua linha de comando, você tem certas informações que são passadas para o shell sem você pensar sobre isso Por exemplo, você tem um PATH que diz ao shell onde ele pode procurar arquivos que você reference. When um programa é executado Através do servidor web como um programa CGI, pode não ter o mesmo PATH Qualquer programa que você invocar em seu programa CGI como sendmail, por exemplo, precisará ser especificado por um caminho completo, para que o shell pode encontrá-los quando ele tenta Execute seu CGI pr Uma manifestação comum deste é o caminho para o interpretador de script muitas vezes perl indicado na primeira linha do seu programa CGI, que vai olhar algo parecido. Certifique-se que este é de fato o caminho para o interpreter. When a edição de scripts CGI em Windows, os caracteres de fim de linha podem ser anexados ao caminho do interpretador Certifique-se de que os arquivos são transferidos para o servidor no modo ASCII Falha ao fazê-lo pode resultar em avisos de comando não encontrado do sistema operacional, devido à não - Line sendo interpretado como uma parte do interpretador filename. If seu programa CGI depende variáveis de ambiente não-padrão que você precisa para garantir que essas variáveis são passadas pelo Apache. Quando você perder cabeçalhos do ambiente, certifique-se de que eles são formatados de acordo com Para RFC 2616 seção 4 2 Cabeçalho nomes devem começar com uma letra, seguido apenas por letras, números ou hífen Qualquer cabeçalho violando esta regra será caiu silenciosamente. A maior parte do tempo quando um programa CGI falhar, é porque o Fa problema com o próprio programa Isso é particularmente verdade quando você pegar o jeito deste CGI coisas, e não mais fazer os dois erros acima A primeira coisa a fazer é certificar-se de que seu programa é executado a partir da linha de comando antes de testá-lo através do Servidor web Por exemplo, try. cd usr local apache2 cgi-bin. Não chame o interpretador perl O shell e o Apache devem encontrar o interpretador usando as informações do caminho na primeira linha do script. A primeira coisa que você vê escrito por seu programa deve ser um conjunto de cabeçalhos, incluindo o Content-Type seguido por um Linha vazia Se você vir qualquer outra coisa, o Apache retornará o erro Premature end of script headers se você tentar executá-lo através do servidor Veja Escrevendo um programa CGI acima para mais detalhes. Os logs de erro são seu amigo Qualquer coisa que der errado gera mensagem em O log de erro Você deve sempre olhar lá primeiro Se o local onde você está hospedando seu site não permite que você acesse o log de erro, você deve provavelmente hospedar seu site em algum lugar Aprenda a ler os logs de erro, e você encontrará que quase Todos os seus problemas são rapidamente identificados e resolvidos rapidamente. O programa de suporte suexec permite que programas CGI sejam executados sob diferentes permissões de usuário, dependendo de qual host virtual ou diretório home do usuário eles estão localizados Em Suexec tem a verificação muito estrita da permissão, e toda a falha nessa verificação resultará em seus programas do CGI que falham com extremidade prematura de headers. To do certificado para verificar se você está usando o suexec, funcionam apachectl - V e verific para o lugar de SUEXECBIN se Apache encontra Um suexec binário lá na inicialização, suexec será ativado. A menos que você compreenda completamente suexec, você não deve usá-lo Para desativar suexec, basta remover ou renomear o binário suexec apontado por SUEXECBIN e, em seguida, reinicie o servidor Se, depois de ler sobre suexec Você ainda deseja usá-lo, em seguida, execute suexec - V para localizar o local do arquivo de log do suexec e use esse arquivo de log para descobrir qual política você está violando. À medida que você se torna mais avançado na programação CGI, será útil entender Mais sobre o que está acontecendo nos bastidores Especificamente, como o navegador eo servidor se comunicam uns com os outros Porque embora tudo é muito bom para escrever um programa que imprime Hello, World, não é particularmente útil. Environ As variáveis de manutenção são valores que flutuam à sua volta ao usar o computador. São coisas úteis, como o caminho, onde o computador procura o arquivo real implementando um comando quando você digita, o nome de usuário, o tipo de terminal e assim por diante. Das variáveis de ambiente normais e diárias, digite env em um prompt de comando. Durante a transação CGI, o servidor e o navegador também definem variáveis de ambiente, para que eles possam se comunicar uns com os outros. Essas são coisas como o tipo de navegador Netscape, IE, Lynx, o tipo de servidor Apache, IIS, WebSite, o nome do programa CGI que está sendo executado, e assim por diante. Estas variáveis estão disponíveis para o programador CGI e são metade da história da comunicação cliente-servidor A lista completa Das variáveis requeridas está na interface comum do Gateway RFC. Este programa simples do CGI de Perl mostrará todas as variáveis de ambiente que estão sendo passadas ao redor. Dois programas similares são incluídos no diretório do cgi-bin do distr do Apache Ibution Note que algumas variáveis são necessárias, enquanto outras são opcionais, então você pode ver algumas variáveis listadas que não estavam na lista oficial. Além disso, o Apache fornece muitas maneiras diferentes de adicionar suas próprias variáveis de ambiente às básicas fornecidas por padrão . Usr bin perl print Conteúdo-tipo texto html nn foreach chaves chave ENV tecla de impressão - ENV br. Outra comunicação entre o servidor eo cliente acontece sobre entrada padrão STDIN e saída padrão STDOUT No contexto normal do dia-a-dia, STDIN significa o teclado ou um Arquivo que um programa é dado para agir, e STDOUT normalmente significa o console ou screen. When você POST um formulário web para um programa CGI, os dados nesse formulário é empacotado em um formato especial e é entregue ao seu programa CGI sobre STDIN O programa então pode processar esses dados como se estivesse vindo do teclado ou de um arquivo. O formato especial é muito simples Um nome de campo e seu valor são unidos juntamente com um sinal de igual e pares de valores são unidos juntos Com um e comercial. Os caracteres inconvenientes, como espaços, e comercial e sinais de igual, são convertidos em seu equivalente hexadecimal para que eles não colmam os trabalhos. Toda a seqüência de dados pode parecer algo assim. Você às vezes também verá esse tipo de string app Terminou a uma URL Quando isso é feito, o servidor coloca essa string na variável de ambiente chamada QUERYSTRING Isso é chamado de solicitação GET Seu formulário HTML especifica se um GET ou um POST é usado para entregar os dados, definindo o atributo METHOD no FORM tag. Your programa é então responsável por dividir essa seqüência de caracteres em informações úteis Felizmente, existem bibliotecas e módulos disponíveis para ajudá-lo a processar esses dados, bem como lidar com outros aspectos do seu programa CGI. Quando você escreve programas CGI, Você deve considerar usar uma biblioteca de código, ou módulo, para fazer a maior parte do trabalho grunt para você Isso leva a menos erros e desenvolvimento mais rápido. Se você está escrevendo programas CGI em Perl, os módulos estão disponíveis no CPAN O módulo mais popular para este Propósito é Você também pode considerar CGI Lite que implementa um conjunto mínimo de funcionalidade, que é tudo que você precisa na maioria dos programas. Se você está escrevendo programas CGI em C, há uma variedade de opções Uma dessas é a biblioteca CGIC Há um grande número de recursos de CGI na web A lista da guilda de escritores de HTML é uma grande fonte de respostas para suas perguntas Você pode encontrar mais em. A especificação CGI atual está disponível no Common Gateway Interface RFC. Quando você postar uma pergunta sobre um problema CGI que você está tendo, seja para uma lista de discussão, ou para um newsgroup, certifique-se de fornecer informações suficientes sobre o que aconteceu, o que você esperava que aconteça, e como o que realmente aconteceu foi diferente, Qual servidor você está executando, qual idioma seu programa CGI estava e, se possível, o código ofensivo Isso tornará o seu problema muito mais simples. Note que as perguntas sobre problemas CGI nunca devem ser postadas no banco de dados de bugs do Apache a menos que você tenha certeza Você encontrou um problema no código-fonte do Apache. Observação Esta não é uma seção de QA Os comentários colocados aqui devem ser apontados para sugestões sobre como melhorar a documentação ou o servidor e podem ser removidos novamente pelos nossos moderadores se eles forem e Ou implementadas ou consideradas inválidas fora do tópico As perguntas sobre como gerenciar o Servidor Apache devem ser direcionadas para o canal do IRC, no Freenode ou enviadas para nossas listas de discussão. Copyright 2017 A Apache Software Foundation Licenciada sob a Licença Apache, Versão 2 0 .
No comments:
Post a Comment