07 Dec 2016
Estou migrando meu blog e alguns outros serviços para a infraestrutura da Amazon. Eu precisava de uma instância EC2 com suporte a PHP e a conectar no MySQL.
Passos:
yum update
yum install nginx
yum install php70 php70-fpm php70-mysqlnd
Edite /etc/nginx/conf.d/virtual.conf
server {
listen 3000 ;
location / {
root /var/www/ ;
index index.php index.html index.htm ;
}
location ~ \.php$ {
root /var/www/ ;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock ;
fastcgi_index index.php ;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name ;
include fastcgi_params ;
}
}
Edite as seguintes propriedades do: /etc/php-fpm-7.0.d/www.conf
user = nginx
group = nginx
listen = /var/run/php-fpm/php-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
Crie um arquivo php em /var/www/
<?php
phpinfo ();
?>
Acesse http://SERVER_IP:3000
Você vai precisar da porta 3000 aberta nos security group da sua instância ec2.
Se você deseja iniciar os serviços automaticamente:
sudo chkconfig nginx on
sudo chkconfig php-fpm on
Se você quer reiniciar os seriviços:
sudo service nginx restart
sudo service php-fpm restart
Matheus
Comment
03 Dec 2016
Depois de alguns bons longos anos com o blog parado, decidi voltar a escrever e mudar o mesmo para o Heroku. Decidi utilizar o Heroku como servidor, o serviço de banco de dados da Amazon, o RDS e o S3 como servidor de arquivos.
Passos:
Desabilite todas as extensões do Wordpress
Faça um backup completo (Wordpress, banco de dados, uploads, etc)
Sério faça o backup!
Crie um repositório git
Adicione o código do Wordpress ao seu git
Se você quer atualizar seu Wordpress, adicione a ultima versão do Wordpress
Não adicione as suas configurações privadas!
Não adicione o conteúdo da pasta uploads
Adicione seus plugins
Adicione seu tema
Se você quer manter a sua versão, adicione o código do seu blog atual
Não adicione as suas configurações privadas!
Não adicione a pasta uploads ao seu repositório
Atenção com os arquivos que contém dados privados!!
Altere seu wp-config.php
Todas as configurações privadas devem usar getenv, essa função é responsável por pegar as informações das variaveis de ambiente no PHP
<?php
define ( 'AUTH_KEY' , getenv ( 'WP_AUTH_KEY' ));
define ( 'SECURE_AUTH_KEY' , getenv ( 'WP_SECURE_AUTH_KEY' ));
define ( 'LOGGED_IN_KEY' , getenv ( 'WP_LOGGED_IN_KEY' ));
define ( 'NONCE_KEY' , getenv ( 'WP_NONCE_KEY' ));
define ( 'AUTH_SALT' , getenv ( 'WP_AUTH_SALT' ));
define ( 'SECURE_AUTH_SALT' , getenv ( 'WP_SECURE_AUTH_SALT' ));
define ( 'LOGGED_IN_SALT' , getenv ( 'WP_LOGGED_IN_SALT' ));
define ( 'NONCE_SALT' , getenv ( 'WP_NONCE_SALT' ));
define ( 'S3_UPLOADS_BUCKET' , getenv ( 'AWS_S3_BUCKET' ));
define ( 'S3_UPLOADS_KEY' , getenv ( 'AWS_S3_KEY' ));
define ( 'S3_UPLOADS_SECRET' , getenv ( 'AWS_S3_SECRET' ));
define ( 'S3_UPLOADS_REGION' , getenv ( 'AWS_S3_REGION' ));
Crie um arquivo composer.json para definir pacotes e versão do PHP
Exemplo composer.json
{
"require" : {
"php" : ">=7.0.0"
},
"require-dev" : {
}
}
Execute composer update
para gerar o composer.lock
Altere o seu .htaccess para fazer redirect dos uploads para o S3
Atualize o BUCKET para o nome do seu bucket
A regra da 5 linha é a responsável por fazer o redirect
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^wp-content/uploads/(.*)$ https://s3-us-west-2.amazonaws.com/BUCKET/uploads/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Faça um commit no seu git com os arquivos do seu wordpress
Setup da Amazon
Crie um banco de dados no RDS
Importe o backup do seu banco de dados no RDS
Envie seus arquivos para o S3
Lembre-se de criar os arquivos com permissão publíca para que usuários não autenticados consigam acessar
Setup do Heroku
Adicione as variáveis de ambiente no Heroku com os nomes e valores que você utilizou no seu wp-config.php
, lembre de usar as configurações para o RDS.
Atualize seu DNS no Heroku
Envie seu código para o Heroku usando o repositório git que você criou
Acesse o seu site
Se você está atualizando seu Wordpress, existem chances dos plugins que você usava não funcionarem na nova versão, então verifique se os plugins funcionam ;)
Se vocês tiverem dúvidas em algum passo específico eu posso criar um novo post com mais detalhes sobre ele, esse foi uma visão geral de como eu fiz.
Matheus
Comment