Configurando Magento com NGinx na Amazon

Usaremos uma instância EC2 com  Amazon Linux AMI de 64 bits, como mostrado abaixo.

Após criarmos a máquina, e feito download a nossa chave (.pem), vamos logar na nossa instância via terminal, usando

ssh -i minhachave.pem ec2-user@minhamaquina-123-456-789.compute.amazon.com

Nota: se houver problemas com permissões na sua chave, como por exemplo obter a mensagem Permissions 0664 for ‘minhachave.pem’ are too open.
Um simples chmod 400 minhachave.pem resolve o problema.

1. Vamos atualizar o linux e ajustar configurações de tempo

sudo yum -y update

sudo ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

2. Instalar o servidor web Nginx e o PHP-FPM

sudo yum install -y nginx php-fpm

3. Instalar as extensões necessárias para o Magento e outras extensões comuns

sudo yum install -y php-devel php-mysql php-pdo php-pear php-mbstring php-cli php-odbc php-imap php-gd php-xml php-soap php-mcrypt

4. Instalar o PHP APC (Alternative PHP Cache) – Opcional

sudo yum install -y php-pecl-apc

5. Configurando o Nginx

Edite o arquivo /etc/nginx/conf.d/default.conf com o editor que preferir.

cd /etc/nginx/conf.d/

sudo cp default.conf default.conf.bkp

Update: em versoes mais novas no nginx, a configuração padrão vem sendo carregada dentro do /etc/nginx/nginx.conf.

Update 2: Na versão nova o nginx inclui todos os arquivos de configuracao (com extensão .conf) que esta dentro de /etc/nginx/conf.d/. Desta forma, você pode criar um arquivo de configuracao pra cada site ou subdominio. Para isso basta criar um arquivo meusite.conf nesse diretorio e colocar o trecho abaixo dentro de server{ }, como pode ser visto em /etc/nginx/conf.d/virtual.conf em seu conteúdo comentado.

sudo vi /etc/nginx/conf.d/default.conf

Localize os trechos abaixo e deixe-os da seguinte forma:


location / {
  root   /usr/share/nginx/html;
  index  index.php index.html index.htm;
}

location ~ \.php$ {
  fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
  include        fastcgi_params;
}

6. Configurar o PHP-FPM

Vamos fazer backup e editar o arquivo www.conf.

 cd /etc/php-fpm.d/

sudo cp www.conf www.conf.bkp

sudo vi www.conf

Altere os seguintes parâmetros/blocos, deixando-os assim:


;listen = 127.0.0.1:9000
listen = /var/run/php-fpm/php-fpm.sock

listen.owner = nginx
;listen.group = nobody
listen.mode = 0664

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

7. Iniciando o PHP-FPM e Nginx

sudo service php-fpm start
sudo service nginx start

A esta altura, já temos nosso servidor funcionando e rodando páginas php. Agora vamos fazer com que eles sejam iniciados automaticamente quando nosso servidor for ligado.

sudo chkconfig nginx on
sudo chkconfig php-fpm on

Configurando/Instalando o Magento no Nginx

1. Instalando o magento no nosso novo servidor

Primeiramente vamos fazer o download do magento em alguma pasta e descompactá-lo na raíz pública /usr/share/nginx/html.

cd ~
mkdir temp
cd temp
wget http://www.magentocommerce.com/downloads/assets/1.7.0.2/magento-1.7.0.2.tar.gz
tar xzvf magento-1.7.0.2.tar.gz
sudo mv magento/* /usr/share/nginx/html/

Nem se preocupe em copiar o .htaccess. Como você já deve saber, ele não funciona no Nginx.

2. Configure as permissoes de pasta

cd /usr/share/nginx/html
chmod -R o+w media var
chmod o+w app/etc

3. Configuração do arquivo global do Nginx

Vamos fazer backup e abrir o arquivo /etc/nginx/nginx.conf.

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bkp
sudo vi /etc/nginx/nginx.conf

E alterar o seu conteúdo.
Ficará +/- assim:

#######################################################################
#
# This is the main Nginx configuration file.
#
# More information about the configuration options is available on
#   * the English wiki - http://wiki.nginx.org/Main
#   * the Russian documentation - http://sysoev.ru/nginx/
#
#######################################################################

#----------------------------------------------------------------------
# Main Module - directives that cover basic functionality
#
#   http://wiki.nginx.org/NginxHttpMainModule
#
#----------------------------------------------------------------------

user              nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;

#----------------------------------------------------------------------
# Events Module
#
#   http://wiki.nginx.org/NginxHttpEventsModule
#
#----------------------------------------------------------------------

events {
    worker_connections  1024;
}

#----------------------------------------------------------------------
# HTTP Core Module
#
#   http://wiki.nginx.org/NginxHttpCoreModule
#
#----------------------------------------------------------------------

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types      text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;

    map $scheme $fastcgi_https {
        defaulf off;
        https on;
    }
}

Apenas ativamos o gzip e mapeamos o fastcgi.

4. Agora vamos configurar o site individualmente.

O nginx inclui todos os arquivos .conf que estão em /etc/nginx/conf.d. Vamos criar um com o nome NOSSODOMINIO.conf nesta pasta, e colocar o seguinte conteúdo:

server {
    listen 80;
  ## SSL directives might go here
    server_name _ www.SEUDOMINIO.com.br *.SEUDOMINIO.com.br; ## Tem que ter o dominio com www e sem www. Deixe o _ apenas enquanto seu dominio nao estiver apontando pra cá (no caso de ainda estar sem ip fixo ou url fixo definido).

    location / {
	root   /usr/share/nginx/html;
	index index.php index.html; ## Allow a static html file to be shown first
	try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler
	expires 30d; ## Assume all files are cachable
    }

    ## These locations would be hidden by .htaccess normally
    location ~ (/(app/|includes/|/pkginfo/|var/|report/config.xml)|/\.svn/|/\.git/|/.hta.+) {
	deny all;
    }

    location /var/export/ { ## Allow admins only to view export folder
	auth_basic           "Restricted"; ## Message shown in login window
	auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword
	autoindex            on;
    }

    location  /. { ## Disable .htaccess and other hidden files
	return 404;
    }

    location @handler { ## Magento uses a common front handler
	rewrite / /index.php;
    }

    location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
	rewrite ^(.*.php)/ $1 last;
    }

    location ~ .php$ { ## Execute PHP scripts
	if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss
	expires off; #nao usar cache pra php (dinamico)
	fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html$fastcgi_script_name;
	include        fastcgi_params;
    }
}

E para evitar conflitos, vamos desabilitar o arquivo padrao de configuracao, renomeando-o:

sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.disabled

Reinicie o nginx e o php-fpm:

sudo service php-fpm restart
sudo service nginx restart

Nota: se houver problemas na reinicialização do php-fpm, tente reexecutar o comando mais 1 ou 2 vezes. Pra mim funcionou. =)

5. Voilá! Agora é só instalar o magento.

Agora acesse o url temporário (ou definitivo) da sua instância e comece o processo normal de instalação do magento.

UPDATE #1: Note que não houve instalação ou configuração do servidor mysql. Você pode instalá-lo na sua instância EC2 ou colocá-lo no RDS da Amazon também.

Compartilhe com os amigos
  • Digg
  • StumbleUpon
  • Print
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • email
  • Google Buzz
  • LinkedIn
  • Live
  • MSN Reporter
  • Orkut
  • PDF
  • Reddit
  • Tumblr
Publicidade

116 comentários

  1. Denis disse:

    Excelente tutorial Ricardo. Em breve irei testa-lo. Valeu.

  2. Show de bola o tutorial parabéns brother!!!

  3. Jorge Luis disse:

    Apos realizar os passo acima foi apresentado o erro:
    sudo service nginx restart
    nginx: [emerg] unknown directive “server” in /etc/nginx/nginx.conf:78
    nginx: configuration file /etc/nginx/nginx.conf test failed

    coloquei o ultimo trecho do tutorial em sudo vi /etc/nginx/nginx.conf editando logo apos o http {,minha dúvida é a última configuração fica mesmo neste arquivo, quais os passsos para conserto?

  4. Jorge Luis disse:

    Achei a respota, o ultimo bloco do tutoria tem que ficar logo abaixo do gzip on; … gzip_types, acima do load config files…

  5. Péricles disse:

    Acho que esse tutorial foi feito antes de ser lançada a ultima versão do Nginx. Pois na versão que instalei (nginx-1.2.6) não existe o arquivo /etc/nginx/conf.d/default.conf

    • Oi Péricles,
      Aparentemente nada mudou de uma versão pra outra.
      Cheguei até a ver nesse site (http://www.cyberciti.biz/faq/install-nginx-centos-rhel-6-server-rpm-using-yum-command/) que é um passo-a-passo escrito esse mês e que usa a versão 1.2.6, e o autor aponta para o mesmo diretório.
      Receio que você deva estar usando outra distribuição do linux.

    • Juan Vazquez disse:

      Aconteceu o mesmo comigo. Mas criei um default.conf do zero e coloquei o mesmo conteudo do arquivo conf.d que o Ricardo colocou. Funcionou normalmente. Testa isso.

    • Péricles disse:

      Ricardo, obrigado pela sua atenção e desculpe-me se eu estiver errado sou apenas um aprendiz. Eu dei uma olhada no link que vc postou e pelo que pude entender o arquivo de configuração dessa versão é o /etc/nginx/nginx.conf

      Step #4: Configuration files

      Default configuration directory: /etc/nginx/
      Default SSL and vhost config directory: /etc/nginx/conf.d/
      Default log file directory: /var/log/nginx/
      Default document root directory: /usr/share/nginx/html
      *Default configuration file: /etc/nginx/nginx.conf
      Default server access log file: /var/log/nginx/access.log
      Default server access log file: /var/log/nginx/error.log

    • Somos todos aprendizes. =)

  6. Juan Vazquez disse:

    Ah, foi usando o Amazon Linux… Talvez por isso que está diferente :)

    • Péricles disse:

      Isso mesmo, utilizei o Amazon Linux. Que distribuição devo usar para seguir o passo-a-passo desse tutorial?

    • Oi Péricles,
      No começo do artigo tem até o print screen da imagem selecionada (Amazon Linux AMI 64bits).
      Você deve ter pulado alguma coisa ou errado em alguma parte. A config do nginx é bem chatinha, qualquer deslize, e não funciona.

    • Péricles disse:

      O diretório conf.d exite, o que não existe é o arquivo default.conf. Encontrei um código semelhante ao do default.conf desse tuturial no arquivo /etc/nginx/nginx.conf. Estou utilizando o Amazon Linux. Se criando o default.conf do zero resolve o problema, qual é o código completo deste arquivo?

    • Oi Pericles,
      No geral, o default.conf fica nessa pasta mesmo. Veja no /etc/nginx/nginx.conf se existe um include da pasta /etc/nginx/conf.d/*.conf.
      O conteúdo do default.conf é o que eu sugeri aqui no post. Pode variar de acordo com as suas necessidades, mas pra uma loja padrao funciona.

    • Péricles disse:

      Entendi.. vou testar. Obrigado.

  7. Péricles disse:

    Ricardo, sem querer abusar. Mas eu estou me conectando ao servidor por sftp mas não estou conseguindo fazer upload dos arquivos. Recebo a seguinte mensagem “permission denied”, estou utilizando o filezilla. Alguma dica?

  8. David disse:

    Ricardo,

    Não achei essa AMI de jeito nenhum. Filtrei por Amazon Linux ( https://aws.amazon.com/amis?platform=Amazon+Linux&selection=platform) mas não apareceu. Como a localizo?

  9. sales disse:

    amigo como eu faço pra faazer esse mesmo processo num vps
    /??

  10. Euclides Pereira disse:

    Olá amigos.

    Eu devo estar 10 níveis abaixo do aprendiz. rsrsrs
    Infelizmente não consegui. Existe uma forma de começar do zero. Criando uma nova máquina sem que eu perca a gratuidade de 1 ano?

    • Euclides, se você já tem uma máquina na amazon a segunda não é de graça.
      Ou você apaga a existente e cria denovo ou pega outra.
      Pra fins de testes e aprendizados, sugiro que crie outra máquina e pause ela quando não estiver usando, assim só gastará pelas horas utilizadas (se usar umas 8 horas não vai sair mais de R$0,20).

  11. Marcio disse:

    Olá, Ricardo. Encontrei o seguinte texto escrito por você no grupo do google. Agora vem a minha dúvida como e onde eu configuro está parte, ip interno, ip externo para aumentar velocidade e diminuir o consumo?

    “Vc disse que está usando RDS…
    O RDS que vc pegou está na mesma zona que o EC2?
    Se estiverem em zonas diferentes pode afetar bastante, principalmente se estiver em países diferentes.
    Outra coisa legal pra aumentar a velocidade e diminuir o con$umo de banda, é setar o ip interno do banco de dados, e nao o ip externo, assim o trafego nao é cobrado.”

    Desde já agradeço.

    • Oi Marcio,
      O RDS é bom pegar na mesma zona sim, pois senão realmente vai ficar muito mais lento. Sobre usar localmente ou usar o RDS é relativo.
      Acredito que a principal função do RDS seja facilitar a escalabilidade de bancos de dados, e prover uma solução mais completa de banco, com backups, etc.
      No caso do ip externo voce precisa criar um Elastic IP e associa-lo à sua instancia EC2. Desta forma ela terá um ip fixo e não mais aqueles ip’s complicados e dinamicos da amazon.

  12. Bruna disse:

    Oi Ricardo.
    O desempenho em instalar o servidor mysql na própria instância é muito abaixo do que utilizar o mysql em uma RDS? Ou o desempenho não se altera muito?

    Está me ajudando muito este tutorial, muito obrigado

    • Oi Bruna, obrigado pelo comentário.
      Como disse ao Marcio, acredito que o papel do RDS seja fornecer uma solução de banco mais preparada pra voce, e pronta pra escalar e com rotinas de backup.
      Quanto à velocidade, depende muito da sua necessidade. Mas lembre-se de colocar o RDS na mesma zona do seu EC2, senão com certeza será mais lento.

  13. Sandro disse:

    Segui seu tutorial, porém, retorna este erro,
    nginx: [emerg] unknown directive ”    listen” in /etc/nginx/conf.d/meudominio.conf:2
    nginx: configuration file /etc/nginx/nginx.conf test failed

  14. Bruna disse:

    Olá novamente Ricardo.
    Consegui configurar tudo certo o Nginx com seu tutorial na minha instância EC2 na Amazon.
    Instalei o Mysql Percona também, mas agora estou sofrente para tentar configurar o phpMyAdmin para funcionar junto com o Nginx.
    Poderia me indicar alguma referência de como fazê-lo?

  15. Dayvyd disse:

    Olá Ricardo, bom dia!

    Parabéns pelo tutorial, ficou show!

    Estou com uma dúvida, no final deu o seguinte erro:

    nginx: [emerg] unknown directive “server” in /etc/nginx/conf.d/NOSSODOMINIO.conf:1

    Como resolver?

    Obrigado

    • Dayvyd, acho que você está colocando o server{} dentro de outro server{}.
      Nas versoes mais recentes do nginx ficou um pouco diferente (fiz um update no post um dia desses), veja se é isso.
      Abs

  16. Dayvyd disse:

    Eu verifiquei aqui, o problema está no server_name indicado no nginx.conf. Eu devo usar localhost, o Elastic IP ou 127.0.0.1 ?

    • O server_name é o nome do seu dominio ou dos dominios que responderão por esse .conf.
      Ex: 200.210.99.123, minhaloja.com, http://www.minhaloja.com, ec2-54-233-123-123.compute-1.amazonaws.com

      Separados por espaço e não por virgula. Se quiser pegar qualquer coisa, deixe _ (underline).

  17. Marcio disse:

    Olá Ricardo, bom dia!

    Estou tentando me logar com o user nginx – só que está me pedindo a senha do usuário. Eu não lembro de ter definido uma senha para ele no momento da instalação. Existe uma senha padrão para o usuário nginx?

  18. Amigo estou seguindo seu tutorial e quando fui dar start no nginx deu este erro, pode me ajudar?

    Starting nginx: nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log” failed (13: Permission denied)
    2013/03/08 15:17:31 [warn] 1289#0: the “user” directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:5
    2013/03/08 15:17:31 [emerg] 1289#0: mkdir() “/var/lib/nginx/tmp/client_body” failed (13: Permission denied)
    [FAILED]

  19. Fernando,
    O nginx nao tem permissao em /var/log/nginx. Tenta criar a pasta manualmente e setar o grupo como nginx… Deve resolver.

  20. Valeu mesmo Ricardo!!! maravilha este tutorial!! ficou ótimo.

    ? – Como faço para conectar no Magento Connect usando o server da Amazon? ele não libera de forma alguma, mesmo criando novo usuário de FTP. Tem alguma dica?

  21. Bruno disse:

    Oi Ricardo! Seu tutorial está ótimo, parabéns!
    Segui todos os passos, mas no final não consigo instalar o Magento, ele da um erro 404.
    Você tem idéia do que pode estar acontecendo, por favor?
    Obrigado!

    • Bruno, ele da erro 404 aonde? Logo depois de instalar no frontend? 404 só na pagina de produto/categoria? Ou em qualquer lugar?
      Ja criou um arquivo na raiz da pasta do docroot e testou?

    • Bruno disse:

      Quando eu tento acessar a raiz do servidor ou a install.php para configuração do Magento, ele da 404. O Nginx está no ar porque a index.html funciona certinho. O Magento que não está rodando.
      Obrigado pela ajuda!

    • Bruno disse:

      Continuo com o mesmo problema na hora de rodar o install.php do Magento. Ele me retorna um erro 404 e não consigo seguir com o processo. Tentei utilizar as configurações abaixo do outro Bruno e continua dando erro. Obrigado pela ajuda!

  22. Bruno disse:

    Ricardo, sempre que tento rodar um .php aarece 502 Bad Gateway. Mas se abro um .html vai normal.

    worker_processes 2;
    worker_connections 1024;

    Veja o log:
    2013/03/21 15:52:24 [alert] 29850#0: 1024 worker_connections are not enough
    2013/03/21 15:52:24 [error] 29850#0: *1026 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: _, request: “GET /-index.php HTTP/1.0”, upstream: “http://127.0.0.1:80/-index.php”, host: “127.0.0.1”, referrer: “http://xx.xxx.xxx.xxx/”

  23. Bruno disse:

    Não sei bem ao certo o que fiz mas agora funcionou.

    ==============================================
    NGINX.CONF
    ==============================================
    user ec2-user ec2-user;
    worker_processes 5;

    error_log /var/log/nginx/error.log;
    #error_log /var/log/nginx/notice.log notice;
    #error_log /var/log/nginx/info.log info;

    pid /var/run/nginx.pid;

    worker_rlimit_nofile 8192;

    events {
    worker_connections 4096;
    }

    http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay off;
    keepalive_timeout 30;

    #client_body_timeout 10;
    #client_body_buffer_size 8k;
    #client_header_timeout 10;
    #client_header_buffer_size 128;
    #client_max_body_size 8M;

    #gzip on;
    #gzip_min_length 5000;
    #gzip_buffers 4 8k;
    #gzip_comp_level 6;
    #gzip_proxied any;
    #gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    #gzip_disable “MSIE [1-6]\.”;

    map $scheme $fastcgi_https {
    defaulf off;
    https on;
    }

    server {
    listen 80;
    server_name _;
    root /home/ec2-user;
    index index.php index.html index.htm;

    location / {
    root /home/ec2-user;

    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;

    if ($http_referer ~* (babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|video|webcam|zippo)) {
    return 403;
    }
    }

    location ~ \.php$ {
    fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /home/ec2-user$fastcgi_script_name;
    include fastcgi_params;

    #proxy_pass http://127.0.0.1;
    }

    location ~ /\.ht {
    deny all;
    }

    location = /favicon.ico {
    log_not_found off;
    access_log off;
    }
    }

    include /etc/nginx/conf.d/*.conf;
    }

    ==============================================
    http://WWW.CONF:
    ==============================================
    [www]
    listen = /var/run/php-fpm/php-fpm.sock
    ;listen.backlog = -1
    listen.allowed_clients = 127.0.0.1
    listen.owner = ec2-user
    listen.group = ec2-user
    listen.mode = 0664

    user = ec2-user
    group = ec2-user

    pm = dynamic
    pm.max_children = 8
    pm.start_servers = 3
    pm.min_spare_servers = 3
    pm.max_spare_servers = 6
    pm.max_requests = 200
    ;pm.status_path = /status
    ;ping.path = /ping
    ;ping.response = pong

    request_terminate_timeout = 120s
    ;request_slowlog_timeout = 0

    slowlog = /var/log/php-fpm/www-slow.log
    rlimit_files = 131072
    rlimit_core = unlimited
    ;chroot =
    ;chdir = /var/www
    catch_workers_output = yes
    ;security.limit_extensions = .php .php3 .php4 .php5

    env[HOSTNAME] = $HOSTNAME
    ;env[PATH] = /usr/local/bin:/usr/bin:/bin
    env[TMP] = /tmp
    env[TMPDIR] = /tmp
    env[TEMP] = /tmp

    ;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
    ;php_flag[display_errors] = off
    php_admin_value[error_log] = /var/log/php-fpm/www-error.log
    php_admin_flag[log_errors] = on
    php_admin_value[memory_limit] = 128M

  24. guilherme disse:

    oi Ricardo, parabéns e obrigado pelo post!
    enrosquei na ultima parte. qdo vou reiniciar o nginx da o erro:

    nginx: [emerg] unknown directive ”    listen” in /etc/nginx/conf.d/meudoninio.conf:2
    nginx: configuration file /etc/nginx/nginx.conf test failed

    se puder dar uma luz, agradeço novamente desde já.
    valeu!

    • guilherme disse:

      o unico ponto do tutorial q nao consegui seguir, foi depois do item 4 na instalacao do magento (“E para evitar conflitos, vamos desabilitar o arquivo padrao de configuracao, renomeando-o”). da o erro:
      mv: impossível obter estado de “/etc/nginx/conf.d/default.conf”: Arquivo ou diretório não encontrado

      valeu

    • Guilherme, algumas versões mais novas do nginx a configuração muda um pouco e não há necessidade de criar arquivos de conf separados. De uma olhada nos “Updates” mencionados no post.
      O erro do “listen” que vc reportou provavelmente foi pq vc o colocou no lugar errado, ou fora so server{}.

    • guilherme disse:

      deu certo Ricardo!
      no item 5 (Configurando o Nginx) editei o arquivo vi /etc/nginx/nginx.conf.default

      e nao fiz o penúltimo passo: “E para evitar conflitos, vamos desabilitar o arquivo padrao de configuracao, renomeando-o:”

      agora estou tentando instalar e configurar o servidor mysql, ta punk,rsrs

      valeu!

  25. guilherme disse:

    nao consigo conectar a db q criei no RDS na instalacao do magento nem a pau. coloco o endpoint como host. deixo a base url com o meu public DNS, mas recebo a mensagem de url nao acessivel… a porta 3306 está habilitada…

    alguma sugestao? e o percona, é muito dificil instalar?
    valeu

  26. Oi Guilherme,
    O RDS nao tem muito mistério. É só colocar o endpoint no lugar do host mesmo, com o login e senha que configurou no rds.
    Tente fazer uma conexao manual apenas para testar antes…
    $ mysql -h endpoint.amazon.com -u usuario -psenha
    E a porta de saída no Ec2 deve estar liberada como vc fez. Talvez esteja errando no nome do usuário, ou talvez tenha restringido alguma coisa no rds.

    • guilherme disse:

      oi Ricardo, mais uma vez obrigado pela atenção.

      consegui fazer a conexao manual, fiz o teste com o Razor tb e consegui me conectar. MAs no magento , nada feito :(

      obrigado

    • guilherme disse:

      no magento recebo a mensagem q minha url nao é valida..

    • guilherme disse:

      meu site tem a terminação .eco.br , seria esse o problema? obrigado

    • guilherme disse:

      nao deve ser, pois tentei com o Public DNS tb e nao deu certo…

  27. guilherme disse:

    deu certo!
    foi só marcar a opcao: Skip Base URL Validation Before the Next Step
    mais uma vez obrigado!

  28. Douglas disse:

    Por gentileza amigos algum de voces sabem como configurar o Nginx para funcionar o PhpMyAdmin ? Ja segui varios tutos na net mas não funfou, a maioria fala pra fazer a configuração no arquivo /etc/nginx/sites-available/default mas não existe a pasta sites-available/default podem me dar um help por favor, grato amigos.

  29. Douglas disse:

    Obrigado pelo help Sales

  30. Douglas disse:

    Galera como faço pra configurar o Nginx na porta 8080 tentei somente alterar a porta em Listen mas qdo assim faço da Pagina não Encontrada, estou tentando fazer isso para instalar o Varnish e ouvi falar que pro modulo Pagecache funfar precisa que o Varnish esteja na porta 80. Obrigado pela ajuda e parabens Ricardo pelo excelente trabalho.

  31. Felipe Pavão disse:

    Fala Ricardo, tudo bem?

    Sou leitor do seu blog e estudo Amazon. Fiquei impressionado com o post lá na lista do Magento, porém eu não consegui uma boa experiencia na minha conf, o PHP-FPM esta consumindo toda a CPU.

    Você teria alguma dica referente a isso?

    • Oi Felipe, tudo bom?
      Mto legal seu blog e a ideia da stor.me.
      Sobre o php consumir toda a cpu, você pode configurar a quantidade de processos no php-fpm.conf. E também não é muito recomendável usar uma micro instancia pra hospedar um site com mais de… digamos… 1 visita simultânea, rs. Brincadeiras a parte, a micro instancia realmente não suporta muita coisa.
      Me avise se o problema se resolver de outra forma.

      Abraços!

    • Felipe Pavão disse:

      Fala Ricardo,

      obrigado pelos comentários. Estamos “apanhando” por aqui pra ajudar o pessoal com Magento. E em breve o meu amigo que esta junto da Storme, seu chará (ricardomartins.com.br), compartilhará com a comunidade a solução também. Acredito que todos juntos podemos fortalecer nossas soluções.

      Enfim, aumentei a instancia m1.medium mas o fpm vez ou outra consome 100%. Colocando um Varnish na frente já ajuda pra parte deslogada.

      Foi você que fez o babycool.com.br? Aquele site esta “voando”.

      Abs!

    • Oi Felipe,
      Que legal. Então vc conhece o meu xará rs. Ele registrou o .com.br 10 minutos antes de mim, bem no dia que os .com.br ficaram publicos pra pessoas físicas, rs. Me arrependo até hoje de ter ido buscar uma água antes de clicar no “Registrar” naquele dia. =P
      O babycool.com.br foi eu que configurei sim. Usamos amazon, rds e s3, mas o esquema da configuração é bem parecido com o que tem aqui.
      Vale a pena dar uma explorada nas config’s de nginx e php-fpm.

      Abraços!

  32. Felipe Pavão disse:

    Sem dúvida, vamos explorar. Você esta usando que instancia na Amazon?

    Abs

  33. Leandro disse:

    Boa tarde Ricardo,

    Como fazer para os e-mails padrões (compra, esqueci a senha etc) sejam enviados? Tentei instalar um módulo de SMTP, porém só funcionou o envio dos e-mails do formulário de contato.

    Obrigado

  34. callum disse:

    Great blog post. It

  35. Rangel disse:

    Cara estou com um problema coloco todos os dados corretos na parte de configuração do banco e da url
    mais ele não passa dessa pagina, ele simplesmente não carrega e fica um tela branca

    • Rangel, a tela branca geralmente ocorre quando algum erro do Magento é suprimido pelas configurações do servidor.
      Veja no seu arquivo de log do nginx, geralmente em /var/log/nginx/error.log.

    • Rangel disse:

      cara ele esta me retornando isto …
      2013/07/18 03:45:02 [warn] 16077#0: conflicting server name “www.ecofabrics.com.br” on 0.0.0.0:80, ignored
      2013/07/18 03:45:02 [warn] 16077#0: conflicting server name “*.ecofabrics.com.br” on 0.0.0.0:80, ignored

      algum ideia do que seja?

    • Rangel disse:

      cara resolvi o problema do servidor, mais ele esta acusando este erro

      2013/07/22 11:22:58 [error] 27243#0: *8 FastCGI sent in stderr: “PHP message: PHP Fatal error: Cannot override final method Mage_Core_Model_Abstract::clearInstance() in /usr/share/nginx/html/app/code/core/Mage/Core/Model/Store.php on line 45” while reading response header from upstream, client: 179.197.45.169, server: _, request: “GET /index.php/install/wizard/administrator/ HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php-fpm/php-fpm.sock:”, host: “www.ecofabrics.com.br”

      ja viu algo parecido?

  36. eduardo disse:

    Rangel deu o mesmo problema no meu, esse erro, vc conseguiu resolver?

    FastCGI sent in stderr: “PHP message: PHP Fatal error: Cannot override final method Mage_Core_Model_Abstract::clearInstance() in /usr/share/nginx/html/meudominio/app/code/core/Mage/Core/Model/Store.php on line 45” while reading response header from upstream, client: 177.4.166.79, server: http://www.meudominio.com.br, request: “GET / HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “www.meudominio.com.br”

  37. Hugo disse:

    Olá Ricardo,
    Parabens pelo tutorial, a forma como tu fez esta show, há algum tempo venho tentando fazer isso e depois de seguir o caminho dos espinhos q tu passou também consegui.
    Parabens e muito sucesso!
    Abraços.

  38. Diego disse:

    Nao consigo editar o http://www.conf pois so abre em modo leitura e ele nao me deixa mudar as permissões do arquivo.

    Alguma idéia?

    • Diego disse:

      Esqueçam as besteira que eu escrevi ali em cima rsrsr
      Fazia um tempinho que nao brincava com linux hehe

    • Diego, se vc se refere ao disparo automatico de email, vc pode fazer isso via cron.
      Agora se a dúvida é simplesmente em como configurar email, aí vc faz isso no painel. Pra usar um servidor de smtp eu recomendo o SMTPPRo, é uma extensão que permite usar smtp,gmail, amazon, etc pra enviar emails.
      Eu perticularmente costumo usar o serviço SendGrid junto com o SMTPPro. É bem simples de configurar.

      Abraços.

  39. Diego disse:

    Olá Ricardo!
    Muito obrigado pelo tutorial, comigo deu certinho srsrs
    Mas tenho uma dúvida. Como faço para que o magento envie os e-mails transacionais?

    • Diego disse:

      Sim, me referia àqueles e-mails que o magento manda quando alguém se cadastra … faz uma compra …ou o status de um pedido muda. Além dos e-mails de newsletter :)

  40. Excelente tutorial, parabéns pelo trabalho !

  41. Eros disse:

    Cara!! só tenho uma coisa pra te falar: Te amo!!

    hahahaha meu site magento ta simplesmente voando no AWS com EC2 + Nginx e RDS … tipo diferença gritante (usava o plano business da Hostgator)

    Valeu e obrigado por compartilha seu conhecimento!

  42. Renato disse:

    Olá, após instalar minha Magento, a pagina ficou em branco e nao consigo fazer mais nada… Checando o log tenho o erro:

    2013/12/08 03:05:52 [error] 4817#0: *120 FastCGI sent in stderr: “PHP message: PHP Fatal error: Cannot override final method Mage_Core_Model_Abstract::clearInstance() in /usr/share/nginx/html/app/code/core/Mage/Core/Model/Store.php on line 45” while reading response header from upstream, client: 189.75.22.132, server: _, request: “GET / HTTP/1.1”, upstream: “fastcgi://unix:/var/run/php-fpm/php-fpm.sock:”, host: “54.207.2.15”

    Alguem conseguiu resolver este erro?

    Grato a todos desde já…
    Renato

  43. Diego Aragão disse:

    Oi Ricardo, estou tentando instalar o Magento com o Nginx. Não estou usando os servidores da amazom. Segui todo o tutorial porém agora quando vou entrar na tela de instalação do Magento está dando o erro 500. Já tentei várias coisas mas nao cosegui resolver pode me dar uma força? Obrigado!!!

  44. Diego Aragão disse:

    Olha o Erro q dá: [error] 3463#0: *4 rewrite or internal redirection cycle while processing “/index.php”, client: 186.222.174.92, server: vps.dominio.com.br, request: “GET / HTTP/1.1”, host: “vps.dominio.com.br”

    • Oi Diego, tudo bom?
      Eu tentaria ver algumas coisas como…
      1. URL do site configurado na tabela core_config_data
      2. As reescritas de url conforme descrito nessa pagina
      3. Se o Servername está correto
      4. Se tem alguma coisa configurada no seu /etc/hosts no dominio acessado
      5. Daria um tail -f em arquivos de erro, e em especial o access.log do nginx enquanto tenta acessar a loja

      Depois compartilha qual desses deu certo. =)

  45. Diego Aragão disse:

    Oi Ricardo, consegui resolver os problemas do erro 500, nao sei o q era mas segui o tutorial do teu xará http://www.ricardomartins.com.br/como-instalar-o-nginx-com-php-fpm-e-wordpress-no-centos/. Não sei qual era o problema mas agora esbarro em duas coisas: Mesmo depois de instaladas as extensoes dom e mcrypt aparecem como desabilitadas e impedem a continuação da instalação do magento. E o segundo problema é que tudo que eu coloco em subpastas e não diretamenta na www (nginx/www/subpasta) o nginx reconhece como vazia dando o erro 403.

    • Wieyfemmz disse:

      I was really confused, and this answered all my quoseitns.

    • Katia disse:

      Cara, como vc resolveu o erro? Me explica, estou com o mesmo erro que vc e já tentei de tudo. Tenho multilojas e mudei a cofiguração, mas não funciona de jeito nenhum!, Erro 500 até no admin! Me ensina!!!

  46. Diego Aragão disse:

    Valeu Ricardo, me ajudou a resolver o primeiro problema:
    “Mas quanto ao primeiro problema, basta instalar as bibliotecas como explico num dos primeiros passos.
    O caminho apontando pro lugar errado é configuracao do root em um dos .conf dentro de /etc//nginx/ ou /etc/nginx/cond.f”

  47. Diego Aragão disse:

    Agora a versao do php que tenho foi a 5.3.3
    enquanto q na pagina de requisitos está:

    5.2.13 – 5.3.24, 5.4.x with PATCH
    http://magento.com/resources/system-requirements

    Será q vou ter problemas?

    Se eu estiver postando em lugar errado (pois tenho mudado um pouco de assunto) por favor me avise para eu postar no lugar certo….rsrsrs

  48. Diego Aragão disse:

    Então a versao atual do php quando instalo é a 5.3.3
    enquanto q na pagina de requisitos está:

    5.2.13 – 5.3.24, 5.4.x with PATCH
    http://magento.com/resources/system-requirements

    Será q por isto as extensoes php dom e mcrypt nao sao reconhecidas ativas pelo magento?

  49. Jonas Araujo disse:

    Muito bom, estou colocando meu website em manutenção para fazê-lo em Magento.

  50. Excelente tutorial, parabéns!

  51. Alexandre Gomes disse:

    Seu post foi bem proveitoso pra mim… Parabéns…! Só que meu APC não funciona nem a porrete, ele não coloca os arquivos no File Cache, ele só faz isso quando habilito o apc.enable_opcode_cache, mas ai ele mostra a página inicial da loja ou se dou reload ou entro em algum link começa a logar o erro que o pessoal descreveu acima do Cannot override final method Mage_Core_Model_Abstract::clearInstance()… Alguém conseguiu resolver essa questão… Minhas versões são (Oracle Linux) + NGINX (1.6) + Magento (1.12.0.2) + APC (3.1.15-dev)! Obrigado a todos e mais uma vez… parabéns pelo post…!

  52. I am truly happy to read this website posts which carries lots of
    valuable information, thanks for providing such information.

  53. Hi there colleagues, how is all, and what you would like to say about this piece of writing, in my view its really remarkable
    in support of me.

  54. Fastidious answers in return of this question with firm arguments and describing everything regarding
    that.

  55. I think the admin of this web site is in fact working hard for his website, since here every stuff is quality based information.

  56. Marcos disse:

    Olá Ricardo, tudo bem?

    Executei o seguinte comando, por engano:

    sudo mv /* /usr/share/nginx/html/

    A partir dai, deu erro no meu servidor.

    Agora não consigo mais acessar minha instância via ssh.

    Existe alguma maneira de resolver este problema?

    Abço

  57. Marcelo Lima disse:

    Ricardo boa tarde, usei seu tutorial para colocar o e-commerce em magento de um cliente, migrei do hostgator para a AWS e agora o rewrite aparentemente não funciona, eu acho que é permissionamento (o do tutorial eu fiz) ou é alguma configuração a loja fica apenas na página home mesmo…pode me ajudar???

  58. Prezados amigos,

    Migrei da plataforma Magento para Vtex tem dois dias. Quando minha equipe de TI virou o DNS eu simplesmente perdi o acesso ao portal do magento, onde necessariamente preciso acessar dados de pedidos para expedição entre outros.

    Alguem se habilita a dar uma dica de como ajudar?

    O que haviam me orientado é que iria conseguir logar usando o IP 177.71.185.150/admindacity

    Abs

    • Claudio disse:

      Olá Heber,
      Existe um direcionamento na opção base, você precisa acessar o banco de dados e alterar o endereço para o ip, acesse o banco de dados, Procure pela tabela “core_config_data”, em seguida o registro com path=”web/secure/base_url” e altere o valor do campo “value”, troque o endereço pelo ip, host temporário etc.

    • Claudio disse:

      Olá Heber,
      Existe um direcionamento na opção base, você precisa acessar o banco de dados e alterar o endereço para o ip, acesse o banco de dados, Procure pela tabela “core_config_data”, em seguida o registro com path=”web/secure/base_url” e altere o valor do campo “value”, troque o endereço pelo ip, host temporário etc.

  59. Djeison disse:

    Olá,

    Consegui realizar a configuração, mas quando se inicia o processo de instalação ocorre o seguinte erro:
    [ERROR] exception ‘Exception’ with message ‘Warning: SessionHandler::read(): open(/var/lib/php/5.5/session/sess_2l5mp3d0gcqlul8a4qagr5ah22, O_RDWR) failed: Permission denied (13) in /usr/share/nginx/html/vendor/magento/framework/Session/SaveHandler.php on line 74’ in /usr/share/nginx/html/vendor/magento/framework/App/ErrorHandler.php:61

    Alguém pode me ajudar, por favor?

  60. Jesse disse:

    Boa Tarde, estou tentando criar um Servidor caseiro para hospedar 3 site e dois bog da familia, instalei centOS 7, com NGINX, e em local host está funcionando perfeito. Agora NÃO SEI como coloca online visivel ao publico. Da para enviar um passo a passo de como fazer este procedimento, pois ai e pega porque todo mundo faz tutorial e video de com configurar um servidor, mas o final nilguem ensina.

    Gostaria de usar NO-IP pois meu ip ainda e dinamico.

    resposta para email:emballeve@hotmail.com

Deixe uma resposta para Ricardo Martins Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *