1 Aula 09 – Servidor LAMP – Linux-Apache-MySQL-PHP 9.1 Definição LAMP consiste no quarteto: – Linux (Sistema Operacional); – Apache (Servidor Web); – MySQL (Servidor de Banco de Dados); – e PHP (Ferramenta de Programação Web). 9.2 MySQL A instalação do MySQL trata-se de um procedimento relativamente fácil, já que iremos realizá-lo utilizando so repositórios do Linux. # apt-get install mysql-server mysql-admin mysql-client mysql-common Após a instalação deve-se reiniciar o serviço do MySQL: # /etc/init.d/mysql restart 9.2.1 Configurações do MySQL - mudar a senha do usuário root: # mysqladmin -u root password 'password_user_root' - criando um banco de dados no servidor mysql: # mysqladmin --user=root -p create teste - criando e dando permissões de acesso ao banco de dados ao usuário usertest: # mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 102 Server version: 5.0.67-0ubuntu6 (Ubuntu) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> GRANT ALL ON teste.* TO teste IDENTIFIED BY 'senha_usertest'; flush privileges; mysql> show databases; show databases; +--------------------+ | Database +--------------------+ | 2 | information_schema | | cacti | mysql | | +--------------------+ 3 rows in set (0.00 sec) mysql> use teste; mysql> show tables; 9.3 PHP O PHP, que encontra-se na sua versão 5, trata-se da suíte de programação mais utilizada atulamente no mundo para programação voltada à internet, já que possibilita uma perfeita integração com os principais servidores de bancos de dado, como o MySQL, PostgreSQL, entre outros mais e também com os principais servidores Web (http) utilizados no mundo, como o Apache e o IIS da Microsoft. A exemplo do MySQL, o PHP também pode facilmente ser instalado via repositório. # apt-get install php5 php5-common php5-cgi php5-cli php5-mysql php5-gd php5-snmp A seguir, quando efetuarmos a instalação do Apache, iremos realizar o teste do PHP. 9.4 Apache O Apache atualmente encontra-se em sua versão 2, e segundo a Gartner Groups (2006), trata-se do servidor Web (http) mais utlizado no mundo, cerca de mais de 70%. A sua característica de integração com praticamente todas as suites de programação Web, bancos de dados e também plataformas (Unix, Linux, Microsoft, MacOS), e principalmente a sua licença livre (Licença Apache) o tornaram tão porpular que é praticamente uma unanimidade, principalmente em ambientes computacionais heterogêneos. A sua intalação, a exemplo das outras ferramentas LAMP, também é extremamente facilitada pois pode ser efetuada via repositório. # apt-get install apache2 libapache2-mod-php5 A seguir deve-se reinciar o servidor web Apache: # /etc/init.d/apache2 restart Agora deve-se verificar o funcionamento do servidor web Apache, digitando-se no navegado o endereço: localhost. 3 Figura 1 – Funcionamento do servidor web Apache. Agora deve-se testar o funcionamento do PHP, efetuando-se a criação do arquivo abaixo, cx.hamado index.php, e sua inserção no diretório /var/www, que é o diretório padrão de armazenamento de págias web do Apache: <html> <body> <? phpinfo(); ?> </body> </html> A seguir deve-s e inserir o endereço localhost/index.php na bara de endereços do navegador. Figura 2 - Funcionamento do PHP. A exibição correta desta página demonstra que o PHP está devidamente instalado, configurado e executando, ou seja, pronto para exibir páginas php junto ao banco de dados MySQL, no nosso caso, em cima do servidor web Apache. 9.4.1 Apache com certificação SSL (https) O uso do LAMP (Linux, Apache, MySQL e PHP) vem se tornando cada vez mais comum devido a vários fatores, mas principalmente por sua estabilidade e seu baixo custo. Outra ferramenta que é muito utilizada é o PhpMyAdmin. Através dele é possível acessar sua base de dados MySQL a partir de qualquer 4 host na internet. Quando conectamos ao PhpMyAdmin devemos nos identificar junto ao MySQL, para isso devemos fornecer nossos dados de usuários. Neste momento cruzamos o dedo para que ninguém esteja interceptando os pacotes, pois estes dados são transmitidos em texto claro do host para o servidor. 9.4.2 Instalação Instalação de pacotes no Debian não tem nenhum segredo, basta utilizar o apt-get. A Apache2: # apt-get -y install apache2 PHP5 + Módulo Apache: P # apt-get -y install libapache2-mod-php5 php5-cli php5-common php5-cgi M MySQL5: # apt-get -y install mysql-server mysql-server-5 Antes de continuar devemos configurar a senha de root para o MySQL, da seguinte forma: # mysqladmin -u root -p password sua_senha Será pedida a senha anterior, por padrão o MySQL é instalado sem senha, neste caso tecle ENTER. PhpMyAdmin: # apt-get -y install phpmyadmin O OpenSSL: # apt-get -y install openssl ssl-cert Pacotes instalados e funcionando, caso queira verificar basta digitar no browser o endereço da sua máquina, ex: http://localhost/, você vai visualizar a seguinte frase: m IIt Works! Para testar o MySQL e o PHP digite: localhost/phpmyadmin ou IP_do_host/phpmyadmin 9.4.3 Configuração Com tudo funcionando, devemos agora criar um certificado SSL, para isso utilize o comando: # openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout / /etc/apache2/apache.pem Ao executar esse comando as seguintes perguntas lhe serão feitas: Country Name (2 letter code) [AU]: BR State or Province Name (full name) [Some-State]: MS 5 Locality Name (eg, city) [ ]: Campo Grande Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nome_empresa Organizational Unit Name (eg, section) []: Nome_departamento Common Name (eg, YOUR name) []: localhost Email Address []: seu_e-mail@seu_dominio.com E Responda as perguntas conforme sua necessidade. Atente-se para o campo Common Name, nele você deve digitar o domínio ou o nome do host onde seu certificado vai ser instalado. Feito isso, dê permissão de leitura e escrita apenas pro root no arquivo /etc/apache2/apache.pem: # chmod 600 /etc/apache2/apache.pem Edite o arquivo /etc/apache2/ports.conf e adicione a seguinte linha: E Listen 443 L Habilite o suporte a SSL no apache da seguinte forma: H # a2enmod ssl Edite o arquivo /etc/apache2/sites-avaliable/default e deixe-o da seguinte forma: NameVirtualHost *:80 NameVirtualHost *:443 N <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/ <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> < </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www-ssl/ <Directory /> Options FollowSymLinks AllowOverride None 6 </Directory> <Directory /var/www-ssl/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ErrorLog /var/log/apache2/error.log CustomLog /var/log/apache2/access.log combined SSLEngine on ServerSignature on SSLCertificateFile /etc/apache2/apache.pem < </VirtualHost> Salve e feche o arquivo. Agora crie a pasta /var/www-ssl: S # mkdir /var/www-ssl Mova o link simbólico /var/www/phpmyadmin para /var/www-ssl/phpmyadmin: # mv /var/www/phpmyadmin /var/www-ssl/phpmyadmin Reinicie o apache: R # /etc/init.d/apache2 restart Verifique se tudo ocorreu corretamente, digite no browser: https://localhost/phpmyadmin Você notará que será alertado quando à não confiabilidade da CA (Autoridade Certificadora), isso se dá pois o certificado que você gerou não está ligado hierarquicamente a CA raiz, para que você possa ter um certificado ligado a raiz, é necessário comprar um certificado. Existem muitos CAs, inclusive uma brasileira muito conhecida, a Certising (www.certising.com.br). b Obs1: qualquer outra aplicação que você queira que seja criptografada, basta colocá-la no diretório /var/www-ssl/ Obs2: caso tentar acessar o site com https e falhar a apresentação da página web, preste atenção na mensagem que diz que o usuário terá de aceitar o certificado gerado por aquela página, acessando este link, é só aceitar o certificado e o site estará disponível permanentemente (caso não seja apagado do cache).