Como instalar um servidor web LAMP no Debian 9

Um servidor web é um ponto de início básico para poder instalar e usar uma série de outros softwares e serviços, como galeria de fotos, blog, fórum ou apenas um simples site HTML.
O LAMP é, basicamente, um web server Linux, que inclui o Apache, um banco de dados e suporte à linguagem de programação PHP.

O assunto já rendeu várias tags LAMP e posts diversos, neste mesmo site.
No decorrer do texto, sugiro clicar nos links, sempre que tiver alguma dúvida e queira se aprofundar um pouco mais em um ponto específico.
O conceito é bastante flexível, como podemos ver a seguir

O que é um servidor web LAMP

Como conceito, o LAMP inclui estas 4 “peças”:

  • Você pode usar uma das diversas opções Linux disponíveis. Neste texto, estamos nos baseando no Debian 9 Stretch — que é uma versão LTS do sistema operacional, ou seja, vai ter suporte prolongado até 2022, após quase 2 anos de desenvolvimento — uma ótima opção, portanto, a ser usada em um servidor. A gama de sistemas operacionais, contudo, inclui o FreeBSD e até mesmo o Windows. Neste último caso, o servidor leva o nome de WIMP (Windows, IIS, MySQL e PHP) e, como você pode ver no link para o Urban Dictionary, o termo costuma ter sentido pejorativo.
    Como alternativas, já escrevi sobre como instalar o LAMP no Ubuntu e no OpenSUSE.
  • O servidor web, de que falamos aqui, é o Apache. Alternativas comuns são o Nginx e o Lighttpd.
  • O banco de dados MySQL foi a escolha perfeita deste quarteto, por muito tempo. Hoje, há um processo de migração para o MariaDB em curso — e o Debian está seguindo esta tendência.
  • Por último, temos a escolha da linguagem de programação, até onde se estende a flexibilidade do conceito.
    As escolhas mais comuns são, pela ordem, PHP, Python e Perl — que coincidentemente começam com a letra ‘P’.
    Entretanto, se quiser rodar apps web importantes, como o WordPress, e-commerce ou Piwigo, você vai precisar do PHP.
    Servidores Linux, contudo, já costumam incluir suporte ao Perl e ao Python.
    Se você tem interesse no uso de alguma destas duas opções, verifique se estão presentes no servidor com os seguintes comandos:

    
    perl --version
    
    This is perl 5, version 24, subversion 1 (v5.24.1) built for x86_64-linux-gnu-thread-multi
    (with 67 registered patches, see perl -V for more detail)
    
    Copyright 1987-2017, Larry Wall
    
    ...
    
    
    python --version
    
    Python 3.5.3
    

    Tenha em conta que o Python pode ter 2 versões independentes instaladas, em muitas distribuições GNU/Linux.

Como instalar o servidor web no Debian

O Debian tem uma ferramenta que automatiza a instalação de meta pacotes para o seu sistema.
Sugiro ler sobre o tasksel, mais tarde, para ver o que mais o utilitário pode fazer por você.
Para ter o Apache instalado e rodando, em poucos minutos, rode o seguinte comando:


sudo tasksel install web-server

debian tasksel web-server
Debian tasksel web-server install
Para verificar se o seu web server está funcionando direito, execute o seguinte:


sudo service apache2 status

[sudo] senha para justincase: 
● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; 
   Active: active (running) since Sun 2017-07-16 12:26:00 -03; 15
 Main PID: 6524 (apache2)
    Tasks: 55 (limit: 4915)
   CGroup: /system.slice/apache2.service
           ├─6524 /usr/sbin/apache2 -k start
           ├─6526 /usr/sbin/apache2 -k start
           └─6527 /usr/sbin/apache2 -k start

jul 16 12:26:00 ultra-5 systemd[1]: Starting The Apache HTTP Serv
jul 16 12:26:00 ultra-5 apachectl[6513]: AH00558: apache2: Could 
jul 16 12:26:00 ultra-5 systemd[1]: Started The Apache HTTP Serve
lines 1-13/13 (END)

Procure por “active (running)“.
Debian test web-server Apache
Você também pode testar o Apache invocando o daemon diretamente (ops!), da seguinte forma:


sudo apachectl -v

Server version: Apache/2.4.25 (Debian)
Server built:   2017-06-20T19:29:11

Outro método de verificar se tudo está OK, é acessar o servidor via web: abra o endereço http://localhost em seu navegador.

Até agora, já temos o Apache rodando no sistema.
Falta o banco de dados e o PHP…

Como instalar o MariaDB no Debian

O banco de dados pode ser instalado via apt:


sudo apt install mariadb-server mariadb-client 

Ainda existe a necessidade de instalar uma pequena biblioteca para ajudar na integração entre o PHP e o banco de dados, que iremos ver no próximo tópico.
Por enquanto, faremos uma rápida checagem:


mariadb --version

mariadb  Ver 15.1 Distrib 10.1.23-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

ou pode usar o service, como fez, anteriormente, com o Apache:


sudo service mariadb status

● mariadb.service - MariaDB database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2017-07-16 15:17:52 -03; 15min ago
 Main PID: 9974 (mysqld)
   Status: "Taking your SQL requests now..."
   CGroup: /system.slice/mariadb.service
           └─9974 /usr/sbin/mysqld

jul 16 15:17:50 ultra-5 systemd[1]: Starting MariaDB database server...
jul 16 15:17:51 ultra-5 mysqld[9974]: 2017-07-16 15:17:51 139788240409152 [Note] /usr/sbin/mysqld (mysqld 10.1.23-MariaDB-9+deb9u1) starting as proces
jul 16 15:17:52 ultra-5 systemd[1]: Started MariaDB database server.

Se o serviço não estiver active, ative-o assim:


systemctl start {apache2,mariadb}

Como instalar o PHP no Debian

Alguns tutoriais recomendam a instalação do PHP primeiro. Isto pouparia o tempo de reiniciar o Apache. Fora isso, o resultado é o mesmo.
O Debian 9 já usa, não somente, o MariaDB como padrão, como o PHP 7.0 em seus repositórios.
Tradicionalmente, a instalação é feita assim:


sudo apt install php php-mysqli apache2-mod-php7.0

Instale o phpmyadmin

Por fim, o phpmyadmin cumpre duas funções neste processo, como um todo.
É raro realizar operações diretamente no banco de dados, se você pretende usar aplicativos como o WordPress — uma vez que há plugins para isso.
Mas nem todo mundo gosta de confiar tarefas de manutenção do banco de dados a ferramentas de terceiros.
Além disto, os plugins acrescentam “peso” ao seu site e o “manual das boas práticas” manda não abusar do recurso.

O phpmyadmin, permite realizar tarefas administrativas nos bancos de dados MySQL/MariaDB.
A ferramenta representa um meio-termo entre a simplicidade dos plugins e a complexidade da linha de comando (CLI).

A segunda função do aplicativo é ajudar a verificar se toda a instalação, feita até aqui, ocorreu bem.


sudo apt install phpmyadmin


Isto feito, não se esqueça de reiniciar o serviço do Apache:


sudo systemctl restart apache2

O fato é que se ficou faltando alguma coisa, nos passos anteriores, a instalação do phpmyadmin irá cuidar de garantir que todas as dependências estejam instaladas e configuradas.
phpmyadmin frontscreen
Basta abrir a página http://localhost/phpmyadmin, para ver se tudo está bem ou não.

Assinar blog por e-mail

Digite seu endereço de e-mail para assinar este blog e receber notificações de novas publicações por e-mail.

Guia de instalação do sistema de armazenamento na nuvem ownCloud no Debian

Mandar seus arquivos para a nuvem é uma excelente opção para obter a portabilidade e acessibilidade deles, sempre que precisar.
Eu disse, SEMPRE?!!
Só se a nuvem for sua, claro!

O motto do aplicativo, originalmente, era “seus dados, sua nuvem, seu jeito.”
Atualmente, é “web services under your control” ou “serviços web sob seu controle”, em português.
É autoexplicativo.

Se você está lendo este texto, contudo, ninguém precisa lhe explicar por que vocẽ deveria ter “sua própria nuvem”…
Vamos à instalação!
owncloud-login-screen

Requisitos de sistema

Neste artigo, fiz uso de um notebook com processador Intel Atom N270, com arquitetura 32 bits e apenas 2 GB de memória.
A máquina tem o Debian 8.6 Jessie instalado e usei a versão padrão do ownCloud, para esta versão do Debian:

apt show owncloud | grep -i vers
Version: 7.0.4+dfsg-4~deb8u4
 ownCloud gives you universal access to your files through a web interface

Este hardware foi perfeito para os meus testes, mas suas especificações estão muito longe de poder aguentar dezenas (ou mais) de conexões simultâneas.
O aplicativo, em si, não é muito voraz, em termos de recursos de hardware.
A documentação oficial recomenda 512 MB de memória RAM e afirma que 128 MB podem ser suficientes para instalar tudo.
Para obter um bom desempenho, é interessante ter drives SSD para armazenamento dos arquivos dos usuários e uma boa conexão. Estas duas condições irão garantir um fluxo constante e ininterrupto de dados entre usuários e servidor.

A arquitetura de 32 bits tem limitações em relação ao tamanho máximo dos arquivos a serem transferidos.
Se você deseja reaproveitar alguma máquina antiga, como servidor de nuvem, opte por hardware de 64 bits, que supera esta barreira.

Uma última palavra sobre a minha instalação Debian: use o tasksel para selecionar e instalar um servidor web. Depois disto, tudo o que você irá precisar fazer, é instalar o MySQL ou MariaDB.
instalar servidor web debian tasksel
Se preferir, contudo, há outras maneiras de instalar um servidor web LAMP — Linux, Apache, MySQL e PHP.
Clique na tag LAMP para ler mais sobre este assunto.

Instalação e configuração do MySQL

Quem optou pelo uso do tasksel, pode instalar a versão padrão do MySQL, com esta linha de comando:

apt install mysql-server mysql-client

Se o MySQL já está rodando no seu sistema, será necessário configurar um banco de dados e uma conta de usuário dentro dele para ser usado pelo ownCloud.
Autentique-se no MySQL:

mysql --defaults-file=/etc/mysql/debian.cnf

Na linha de comando do MySQL, execute as instruções que seguem (para criar um banco de dados ‘owncloud’; criar um usuário com o mesmo nom)
Não esqueça de trocar a palavra ‘minhasenha’ pela da sua senha:

-> CREATE DATABASE owncloud;
-> CREATE USER owncloud@localhost IDENTIFIED BY 'minhasenha';
-> GRANT ALL PRIVILEGES ON owncloud.* TO owncloud@localhost;
-> flush privileges;
-> quit

Como instalar o ownCloud

Se o sistema está pronto, o ownCloud pode também ser instalado através do apt:

apt install owncloud

Depois disto, pode ser necessário reiniciar o Apache:

service apache2 restart

Para acessar a interface web do ownCloud e fazer os próximos ajustes, abra o seu navegador e acesse o endereço ‘http://localhost/owncloud’.
Se o ownCloud estiver em um servidor remoto, indique o seu nome: ‘http://nome-do-servidor/owncloud’.
owncloud install
Forneça cuidadosamente os dados pedidos e já pode usar o novo sistema.

Se quiser, leia também sobre como instalar o ownCloud no Ubuntu.
Clique na tag onwCloud, para ler todos os textos sobre o sistema, neste site.

Aplicações do ownCloud

Tanto no ambiente doméstico como no corporativo, um servidor de nuvem pode ajudar a manter seus backup 100% em dia.
Do seu laptop, é possível enviar seus arquivos para a nuvem, arrastando e soltando, a partir da janela do gerenciador de arquivos.
Do celular, é fácil acessar a interface web do aplicativo e subir todas as suas fotos, quando estiver em casa, por exemplo.

Quais as diferenças entre Firebird Classic, Super e SuperClassic?

O servidor de bancos de dados Firebird vêm em 2 sabores, chamados arquiteturas: Classic Server e Super Server.
Desde a versão 2.5, o Firebird Classic Server pode operar em dois modos, chamados Classic (o “tradicional”) e SuperClassic.
Desta maneira, temos um total de 3 modelos disponíveis para instalação.
Qual deles é o mais adequado para você?
Firebird logo
Neste texto, vou listar as principais diferenças entre estas opções — já frisando que, na maioria dos casos, todos os três modelos funcionam igualmente bem e oferecem (quase) as mesmas possibilidades.
Entre as principais diferenças, citadas pela documentação do produto, segue a lista:

  • Processos — o Classic Server usa um processo separado para cada conexão; o SuperClassic Server e o Super Server (ou apenas Super) usam apenas um processo.
    Portanto, se um processo “quebrar”, durante sua execução, no Classic, as outras conexões não serão afetadas.
    No SuperClassic e no Super, um processo “quebrado” pode trazer abaixo todas as conexões.
  • O Guardian (ou guardião) — o Super pode rodar sob o controle do Firebird Guardian, que automaticamente o reinicia no caso de um crash.
    O SuperClassic só oferece a opção Guardian para instalações profissionais com Linux e o Classic, simplesmente, não a oferece.
  • Uso de recursos do sistema — Sendo single-process, o SuperClassic e o Super, usam os recursos do sistema com mais eficiência do que o Classic, à medida em que o número de conexões simultâneas cresce.
    O Super é o mais eficiente dos 3 porque dispõe, ainda, de um espaço de cache compartilhado.
  • Conexões locais — o Classic e o SuperClassic oferecem um modo de conexão local embarcado ou embedded, no Linux, que é muito rápido — mas não tão seguro quanto uma conexão de rede regular.
    No Windows, um servidor embarcado está disponível — mas é ainda mais inseguro. Contudo pode ser bastante prático se você deseja empacotar o Firebird com suas aplicações.
  • Conexões simultâneas — apenas o Classic e o SuperClassic permitem conexões simultâneas ao banco de dados do servidor regular e de um ou dois servidores embarcados.
  • Multiprocessamento — No Windows, o padrão do Super é usar apenas o primeiro processador ou núcleo (core) em seu computador. Para fazê-lo usar a capacidade plena da CPU, é preciso alterar a variável CpuAffinityMask no arquivo de configuração firebird.conf.
    Todos os outros servidores (o que inclui o Super no Linux), suportam naturalmente o multiprocessamento e ignoram o valor de CpuAffinityMask.

Ao executar os comandos “search”, em distribuições Linux, como o Debian ou o Ubuntu, você será apresentado a estes três modelos de instalação. Clique na imagem, abaixo, para ver mais detalhes.
aptitude search firebird2.5
Como você pode ver, nenhum dos 3 modelos consegue superar os outros 2 em todos os quesitos.
Se você não tem certeza sobre qual escolher, o SuperClassic pode ser uma boa opção em sistemas 64 bits.
Já nos sistemas 32 bits, o modelo SuperClassic será o primeiro a encher o espaço da memória em situação de sobrecarga do sistema.
O Super, com o uso de recursos de memória cache compartilhada e o Classic, com seus processos correndo em separado, obtém melhor performance em sistemas 32 bits.
Note que você sempre poderá mudar para outro modelo, quando quiser.
Suas aplicações e bancos de dados continuarão funcionando normalmente.
A única coisa que se altera são os servidores.

Como configurar o módulo mpm prefork para melhorar a performance do servidor web Apache

Ao concluir a instalação do seu servidor web Apache, pode ser interessante realizar alguns ajustes na sua configuração para obter um melhor desempenho ou adequá-lo às condições de hardware e de uso.
Neste post, vou mostrar como ajustar o mpm_prefork.conf do Apache.
apache-feather-logo-24colors
As informações contidas neste post foram testadas em um sistema operacional Debian 8.2 “jessie”, com o servidor web Apache 2.4 padrão da distribuição — e servem para Ubuntu 14.04 LTS (ou superior) também.
Outras diretivas e parâmetros de configuração, presentes no Apache, precisam ser incluídas no ato da compilação do software — e, portanto, não serão abordados neste texto.
Para saber a versão do seu servidor Apache, use o seguinte comando:

sudo apache2 -v
Server version: Apache/2.4.10 (Debian)
Server built:   Aug 28 2015 16:28:08

O que é o MPM prefork do Apache?

MPM é sigla para Multi-Processing Module ou Módulo de Processamento Múltiplo (em uma tradução livre).
É responsável pela implementação de um servidor web sob a “metodologia” non-threaded, em um servidor pre-forking, que lida com as requisições de modo similar ao do Apache 1.3. (Veja o quadro ao final deste texto)
É apropriado para sites que precisam evitar a criação de threads, para manter compatibilidade com bibliotecas non-thread-safe (PHP, por exemplo…).
O MPM é autorregulado, de modo que raramente é necessário ajustar diretivas de configuração.

O conteúdo do arquivo mpm_prefork.conf

Para ver o conteúdo do arquivo de configuração, tema deste artigo, use o comando cat.
O conteúdo do meu arquivo mpm_prefork.conf (tirando os comentários) é o que segue:

cat /etc/apache2/mods-enabled/mpm_prefork.conf
#
<IfModule mpm_prefork_module>
	StartServers			5
	MinSpareServers			5
	MaxSpareServers			10
	MaxRequestWorkers		150
	MaxConnectionsPerChild  	0
</IfModule>

Estes são os valores originais.
O significado de cada uma destas linhas de configuração é o que segue:

  • StartServers — número de processos do servidor para iniciar
  • MinSpareServers — quantidade mínima de processos do servidor a ser reservada
  • MaxSpareServers — quantidade máxima de processos do servidor a ser reservada
  • MaxRequestWorkers — número máximo de processos do servidor permitidos para iniciar.
    Em versões anteriores ao Apache 2.4, era chamado de MaxClients
  • MaxConnectionsPerChild — número máximo de requisições que um processo do servidor deve atender

Como funciona o MPM

Um único processo é responsável pelo lançamento dos processos filhos, que ouvem as conexões e as atendem, quando chegam.
O Apache sempre tenta manter vários processos do servidor em reserva, prontos a atender novas requisições — desta forma, economiza tempo para criar novos processos filhos (forking) para atender a novas requisições.
As diretivas StartServers, MinSpareServers, MaxSpareServers e MaxRequestWorkers controlam o modo como os processos pais criam novos processos filhos para servir às novas requisições.
Em geral, o Apache é bom em se autorregular em função da demanda, de modo que muitos administradores de sites não vão precisar ajustar estas diretivas.
Manter os valores padrão é o recomendado para a maioria, portanto.
Sites que precisam servir mais do que 256 requisições simultâneas, contudo, podem precisar aumentar o valor de MaxRequestWorkers.
Caso os recursos de memória sejam limitados, pode ser necessário reduzir este valor para prevenir que o servidor faça thrashing — ou seja, faça uso da memória swap em disco (o que vai ocasionar um problema severo de lentidão).

O mais importante é que o MaxRequestWorkers seja grande o suficiente para comportar a quantidade de requisições simultâneas que você espera receber.
Ao mesmo tempo, o valor desta diretiva deve ser pequeno o suficiente para assegurar que haja memória RAM física suficiente para todos os processos.

Enquanto o processo pai é costumeiramente iniciado como root (UNIX e GNU/Linux) para se conectar à porta 80, os processos filhos são iniciados pelo Apache com privilégios de usuário comum.
As diretivas de Usuário e Grupo são usados para ajustar os privilégios dos processos filhos do Apache — que só precisam estar habilitados a ler aquele conteúdo que será servido.
A diretiva MaxRequestsPerChild controla a frequencia com que o servidor recicla processos, matando os velhos e criando novos.

A diretiva StartServers

Este parâmetro ajusta o número de processos filhos que devem ser criados na inicialização do Apache.
Uma vez que este número é controlado dinamicamente, em função da carga de trabalho do servidor web, geralmente há poucas razões para alterar este número.

A diretiva MaxSpareServers

O valor padrão desta diretiva é 10, de acordo com a documentação oficial do Apache (link no final do texto).
Este parâmetro determina o número máximo de processos ociosos do servidor.
É denominado processo ocioso aquele que não esteja trabalhando com alguma requisição.
O processo pai vai ‘matar’ os processos filhos ociosos, assim que sua quantidade exceder o limite determinado em MaxSpareServers.
Ajustar este parâmetro só é necessário em sites muito ocupados.
Se você ajustar o valor deste parâmetro para um número igual ou menor do que o valor de MinSpareServers, o Apache irá automaticamente reajustá-lo para MinSpareServers + 1.

Ajustar os parâmetros MinSpareServers e MaxSpareServers para valores extremos é quase sempre uma idéia ruim.
Ao fazer isto, você adiciona ao servidor um excesso de carga de trabalho ou overhead, por que ele precisará terminar/iniciar, sem necessidade, os workers de reserva em execução no background.

A diretiva MinSpareServers

Esta variável ajusta o número desejado de processos filhos ociosos do servidor.
Como você já sabe, processo ocioso é aquele que não está lidando com alguma requisição.
Havendo menos destes processos do que a quantidade determinada em MinSpareServers, o processo pai irá iniciar a criação de novos processos filhos, a uma taxa máxima de 1 por segundo.

A diretiva MaxConnectionsPerChild

Delimita o número de conexões com que cada processo filho pode trabalhar individualmente.
Após atingir o valor definido em MaxConnectionsPerChild, o processo filho irá terminar (morrer).
Você pode ajustar o valor para 0 (zero), se quiser que o processo nunca expire.
Ao usar valores diferentes de 0, contudo, você vai limitar a quantidade de memória que cada processo poderá consumir em caso de vazamento acidental de memória.

Conclusão

Quando terminar de configurar estes parâmetros, não use o reload para reiniciar o Apache.
O certo é parar o servidor e, em seguida, iniciá-lo.
A razão disto é que nem todas as mudanças farão efeito até que você desligue o processo principal (inicial) do Apache.
No Debian, use o seguinte comando para isto:

sudo service apache2 stop
sudo service apache2 start
sudo service apache2 status

O resultado do último comando deve ser parecido com o que segue:

● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2)
   Active: active (running) since Sex 2015-12-04 10:00:49 BRT; 1min 7s ago
  Process: 7399 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 6561 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
  Process: 7451 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/apache2.service
           ├─7465 /usr/sbin/apache2 -k start
           ├─7469 /usr/sbin/apache2 -k start
           ├─7470 /usr/sbin/apache2 -k start
           ├─7471 /usr/sbin/apache2 -k start
           ├─7472 /usr/sbin/apache2 -k start
           ├─7473 /usr/sbin/apache2 -k start
           └─7474 /usr/sbin/apache2 -k start

Dez 04 10:00:48 ultra apache2[7451]: Starting web server: apache2AH00558:...e
Dez 04 10:00:49 ultra apache2[7451]: .
Hint: Some lines were ellipsized, use -l to show in full.

O que são Non-threaded e Pre-fork no Apache?

Servidores web diferentes, tem diversas técnicas de manipulação das requisições HTTP em paralelo.
Uma das metodologias mais populares envolve o uso de threads — ou seja, o servidor web vai criar/dedicar uma única thread a cada nova requisição recebida.
O servidor web Apache suporta múltiplos modelos de tratamento de requisições — um deles, o MPM, usa threads.
Além disto, suporta um outro modelo chamado prefork MPM, que usa processos — no qual o servidor web cria/dedica um único processo a cada nova requisição.

Referências:

https://httpd.apache.org/docs/2.2/mod/prefork.html.
http://askubuntu.com/questions/488044/neither-prefork-nor-worker-settings-are-found-in-etc-apache2-apache2-conf-why.
http://wiki.zarafa.com/index.php/Apache_tuning.
http://stackoverflow.com/questions/1623914/what-is-thread-safe-or-non-thread-safe-in-php.
http://serverfault.com/questions/684424/how-to-tune-apache-on-ubuntu-14-04-server.

Como conectar ao MySQL de um script em PHP

A tarefa mais básica de scripts que fazem uso do servidor de bancos de dados é a conexão. Em seguida, vem a seleção do banco de dados, da tabela e as consultas (queries).
php and mysql logos
O exemplo de script PHP, usado neste texto, necessita que você tenha tanto o MySQL quanto o PHP instalados no seu sistema.
Se você não tem certeza de que este é o seu caso, pode usar as dicas no final do artigo Como instalar Linux, MySQL, Apache e PHP, para saber se tudo está ok.
Embora o PHP e o MySQL possam ser executados da linha de comando, este texto vai se voltar para a execução a partir de um servidor web.
Sinta-se à vontade para usar a caixa de busca, no canto superior direito deste site, sempre que quiser alguma informação adicional (neste momento, temos quase 500 tutoriais…) 😉

Como se conectar ao MySQL via PHP

Por ser uma atividade tão trivial, programadores mais ocupados criam bibliotecas de scripts que fazem a conexão — e chamam estes scripts de dentro de seus outros scripts.
É comum programadores experientes terem esquecido como realizar tarefas básicas como esta.
Se você é iniciante, não se esqueça de usar um editor de textos adequado a escrever códigos de programas, para evitar problemas na execução dos seus scripts.
Do lado de cá, vou criar um arquivo chamado conecta.php, dentro do qual vou inserir o código em PHP para fazer uma simples conexão ao banco de dados MySQL e, em seguida, desconectar.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Página de conexão ao banco de dados</title>
</head>
<body>
<!-- O script PHP começa abaixo -->

<?php
    conecta.php - script de conexão ao servidor MySQL
    if (!($con = @mysql_connect ("localhost", "justincase", "minhasenha")))
    {
        die ("Não foi possível conectar ao servidor. <br />");
    }
    print ("Conexão bem sucedida. <br />");
    if (!@mysql_select_db ("tutorial", $con))
    {
        die ("Não foi possível selecionar o banco de dados. <br />");
    }
    mysql_close ($con);
    print ("Conexão terminada. <br />");
?>

<!-- Fim do script PHP -->
</body>
</html>

A partir deste código, é possível construir o que você quiser.
A parte em HTML do código, logo no começo, serve apenas para localizar a página e permitir que as mensagens (em português) sejam exibidas com as palavras devidamente acentuadas — não fazem parte, portanto, do programa em si.

Entenda o código em PHP

  • if (!($con = @mysql_connect ("localhost", "justincase", "minhasenha"))) — esta parte tenta fazer uma conexão com a função mysql_connect(), usando os dados de nome do servidor, nome do usuário “justincase” e a senha “minhasenha”.
  • die ("Não foi possível conectar ao servidor.");
    — se nada der certo, o script será interrompido pela função die(), com a exibição da mensagem entre as aspas.
    Se a conexão se efetivar, o programa prossegue a próxima instrução e armazena as informações da conexão na variável $con.
  • print ("Conexão bem sucedida."); — exibe a mensagem entre aspas.
  • if (!@mysql_select_db ("tutorial", $con))
    — tenta selecionar o banco de dados “tutorial”, com as informações armazenadas na variável $con. Se isto não for possível, executa a instrução que segue:
  • die ("Não foi possível selecionar o banco de dados."); — finaliza o script e devolve a mensagem entre aspas.
  • mysql_close ($con); — se tudo correu bem, até aqui, o script irá fechar a conexão, baseado nas informações contidas em $con.
  • print ("Conexão terminada."); — exibe a frase entre aspas.

Captura de tela do komodo editor - código PHP para conectar ao banco de dados MySQL

Funções PHP para conectar ao MySQL

Neste artigo, usei a função mysql_connect(), para fazer a conexão ao banco de dados. Alternativamente, você pode usar a função mysql_pconnect() — para estabelecer uma conexão persistente.
Pode ser útil caso você queira deixar a conexão aberta para ser reutilizada por outros scripts subsequentes — evitando, assim, alguma sobrecarga ao servidor.
Iniciar conexões persistentes e deixá-las abertas (por esquecimento), pode acarretar, como consequência a negação de abertura de novas conexões por parte do servidor MySQL.
Portanto, seja organizado(a) neste ponto.