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.
Excelente tutorial Ricardo. Em breve irei testa-lo. Valeu.
Show de bola o tutorial parabéns brother!!!
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?
Achei a respota, o ultimo bloco do tutoria tem que ficar logo abaixo do gzip on; … gzip_types, acima do load config files…
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.
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.
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. =)
Ah, foi usando o Amazon Linux… Talvez por isso que está diferente :)
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.
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.
Entendi.. vou testar. Obrigado.
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?
Sim, todo o processo tem que ser feito via ssh. Isso porque vc precisará reiniciar os servicos do php-fpm, e nginx. Se você usa windows esse link pode ajudá-lo a acessar sua maquina via ssh (http://www.techrepublic.com/blog/datacenter/connect-to-amazon-ec2-with-a-private-key-using-putty-and-pageant/5085).
Se usa linux ou mac é mais fácil…
Eu me conecto via ssh já. Gostaria de me conectar via ftp ou sftp para fazer downloads e uploads dos arquivos.
Eu até ja conssegui o problema é que eu estou tendo problema de permissão para fazer upload dos arquivos.
Entendo…
Use o “vi”, “vim” ou “nano” no ssh para editar os arquivos diretamente no servidor.
Se quiser mesmo fazer o download deles, terá que move-los pra uma pasta publica, altera-los, e depois devolver pra pasta original.
Sei que tem mais de ano a pergunta… mas caso alguém chegue aqui, a resposta é pq vc precisa dar permissão para o usuário, Péricles. No caso fica assim: sudo chown -R usuario pasta_raiz
Comigo ficou assim: sudo chown -R ubuntu /usr/share/nginx/html/
Deu certinho. Agora consigo criar pasta e enviar arquivos pelo sftp.
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?
amigo como eu faço pra faazer esse mesmo processo num vps
/??
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).
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.
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.
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
Sandro, cola aqui as linhas 1~4 do .conf do dominio em questao.
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?
Oi Bruna, vou ficar te devendo. Nunca configurei o ngninx com phpmyadmin. Nos servidores de producao sempre uso mysql direto no terminal…
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
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).
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?
Marcio, você não precisa se logar com o usuário nginx (e acho que nem deve).
Se você criou a máquina igual a de cima, usará o username ec2-user, e geralmente usa-se uma chave (arquivo.pem) pra conectar no servidor.
Ficaria algo assim:
ssh -i minhachave.pem ec2-user@meu-ec-2.aws.amazon.com
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]
Fernando,
O nginx nao tem permissao em /var/log/nginx. Tenta criar a pasta manualmente e setar o grupo como nginx… Deve resolver.
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?
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?
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!
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!
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/”
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
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!
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{}.
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!
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
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.
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
no magento recebo a mensagem q minha url nao é valida..
meu site tem a terminação .eco.br , seria esse o problema? obrigado
nao deve ser, pois tentei com o Public DNS tb e nao deu certo…
deu certo!
foi só marcar a opcao: Skip Base URL Validation Before the Next Step
mais uma vez obrigado!
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.
Douglas olha isso:
http://www.conhecendoti.com.br/navegando-em-aguas-turbulentas-com-phpmyadmin-nginx/
acho que vai ajudar
vlw
Obrigado pelo help Sales
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.
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!
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!
Sem dúvida, vamos explorar. Você esta usando que instancia na Amazon?
Abs
Nesse da babycool acho q foi small. Estou montando um outro chamado http://www.artedacachaca.com.br. Ainda não está em produção, então estou usando micro instancia. A diferença é que estou usando MariaDB ao invés de mysql. Mas está rodando tudo no mesmo servidor, diferente da babycool.
Valeu Ricardo. Em breve vou compartilhar minha conf, obrigado pela sua atenção.
Abs
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
Great blog post. It
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.
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?
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?
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”
sim resolvi sim!
instalei uma versao anterior do magento
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.
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?
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.
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?
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 :)
Excelente tutorial, parabéns pelo trabalho !
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!
Hahah Eros, essa foi boa.
Mas brincadeiras a parte, são comentários como esse que nos faz continuar compartilhando o que sabemos. =)
Boas vendas!
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
Oi Renato, tudo bom?
Tente verificar o seu local.xml (se consegue se conectar no banco) e permissoes de arquivos.
Abs
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!!!
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. =)
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.
I was really confused, and this answered all my quoseitns.
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!!!
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”
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
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?
Muito bom, estou colocando meu website em manutenção para fazê-lo em Magento.
Excelente tutorial, parabéns!
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…!
I am truly happy to read this website posts which carries lots of
valuable information, thanks for providing such information.
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.
Fastidious answers in return of this question with firm arguments and describing everything regarding
that.
I think the admin of this web site is in fact working hard for his website, since here every stuff is quality based information.
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
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???
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
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.
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.
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?
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