Bloco de notas

terça-feira, 16 de abril de 2013

Instalacao e configuracao de um servidor PXE em CentOS 6
1. Instalar CentOS 6 :
- Language: English US (ou Português..)
- Keyboard: pt-latin1
- Network: disable IPv6 - OPCIONAL
… …
- Preencher hostname: por exemplo pxeserver.mch.moc.sgps
- Escolher fuso horário: picar opção System clock in UTC
- Introduzir a password para root (e não a esquecer de preferência)
- Particionar o disco: pode ser em automático
… ...
- Escolher a opção “Basic server” e customizar mais tarde
- Ir buscar um café enquanto instalam os 607 pacotes instalem...

2. Instalação, update e configurações :
- Preparar ligação ao proxy se necessário:
scp -pr hostname:/usr/local/share/ntlmaps /usr/local/share/
vi /usr/local/share/ntlmaps/server.cfg (PREENCHER USER)
python main.py (PREENCHER PASSWORD) + CTRL-Z
bg
export http_proxy=http://127.0.0.1:5865
- Atualizar o sistema:
yum update
- Instalar pacotes adicionais:
yum install httpd dhcp tftp-server syslinux system-config-kickstart gpxe-roms gpxe-bootimgs -y
- Desativar firewall:
system-config-firewall-tui (DESATIVAR FIREWALL)
- Copiar os ficheiros de configuração/imagens de boot/menu do PXE:
scp -pr dsipxe.mch.sonae.pt:/tftpboot /
- Copiar e alterar a configuração do servidor DHCP:
scp -p dsipxe.mch.sonae.pt:/etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf
ln -s /etc/dhcp/dhcpd.conf /etc/dhcpd.conf
vi /etc/dhcpd.conf :
    1) ALTERAR O IP do PXE - de 10.128.131.75 para o IP do novo servidor
    2) ALTERAR OS IPs alocados ao DHCP - TÊM DE ESTAR RESERVADOS PARA A REDE EM CAUSA:
range 10.128.131.76 10.128.131.77
/etc/init.d/dhcpd restart
chkconfig dhcpd on
- Configurar o serviço TFTP:
vi /etc/xinet.d/tftp ( CONFIRMAR ISTO: disable = no, server_args = -s /tftpboot )
chkconfig tftp on
/etc/init.d/xinetd restart
- Limpar permissões SELINUX senão nada vai funcionar :
restorecon -Rv /tftpboot
- Criar o ficheiro de configuração do menu PXE para a rede correta se necessário:
    No caso da rede 10.128.131.x o ficheiro de configuração do menu do PXE é :
        /tftpboot/pxelinux.cfg/0A8083 (0A = 10; 80=128; 83=131 em hexadecimal)
- Reboot
- Rezar e testar numa máquina ligada à mesma rede..

sexta-feira, 1 de fevereiro de 2008

quinta-feira, 31 de janeiro de 2008

Criar um túnel SSH para um serviço remoto através da linha de comando

Pois, sou um veterano de Linux, mas a triste realidade é que a minha rotina diária continua a correr sobre um portátil com Windows XP.

Normalmente utilizo o Putty para gerir os meus acessos remotos por SSH, e recorro frequentemente aos túneis para aceder a serviços remotos que se encontram atrás de firewalls.
Mas estou esta manhã a preparar software para instalar num servidor e para tal utilizo Linux (Ubuntu 7.10 em dual boot no portátil), e tive necessidade de efectuar uma ligação remota a um servidor através de túnel SSH, coisa que nunca tinha feito através da linha de comando, mas que é extremamente simples, por isso aqui fica a sintaxe:

[localhost]$ sudo ssh -L 8080:www.hostname.com:80 user@www.hostname.com

A porta 8080 é a porta local, a 80 é a remota e www.hostname.com é o servidor a que queremos ligar.

quarta-feira, 9 de janeiro de 2008

Windows Live Writer

Estou a escrever este post no Windows Live Writer da M$, assim à laia de 'test drive'... para quem não sabe, é um software de download gratuito, destinado à edição em blogues. Assim à primeira vista parece 5 estrelas:

image

Acho que desde 2006 que não testo este tipo de software da MS. Uso regularmente o Office 2007 (Word e Excel, excelentes), e com menor frequência o Visual Studio 2005 e agora o 2008 (excelentes também). Aliás, agora que penso nisso, até acho que a Microsoft produz excelente software.. desde que não sejam sistemas operativos.. eheh!

Vou também aproveitar para testar o Windows Live Mail e o Windows Live Spaces, para comparar a 'oferta' com a do nosso querido Google (yes, I'm a Google fan, so what?). Quem ainda não experimentou a integração dos serviços do Google, não sabe o que perde... Search, Gmail, Docs, Calendar, Maps, Photos, etc... excelente, especialmente o Gmail e o Calendar.

Uma possível desvantagem do Google é que a interface principal com a maioria dos seus serviços é o browser, e para ser honesto, mesmo com o advento da "Web 2.0", e por muito AJAX que metam para ali, parece-me que o browser não consegue substituir com eficácia a facilidade e agradabilidade de uma interface gráfica tradicional.

terça-feira, 8 de janeiro de 2008

Ligação a servidor Oracle a partir de RHEL4 ou CentOS4 sem recompilar Apache/PHP

Sumário: Configuração de uma Ligação ODBC a servidor Oracle 10 a partir de servidor Linux RHEL4/CentOS4.


Há cerca de três semanas colocou-se-me a necessidade de ligar a um servidor Oracle para depositar dados a partir de uma aplicação em PHP (PHP 5.2.x mais precisamente, mas será igual para PHP4).
Após percorrer vários fóruns e blogs rapidamente cheguei à conclusão que todas as formas de utilizar um driver Oracle de forma nativa em PHP envolviam a recompilação do Apache e do PHP, situação a evitar, do meu ponto de vista, por "quebrar" futuras actualizações do sistema via yum já que os RPMs desses pacotes teriam de ser desinstalados e substituidos por versões compiladas manualmente a partir da fonte. Também não estava interessado em manter uma infra-estrutura completa de gcc/glibc/headers/etc,etc para compilação, só para conseguir acrescentar ao PHP a capacidade de ligar a uma base de dados remota.

Na semana que passou, a necessidade dessa ligação tornou-se mais premente, e procurei desesperadamente por uma alternativa à solução mais vista. Por sorte ocorreu-me efectuar a ligação através de ODBC (unixODBC mais especificamente), pois é uma forma de ligação ao SQL Server que utilizo em alguns servidores com PHP 5.2 pois nunca encontrei pacotes RPM de php-mssql para essas versões de PHP, que creio não podem ser fornecidas por questões de licenciamento.

A utilização de ODBC em PHP para ligar ao SQL Server funciona bem, se tivermos cuidado com os campos de base de dados com mais de 255 caracteres que causam alguns problemas. Peço desculpas, esta questão seria para outro post, fica aqui apenas a referência.

A ideia era então instalar o suporte a Oracle no servidor, configurar a ligação ODBC e utilizar essa ligação a partir do PHP.

O primeiro passo consiste em instalar o Oracle Instant Client, o SQL*Plus e as bibiliotecas ODBC da Oracle, que são fornecidas gratuitamente pela Oracle (requer registo no site). Optei por instalar as versões em formato RPM para Linux x86, tendo o cuidado para fazer os downloads para a mesma versão (no meu caso optei pela versão 11.x, que era a mais recente, apesar de o servidor Oracle ser 10.x).

A instalação dos pacotes no servidor Linux é feita através do comando:

rpm -ivh


Em seguida é necessário editar o ficheiro /etc/profile e
acrescentar o seguinte (substituir 11.1.0.1 pela versão dos pacotes que instalaram):

export LD_LIBRARY_PATH=/usr/lib/oracle/11.1.0.1/client/lib
export TNS_ADMIN=/etc/oracle

e carregar a alteração do mesmo através do comando:

source /etc/profile

Depois é necessário criar a directoria /etc/oracle e dentro desta o ficheiro tnsnames.ora com um conteúdo semelhante ao seguinte (mas vai sempre depender da implementação Oracle, o melhor será que peçam ao responsável do Oracle um ficheiro tnsnames.ora já existe noutra máquina que seja cliente habitual do Oracle, mesmo que em ambiente Windows):

LIGACAODB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = [endereço de rede do servidor ORACLE])(PORT = [1525 ou porta_tcp_oracle]))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = [nome do serviço no ORACLE])
[OU ALTERNATIVAMENTE:]
(SSID = [nome do SSID no ORACLE])
)
)

Depois executa-se o configurador do odbc da oracle normalmente encontrado em

/usr/share/oracle/
11.1.0.1/client/odbc_update_ini.sh

que vai configurar os ficheiros /etc/odbcinst.ini e /etc/odbc.ini. Cuidado, se já tiverem estes ficheiros com dados definidos, este processo poderá apagá-los, apesar de tal não ter acontecido comigo.

Nota: Tal como anteriormente, o texto 11.1.0.1 deverá ser substituído pela versão dos pacotes que instalaram, caso seja diferente.

Depois é necessário verificar se a biblioteca no ficheiro /etc/odbcinst.ini aponta correctamente para a biblioteca de Oracle instalada, e configurar o ficheiro /etc/odbc.ini para ter a definição correcta do nome da base de dados conforme definido no ficheiro /etc/oracle/tnsnames.ora (neste caso seria LIGACAODB, mas o melhor é usarem se possível o mesmo nome da base de dados real para evitar mais problemas do que os que já naturalmente irão ter...) e definir o nome da DSN que irão utilizar na ligação ODBC a partir do PHP ou outra linguagem qualquer, pois isto vai funcionar para Mono, Python, Ruby, C++ ou outra linguagem qualquer com suporte a ODBC em Linux.

Ah, e não me perguntem por ligações JDBC, não mexo em Java nem com máscara, luvas de borracha e um pau de cinco metros...

Finalmente, é preciso muita coragem para testar a ligação, pois quase garantidamente vão gastar os restantes 95% do tempo a tentar que isto realmente funcione (thanks, Oracle ;-)

O método de teste mais fiável que encontrei é utilizando o sqlplus que já foi instalado através de RPM, pelo comando:

sqlplus utilizadorDB/passwordDB@endereco_rede_servidor_ORACLE/LIGACAODB

Nota: LIGACAODB deve ter o mesmo nome que foi definido no inicio do ficheiro /etc/oracle/tnsnames.ora.

Se a ligação funcionar, podem subsistir problemas com a parte ODBC, mas a partir daí o problema resume-se a verificar a configuração dos dois ficheiros de configuração relativos ao ODBC indicados acima. Se não funcionar... mais uma vez, paciência e coragem são importantes, assim como as mensagens de erro fornecidas pelo sqlplus.

Se utilizarem PHP4/5, recomendo vivamente a biblioteca ADOBD para ligações a base de dados, inclusivamente ODBC. Por outro lado, se usarem PHP5, *não* recomendo a utilização de PDO, seja para o que for...

quinta-feira, 8 de novembro de 2007

Montar uma pasta partilhada do Windows Server 2003 em Linux (Centos 4.x) através de CIFS

A partilha existente funcionava correctamente quando se encontrava num servidor Windows 2000, mas um upgrade para WS2003 traduziu-se nisto:

$ /bin/mount //ipdoservidorwindows/partilha /pasta_local -t cifs -o username=utilizador,password=muitosecreta1234 -o gid=users,dir_mode=0777,file_mode=0777,rw

> error 13 = Permission denied
Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)

Nota: O smbclient dava também erro de autenticação.

Ainda pensei que a solução estivesse em alterar as políticas de segurança do Windows 2003, mas pelo que li, essas alterações são necessárias para o smbfs funcionar, e estou a utilizar o cifs neste caso pois o smbfs já morreu.
Por isso, antes de partir para essa reconfiguração, experimentei especificar o nome de domínio no comando mount e FUNCIONOU...

$ /bin/mount //ipdoservidorwindows/partilha /pasta_local -t cifs -o username=utilizador,password=muitosecreta1234 -o gid=users,dir_mode=0777,file_mode=0777,domain=NOMEDODOMINIO,rw

Nota 2: O smbclient continua a não aceder às partilhas, mesmo especificando o domínio... provavelmente o smbfs requer as alterações às políticas de segurança do Windows para que não seja obrigatória a assinatura digital dos pacotes de dados SMB.

O que eu não tinha era consciência de que o cifs já fazia isto assim tão bem.