Zend Framework 1.11.X na EC2

1° Instale o LAMP – http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

2° Envie sua aplicação para a pasta /var/www/html. Se for via FTP, use o Filezilla, este tutorial ensina como se conectar na EC2: https://www.youtube.com/watch?v=e9BDvg42-JI

3° Configurar o /etc/httpd/conf/httpd.conf com o caminho da pasta do seu projeto e os requisitos exigidos pelo Zend. Altere as linhas:

293: 
DocumentRoot "/var/www/html/sua_app"

318:
<Directory "/var/www/html/sua_app">
  Options Indexes Multiviews FollowSymLinks
  AllowOverride All
  Order allow, deny
  Allow from all
</Directory>

4° Reinicie o HTTPD:

sudo service httpd restart

Se deseja acessar o seu banco de dados por algum programa, como HeidiSQL, lembre-se de abrir uma porta 3306 no SecurityGroup da sua instância EC2. Você pode abri-lá, também, após a criação de sua instância. 

Tutorial ensinando como se conectar com o HeidiSQL na EC2: http://vtvlab.wordpress.com/2011/12/13/connect-to-mysql-server-from-heidisql-with-ssh/

 

Pronto! =] … Qualquer dúvida comentem.

ec2xs3-nginx

Criando um webserver em Nginx para website estáticos na AWS

Houve uma demanda por sites estáticos e fomos experimentar usar o S3 da Amazon e encontramos algumas vantagens e desvantagens em relação ao EC2:

Vantagens

  • O S3 possui uma interface bastante amigável de gerenciamento de arquivos, sem necessitar ter um conhecimento técnico de administração de servidores para o envio de arquivos via SFTP;
  • É muito fácil para gerenciar o domínio junto ao S3 e o Route 53 (Você pode ver através desse tutorial, é completo: http://chadthompson.me/2013/05/static-web-hosting-with-amazon-s3/);

Desvantagens

  • O S3 não permite você configurar o servidor HTTP com isso não é possível ativar compactação GZIP, Cache e entre outros recursos que são muito importantes para a performance de um site que pode reduzir em média 50% o tempo de carregamento;
  • Não permite personalizar o servidor, ao contrário do EC2 que te oferece total autonomia para configurar;

Como sempre procuramos performance, ainda vamos manter nossos sites no EC2, mesmo sendo estáticos, simples e que necessitam de um pouco mais de esforço, garantimos maior performance aos nossos trabalhos.

Presumo que você já possua sua instância criada na EC2. Estou usando para esse exemplo Ubuntu 14.04.

Então vamos começar:

1° Instale o Nginx

sudo apt-get install nginx

2° Crie as pastas onde serão armazenados os arquivos do site. Como estamos utilizando o usuário ubuntu, vamos sempre dar permissão para este.

sudo mkdir /var/www/seusite
sudo chown ubuntu:ubuntu /var/www/seusite
sudo chmod 774 /var/www/seusite

3° Vamos editar o arquivo de configuração do Nginx:

sudo vim /etc/nginx/nginx.conf

Dentro do arquivo você vai configurar da seguinte forma:

user ubuntu ubuntu;
worker_processes 4;
pid /run/nginx.pid;

events {
 worker_connections 1024;
 # multi_accept on;
}

http {

 ##
 # Basic Settings
 ##

 sendfile on;
 tcp_nopush on;
 tcp_nodelay on;
 keepalive_timeout 60;
 keepalive_requests 100000;
 types_hash_max_size 2048;
 # server_tokens off;
 ignore_invalid_headers on;
 send_timeout 60;

 access_log off;

 server_names_hash_bucket_size 128;
 # server_name_in_redirect off;

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

 ##
 # Logging Settings
 ##

 access_log /var/log/nginx/access.log;
 error_log /var/log/nginx/error.log;

 ##
 # Gzip Settings
 ##

 gzip on;
 gzip_disable "msie6";

 # gzip_vary on;
 gzip_proxied any;
 gzip_comp_level 5;
 # gzip_buffers 16 8k;
 gzip_http_version 1.1;
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

 ##
 # nginx-naxsi config
 ##
 # Uncomment it if you installed nginx-naxsi
 ##

 #include /etc/nginx/naxsi_core.rules;

 ##
 # nginx-passenger config
 ##
 # Uncomment it if you installed nginx-passenger
 ##

 #passenger_root /usr;
 #passenger_ruby /usr/bin/ruby;

 ##
 # Virtual Host Configs
 ##

 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;

 open_file_cache max=200000 inactive=20s;
 open_file_cache_valid 30s;
 open_file_cache_min_uses 2;
 open_file_cache_errors on;
}

Nessa configuração já estão atribuídos várias dicas de performance, que você também pode acompanhar por aqui: http://dak1n1.com/blog/12-nginx-performance-tuning

5° Vamos garantir que o nosso usuário tem acesso aos arquivos de configuração:

sudo chown ubuntu:ubuntu /var/log/nginx/error.log
sudo chown ubuntu:ubuntu /etc/nginx/nginx.conf

6° Ao final teste se a sintaxe do nginx está ok:

nginx -t

Possivelmente pode aparecer alguns erros de permissão, mas não se preocupe, o importante é a sintaxe está correta.

nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1 nginx: the configuration file /etc/nginx/nginx.conf syntax is ok 
nginx: [emerg] open() "/run/nginx.pid" failed (13: Permission denied) 
nginx: configuration file /etc/nginx/nginx.conf test failed

7° Agora vamos criar nosso virtual host:

cd /etc/nginx/conf.d/
sudo vim virtual.conf

No arquivo virtual.conf coloque a configuração para a pasta raiz do seu site:

server{
 listen 80;
 server_name seusite.com www.seusite.com;
 root /var/www/seusite;
}

Lembrando que isso só vai funcionar se a sua instância está configurada com Route 53, sendo o DNS do seu domínio também administrado pela Amazon.

É muito simples configurar um server Nginx na Amazon. Depois posso criar um bash para automatizar esse processo.

Referências:

http://wbotelhos.com/ruby-unicorn-e-nginx-na-amazon-ec2

http://charles.lescampeurs.org/2008/11/14/fix-nginx-increase-server_names_hash_bucket_size

http://www.tuicool.com/articles/jQFvma

http://omakoleg.blogspot.com.br/2012/04/install-nginx-on-amazom-ec-2-yum.html

http://dak1n1.com/blog/12-nginx-performance-tuning

http://chadthompson.me/2013/05/static-web-hosting-with-amazon-s3/