Skip to content

Como instalar Nginx PHP5 e Mysql no CentOS 5.6

A pronúncia correta do Nginx é “engin-ex”, mas vamos nos ater aos comandos que é o melhor que podemos fazer, né? NÃO sem antes falar que essa besteirinha segura “somente” milhões de acessos por dia ao site WordPress, por isso CONFIE e USE nginx sem QUALQUER medo! (existe plugin pago e grátis para o Cpanel, mas recomendamos que use o plugin free sob CENTOS senão seu cpanel vai sobrescrever os confs de vhosts do nginx).

Primeiro estou imaginando que seu ip será igual o meu -> 10.0.0.1.

Vamos instalar o Mysql?

root@appunixlabs:# yum clean all && yum update -y && yum install mysql mysql-server -y

O -y acima manda o yum instalar as coisas sem pedir confirmações.

Assim que terminarmos a instalação deveremos dar autoridade ao mysql para que possa iniciar assim que o server for inicializado (estilo pós reboot 😛 ):

root@appunixlabs:# chkconfig –levels 235 mysqld on

E vamos inicializar o bichão:

root@appunixlabs:# /etc/init.d/mysqld start

Se quisermos verificar se a porta do Mysql está aberta (funcionando) podemos usar o netstat -tap | grep mysql.

Agora precisamos editar o conf do mysql para deixar a conectividade dele filé:

root@appunixlabs:# vim /etc/my.cnf

Devemos achar a linha skip-networking e colocar um sinal de libra (#) para comentar essa instrução:

#skip-networking

Podemos localizar este termo usando / e digitando skip-networking no modo comando do vim (basta apertar o ESC e depois apertar /).

Vamos validar o trem?

root@appunixlabs:# /etc/init.d/mysqld restart

Devemos agora aplicar as correções de segurança do Mysql para desativar test user, definir senha de root… Bora simbora?

root@appunixlabs:# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] < – APERTE ENTER New password: <– DIGITE A SENHA DE ROOT DO MYSQL Re-enter new password: <– REPITA A SENHA DE ROOT DO MYSQL Password updated successfully! Reloading privilege tables.. … Success! By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] <– ENTER PARA CONFIRMAR … Success! Normally, root should only be allowed to connect from ’localhost’. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] <– ENTER PARA CONFIRMAR … Success! By default, MySQL comes with a database named ’test’ that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? [Y/n] <– ENTER PARA CONFIRMAR - Dropping test database… … Success! - Removing privileges on test database… … Success! Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? [Y/n] <– ENTER PARA CONFIRMAR … Success! Cleaning up… All done! If you’ve completed all of the above steps, your MySQL installation should now be secure. Thanks for using MySQL!

Hora de instalarmos o Nginx, bora simbora? Pera! Antes de irmos temos de ajustar o repositório primeiro, para isto temos de fazer o seguinte:

root@appunixlabs:# cd /etc/yum.repos.d/

root@appunixlabs:# wget http://centos.karan.org/kbsingh-CentOS-Extras.repo

Pronto, precisamos agora somente editar o conf do repositório extra:

root@appunixlabs:# vim /etc/yum.repos.d/kbsingh-CentOS-Extras.repo

Precisamos deixar nosso conf parecido com este:

# pkgs in the -Testing repo are not gpg signed
[kbs-CentOS-Testing]
name=CentOS.Karan.Org-EL$releasever - Testing
gpgcheck=0
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
enabled=1
baseurl=http://centos.karan.org/el$releasever/extras/testing/$basearch/RPMS/

No gpgcheck temos de deixar 1.

Salvando e saindo do arquivo iremos deixar a casa arrumada:

root@appunixlabs:# yum update && yum install nginx -y

Agora teremos de colocar o nginx com direito de iniciar-se no momento do boot do server e depois disto validar este parâmetro:

root@appunixlabs:# chkconfig –levels 235 nginx on
root@appunixlabs:# /etc/init.d/nginx start

Para conferirmos que ficou filé basta abrir o navegador e digitar http://10.0.0.1, isto vai mostrar o container moendo :P.

Agora precisamos instalar o php, integrá-lo e ativar o suporte fastcgi. Para isto iremos abusar do yum (pra variar):

root@appunixlabs:# yum install lighttpd-fastcgi php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy -y

Agora precisamos editar o php.ini para dar suporte ao fastcgi:

root@appunixlabs:# vim /etc/php.ini

No padrão cgi.fix_pathinfo = 0 deixe cgi.fix_pathinfo = 1 (use a localização do vim a qual citamos neste post).

Vamos inicar agora o suporte ao FastCgi do PHP na porta 9000:

root@appunixlabs:# /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

Agora devemos colocar essa instrução junto ao rc.local pra o bicho iniciar sozinho no momento do boot:

root@appunixlabs:# vim /etc/rc.local

Coloque isto no arquivo: /usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u nginx -g nginx -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

Precisamos corrigir o keepalive do conf do nginx e mais coisas :(.

[ ... início do arquivo ... ]
worker_processes 5;
[... meio do arquivo ...]
keepalive_timeout 2;
[... fim do arquivo ...]

Precisamos criar o nosso default host :P, para isto temos de mudar a área do container do server:

server {
listen 80;
server_name _;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root /usr/share/nginx/html;
index index.php index.html index.htm;
}

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
root /usr/share/nginx/html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
}

server_name é a parte que valida nome canônico (www.qualquercoisa.com.br)
location / adicionamos index.php como sendo prioridade na abertura de arquivos (o default da vida).
A pasta de arquivos (o que seria um public_html ou www, ou ainda um httpdocs da vida) é /usr/share/nginx/html. (document root)
O principal deste arquivo é esta parte -> location ~ .php$ {}, devemos descomentar a mesma para que esteja validada.
Se não mudarmos fastcgi_param para fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; o php não conseguirá interpretar os scripts subjacentes no path (document root).

Bora meter o pau e ver como tudo ficou bombado?

root@appunixlabs:# /etc/init.d/nginx restart

E para ver que a parada está de fato funcionando/bombando/matando a pau devemos usar qualquer coisa do php para interpretação (testes), podemos usar o phpinfo mesmo. Para isto faça o seguinte:

root@appunixlabs:# vim /usr/share/nginx/html/index.php

Dentro dele coloque o seguinte:

< ?php phpinfo(); ?>

Depois disso, para testificarmos que a parada tá rodando devemos acessar por nosso navegador http://10.0.0.1/index.php

Pronto!

Fontes:

nginx: http://nginx.net/
nginx Wiki: http://wiki.codemongers.com/Main
PHP: http://www.php.net/
MySQL: http://www.mysql.com/
CentOS: http://www.centos.org/
How2Forge: http://migre.me/5rRVS

One Comment

  1. ola amigo pode me ajudar eu instalei tudo porem meu nignix não da partida no script se eu não colocar isso index.html ou seja ele não pega o index sosinho me ajuda ai por favor

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.