Tutorial: Nginx com PHP 7 e MySQL no Ubuntu 16.04 LTS
Quando necessitamos de criar sites/conteúdos Web, temos de possuir um ambiente de desenvolvimento que tenha suporte para as tecnologias nas quais vamos desenvolver os nossos sites.
No Pplware já apresentamos alguns servidores/plataformas Web mas o nosso tutorial de hoje tem como objetivo ensinar a instalar o Nginx com suporte para PHP 7 e MySQL 5.7. Vamos a isso?
O Nginx é um servidor HTTP (Web) gratuito, open-source e com alta performance. O Nginx foi desenvolvido pelo programador russo Igor Sysoev em 2005 e tinha como principal objetivo ser um servidor estável, simples de configurar e que necessitasse de poucos recursos ao nível de hardware.
Como instalar o Nginx + PHP7 e MySQL5.7 no Ubuntu
Vamos considerar que a máquina onde vamos instalar o servidor web tem o IP: 192.168.1.90
Para começar vamos abrir o terminal e uma vez que vamos necessitar de privilégios de root (várias vezes) vamos executar o seguinte comando:
su |
Passo 1 – Instalar o MySQL 5.7
apt-get -y install mysql-server mysql-client |
Durante a instalação devem indicar uma password de acesso ao MySQL.
Devem ainda garantir ainda a melhor segurança do serviço. Para tal executem o seguinte comando:
/usr/bin/mysql_secure_installation |
Durante a configuração, devem seguir os seguintes passos:
- Enter current password for root (enter for none): # DAR ENTER #
- Set root password? [Y/n] # DAR ENTER #
- New password: # Redefinir Password #
- Re-enter new password: # Redefinir Password #
- Remove anonymous users? [Y/n] Y
- Disallow root login remotely? [Y/n] Y
- Remove test database and access to it? [Y/n] Y
- Reload privilege tables now? [Y/n] Y
Passo 2 – Instalar o Nginx
Primeiro devem desinstalar por completo o apache2
service apache2 stop update-rc.d -f apache2 remove apt-get remove apache2 |
Instalar o Nginx no Ubuntu é muito simples. Para tal basta inserir no terminal o seguinte comando:
apt-get install nginx |
Para iniciar o nginx devem executar o seguinte comando:
service nginx start |
Nota: No Ubuntu, a directoria por omissão para colocar os sites é/var/www/html.
Passo 3 – Instalar o PHP7
Para que o PHP7 funcione correctamente no Ubuntu é necessário instalar o PHP-FPM (PHP-FPM (FastCGI Process Manager) que é uma alternativa ao PHP FastCGI. Para instalar o php7-fpm basta executar o seguinte comando:
apt-get -y install php7.0-fpm |
Configuração
Vamos agora proceder a algumas configurações a nível de vlhosts. Para isso vamos abrir o vhost por omissão que se encontra em /etc/nginx/sites-available/default e definir as seguintes alterações:
[...]
server {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php7.0-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# With php7.0-fpm:
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
[...]
Depois de realizadas as configurações devemos recarregá-las executando para isso o comando:
service nginx reload |
Devem ainda aceder ao ficheiro /etc/php/7.0/fpm/php.ini e definir cgi.fix_pathinfo=0;
Depois da alterações fazemos reload ao PHP-FPM
service php7.0-fpm reload |
Para testar vamor criar um ficheiro info.php
nano /var/www/html/info.php |
e colocar o seguinte código:
<!--?php phpinfo(); ?--> |
Em seguida abrimos o browser e inserimos o endereço http://localhost/info.php. O resultado deverá ser idêntico ao que aparece na imagem seguinte:
Passo 4 – Configurar o PHP para suporte com MySQL
Para que o PHP tenho suporte para MySQL devem executar o seguinte comando:
apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettext |
Para finalizar voltem a fazer reload ao PHP-FPM
service php7.0-fpm reload |
Acedendo a http://localhost/info.php já devem ver que agora o servidor nginx já tem suporte para MySQL. E está feito. Como tiveram a oportunidade de ver a instalação/configuração do servidor Nginx requer algum trabalho (assim como outros servidores Web), mas no final o trabalho vale bem a pena já que o Nginx demonstrou uma boa performance e estabilidade. Ficamos a aguardar o vosso feedback.
Este artigo tem mais de um ano
Olá, Qual a grande diferença entre Apache e NGINX?
Não existe grande diferença, na verdade são muito idênticos, talvez em conteúdo estático o nginx seja mais forte, mas não muito.
O nginx tem alguns recursos interessantes como media streaming e reverse proxying para protocolos não HTTP.
O apache tem de bom o ficheiro de configuração .htaccess que é bastante conveniente para abilitar/desabilitar features como por exemplo failover (404).
Quando queres obter um alto rendimento em sites com muitos acessos podes usar uma combinação de ambos sendo que o papel de load balancing fica a cargo do nginx. Mas em regra geral ficas bem servido com qualquer um dos dois.
É sempre uma boa politica num tutorial mandarem as pessoas saltarem para um terminal root em vez de usarem um sudo xD
ironic
Não é preocupante neste caso.
Não entendi o motivo de ser necessário remover completamente o Apache. Ambos podem trabalhar juntos sim. Já vi abordagens onde um serve conteúdo estático e outro dinâmico.
descomentar
para
Para quem tem o PHP 5 já instalado pode seguir estas instruções
https://askubuntu.com/questions/705880/how-to-install-php-7
Também tem instruções para o phpMyAdmin
O NGINX é muito bom mas apenas uso o Apache porque tem o .htaccess que me dá imenso jeito. Há algo parecido para o nginx?
Pplware já agora só para completar deveriam ensinar a instalar e configurar o phpmyadmin hehe