Homebrew
Quando se trata de desenvolver localmente, há muitas opções para usuários de Mac, incluindo a forma fictícia de MAMP e XAMPP. No entanto, para quem quer uma pilha NMP (Nginx, MySql, PHP), não é tão simples. Neste tutorial, explicarei como instalá-los (além do popular phpMyAdmin). O seguinte foi testado no Snow Leopard e Mountain Lion.
Para começar, precisamos instalar o Homebrew, uma ferramenta CLI que nos ajuda a instalar pacotes de maneira indolor. Você pode ler mais sobre o Brew <a href=” http://brew.sh/ “title=”Homebrew” target=”_blank”> @ seu site oficial </a>. Observe que o MacPort não é compatível com o Homebrew, se você tiver o MacPort instalado, desinstale-o antes de instalar o Homebrew. Para verificar se o MacPort está instalado, usewhich port
Para instalar a cerveja, abra o seu Terminal e digite
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
Isso instalará o brew muito bem (observe que você precisa do Ruby para fazer isso, que vem pré-instalado na maioria dos Macs). Antes de instalar qualquer coisa com o Homebrew, use
$ brew doctor
para verificar se está faltando alguma dependência ou se você precisa remover alguma coisa.
O próximo passo é instalar o MySql com
$ brew install mysql
A saída deve ser algo assim
==> Installing mysql dependency: pidof
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/pidof-0.1.4
######################################################################## 100.0%
==> Pouring pidof-0.1.4.snow_leopard.bottle.1.tar.gz
/usr/local/Cellar/pidof/0.1.4: 3 files, 24K
==> Installing mysql
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.1
######################################################################## 100.0%
==> Pouring mysql-5.6.13.snow_leopard.bottle.1.tar.gz
==> /usr/local/Cellar/mysql/5.6.13/bin/mysql_install_db --verbose --user=angelaz
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.
To connect:
mysql -uroot
To have launchd start mysql at login:
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
mysql.server start
==> Summary
/usr/local/Cellar/mysql/5.6.13: 9382 files, 355M
Em seguida, instale o Nginx padrão com
$ brew install nginx
Se você deseja instalar o Nginx com alguns módulos adicionais, pode tentar a fórmula homebrew-nginx. As instruções de instalação estão <a href=” https://github.com/marcqualie/homebrew-nginx “title=”Custom Nginx Install” target=”_blank”> disponível aqui </a>
A saída deve ser algo como o seguinte
==> Installing nginx dependency: pcre
==> Downloading ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.
curl: (28) Connection time-out
Trying a mirror...
==> Downloading http://downloads.sourceforge.net/project/pcre/pcre/8.33/pcre-8.3
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/pcre/8.33 --enable-utf8 --enable-unic
==> make
==> make test
==> make install
/usr/local/Cellar/pcre/8.33: 140 files, 4.1M, built in 74 seconds
==> Installing nginx
==> Downloading http://nginx.org/download/nginx-1.4.3.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/nginx/1.4.3 --with-http_ssl_module --
==> make
==> make install
==> Caveats
Docroot is: /usr/local/var/www
The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
To have launchd start nginx at login:
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
Then to load nginx now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
Or, if you don't want/need launchctl, you can just run:
nginx
==> Summary
/usr/local/Cellar/nginx/1.4.3: 7 files, 936K, built in 47 seconds
E, finalmente, vamos instalar o PHP. Porque a fórmula PHP que queremos (<a href=” https://github.com/josegonzalez/homebrew-php “title=”Homebrew PHP” target=”_blank”> Github Repo Link </a>) não vem com a instalação padrão do Homebrew, não podemos simplesmente fazer um brew install php
. Primeiro, precisamos tocar em um canal especial para obter a fórmula
$ brew tap homebrew/dupes
$ brew tap josegonzalez/homebrew-php
$ brew install --without-apache --with-fpm --with-mysql php54
Isso nos permite instalar o PHP sem a construção do Apache e com FPM. Para obter mais opções (como se você deseja instalar o PHP 5.5 em vez de 5.4), consulte <a href=” https://github.com/josegonzalez/homebrew-php “title=”Homebrew PHP” target=”_blank”> leia-me da fórmula </a> para mais informações.
E por último, mas não menos importante, precisamos instalar o phpMyAdmin. Mas antes de fazermos isso, precisamos verificar a variável $ PHP_AUTOCONF . Isso é necessário para o processo de instalação do phpMyAdmin ou você receberá a seguinte mensagem de erro
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
Você pode verificar o valor de $ PHP_AUTOCONF repetindo-o. A seguir está o caminho da minha instalação do autoconf, o seu pode variar.
$ echo $PHP_AUTOCONF
/usr/bin/autoconf
Se você receber apenas uma linha em branco, você precisa descobrir se o autoconf está instalado. Se não, você pode instalá-lo combrew install autoconf
$ which autoconf
/usr/bin/autoconf
Assim que tiver o valor, use um editor de sua escolha para colocar a variável em sua configuração, assim~/.bash_profile
PHP_AUTOCONF = /usr/bin/autoconf
Saia e inicie o terminal novamente e faça outro echo $PHP_AUTOCONF
para confirmar. Depois de fazer isso, estamos prontos para instalar o phpMyAdmin
brew install phpmyadmin
E você deve esperar uma saída como esta
==> Installing phpmyadmin dependency: php54-mcrypt
==> Downloading http://www.php.net/get/php-5.4.20.tar.bz2/from/this/mirror
Already downloaded: /Library/Caches/Homebrew/php54-mcrypt-5.4.20
==> PHP_AUTOCONF="/usr/local/opt/autoconf/bin/autoconf" PHP_AUTOHEADER="/usr/loc
==> ./configure --prefix=/usr/local/Cellar/php54-mcrypt/5.4.20 --with-php-config
==> make
==> Caveats
To finish installing mcrypt for PHP 5.4:
* /usr/local/etc/php/5.4/conf.d/ext-mcrypt.ini was created,
do not forget to remove it upon extension removal.
* Restart your webserver.
* Write a PHP page that calls "phpinfo();"
* Load it in a browser and look for the info on the mcrypt module.
* If you see it, you have been successful!
==> Summary
/usr/local/Cellar/php54-mcrypt/5.4.20: 3 files, 52K, built in 36 seconds
==> Installing phpmyadmin
==> Downloading http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4
######################################################################## 100.0%
==> Caveats
Note that this formula will NOT install mysql. It is not
required since you might want to get connected to a remote
database server.
Webserver configuration example (add this at the end of
your /etc/apache2/httpd.conf for instance) :
Alias /phpmyadmin /usr/local/share/phpmyadmin
<Directory /usr/local/share/phpmyadmin/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Then, open http://localhost/phpmyadmin
More documentation : file:///usr/local/Cellar/phpmyadmin/4.0.7/share/phpmyadmin/doc/
Don't forget to copy config.sample.inc.php to config.inc.php and :
- change your secret blowfish
- uncomment the configuration lines (pma, pmapass ...)
==> Summary
/usr/local/Cellar/phpmyadmin/4.0.7: 1173 files, 28M, built in 83 seconds
Configuração
Agora que você instalou tudo, é hora de configurar. Todas as etapas a seguir são opcionais
Iniciar serviços ao fazer login
O Mac coloca os serviços executados na inicialização em uma pasta chamada ~ / Library / LaunchAgents . Se você deseja iniciar esses serviços na inicialização, você precisa copiar seus arquivos .plist individuais de seu diretório para a pasta LaunchAgents como
cp /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents/
cp /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents/
cp /usr/local/opt/php54/*.plist ~/Library/LaunchAgents/
Observação: depois de copiá-los, mude a propriedade de todos os arquivos .plist para root / admin para evitar quaisquer problemas de propriedade.
cd ~/Library/LaunchAgents/
sudo chown root:admin homebrew*
Para iniciar e interromper um serviço específico, existem duas opções
- Use o executável. $ sudo /usr/local/Cellar/nginx/1.4.3/sbin/nginx -s reload
- Carregando / descarregando o .plist $ sudo launchctl load homebrew.mxcl.nginx.plist
No entanto, o .plist nem sempre é preciso porque tem sucesso silenciosamente e falha silenciosamente. Se você estiver usando o método load / unload, sempre verifique se o processo está sendo executado com
ps -auroot | grep nginx #Or whatever the name of the process is
Essas informações podem ser encontradas na saída durante após a instalação. Se você não conseguir encontrá-los por algum meio, você pode usar
$ brew list nginx
para obter uma lista de diretórios relacionados ao pacote.
PHP FPM
Primeiro, vamos cobrir algumas configurações básicas. PHP FPM pode ser executado em um soquete Unix ou porta IP, sendo o último o padrão. No entanto, quando você tem vários hosts virtuais em execução em portas diferentes, é melhor não usar a porta IP na configuração do FPM. Felizmente, podemos mudar isso no ./usr/local/etc/php/5.4/php-fpm.conf
Altere a configuração de
listen = 127.0.0.1:9000
para o seguinte
listen = /usr/local/var/run/php/php5-fpm.sock
e reinicie o PHP-FPM
Configuração PHP
O php.ini controla como o PHP se comporta. Neste tutorial, abordarei apenas as melhores práticas e as extensões de configuração.
Em , você encontrará a linha/usr/local/etc/php/5.4/php.ini
cgi.fix_pathinfo=1
Você deve alterar o valor para 0. O motivo para fazer isso está descrito em <a href = ” https://www.digitalocean.com/community/articles/how-to-install-linux-nginx-mysql-php-lemp -stack-on-ubuntu-12-04 “> esta postagem </a>
<blockquote>
Se este número for mantido como 1, o interpretador php fará o seu melhor para processar o arquivo que está o mais próximo possível do arquivo solicitado. Este é um possível risco de segurança. Se este número for definido como 0, ao contrário, o interpretador processará apenas o caminho exato do arquivo – uma alternativa muito mais segura.
</blockquote>
Configuração Nginx
Os arquivos de configuração do Nginx são diferentes de seu diretório de instalação. No Snow Leopard e no Mountain Lion, os arquivos de configuração do Nginx estão localizados em
/usr/local/etc/nginx
Primeiro, precisaríamos criar 3 diretórios
- conf.d contém a configuração comumente usada
- habilitado para sites contém toda a configuração de host virtual
- logs para todos os arquivos de log
Então, vamos editar o nginx.conf para o seguinte
user nobody;
worker_processes 2; #Number of CPU cores you want to allocate times 2
error_log /usr/local/etc/nginx/logs/error.log;
#/usr/local/var/run/nginx directory should already exists. If not, create it
pid /usr/local/var/run/nginx/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log /usr/local/etc/nginx/logs/access.log;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
#tell Nginx to include all configuration in there
include /usr/local/etc/nginx/sites-enabled/*;
}
Antes de configurar o host virtual, primeiro vamos definir a configuração do PHP-FPM. Crie um arquivo chamado php no diretório conf.d e coloque o seguinte conteúdo
location ~ \.php$ {
try_files $uri = 404;
include fastcgi_params;
fastcgi_pass unix:/usr/local/var/run/php/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Em seguida, no diretório habilitado para sites, crie um arquivo chamado pma e coloque o seguinte conteúdo
server {
root /usr/local/share/phpmyadmin;
index index.php;
listen 80;
error_log /usr/local/etc/nginx/logs/pma.error.log;
access_log /usr/local/etc/nginx/logs/pma.access.log;
server_name pma.host;
include /usr/local/etc/nginx/conf.d/php;
}
Teste sua configuração com
$ sudo nginx -t
Se for bem-sucedido, você pode reiniciar sua configuração Nginx com
$ sudo nginx -s reload
Nota: lembre-se de criar o host em / etc / hosts e os arquivos de log especificados.
Abra seu navegador, aponte para http://pma.host/ e você está pronto para o Rock n ‘Roll! (Psssst, o login padrão para MySQL é root / root)
<a href=” http://angelawang.me/wp-content/uploads/Screen-shot-2013-10-19-at-3.32.47-PM.png”> </a>