Instalando o Apache2 (com mod rewrite), PHP7, MariaDB (esqueça o MySQL) e PHPMyAdmin no Ubuntu

A long time ago fiz um tutorial ensinando a realizar a instalação conjunto, também conhecido como LAMP (Linux, Apache, Mysql, PHP) no Ubuntu. Hoje volto para ensinar a instalar as versões mais recentes para ter seu Web Server mais seguro e com melhor desempenho.

Além dos itens já mencionados também instalaremos e ativaremos alguns modulos do Apache como o módulo de rewrite para URLs amigáveis e bibliotecas do PHP que são exigidos em diversos frameworks e soluções como o Magento por exemplo, que exige o mcrypt.

Preparando o sistema

Os primeiros passos todos sabem: obter permissões root e atualizar a lista de pacotes.

Pegando root, digite o comando abaixo e informe sua senha quando ele pedir:

sudo su

Atualizando a lista de pacotes:

apt-get update

Em seguida vamos instalar o apache2

apt-get install -y apache2

Vamos ativar o módulo de rewrite:

a2enmod rewrite

Agora vamos instalar o PHP

apt-get install -y php7.0

Vamos aproveitar o momento para instalar aqueles módulos que falei mais cedo.

apt-get install -y libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json php-memcached php7.0-dev php7.0-mcrypt php7.0-sqlite3 php7.0-mbstring

Agora vamos instalar o MariaDB

Essa é uma distribuição baseada no MySQL, porém com mais atualizações. Funciona do mesmo modo que o MySQL, não notei nenhuma diferença em sintaxes e outras funcionalidades. Pelo que pesquisei entendi que ele recebe mais atualizações de segurança e tem um desempenho melhor. Por que não?

apt-get install -y mariadb-server mariadb-client

Agora, vamos dar um pouco de segurança pra instalação do MariaDB, pois, assim como o MySQL, ela vem com algumas configurações padrão que são perigosas.

mysql_secure_installation

Falta pouco agora, vamos rodar o MySQL para poder instalar o PhpMyAdmin que por sua vez cria uma tabela e um usuário, por isso precisamos do serviço rodando.

service mysql start

Agora vamos instalar o PHPMyAdmin

apt-get install -y phpmyadmin

 

Por último, basta rodar o apache2 para que tudo esteja funcionando.

service apache2 start

O diretório padrão onde você vai colocar seus arquivos é:

[code]/var/www/html/[/code]

Observações

O Magento 1.9.x não é compatível com o PHP7.

Se estiver querendo instalar o LAMP por causa dele prefira seguir esse tutorial.

Abraços.

Instalando e ativando a extensão PHP mCrypt no Ubuntu

Alguns frameworks como o Magento precisam dessa extensão.

Mãos à obra!

Obter permissões de root

sudo su

Instalando as bibliotecas necessárias

apt-get install php5-mcrypt

Ativando a extensão

php5enmod mcrypt

Reiniciando o apache

service apache2 restart

Feito!

Instalando a biblioteca cURL do PHP no Ubuntu

Alguns frameworks como a API do Facebook, sistemas como o Magento e vários outros precisam de algumas bibliotecas.

Passos para instalação:

1 – Obter permissões de root

sudo su

2 – Instalando as bibliotecas necessárias

apt-get install curl libcurl3 libcurl3-dev php5-curl

3 – Reiniciando o apache

service apache2 restart

Instalando o Apache2, PHP5, MariaDB (esqueça o MySQL), PHPMyAdmin no Ubuntu

O que vou ensinar aqui é tudo que você precisa pra montar um Web Server com o Ubuntu.

Estou usando sempre o Ubuntu nos meus tutoriais de Linux porque estou tendo meus primeiros contatos com o Linux agora e o Ubuntu é, se não o mais fácil, um dos mais faceis para os iniciantes.

Outra coisa, esse tutorial começa no terminal, então se nem no terminal você sabe chegar sugiro que dê uma navegada no “menu iniciar do seu Ubuntu.

Preparando o sistema

Primeiro vamos obter as permissões de administrador, que no Linux é conhecido como usuário root.

Para isso digite o comando abaixo e informe sua senha quando ele pedir:

sudo su

Agora vamos fazer um update das listas de aplicativos com o comando:

apt-get update

Em seguida vamos instalar o apache2

apt-get install -y apache2

Agora vamos instalar o PHP5 (PHP5 é a versão. Esse é o php que você conhece)

apt-get install -y php5

É bom instalar também algumas bibliotecas úteis do PHP, pois cedo ou tarde será necessário.

apt-get install -y php5-mhash php5-mcrypt php5-curl php5-cli php5-mysql php5-gd

Agora vamos instalar o MySQL

apt-get install -y mariadb-server mariadb-client

Falta pouco agora.

O Web Server já está basicamente pronto, mas seria bom adicionar um gerenciador para o banco de dados.

Para isso vamos instalar o PHPMyAdmin com o comando:

apt-get install -y phpmyadmin

Agora precisamos que o apache rode o phpmyadmin.

Para isso use o comando:

echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf

Ou se preferir, edite o arquivo com o editor do debian e insira a linha manualmente.

Agora basta reiniciar o apache2 para que tudo esteja pronto para funcionar.

/etc/init.d/apache2 restart

Certo, mas onde está aquela pasta www onde irei jogar os meus .php e fazer meu site?

Inicialmente a pasta fica em:

[code]/var/www/html/[/code]

Em breve farei outro tutorial ensinando como mudar o local padrão da pasta www do apache2.

Abraços.

Talvez você também se interesse por:
Habilitando o mod_rewrite no apache
Instalando e ativando a extensão PHP mCrypt no Ubuntu
Instalando a biblioteca cURL do PHP no Ubuntu

Melhorando o desempenho com o uso de Cache

Antigamente os sites eram mais estáticos, poucos deles apresentavam conteúdo dinâmico vindo de um banco de dados.

Mas hoje, é dificil ver um site estático e com isso a preocupação com o desempenho que antes era um luxo hoje é um requisito muito importante.

Pensando nisso, foram criados vários scripts de cache e o que vou apresentar hoje é o Cache Lite (PHP).

Download do Cache Lite

 <?php

// Inclui a classe Cache Lite
require_once("Lite.php");

// Seta um nome para o cache
$id = "nosso_cache";

// Seta as configurações
$options = array(
cacheDir" => "cache/",
"lifeTime" => 50
);

// Instancia o objeto Cache Lite
$objCache = new Cache_Lite($options);

// Teste se já existe um Cache válido
if ($quote = $objCache->get($id))
{
// Se existe ele exibe o conteudo que estava no cache
echo $quote;

// Adiciona no fim do conteúdo um indicador que veio do cache (só para exemplo)
echo " [cached]";
}
else
{
// Se ainda não existe um cache para esse conteudo, devemos criar o conteúdo, exibi-lo e depois armazena-lo no cache para que a próxima consulta não seja criada e sim retornada do cache

//Criamos o resultado
$quote = "Aprendendo como utilizar o cache";

//Exibimos o resultado
echo $quote;

//Armazenamos no cache
$objCache->save($quote, $id);
}

?> 

O resultado se o cache não existir seria:

Aprendendo como utilizar o cache

E se ele existir seria

Aprendendo como utilizar o cache [cached]

Dessa forma, ele só criará o resultado final se ainda não existir em cache e também se não estiver com a validade vencida. Leia sobre o lifetime na legenda no final do artigo.

Mas esse exemplo foi de uma simples frase, e como seria para um conteúdo vindo do banco de dados?

Simples:

<?php

// Inclui a classe Cache Lite
require_once("Lite.php");

// Seta um nome para o cache
$id = "nosso_cache";

// Seta as configurações
$options = array(
cacheDir" => "cache/",
"lifeTime" => 50
);

// Instancia o objeto Cache Lite
$objCache = new Cache_Lite($options);

// Teste se já existe um Cache válido
if ($quote = $objCache->get($id))
{
// Se existe ele exibe o conteudo que estava no cache
echo $quote;

// Adiciona no fim do conteúdo um indicador que veio do cache (só para exemplo)
echo " [cached]";
}
else
{
//esta função vai armazenar o resultado que vai pra tela do usuário
ob_start();

?>
<html>
<head></head>
<body>
Aprendendo como utilizar o <i>cache</i>
</body>
</html>
<?php

// terminou de gerar a página

// obtem o conteúdo que foi armazenado
$conteudo = ob_get_contents();

// salva o conteudo
$objCache->save($conteudo, $id);

// exibe o conteudo na tela do usuário
ob_end_flush();
}

?>

Viu  como é simples?

Legenda:

  • cacheDir :: pasta onde serão armazenados os arquivos gerados do cache
  • lifetime :: tempo de vida do arquivo de cache em segundos. É necessário para que quando você pergunte se existe um cache válido ele retorne falso quando não existir o arquivo e também quando existir, porém com a validade vencida
  • $id :: utilizei essa variável para armazenar o nome do arquivo do cache. É interessante utilizar essa função em conjunto com a md5() para que o nome do arquivo não contenha caracteres inválidos como a interrogação ? ou barras / que são normais em urls.

Algum erro que eu tenha cometido ou uma sugestão de melhoria avise pelo comentário ok?

Abraços!