Buildout, para o que der e vier Parte 2

Em um

post anterior

 mostrei que podemos utilizar o buildout para instalar praticamente qualquer aplicação que desejarmos, seja ela compilada ou não.

      Como no caso do WordPress, no qual se trata apenas de um pacote compactado e que exige a alteração de seus arquivos de configuração, e também a compilação do aplicativo spawn-fcgi, vale lembrar que caso desejado poderia até compilar o próprio PHP.

Neste post pretendo dar continuidade na instalação do ambiente, mostrando como compilamos o servidor

Nginx

para servir as páginas em PHP, ou em nosso caso, servir o WP, também iremos instalar o

Supervisord

 (

Sistema cliente/servidor que permite monitorar e controlar número de processos em sistemas operacionais UNIX-like.

)


O buildout.

[buildout] parts = ... supervisor nginx-build nginxctl default-server-config ... [nginx-build] recipe = zc.recipe.cmmi url = http://nginx.org/download/nginx-1.0.4.tar.gz extra_options = --with-http_gzip_static_module --with-http_stub_status_module --with-http_dav_module --with-http_ssl_module --with-http_flv_module --http-client-body-temp-path=${buildout:directory}/tmp --http-proxy-temp-path=${buildout:directory}/tmp/proxy --http-fastcgi-temp-path=${buildout:directory}/tmp/fastcgi --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include --with-http_realip_module [nginxctl] recipe = gocept.nginx nginx = nginx configuration = daemon off; worker_processes 1; events { worker_connections 1024; } http { include ${nginx:location}/conf/mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; include ${buildout:directory}/etc/nginx.conf; } [default-server-config] recipe = collective.recipe.template input = ${buildout:directory}/etc/nginx.conf.in output = ${buildout:directory}/etc/nginx.conf [supervisor] recipe = collective.recipe.supervisor logfile = ${buildout:directory}/var/log/supervisord.log logfile-backups = 10 loglevel = info pidfile = ${buildout:directory}/var/supervisord.pid plugins = superlance user = admin password = secret port = 9001 programs = 10 fcgi ${buildout:directory}/parts/fcgi/bin/spawn-fcgi [ -a 127.0.0.1 -p 53217 -P ${buildout:directory}/tmp/fastcgi-php.pid -- /usr/bin/php-cgi]

true

20 nginx ${buildout:directory}/parts/nginxctl/sbin/nginx [ -c ${buildout:directory}/parts/nginxctl/nginxctl.conf]

true

Pois bem, adicionamos mais 4 seções, e antes mesmo de continuar, vamos aos detalhes. No post anterior criamos uma pasta com o nome de

tmp,

agora note que na seção 

[nginx-build], 

indicamos alguns diretórios a serem usados pelo Nginx, que são: proxy e fastcgi.



Então crie estes dois diretórios e vamos seguir em frente, também teremos que criar dentro do diretório

etc

um arquivo com o nome

nginx.conf

, este contém as configurações para rodar-mos o WP, abaixo o conteúdo deste arquivo.

server { listen 80; server_name *.meusite.com; rewrite ^ http://www.meusite.com$request_uri permanent; } server { location / { root /home/cleber/buildout/wordpress; index index.php index.html index.htm; fastcgi_index index.php; # this sends all non-existing file or directory requests to index.php if (!-e $request_filename) { rewrite ^(.+)$ /index.php?q=$1 last; } autoindex on; } location = /favicon.ico { empty_gif; log_not_found off; access_log off; } # Deny all attempts to access hidden files such as .htaccess, .htpasswd, .DS_Store (Mac). location ~ /\. { deny all; access_log off; log_not_found off; } try_files $uri $uri/ /index.php; location ~ \.php$ { include /home/cleber/buildout/parts/nginx-build/conf/fastcgi_params.default; fastcgi_pass 127.0.0.1:53217; fastcgi_param SCRIPT_FILENAME /home/cleber/buildout/wordpress/$fastcgi_script_name; } }

 Pronto, rode o buildout, e depois você já poderá desfrutar de sua aplicação, o supervisor irá criar um um script no diretório

bin

da instância, agora você pode startar as aplicações usando o comando:

./bin/supervisord

Nota. Vale lembrar que a porta 80 só pode ser aberta pelo root ou por um usuário com poder igual, neste caso estamos falando que o comando acima deverá ser rodado por um usuário com poderes de sudo ou root.

Até a próxima!