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.

Git Push via SSH

Tutorial objetivo e rápido. Não entrarei em detalhes.

1 – Criar a chave SSH:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

– Pode dar enter nas 3 perguntas sem responder nada.

2 – Adicionar ao ssh-agent:

ssh-add git-rsa

Se não funcionar use esse:

ssh-add ~/.ssh/id_rsa

Se também não funcionar é porque o ssh-agent está desativado. Ative com esse comando:

eval $(ssh-agent)

Depois tente o primeiro comando desse passo 2 novamente.

3 – Adicionar a chave nas configurações do seu github:
– Acesse https://github.com/settings/keys
– Clique em [New SSH Key]
– Digite um nome qualquer e cole no campo de texto o conteúdo do arquivo id_rsa.pub (que é sua chave pública)

4 – Configurando seu usuário e e-mail no git
Primeiro certifique-se de estar na pasta anterior à pasta do git

cd ~

Agora configure:

git config user.name "seu-usuario"
git config user.email "[email protected]"

Se der algum erro ao digitar esse comandos tente isso primeiro:

mkdir ~/.git

Depois tente configurar novamente.

5 – Testar a conexão

ssh -T [email protected]

Você deverá receber um aviso assim:
[code]Hi seu-usuario! You’ve successfully authenticated, but GitHub does not provide shell access.[/code]
Se for isso deu tudo certo.

6 – Clonar o repositório:

https://github.com/seu-usuario/seu-repositorio.git

7 – Se clonou por HTTPS (como fiz acima), você precisará configurar o git origin para ser SSH ou ele te pedirá pelo e-mail e senha.

git remote set-url origin [email protected]:seu-usuario/seu-repositorio.git

8 – Pronto, depois disso é o de sempre:

git add .
git commit -am "comentário"
git push origin

Postando em uma Página do Facebook com PHP (CURL)

Obs: Tem um vídeo no final do post onde ensino tudo isso.

Resolvi criar esse tutorial para ajudar pessoas que precisam publicar um texto ou link em uma página do Facebook.

Exemplo de utilização: você tem um site e quer que logo após postar uma notícia que ela seja seja compartilhada no Facebook em forma de link para trazer leitores pro seu site.

Minha motivação para esse tutorial foi que depois de perder horas pesquisando na internet e na documentação do Facebook, descobri que é simples fazer isso sem o SDK deles.

Primeiro, temos que pegar o token de acesso para o local em que desejamos postar, seja na timeline de uma pessoa ou de uma página.

Nesse exemplo vamos publicar em uma página, mas o procedimento para publicar em uma timeline de pessoa é ainda mais simples, abordarei isso rapidamente no vídeo do final.

Acessamos o seguinte link para pegar o token:

https://developers.facebook.com/tools/explorer/

Primeiro selecionamos o app que será utilizado.

Em seguida clicamos em “Get token” e depois em “Get user access token”, e na janela que se abre marcamos uma dessas opções: manage_pages e publish_stream.

Após marcar as opções clicamos em “Get Access Token”.

Nas telas seguintes autorize o que o Facebook perguntar.

Segundo passo é pegar o ID da página desejada.

Clique novamente no botão “Get Token” e note que agora ele mostra todas as páginas que você tem acesso, selecione a desejada e clique no botão azul Submit.

Isso exibirá o ID da página, copie ele e também o “Access Token” que fica no input acima (o access token tem validade curta, no vídeo ensino como pegar um de maior duração).

Com essas duas informações vamos ao código necessário:

Obs.: caso não tenha o CURL instalado, clique aqui.

<?php
$page_access_token = 'XXXXXXX';
$page_id = 'YYYYYYYY';

// E as informações do que será postado.
$data['picture'] = "http://www.exemplo.com/imagem.jpg";
$data['link'] = "http://www.seulink.com.br/";
$data['message'] = "Mensagem (opcional)";
$data['caption'] = "Legenda (opcional)";
$data['description'] = "Descrição do link (opcional)";

Na verdade todos os campos acima são opcionais desde que ou o link ou o message estejam presentes.

Para mais informações aqui está a documentação: https://developers.facebook.com/docs/reference/api/post/

Continuando…

$data['access_token'] = $page_access_token;
$post_url = 'https://graph.facebook.com/'.$page_id.'/feed';

// E pra finalizar fazemos o post para o Facebook:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$return = curl_exec($ch);
curl_close($ch);
?>

O retorno o ID do post que poderia ser utilizado para apaga-lo ou edita-lo ou um erro.

Espero que isso resolva o problema de muita gente, pois a documentação do Facebook é péssima quando você quer uma coisa mais prática, eles tentam sempre te empurrar o SDK, o que não é necessário para coisas simples como essa.

Links úteis:

 

Habilitando usuário root para o SSH no Ubuntu Server

Logado como root no terminal digite:

vi /etc/ssh/sshd_config

Adicione uma linha contendo “PermitRootLogin yes”. Talvez essa linha já exista e esteja comentada com um “#”. Nesse caso apenas remova o “#”.

Para entrar no modo de edição do vi basta teclar [a].

Ficaria assim:

# Authentication:
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

Salve as alterações teclando nessa ordem: [esq][:][q][w][enter]

Agora vamos reiniciar:

shutdown -r now

Agora você pode se conectar como root pelo SSH.

Talvez te interesse: Configurando IP estático no Ubuntu Server

Referências:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/V2V_Guide/Preperation_Before_the_P2V_Migration-Enable_Root_Login_over_SSH.html

Encontrando arquivos pela data no Linux

Há momentos em que você precisa encontrar arquivos no linux que foram criados ou modificados em um determinado intervalo de tempo.

Por exemplo, você tem aquele WordPress de um cliente que não costuma atualizar os plugins e o próprio WordPress e acaba sendo vítima daquele código malicioso que muitas vezes acaba gerando um alerta no Google e o site acaba bloqueado com aquele aviso vermelho quando você tenta editar.

Então você cadastra o site no Google Webmaster Tools e descobre quais arquivos estão infectados.

Mas acredite, isso é só o começo.

Além dessa ferramenta do Google e outras ferramentas não dizerem todos os arquivos infectados, eles normalmente não dizem como resolver.

Mas você é esperto, você tinha um backup do site sem os arquivos infectados.

Então você sobe os arquivos do backup substituindo todos os infectados e problema resolvido.

#SóQueNão!

É bem comum eles criarem novos arquivos infectados, pois esperam que a primeira coisa que o dono do site faça é jogar um backup lá.

Então qual a solução?

São várias, mas uma bem prática é o assunto desse artigo.

Vamos encontrar arquivos editados dentre um intervalo de datas, pois como você já identificou um ou mais arquivos, é bem provável que os outros sejam da mesma data.

Encontrando arquivos mais novos do que a data X (sempre no formato americano yyyy-mm-dd):

find ./ -newermt "2016-03-05"

Encontrando arquivos editados nos últimos 15 dias:

find ./ -mtime -15 -print

Lembrando que você pode procurar em tipos espefíficos de arquivos, como arquivos PHP, adicionando no comando:

-iname "*.php"

Então ficaria:

find ./ -iname "*.php" -mtime -15 -print

Encontrando arquivos do dia X ao dia Y:

find ./ -newermt "2016-02-04" -and -not -newermt "2016-03-03"

 

Referências:
http://www.cyberciti.biz/faq/howto-finding-files-by-date/
http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/
http://stackoverflow.com/questions/158044/how-to-use-find-to-search-for-files-created-on-a-specific-date

 

Problema com banco de dados WordPress utf8mb4 e utf8

Se você assim como eu teve problemas quando foi publicar um site em WordPress e o servidor que você tinha que instalar não aceitava o novo utf8mb4, então acalme-se.

Esqueça tudo que você leu antes de chegar aqui, ou se esse foi seu primeiro artigo sobre esse problema, fique feliz, vou salvar sua vida.

Quando eu digo esqueça tudo, estou falando de soluções que envolvem comandos no MySQL ou um código PHP que vai converter as coisas.

Tem soluções pior ainda que te mandam pegar o arquivo exportado e sair substituindo alguns termos.

O caminho não é por aí, isso é gambiarra!

Existe uma solução bem mais profissional e envolve o uso de um plugin.

Isso mesmo, um plugin de WordPress que vai te salvar.

Nome dele: WP Migrate DB

Após instalar, acesse sua aba em Ferramentas > Migrar Banco de Dados

É interessante informar duas coisa a serem substituídas:

  1. O link do blog antigo e o link novo.
    Normalmente quando estamos desenvolvendo ele fica com nosso IP, normalmente http://127.0.0.1/www.meublog.com.br que será substituído pelo endereço oficial do blog.
  2. O endereço físico da pasta.
    Isso é mais por garantia, nem sempre é necessário, mas é melhor prevenir do que remediar. Então caso você utilize Windows e esteja publicando o blog em um linux, você vai substituir aquele D:/www/www.meublog.com.br pelo endereço físico do servidor linux, que normalmente é /var/www/ ou /public_html/ depende da sua hospedagem.

Finalizando isso você recebe um arquivo SQL que será importado na nova hospedagem.

Só isso, sem nada complicado e de forma profissional.

Deixe que o plugin se preocupa em arrumar as coisas pra você.

Instalando o Bittorrent Sync no Ubuntu Server

Instalar o Bittorrent Sync no Ubuntu é bem simples.

O bom do Sync é poder manter os projetos sempre sincronizados entre os membros da equipe, principalmente quando algum deles não tem acesso à rede local do servidor, como um home office por exemplo ou em uma empresa que tem duas sedes, como a que trabalho.

Sem mais delongas…

Adicionando o repositório.

sudo add-apt-repository -y ppa:tuxpoldo/btsync

Instalando o Bittorrent Sync

sudo apt-get update; sudo apt-get -y install btsync

Após a instalação aparecerá uma tela de configuração.

Recomendo fortemente que você faça isso nesse momento ou terá que fazer de forma muito complicada depois de forma manual.

A tela será mais ou menos como essa:

configuração-do-sync-no-ubuntu-server

 

Após isso siga o “wizard” e complete a instalação com as configurações de sua preferência.

Se por acaso você cometer algum erro, a dica que dou é desinstalar e instalar novamente, já que ainda não começou a utilizar.

Depois disso acesse o endereço do servidor dele e comece a compartilhar:

http://127.0.0.1:8888/

Se estiver em outra maquina na mesma rede é só ajustar o IP de acorco com o necessário.

É isso.

Boa sorte!

Localizar e substituir em grandes arquivos com sed

Hoje precisei localizar e substituir todas as ocorrencias de uma string dentro de um arquivo muito grande de um dump de um banco de dados MySQL de uma loja magento que mudou de domínio. Normalmente eu fazia isso com o Notepad++ que tem o melhor desempenho nessa tarefa em comparação com outros editores como Sublime Text, Dreamweaver, Bloco de Notas, etc. Porém alguma coisa estava saindo errado no processo e eu não estava conseguindo importar o banco. E como o arquivo era muito pesado não tinha possibilidade de eu encontrar a linha com erro e corrigir.

Então encontrei um comando que substitui lá no linux, chamado sed. Isso salvou minha vida e do cliente que estava atendendo.

O comando é bem simples, no meu caso, como queria mudar um domínio por outro, o comando que executei foi:

$ sed -i 's/dominioantigo.com/novodominio.com/g' database.sql

Como é uma expressão regular, recomendo escapar todos os símbolos presentes na string. No meu caso como o único símbolo era um ponto, e mesmo ele sendo um coringa nas expressões regulares, não achei que poderia prejudicar e no fim deu tudo certo, mas o correto seria eu ter executado este comando:

$ sed -i 's/dominioantigo\.com/novodominio\.com/g' database.sql

É uma solução prática para muitas tarefas, mas acho que o que mais acontece por aí que exige essa tarefa é mudança de domínio.

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!

Configurando IP estático no Ubuntu Server

Para configurar um endereço estático no servidor seguiremos os passos:

Obter privilégios de root:

sudo su

Abrir o arquivo interfaces com um editor:

vim /etc/network/interfaces

Troque o texto abaixo:

auto eth0
iface eth0 inet dhcp

Por:

auto eth0
iface eth0 inet static
dns-nameservers 8.8.8.8 8.8.4.4
address 192.168.25.50
netmask 255.255.255.0
network 192.168.25.0
broadcast 192.168.25.255
gateway 192.168.25.1

Os endereços acima são baseados na minha rede, que é 192.168.25.xxx.

Você deve fazer de acordo com a sua.

Reinicie a interface de rede:

/etc/init.d/networking restart

Testando:

ping www.google.com

É isso.

Boa sorte!

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

Google Analytics no Ajax, Flash e OnePage site

Essa técnica é boa para sites que abrem o conteúdo sem atualizar a página, como ajax e sites feitos em flash.

Basta apenas uma linha de código para que isso aconteça:

ga('send', 'pageview', '/pagina-que-sera-registrada');

Então,

Se eu quero rastrear que a pessoa entrou na página contato, via ajax ou flash, o código seria:

ga('send', 'pageview', '/contato');

Essa técnica pode ser utilizada também para rastrear a rolagem de página de um site feito em uma única página.

E se eu quiser rastrear uma ação?

As possibilidades são ilimitadas.

Se você quiser rastrear a ação do envio do formulário de contato, você pode colocar por exemplo:

ga('send', 'pageview', '/contato/enviado');

E no Flash?

Se você mexe no flash deve saber como abrir uma página.

Suponto que a página que você quer registrar fica no quadro 70, você colocaria assim, certo?

gotoAndPlay(70);
getURL("javascript:ga('send', 'pageview', '/sua-pagina');");

Simples e fácil.

Habilitando o mod_rewrite no apache

Habilitar o modo rewrite é essencial para que o seu wordpress ou qualquer outro site funcione com a URL amigável.

Por exemplo, um wordpress sem a URL amigável ficaria assim:

www.seusite.com.br/?p=123

E com a URL amigável seria:

www.seusite.com.br/viajens

Isso além de ser melhor para o usuário, também ajuda muito na indexação do Google e outros mecanismos de buscas.

Então, mãos à obra!

Antes de tudo temos que ter permissão de administrador no linux.

Para isso, digite no terminal o seguinte comando:

sudo su

Então confirme sua senha e pronto.

Vamos agora, verificar se ele está instalado.

Se você instalou o apache2 pelo meu tutorial então você já tem esse módulo, mas vamos verificar mesmo assim.

Utilize o seguinte comando:

ls /usr/lib/apache2/modules/mod_rewrite.so

Se o arquivo existir, o nome dele será impresso logo abaixo do seu comando executado.

Se não existir dará uma mensagem que o arquivo não pode ser encontrado.

Mais ou menos assim:

ls: cannot access /usr/lib/apache2/modules/mod_rewrite.so1: No such file or directory

Habilitando o modo rewrite no apache2

Agora que sabemos que o módulo existe vamos liga-lo.

Execute o comando:

a2enmod rewrite

Você verá algo semelhante a isso:

Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Isso significa que já está habilitado.

O próximo passo é habilitar o modo rewrite no seu site, pois normalmente vem desativado.

Abra o arquivo 000-default.conf no seu editor de preferência e localize a configuração do site que você deseja ativar.

O arquivo fica em: /etc/apache2/sites-available/000-default.conf

Encontre DocumentRoot /var/www/html

E adicione logo abaixo:

<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>

Agora é só reiniciar o apache e tudo estará funcionando.

Execute o seguinte comando no seu terminal:

/etc/init.d/apache2 restart

Instalando um servidor SMTP no Linux (postfix)

O servidor SMTP é o servidor de e-mail.

A instalação do servidor SMTP é muito simples.

No terminal digite:

sudo apt-get install postfix

Quando ele te pedir uma senha você deve definir uma de sua preferência.

Depois disso ele concluirá a instalação.

Para futuras configurações no servidor SMTP apenas digite no terminal:

sudo dpkg-reconfigure postfix

E é isso, agora você já tem o servidor rodando no seu Linux.

Com isso você já poderá enviar e-mails utilizando a função mail() do php.

Se quiser configurar algum programa de e-mail para enviar usando seu servidor você deve configurar o programa para o IP ou domínio da sua máquina e usar a porta 25 que é a padrão.

Viu?! Foi rápido e fácil!

Como Importar e Exportar grandes bancos de dados no MySQL

Quando você não consegue fazer operações como exportar e importar arquivos no banco de dados pelo PHPMyAdmin por causa do tempo limite então o jeito é ir pelo comando mesmo.

No linux você faz isso com esses comandos:

  • Exportar:

mysqldump -uusuario_do_banco -psenha nome_do_banco > nomedoarquivo.sql

  • Importar:

mysql -uusuario_do_banco -psenha nome_do_banco < nomedoarquivo.sql

No WINDOWS os comandos são iguais, porém você precisa estar na pasta bin do seu mysql.

Caso use o EasyPHP por exemplo você precisa estar em C:\EasyPHP\mysql\bin\ quando usar o comando.

Permissão de arquivos (CHMOD)

Todo arquivo ou pasta tem seu conteúdo e seu nome visível para qualquer usuário.

Mas além disso eles tem um dono e permissões de arquivos que podem ser vistos nas propriedades do arquivo ou da pasta.

Uma outra forma de visualizar a permissão do arquivo é pelo FTP ou digitando o comando abaixo no terminla do seu Linux:

ls -l

Que teria mais ou menos esse resultado:

-rw-r–r– 1 surrealad surrealad 2267 2011-04-14 18:39 insertLogo.php
drwxr-xr-x 2 surrealad surrealad   69 2011-05-26 14:47 npub/
-rw-r–r– 1 surrealad surrealad 2749 2011-03-09 15:52 pictogramaBranco.png
-rw-r–r– 1 surrealad surrealad 2545 2011-03-09 15:52 pictogramaPreto.png

A primeira, a terceira e a quarta linha são arquivos e a segunda um diretórios. Sabemos disso pela letra d no começo da segunda linha.

Se fossemos ver esses arquivos no FTP eles teriam a permissão 755 para a pasta e 644 para os arquivos.

Isso porque no FTP a permissão é representada em números e no terminal do Linux ou SSH ela é representada em letras.

Essa representação da permissão é dividida em 3 partes que são:

1 – Permissão para o dono ou usuário
2 – Permissão para usuários do mesmo grupo
3 – Permissão para todos os usuários

Cada número (para o FTP) ou letra (para o terminal do Linux ou SSH) significa um tipo de permissão, que são:

0 : — (nenhuma permissão)
1 : –x (somente execução)
2 : -w- (somente escrita)
3 : -wx (escrita e execução)
4 : r– (somente leitura)
5 : r-x (leitura e execução)
6 : rw- (leitura e escrita)
7 : rwx (leitura, escrita e execução)

Algumas vezes, acontece de um usuário colocar permissão 777 para todos os arquivos e pastas de seu site e isso não é seguro.

A permissão 777 só deve ser utilizada em pastas que terão seu conteúdo alterado, como pastas de upload ou de cache por exemplo.

Utilizando de um bom cliente FTP como o FileZilla, você pode “rapidamente” corrigir isso, pois ele te dar a opção de aplicar a mesma permissão às subpastas e/ou arquivos das subpastas.

Já no linux isso é um pouco diferente, embora você possa diferenciar arquivos de pastas pelo comando o CHMOD não pode.

Para isso, você precisará da ajuda do comando find e do xargs.

Use este comando para mudar a permissão de todos os arquivos daquela pasta:

find -type f | xargs -i chmod 644 {}

Use esse comando para aplicar a permissão apenas para a pasta e as subpastas:

find -name '*' -type d | xargs -i chmod 755 {}

Basicamente é isso.

Já da pra brincar um pouco ou sair de uma furada.

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