Ambiente de Desenvolvimento PHP no Mac OSX

Rodrigo Vieira
OperacionalTI
Published in
4 min readJul 15, 2015

--

Uma abordagem pragmática e pouco invasiva para configurar um ambiente de desenvolvimento PHP / NGINX / MySQL no Mac OSX.

Montar um ambiente de desenvolvimento PHP no OS X não é tão trivial como no Linux. Isso porque o sistema da maçã possui alguns componentes pré-instalados que podem entrar em conflito com os que iremos instalar.

Ao final deste guia você contará com um ambiente meticulosamente configurado para atender suas necessidades de desenvolvedor PHP, sem intervir no funcionamento padrão do seu OS X e aproveitando de maneira eficiente seus recursos de hardware.

Eis os componentes:

  • Homebrew
  • PHP-FPM 5.6
  • MySQL
  • Nginx
  • Scripts para gerenciar os serviços acima e mais.

Requisitos

Antes de tudo, precisamos satisfazer alguns requisitos. Vamos precisar de um compilador e de um gerenciador e pacotes.

Command Line Tools

xcode-select —-install

O comando acima serve para instalar ferramentas adicionais do xcode, sem necessariamente instalar o próprio xcode que possuir mais de 2GB. Essas ferramentas, compilador Apple LLVM, Make e outras, facilitam a instalação de softwares Open Source ou o desenvolvimento UNIX através do Terminal.

Homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

O comando acima fará o download e configuração do homebrew automaticamente.

O Homebrew é um gerenciador de pacotes, semelhante ao apt-get ou yum para Linux. É com ele que iremos instalar o PHP, MySQL ou Postgree, Apache ou Nginx, …

Após a instalação do homebrew, podemos rodar um diagnóstico para verificar se ele está pronto para uso:

brew doctor && brew update && brew upgrade

O primeiro comando rodará o diagnóstico e caso esteja tudo redondinho fará um refresh na lista de pacotes e instalará quaisquer atualizações.

PHP

Utilizaremos o PHP através do PHP-FPM, uma forma de socket de arquivo ou de rede que responderá a requisições de quaisquer serviços que solicitem a execução de um script php.

brew tap homebrew/dupes
brew tap homebrew/versions
brew tap homebrew/homebrew-php

Os comandos acima informam ao homebrew onde procurar por pacotes relacionados ao PHP.

brew install php56 --without-apache

Neste tutorial utilizaremos o nginx como servidor web, por isso informamos ao homebrew para não compilar o módulo do apache.

O PHP-FPM, assim como o MySQL e o NGINX serão configurados e controlados por scripts detalhados no final deste guia.

MySQL

Utilizaremos o MySQL como banco de dados, já que o mesmo ainda é o mais comum entre desenvolvedores PHP.

brew install mysql

Depois precisamos iniciar o serviço, ou daemon, do mysql:

mysql.server start

Abaixo executamos um script que remove o login de root remotamente, o login anônimo e a database test.

mysql_secure_installation

Basicamente responda com Y a todas as perguntas e reconfigure a senha do administrador (root).

NGINX

O servidor web mais filão que conheço. Com um histórico de ascensão meteórico e altíssimo desempenho.

Somente para o nginx abriremos uma exceção onde o faremos rodar na porta 80, por isso serão necessários privilégios administrativos.

Se você utiliza o servidor web Apache que já vem instalado (mas desativado) no OSX para compartilhamento de arquivos, você terá que desativá-lo.

Não se preocupe, nenhum dos serviços acima será executado automaticamente, criaremos scripts para levantá-los somente quando for necessário.

Como não estamos programando o tempo todo, não faz sentido deixar estes serviços rodando e consumindo bateria à toa.

brew install nginx

O comando acima instala o nginx que vem configurado para rodar na porta 8080. Neste ponto todos os componentes necessários estão instalados, mas precisamos reconfigurar o nginx e exectar algumas tarefas adicionais para tunar nosso ambiente.

Reta final

curl -fsSL https://raw.githubusercontent.com/RodrigoJimmy/elephant4osx/master/post_install.sh | bash

O comando a seguir é semelhante ao comando de instalação do homebrew, que baixa e executa um script, o qual executa diversas tarefas para deixar a ferramente configurada e pronta para uso. No caso deste script, as seguintes ações serão realizadas:

  • Cria as pastas "logs", "sites_available", "sites_enabled", "conf.d e "ssl" sob a pasta "/usr/local/etc/nginx".
  • Cria um novo arquivo de configuração para o nginx em "/usr/local/etc/nginx/nginx.conf", para refletir a nova estrutura de diretórios.
  • Cria o arquivo "/usr/local/etc/nginx/conf.d/php-fpm", para ser utilizado pelos arquivos de configuração dos sites servidos pelo nginx.
  • Na pasta "sites_available", cria os arquivos "default" e "default-ssl", para servir o site padrão "http://localhost".
  • Cria os arquivos "index.html", "404.html", "403.html" e ".info.php" sob a pasta "/usr/local/var/www" que é o document_root do site default.
  • Gera as chaves e certificados para o site default-ssl e cria os links simbólicos na nova pasta "sites_enabled" para default e default-ssl.
  • Cria diversos aliases para gerenciar os serviços "nginx", "php-fpm" e "mysql", ex: nginx.start, nginx.stop, nginx.restart, mysql.start, mysql.stop, mysql.restart, php-fpm.start, php-fpm.stop, php-fpm.restart.
  • Cria um script "nginx.new_site" que facilita a configuração de novos projetos no nginx.
  • Também cria aliases para acessar os logs do nginx: nginx.logs.error, nginx.logs.access.

Concluindo

Para verificar se tudo correu bem, acesse http://localhost do seu navegador que deve cair na seguinte página:

Novos projetos

Para criar um novo projeto, como um blog, acessível em http://blog.app, use o seguinte comando:

nginx.new_site blog.app /pasta/do/projeto/blog/public 80 443

Este comando cria o arquivo blog.app na pasta "sites_available" do nginx, cria seu link simbólico em "sites_enabled", gera as chaves e certificados e coloca o hostname blog.app mapeado para o ip 127.0.0.1 em /etc/hosts, por isso é necessário a senha de administrador.

É necessário reiniciar o servidor web após executar este comando. Use "nginx.restart" para finalizar.

Dúvidas, sugestões, erros? Faça seu comentário.

--

--