OpenVPN no Slackware

17 09 2007

Em primeiro lugar vamos explicar o que seria VPN e qual iriamos usar.

Uma Rede Privada Virtual (Virtual Private NetworkVPN) é uma rede de comunicações privada normalmente utilizada por uma empresa ou um conjunto de empresas e/ou instituições, construída em cima de uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.

VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a confidencialidade, autenticação e integridade necessárias para garantir a privacidade das comunicações requeridas. Quando adequadamente implementados, estes protocolos podem assegurar comunicações seguras através de redes inseguras.

Deve ser notado que a escolha, implementação e uso destes protocolos não é algo trivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-se os usuários para que investiguem com cuidado os produtos que fornecem VPNs. Por si só, o rótulo VPN é apenas uma ferramenta de marketing.

Fonte: Wikipédia, a enciclopédia livre.

A partir do momento que sabemos o que é uma VPN teremos um novo problema.

Qual solução usar já que temos inumeras possibilidades de implementação.

Isso é uma questão muito parecida com religião e prefiro nem discutir sobre qual delas usar.

Minha escolha em VPN foi para o OpenVPN entre os motivos destaco alguns:

1- Criptografia de chaves ao invés de usuário e senha para fechar um túnel de VPN;

2- Plataformas: Linux, Windows 2000/XP ou superior, OpenBSD, FreeBSD, NetBSD, Mac OS X, e Solaris;

3- Fácil configuração através de firewalls e roteadores que fazem NAT;

4- Open Source licenciado pela GPL;

Já que temos um inicio promissor vamos dar ênfase a toda configuração.

Como sempre vou utilizar o slackware para fazer nosso server… O mesmo passos são utilizados para clientes, assim como para clientes de outras distribuições e plataformas.

Vale lembra que o slackware 12 já vem com o OpenVPN em seus pacotes, o que iria nos economizar em compilar o OpenVPN. Mas como a utilidade desse tutorial é mostrar toda a configuração inclusive a compilação do OpenVPN.

Vamos primeiro baixar um pacote para lzo que comprimi os dados tornando assim os tuneis da nossa VPN mais rápida. Estarei usando aqui as últimas versões de cada software.

LZO

# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

# tar zxvf lzo-2.02.tar.gz
# cd lzo-2.02
# ./configure
# make && make install

Obs:. O openvpn utiliza o TUN/TAP e dará erro na sua compilação caso não aja no seu sistema o suporte a TUN/TAP. Caso não tenha recompile o kernel e ative como módulo:

<M>   Universal TUN/TAP device driver support

No caso do slackware 10.2 11 e 12 já temos o TUN/TAP e vamos apenas subir:

modprobe tun

Agora vamos baixar e compilar o OpenVpn:

wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

# tar zxvf openvpn-2.0.9.tar.gz
# cd openvpn-2.0.9
# ./configure
# make && make install

Vamos criar o diretório para colocarmos as configurações da nossa VPN. Pode ser escolhido qualquer local:

# mkdir /etc/openvpn
# chmod 755 /etc/openvpn
# cd /etc/openvpn

Criaremos agora o nosso .conf iremos chama-lo de matriz.conf. Use seu editor preferido vi, pico, mcedit, etc… E adicione no arquivo as seguintes linhas:

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Agora vou explicar cada linha do nosso .conf:
dev tun: abilita suporte ao drive TUN/TAP;
ifconfig: cria nosso ip da matriz (10.0.0.1) com suporte ao ip da filial (10.0.0.2);
secret: comando para chamar nossa chave criptografada e o local dela;
comp-lzo: ativa suporte a compressão;
user e group: isso é bem óbvio;
port: porta que a OpenVpn vai rodar;
verb: nível para depuração de erros;
ping: testa a conexão de 10 em 10 segundos;

Agora vamos criar nossa chave criptografada:
# openvpn –genkey –secret vpn.key

Nossa VPN está praticamente pronta. Vamos agora apenas rodar o daemon e por ela para funcionar:

# openvpn –config /etc/openvpn/matriz.conf –daemon

Com isso nossa VPN está rodando, basta conferir digitando ifconfig e teremos uma interface a mais chamada de tun0.

Na filial faremos a mesma coisa que fizemos agora, iremos apenas mudar algumas coisas no nosso .conf e chamaremos de filial.conf:

dev tun
remote 200.200.200.200
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Obs:. Em remote coloque o IP ou DNS válido para poder achar a VPN da matriz.

E iniciamos da mesma forma da matriz mudando apenas o arquivo de configuração. Dessa forma que fizemos aqui só temos acesso de servidor para servidor e não teremos acesso na rede interna. Para conseguir esse acesso teremos que fazer as rotas:

# route add –net rede_local_filial/24 gw 10.0.0.2

E na filial faremos o mesmo:

# route add –net rede_local_matriz/24 gw 10.0.0.1

Se usarmos o OpenVPN para windows… Criariamos a rota da seguinte forma:

C:\> route add rede_da_matriz mask 255.255.255.0 10.0.0.1

Podemos criar um arquivo dentro de /etc/openvpn com o nome rotas e adicionar a rota nele e chamar da seguinte forma na conf do openvpn em baixo do nosso ifconfig:

up /etc/openvpn/rotas

Ficando semelhante a essa conf da matriz:

dev tun
ifconfig 10.0.0.1 10.0.0.2
up /etc/openvpn/rotas
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Faremos o mesmo na filial… Mudando óbvio a rota.

E para ativar a VPN na filial fazemos:

# openvpn –config /etc/openvpn/filial.conf –daemon

Com isso já temos uma VPN funcional e segura. Vale ressaltar que temos muitas outras opções para usarmos no OpenVPN como por exemplo opções de dhcp e usuário/senha.

No caso de se usar usuário/senha teriamos que usar o PAM. Logo teriamos que compilar o slackware com suporte a PAM o que não vem ao caso nesse artigo.

Outras opções interessantes são as de log. Podemos criar um diretório em /var/log com o nome openvpn por exemplo e logarmos tudo da nossa VPN. Para isso abra os arquivos de conf do OpenVPN e adicione:

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn-append.log

Novamente lembrando temos muitas outras configurações… Nada melhor do que ler o howto.

Cleison Monteiro
cleisonmonteiro[arroba]gmail.com
Apocalipse @ #linuxajuda – irc.freenode.net





Montando um PDC com OpenBSD

16 09 2007

Introdução

Vamos começar lendo sobre OpenBSD e Samba.

O OpenBSD é um sistema operacional livre da família UNIX, multiplataforma. Seu time de desenvolvedores enfatiza a portabilidade, padronização, correção e segurança. Ele suporta emulação binária da maioria dos binários de SRV4 (Solaris), FreeBSD, Linux, SunOS e HP-UX e funciona nas plataformas i386, SPARC, hp300, Amiga, Mac68k, PowerPC, pmax, mvme68k. A versão mais atual é a 4.1.

Texto retirado de: AQUI

Samba é um programa de computador, utilizado em sistemas operacionais do tipo Unix, que simula um servidor Windows, permitindo que seja feito gerenciamento e compartilhamento de arquivos em uma rede Microsoft.

Texto retirado de: AQUI

Bom, acredito que se você tá lendo esse texto é porque já tem conhecimento sobre o que cada software faz, caso não, leia os sites indicados a cima para poder se interar melhor.

Começando a Instalação

Levando em conta que seu sistema já esteja instalado e configurado adequadamente para o seu uso, contendo as suas ferramentas preferidas para shell e edição de textos. Vamos começar:

OpenBSD 1

Primeiro vamos instalar o samba usando o ports do openbsd, poderiamos baixar o source do site e usa-lo, mas pelo ports iremos manter a robustez do OpenBSD, há quem diga que instalando pacotes via source a pureza do S.O. acaba se perdendo. hehehe. Como querendo um sistema puro e seguro, vamos usar o ports. Na verdade pelo ports, ele baixa o source sim, mas também aplica os patchs criados pela turma desenvolvedora do sistema.

# cd /usr/ports/net/samba/
# make install
(Dependendo de sua conexão e de sua maquina, isso pode ser um pouco demorado, eu aconselho um copo de sorvete de flocos pra esperar isso terminar)

Deve demorar caso o servidor esteja limpo ainda, sem muita coisa instalada ele vai baixar as dependencias.

openbsd2.jpg

Essa parte é simples, facil até. Terminando, vamos para a parte boa. Configurar.

Configurando smb.conf

Para configurar ele também segue o padrão do Linux. Vamos iniciar:

# cd /etc/samba
# cp smb.conf smb.conf-bkp

Agora vamos configurar o smb.conf por partes, abra ele com o seu editor preferido (se bem que no openbsd so vem instalado o vi por padrao… hehehe)

Apos abrir, vamos configura-lo:

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
workgroup = minha-casa
- Aqui você altera o nome do workgroup para o nome do seu dominio.

# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the “loopback” interface. For more examples of the syntax see
# the smb.conf man page
hosts allow = 10.1.1. 127.
- Aqui você determina quais faixas de ip irão poder se conectar no pdc.

# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don’t use this
# if you already have a Windows NT domain controller doing this job
domain master = yes
- isso é pra definir que o servidor será o controlador de dominio master

# WINS Server – Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
wins server = 10.1.1.6 (ip do seu servidor)

O resto do arquivo são as definições de compartilhamento. Nelas você coloca da forma que achar melhor e de acordo com a organização de sua rede.

Abaixo segue o script logon.bat, que deve ficar dentro do diretório “netlogon”, ele é assim mesmo, com o # na frente mesmo, coloque essa linha no arquivo logon.bat e salve:

#net time \\pdc /set /yes

Depois disso, faça o seguinte, atribua permissões de execução ao arquivo:

# chmod +x logon.bat

Obs.: Esse arquivo bat deve ser criado no windows e copiado para estacao para que funcione corretamente. Caso contrario ele nao ira pegar o horario do servidor.

Lembrando que é preciso também criar o grupo “estacoes”:

# groupadd estacoes

Agora vamos ao mais “chatinho” que consigo, ficar adicionando as máquinas no domínio. Para cada máquina é necessário adicionar um usuário com um $ na frente, por exemplo:

# useradd -g estacoes -s /bin/false -d /dev/null maquina$
# smbpasswd -am maquina$

Deve aparecer a seguinte mensagem:

Added user maquina$

Agora para adicionar usuários na rede, é preciso fazer a seguinte seqüência:

# useradd -g estacoes -s /bin/false -d /home/usuário usuário
# smbpasswd -a usuário

Nisso ele vai pedir pra inserir uma senha, essa senha será a senha para se usar para logar na rede.

Configurando Inicialização

Essa parte é um pouco chatinha, mas vamos lá, mão na massa.

Para que o samba seja inicializado “automagicamente” quando o servidor for ligado ou reinicializado por conta de queda de energia ou qualquer outra coisa, insira as seguintes linhas no /etc/rc.local

if [ -f /etc/samba/smb.conf -a X"${samba}" != X"NO" ]; then
if [ X"${smbd_flags}" != X"NO" -a -x /usr/local/libexec/smbd ]; then
echo -n ‘ smbd’; /usr/local/libexec/smbd ${smbd_flags}
fi
if [ X"${nmbd_flags}" != X"NO" -a -x /usr/local/libexec/nmbd ]; then
echo -n ‘ nmbd’; /usr/local/libexec/nmbd ${nmbd_flags}
fi
fi

Pra ele rodar com a flag -D, insira no /etc/rc.conf

smbd_flags=”-D”
nmbd_flags=”-D”

Agora vamos Iniciar o samba, pode escolher duas maneiras de faze-lo. Reiniciar o servidor ou mandar esses dois comandos.

# /usr/local/libexec/smbd -D
# /usr/local/libexec/nmbd -D

Pronto, agora ele estara rodando, por exemplo:

# ps aux | grep mbd
root 4638 0.0 1.5 2676 1980 ?? Is 12:29AM 0:00.04 /usr/local/libexec/smbd -D
root 2476 0.0 0.5 2676 592 ?? I 12:29AM 0:00.01 /usr/local/libexec/smbd -D
root 10081 0.0 1.0 1148 1292 ?? Ss 12:29AM 0:00.02 /usr/local/libexec/nmbd -D

Agora, vamos aos testes.

Testando o Servidor

O primeiro teste pode ser feito localmente, usando o smbclient, vamos primeiro definir a senha de root do samba.

# smbpasswd -a root

Agora vamos usar o smbclient para listar os compartilhamentos e infos do servidor

# smbclient -L 127.0.0.1 -U root

deve aparecer algo mais ou menos assim:

# smbclient -L 127.0.0.1 -U root
Password:
Domain=[MINHA-CASA] OS=[Unix] Server=[Samba 3.0.24]

Sharename Type Comment
——— —- ——-
PUBLICO Disk Diret_rio Publico
pchome Disk PC Directories
IPC$ IPC IPC Service (Controlador de Dom_nio Prim_rio (closedbox))
root Disk Diret_rio do Usu_rio
Domain=[MINHA-CASA] OS=[Unix] Server=[Samba 3.0.24]

Server Comment
——— ——-
PDC Controlador de Dom__rio (closedbox)

Workgroup Master
——— ——-
MINHA-CASA

Agora vamos adicionar uma maquina e um usuario no samba, para que possamos inserir essa maquina (Windows) no dominio e logar usando esse usuario.

# useradd -g estacoes -s /bin/false -d /dev/null myhome$
# smbpasswd -am myhome$

Agora vamos criar o usuario

# useradd -m -g estacoes -s /bin/false -d /home/thiago thiago
# smbpasswd -a thiago

Obs.: A opção -m ja vai criar a home na execução do comando.

Agora vamos inserir a maquina windows que se chama winteste no dominio.

win-dominio.jpg

Caso não saiba como fazer, siga o artigo de nosso companheiro srf
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1643

Instalando e configurando o Clamav

Apos o samba estar funcionando corretamente, vamos agora instalar o clamav, para que este possa verificar os arquivos compartilhados e usados pelo windows e assim evitar que tenhamos problemas com virus na rede. Uma grande mão na roda isso.

Vamos instala-lo via ports mesmo.

# cd /usr/ports/security/clamav
# make install

Depois de instalar ele, vamos agora adicionar a função para escanear arquivos arj e rar. Basta seguir as instruções no final da instaçalão:

— clamav-0.90.3 ——————-
Edit /etc/clamd.conf and /etc/freshclam.conf
to use ClamAV.

Use freshclam to install an up-to-date virus signature database.

If you want to scan RAR(2.0) and/or ARJ archives, you have to manually
build and install the archivers/unarj and archivers/unrar ports.

Vamos lá

# cd /usr/ports/archivers/unarj
# make install

# cd /usr/ports/archivers/unrar
# make install

Depois disso, vamos configurar o Clamav e atualiza-lo.

Edite o arquivo /etc/clamd.conf com seu editor preferido.

# Comment or remove the line below.
Example
- nessa linha comente o Example, colocando um # na frente dele.

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
# Default: disabled
#LogFile /var/log/clamd.log
- Aqui remova o # da frente do LogFile para que o log possa ser gerado e a gente curiar depois.

Agora vamos editar o FreshClam para que possa ser feita a atualização.

Edite o arquivo /etc/freshclam.conf com seu editor preferido.

- Basimente basta comentar a linha Example, que segue:
# Comment or remove the line below.
Example
- Comentando ele, ja vai conseguir atualizar mas recomendo uma leitura no arquivo de configuração para que você ative apenas o que deseja da forma que deseja.

Agora vamos atualizar o clamav.

# freshclam

Pronto, seu clamav vai estar atualizado. Agora para rodar ele, use o comando:

# clamd

Para colocar ele iniciando quando a maquina for ligada, altere o arquivo /etc/rc.local, colocando a linha

/usr/local/sbin/clamd

Pronto, ele estara rodando. Agora vamos instalar o samba-vscan e configura-lo.

Instalando e configurando o Samba-vscan

Antes de instalar o samb-vscan, vamos instalar os seguintes pacotes:

- autoconf
- libmagic
- gmake
- bzip2

Provavelmente um ou outro já devem estar instalado, mas para ter certeza vamos fazer um por um.

# cd /usr/ports/devel/autoconf
# make install

# cd /usr/ports/devel/libmagic
# make install

# cd /usr/ports/devel/gmake
# make install

# cd /usr/ports/devel/bzip2
# make install

Feito isso, vamos agora fazer uma pequena adaptação no source do samba para que tudo corra bem, leia, adaptação, nada de gambiarras… hehehehe

Edite o arquivo:

/usr/ports/net/samba/w-samba-3.0.24/samba-3.0.24/source/autogen.sh

Levando em conta que a versão do samba é a 3.0.24.

TESTAUTOHEADER=”autoheader autoheader-2.53 autoheader2.50 autoheader-2.59″
TESTAUTOCONF=”autoconf autoconf-2.53 autoconf2.50 autoconf-2.59″

Depois disso, vamos rodar o make proto no source pra podermos conseguir instalar o samba-vscan.

no diretorio /usr/ports/net/samba/w-samba-3.0.24/samba-3.0.24/source/

rode:

# ./autogen.sh
# ./configure
# make proto

Agora vamos baixar o samba-vscan mais novo. No link abaixo:

http://www.openantivirus.org/projects.php#samba-vscan

# ftp http://ufpr.dl.sourceforge.net/sourceforge/openantivirus/
samba-vscan-0.3.6b.tar.bz2
# bunzip2 samba-vscan-0.3.6b.tar.bz2
# tar xf samba-vscan-0.3.6b.tar
# cd samba-vscan-0.3.6b
# ./configure –with-samba-source=/usr/ports/net/samba/w-samba-3.0.24/
samba-3.0.24/source/
# gmake clamav
# cp vscan-clamav.so /usr/local/lib/samba/vfs/
# cp clamav/vscan-clamav.conf /etc/samba/

Agora sim. Instalado, vamos configura-lo.

Edite o arquivo /etc/samba/vscan-clamav.conf com seu editor favorito.

Altere o seguinte:
; where to put infected files – you really want to change this!
quarantine directory = /var/clamav/quarantine
- assim ele copia pro quarantine os arquivos possivelmente infectados.

; socket name of clamd (default: /var/run/clamd). Setting will be ignored if
; libclamav is used
clamd socket name = /tmp/clamd
- Assim o socket sera encontrado, senao vai dar erro e acesso negado nos arquivos ja criados.

Agora vamos editar o smb.conf e adicionar as linhas seguintes para que ele seja ativado quando o samba iniciar.

Se quiser que o vscan roda para todos os compartilhamentos (o que demanda ter uma boa maquina) coloque as seguintes linhas no global. Caso contrario, coloque apenas no compartilhamento que deseja que o vscan fique escaneando.

vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

Assim, podemos verificar seu funcionamento.

# tail -f /var/log/messages

Deve aparecer a seguinte mensagem quando alguem acessar algum arquivo ou cria-lo.

Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: samba-vscan (vscan-clamav 0.3.6b) registered (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org
Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: samba-vscan (vscan-clamav 0.3.6b) connected (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org
Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: INFO: connect to service PUBLICO by user root

Pronto.

Samba-vscan funcionando.

Alternativas para uso do Clamav

Podemos também usar outras alternativas para usar o clamav e assim eliminar os virus que aparecerem em nosso servidor. Como por exemplo agendar no cron para que seja feito varreduras em horarios determinados, por exemplo as 12:00 horas e as 18:00 horas, caso alguém trabalhe até mais tarde, colocamos ele pra varrer no horario apos essa pessoa sair ou então a 00:00.

A sintaxe do clamav para fazer a varredura é:

# clamdscan -r –move=/var/clamav/quarantine /diretorios_para_varrer

Então no cron, pode ficar mais ou menos assim.

# crontab -e

adicionar as linhas

00 00 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer
00 12 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer
00 18 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer

E pronto. A proteção contra virus estara um pouco maior.

Também uma boa ideia é fazer atualizações automaticas todas as noites usando o freshclam. Ficando mais ou menos assim.

00 1 * * * /usr/bin/freshclam 1> /dev/null

Assim todos os dias a 1 hora da manhã ele ira fazer a atualização.

Conclusão

Bom, assim terminamos o nosso artigo. Espero ter correspondido a expectativa criada no inicio do mesmo quando a instalação e configuração.

Qualquer duvida, não hesitem em perguntar.

Agradecimentos

Pessoal do #linuxajuda na irc.freenode.net
Minha namorada que me deixou escrever esse artigo nesse domingo, claro que deixei ela vendo filme, assim nem sentiu minha falta… hehehehe

Sites recomentados e consultados para escrever o artigo:

http://swik.net/Samba
http://swik.net/OpenBSD
http://swik.net/Openbsd+samba

Enfim, tendo em vista que não encontrei nenhum artigo em pt_BR que falassem bem sobre o assunto, resolvi escreve-lo, espero ajudar muita gente e quem sabe aumentar a popularidade do openbsd para outros serviços, senão o de firewall.

Para isso pretendo ir escrevendo mais textos a respeito de OpenBSD e suas incriveis funcionalidades.

OpenBSD
Free, Functional & Secure

Thiago A. dos Santos
thiago[arroba]gmail.com
cvs @ #linuxajuda – irc.freenode.net





Servidor Web com NetBSD (Apache + PHP + MySQL + *)

16 09 2007

Para quem não sabe o NetBSD é o precursor do OpenBSD. Vou contar a historia aqui resumidamente e pelo ponto de vista de alguém que não está muito por dentro.

Começou tudo com o NetBSD, um dos fundadores não muito contente com o rumo tomado pelos demais desenvolvedores do S.O. resolveu sair do projeto e fundou o OpenBSD e nisso o NetBSD continuou nesse rumo e hoje é o que é, roda até em torradeira.

Pra quem quiser saber mais sobre NetBSD, acesse o link:

Iniciando da base em que você já tem o sistema instalado e configurado para o seu uso. Vamos iniciar a instalação dos pacotes.

Instalaremos o MySQL usando o pkgsrc, para isso faça o seguinte:

# cd /usr/pkgsrc/databases/mysql5-server
# make install

Agora é esperar. Dependendo da máquina isso pode demorar, também depende um pouco de conexão, tendo em vista que o pacote do mysql é um tanto quanto grande.

Após concluir a instalação, vamos configurar o mysql.

# mysql_install_db
# chown -R mysql /var/mysql
# mysqld_safe &
# mysql_secure_installation

Usando o script de instalação segura deixará seu banco um pouco mais seguro. As opções básicas são.

  1. Quando perguntar a senha atual apenas aperte enter, pois não tem senha ainda o banco.
  2. Coloque uma senha difícil de ser descoberta.
  3. A maioria das opções default são as melhores opções, aconselho acatar todas.

Agora vamos instalar o próximo pacote…

Agora vamos instalar o php.

# cd /usr/pkgsrc/www/ap-php
# make install

Agora nessa brincadeira ele vai instalar o PHP e o Apache. Só esperar.

Depois que terminar a instalação, vamos instalar o módulo do mysql para o php.

# cd /usr/pkgsrc/databases/php-mysql
# make install

Configurando Apache:

Depois que terminar vamos configurar o apache:

Edite o arquivo /usr/pkg/etc/httpd/httpd.conf.

Adicione as seguintes linhas nos lugares pertinentes:

LoadModule php5_module /usr/pkg/lib/httpd/mod_php5.so
AddType application/x-httpd-php .php

Altere a opção DirectoryIndex no arquivo, adicionando o index.php, ficando assim:

DirectoryIndex index.html index.htm index.phtml index.php

Salve e saia do arquivo.

Configurando php.ini:

Agora vamos editar o php.ini adicionando o suporte ao mysql. Edite o arquivo que se encontra em /usr/pkg/etc/php.ini.

Adicione a linha:

extension=mysql.so

No lugar pertinente. Também edite a opção “short_open_tag = Off” para On, assim você poderá usar as tags <? ?> que no caso no php5 vem desativado por default e assim só funcionara se usar <?php . Tive uma dor de cabeça por conta disso.

Agora salve o arquivo e saia.

Testando

Crie o arquivo de testes:

# echo “<?php phpinfo(); ?>” > /usr/pkg/share/httpd/htdocs/teste.php

Inicie o apache:

# apachectl start

E acesse http://ip-do-servidor/teste.php

Deve aparecer algo assim.

Adicionando mais módulos ao PHP:Para isso basta saber onde entrar e o que instalar no pkgsrc. Muito simples, uma forma rápida de descobrir os módulos que poderão ser adicionados é fazer o seguinte comando:

# find /usr/pkgsrc -iname php-*

Isso vai listar todos os módulos possíveis e também alguns já instalados. Vamos por exemplo procurar mais algum outro banco de dados para o servidor. Faça o seguinte.

# cd /usr/pkgsrc/databases
# ls | grep php-

Deve aparecer algo semelhante a isso:

# ls | grep php-
php-dba
php-dbase
php-dbx
php-filepro
php-ldap
php-mssql
php-mysql
php-odbc
php-oracle
php-pdo
php-pdo_dblib
php-pdo_mysql
php-pdo_odbc
php-pdo_pgsql
php-pdo_sqlite
php-pgsql
php-sqlite

Basta entrar no diretório desejado e digitar “make install” e ele irá instalar os pacotes necessários para adicionar o suporte e ao final irá lhe falar como proceder para ativar o suporte a tal módulo no php.ini.

Vamos dar um exemplo simples, por exemplo, suporte a postresql:

# cd /usr/pkgsrc/databases/php-pgsql
# make install

Quando terminar deve aparecer algo como:

“$NetBSD: MESSAGE.module,v 1.2 2004/11/05 21:50:11 jdolecek Exp $

To enable this module, add the following to /usr/pkg/etc/php.ini:

extension=pgsql.so

and make sure extension_dir points to the dir where pgsql.so is.

Then restart your PHP5-enabled HTTP server to load this module.”

Então só adicionar a linha citada no php.ini e buenas… :D

Adicionando módulos no Apache.

No apache também vai seguir o mesmo roteiro, só que os módulos ficam em: /usr/pkgsrc/www/

Para saber quais usar:

# ls | grep ap2
ap2-auth-ldap
ap2-auth-mysql
ap2-auth-pgsql
ap2-auth-radius
ap2-auth-xradius
ap2-bw
ap2-chroot
ap2-fastcgi
ap2-fcgid
ap2-jk
ap2-perl
ap2-python
ap2-subversion
ap2-suphp
ap2-transform
ap2-xslt2

Escolher o que precisa, instalar e correr para o abraço. Boa sorte.

Bom, assim encerramos nosso pequeno artigo.Espero sanar as dúvidas de todos que tem curiosidade em usar um BSD para servir alguma coisa e não apenas ficar instalando ele pra ficar dando “uname -a” em canais de irc, né Ldap?

hehehehehe

Qualquer coisa, comente, pergunte, mande e-mail.

Leitura recomendada:

Thiago Alves dos Santos aka cvs
cvs @ irc.freenode.net @ #linuxajuda
thiago[arroba]gmail.com





Apache + mysql + php no slackware

3 09 2007

Bom primeiro vamos baixar os softwares necessários.

http://ftp.unicamp.br/pub/apache/httpd/httpd-2.2.8.tar.gz

http://br2.php.net/distributions/php-5.2.4.tar.gz

O mysql mantivemos a versão que já vem com o nosso slackware.

1- Compilando o Apache

Caso seu sistema tenha o apache e o php instalado remova-os e compile as novas versões. Se você já tiver as novas versões poderá manter ou mesmo versões mais antigas, isso vai de sua preferência. Lembre-se também se você estiver mechendo em um servidor de produção faça sempre backups das bases do mysql, das suas pages assim como alguma configuração especifica do apache e do php.ini. Como mencionado vamos remover o apache e php caso exista no sistema:

# removepkg httpd

# removepkg php

# removepkg mod_ssl

# rm –rf /etc/apache

Feito isso podemos começar:

# tar jxvf httpd-2.2.8.tar.bz2

# cd httpd-2.2.8

# ./configure –enable-so –prefix=/etc/apache –enable-ssl –with-ssl=/usr/include/openssl

# make

# make install

# cp /etc/apache/bin/apachectl /usr/bin

# apachectl start

Comentando as opções:

enable-so = Carrega os módulos na inicialização ou na reinialização do Apache;

enable-ssl = Ativa suporte a SSL;

A opções para compilação são inumeras… Usei apenas 2 que são uteis para a maioria dos casos.

2- Configurando o MySQL

O MySql no slackware pode ser instalado já com o sistema ou posteriormente tanto utilizando os pacotes .tgz como utilizando os sources.Supondo que já temos ele no sistema vamos apenas deixá-lo funcional.

# cd /usr/share/mysql/
# cp my-small.cnf /etc/my.cnf
# mysql_install_db
# cp mysql.server /etc/rc.d/rc.mysqld
# chmod a+x /etc/rc.d/rc.mysqld
# chown mysql:mysql /var/lib/mysql/ -R

# /etc/rc.d/rc.mysqld start
# mysql_secure_installation

Vamos receber as seguintes informação. Vamos respondendo tudo de acordo como está em negrito:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALLMySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH
STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current password for the root user. If you’ve just installed MySQL, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.Enter current password for root (enter for none):como nao colocamos senha apenas dê um enter
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL root user without the proper authorization.Set root password? [Y/n] [Y]Y
New password: (Digite aqui aquela que será a sua senha)
Re-enter new password: (Redigite a senha)
Password updated successfully!
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
Success!

Com o MySql pronto e funcional vamos apenas configurar o local dos nossos logs para isso edite o my.cnf em /etc e adicione a seguinte linha:

[mysqld]

log=/var/log/mysql/mysqld.log

Veja que temos o [mysqld] e vamos apenas colocar o local dos nossos logs. Agora vamos criar o diretório dos logs e dar permissão:

# mkdir /var/log/mysql
# chown mysql:mysql /var/log/mysql# killall mysqld
# /etc/rc.d/rc.mysqld start

# cat /var/log/mysql/mysqld.log

/usr/libexec/mysqld, Version: 5.0.37-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /var/run/mysql/mysql.sock
Time Id Command Argument

Com isso já temos o nosso MySql rodando e totalmente funcional.Vamos partir para o PHP.

3- Compilando o PHP

Agora vamos compilar o nosso PHP:

# tar jxvf php-5.2.4.tar.bz2

# cd php-5.2.4

# ./configure –with-apxs2=/etc/apache/bin/apxs –prefix=/etc/php5 \

–with-mysql –with-pear –with-gettext –with-iconv –with-gd \

–with-openssl –enable-ftp –with-mhash

# make

# make install

Agora copie o php.ini para /etc

# cp php.ini-dist /etc/php.ini

 

Verifique se o httpd.conf tem as seguintes linhas. Se não tiver vamos adicioná-las:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php .phtml

DirectoryIndex index.html index.htm index.php

Agora crie um arquivo com o nome index.php contendo o seguinte conteúdo:

<?php

phpinfo();

?>

# apachectl restart

Agora podemos acessar nosso browser preferido e conferir o suporte do nosso apache e php:http://seu_site/index.php ou http://localhost/index.php

Pronto…. Com isso já temos nosso apache + mysql + php no slackware…

Testado com sucesso no slackware 10.2, 11 e 12.Vale lembrar que as opções na compilação são inumeras.

Att.Cleison Monteiro

Apocalipse @ irc.freenode.net