PostgreSQL e Linux

December 5th, 2009

Cada vez mais aprecio o PostgreSQL. A base de dados é, efectivamente, muito capaz e poderosa, e felizmente não transporta a barreira das licenças que alguns outros sistemas de base de dados portam. Não é que não os justificam, e empresas que compram licenças desses sistemas reconhecem a sua importância e valor. Mas o PostgreSQL é efectivamente uma base de dados bastante simpático e funcional com um custo reduzido.

Algo que considero muito útil no Postgre é ser multi plataforma. Windows, Linux e MAC.. é escolher, que o PostgreSQL corre. O PgAdminIII, aplicação de gestão da base de dados com GUI também corre em Windows e Linux. Ainda não testei comunicação entre base de dados e servers aplicacionais suportando SOs diferentes, mas penso que é evidente o correcto funcionamento e comunicação.

Hoje estou a instalar um server em Linux, para suportar o JIRA.Tive dificuldades com o Confluence (coisa estranha de má tradução entre IIS e Tomcat dos endereços das páginas), e decidi mover as aplicações de gestão para um server dedicado. O Ubuntu é a minha “flavor” preferida (é todo o conceito…). As aplicações da Atlassian utilizam Tomcat, e tem versões que portam o serviço com elas. Pensei em o server como Tomcat server (o Ubuntu tem essa opção), mas decidi seguir a recomendação do fabricante e deixar as aplicações correr em instâncias dedicadas. O que instalei por defeito foi o clássico LAMP e a base de dados PostgreSQL.

No entanto, o PG n funciona por si só sem uma ligeira configuração. No Windows, é realizado na instalação com o Wizard, mas no Linux é mais simples / imediato com umas linhas de comando. Naturalmente o processo está mais que documento na web, mas nunca é demais reescrever.:

Para começar, duas instruções para instalar o PostgreSQL (caso n tenha sido usado a opção de instalação no processo de instalação do SO):

sudo apt-get install postgresql
sudo apt-get install pgadmin3

O primeiro pode ser ignorado caso a instalação tenha sido efectuada na instalação do SO. A segunda é um GUI de administração muito útil.

Segue então a configuração, sendo necessário inicializar o utilizador base e a password para o mesmo:
sudo -u postgres psql postgres
\password postgres

e introduza a password desejada para o utilizador postgres.

Outras coisas que podem ser feitas:
criar uma bd:> sudo -u postgres createdb [nome da base]
iniciar o serviço:> sudo /etc/init.d/postgresql-8.4 [start | stop | restart]

Finalmente, há mais dois detalhes importantes a resolver. O Postgre é, por defeito, bastante restriivo no acesso, permitindo acesso apenas por conexões vindas da própria máquina. Para aceder remotamente, primeiro deve permitir que os utilizadores da base possam autenticar-se na base na rede (caso queira esta funcionalidade). É necessário acrescentar o seguinte ao ficheiro /etc/postgresql/8.4/main/pg_hba.conf


# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all x.x.x.0 255.255.255.0 md5

onde x.x.x.0 é a definição da rede (p.e. 10.0.0.0 ou 192.168.0.0).

Para que seja possível acesso externo ao servidor de base de dados, e necessário editar /etc/postgresql/8.4/main/postgresql.conf, retirando o comentário à linha #listen_addresses = ‘localhost’
e sustituír ou acrescentar ao ‘localhost’ o ‘*’ para todas as conecções, ou uma gama de IPs para limitar. P.e.:
listen_addresses = ‘*,localhost’

E já vai bem encaminhado :D

Configurar o gateway no Linux

September 14th, 2009

Estive preso com um problema de configuração do LAMP server – conseguia conectar-me às interfaces web através da rede interna, mas não pelo exterior (ou domínio), usando o NAT do router para encaminhar correctamente. Na própria máquina, conseguia pingar a endereços internos mas não a externos. O problema? Ao mudar de um endereço IP dinâmico (DCHP) para um estático, o gateway não ficou definido. Confirmo na lista dada pelo comando “route”, que o gateway não existe. A solução?

route add default gw 192.168.0.1 eth0

ou seja, adicionei o endereço do router como default gateway à lista de rotas para a placa de rede eth0.

Alguma ajuda daqui: http://serverfault.com/questions/65206/fowarding-http-to-lamp-server-through-router-nat
e daqui: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch03_:_Linux_Networking

Ubuntu, revisited

September 13th, 2009

Este site tem sido alojado nos últimos 4 anos num serviço prestado pela HostingPortugal. Não tenho razão especial de queixa, que não tem havido qualquer conflito. A única coisa que não gosto é do uso do Helm, como gestor de conta, mas dado que tinha escolhido uma conta Windows (para servir ASP.NET), não tive como fugir a ele. Versões mais recentes do painel parecem interessantes, mas mesmo assim deixa a desejar. Estou demasiado habituado a usar a interface do Windows Server para gerir, que aquilo acaba por saber a pouco. Também sou um “control freak” e por isso sinto a limitação.

Decidi então alojar localmente a minha página. Sei que há alguns riscos inerentes à mudança, e mesmo de capacidade de servir (com o volume de tráfego que tenho, não deve ser problemático). Estou a reabilitar uma máquina para servir esta função. Tenho um servidor Windows activo internamente, mas não quero que seja o web-server, pelo menos para já. Gostava de ter o webserver numa máquina separada, e neste caso, visto que a página actual é puramente PHP, vou experimentar um LAMP server, com base no Ubunto Server. Mais tarde, se não ficar satisfeito, sigo o caminho do Windows Server, mas é pouco provável.

Como é habitual quando inicio uma instalação no Linux, tendo a visitar um post antigo: Instalação de Ubuntu Server 8.10. Tem sido um guia base para introduzir um GUI nas edições de servidor, e que fica leve. Não é que a panóplia de aplicações presentes no Gnome ou KDE não sejam interessantes, mas não necessito de quase nada daquilo, e é escusado ocupar o espaço. O comando base usado foi:

sudo apt-get install xorg xfce4 gdm synaptic firefox ntfs-config thunar-volman

Neste caso adicionei o gdm para ter o login do gnome e permitir que algumas aplicações como o synaptic aparecessem correctamente nos menus. Também, adicionei 3 itens mencionados no blog Disambiguation, que são:

# xfce4-goodies (alguns add-ons uteis ao xfce)
# xfce4-mcs-plugins-extra (permite adicionar aplicações ao arranque)
# xfce4-taskmanager (permite ver as aplicações em execução, como no windows)

De seguida, para uma administração remota e web do servidor, instalei o Webmin, seguindo os passos em ubuntugeek.com:


$ sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl libmd5-perl

$ wget http://garr.dl.sourceforge.net/sourceforge/webadmin/webmin_1.441_all.deb

$ sudo dpkg -i webmin_1.441_all.deb

O Webmin tem uma série de opções bastante interessantes, com a administração do server, das opções de rede na mesma (através da qual fixei o IP de rede interna do server), das diversas bases de dados, backups e cron jobs, até tem uma interface para a shell (se bem q uma ligação por SSH será mais eficiente, mas é bom, mesmo assim). Na verdade, com o Webmin, o desktop é praticamente desnecessário, nesta aplicação. Se realmente não for, eliminarei o passo numa futura instalação para este fim.

Agora resta transferir a instalação do Wordpress para o server, e mapear o DNS e NAT como deve ser para apontar correctamente ao servidor LAMP.

ACTUALIZAÇÃO:
porque a estrutura de endereços no sourceforge sofreu uma alteração (penso eu), o endereço no comando wget é diferente. deve então experimentar:

wget http://switch.dl.sourceforge.net/sourceforge/webadmin/webmin/1.500/webmin_1.500_all.deb

ou ainda

wget http://dourceforge.net/projects/webadmin(files/webmin/1.500/webmin_1.500_all.deb/download

Instalação de Ubuntu Server 8.10

November 2nd, 2008

Dando continuidade ao post “Construir um ubuntu ( ou uma distribuição própria, por assim dizer..)” que escrevi há dias, decidi escrever aqui um passo-a-passo de como efectuar uma possível configuração, mínima, e com ambiente gráfico.

Então para isso vou seguir com o Ubuntu-server, que me interessa (e instala alguns pacotes na qual tenho interesse, como o servidor LAMP), e vou adicionar um ambiente gráfico e um conjunto de aplicações que considero necessário para o meu uso. Vou efectuar esta instalação numa máquina virtual do VirtualBox, que prefiro a outras aplicações de virtualização como o VMWare.

Para começar, criei uma nova máquina virtual para Ubuntu com 756MB de RAM e um novo disco de 8GB, dinamicamente expansível. Antes de iniciar, é util efectuar uma operação que resulta das características do novo kernel. Porque o kernel 2.6 do linux tem algumas dependências do processador, no Virtualbox, é necessário activar o suporte à virtualização e o PAE (extensão de endereço físico). Para tal, depois de criar a maquina virtual,com o botão direito selecciona Definições -> Geral -> Avançado e seleccione “Activar VT-x / AMD-V” e “Activar PAE/NX”, como mostra a figura:

Se não o activar, ao reiniciar a máquina após a instalação, irá aparecer uma mensagem de panico do kernal:

this kernel requires the following features not present on this CPU
pae
Unable to boot. Please use a kernal apropriate for your CPU

Activando o PAE, esta situação desaparece, e naturalmente o hardware usado tem de suportar a função. Esta solução esta descrita no site Tombuntu.

A máquina está pronta para instalar o ubuntu-server, faltanso apenas carregar (montar) o ISO, para a instalação. Este pode ser efectuado novamente nas definições da máquina virtual, em CD/DVD ROM, escolhendo uma imagem ISO do server (ou então o alternate CD que tb tem imensas opções de instalação, sem instalar o sistema ubuntu completo com os programas).

A instalação é bastante “directa”, bastando seguir os passos descritos. E até é um processo bastante rápido. Basta seguir os passos (é quase sempre “next”).  Ao nível do disco e partições, escolhi “guiado – usar disco inteiro e … LVM”, mas podes utilizar o que é mais conveniente para o teu teste. Neste caso não tinha necessidade de qualquer outro tipo de alteração.

No diálogo de selecção de software, escolhi adicionar o servidor LAMP, Sevridor OpenSSH, e host de Maquinas virtuais. A esolha vem de algumas situações que quero testar. Ao fim de cerca de 10 minutos, o SO está instalado e pronto a utilizar (quase). Resta desmontar o ISO e reiniciar a VM.

Naturalmente, ao iniciar, não teremos nenhum ambiente gráfico. O Ubuntu Server é essencialmente “shell-based” e dependente da linha de comandos. Vamos então adicionar o ambiente gráfico para termos um ambiente mais “comun” e agradável.

No post “Construir um ubuntu ( ou uma distribuição própria, por assim dizer..)” mostrei como adicionar o XFCE, como gestor de janelas. Vou continuar a usar o XFCE para este exemplo. Já testei o GNOME, mas foram demasiados elementos a serem introduzidos para o meu gosto, e o XFCE é levezinho e rápido, o que é optimo.

Então no terminal deve ser exectutado o seguinte comando para actualizar a lista de repositórios da instalação:

sudo apt-get update

Agora segue a instalação de alguns pacotes necessários e uteis:

  • xorg - o sistema gráfico para o linux e que permite ter um ambiente gráfico. Inclui bibliotecas, fonts, suporte para imagens,  e afins do x-server; (Down: 32.1 MB / Espaço Ocupado: 93MB)
  • xfce4 - o gestor de janelas do XFCE (D: 44MB / EO: 177MB)
  • synaptic - gestor de pacotes e de instalação de aplicações (D: 13.5MB / EO: 81.5MB)
  • firefox - browser, quase obrigatório incluir, até para poder pesquisar qualquer situação. A instalação inclui o ubufoz que permite adicionar extensões através do synaptics. (D: 23MB / EO: 84,5MB)
  • ntfs-config - o ubunto tem suporte para o sistema de ficheiros NTFS integrado (através do ntfs-3g) mas para poder escrever correctamente para lá, esta aplicação permite activar a opção de escrita. (D: 45kB / EO: 442kB)
  • thunar-volman – thunar é o explorador de ficheiros do XFCE. O thunar-volman permite uma melhor gestão e integração de discos amovíveis, como pens e afins. Importante para a escrita em NTFS. (D: 73,1kB / EO: 471kB)
  • virt-manager - gestor gráfico de maquinas virtuais baseado no KVM, que foi instalado no server. (D: 1.5MB / EO: 7.3MB)

Para isto lanço o comando:

sudo apt-get install xorg xfce4 synaptic firefox ntfs-config thunar-volman virt-manager

ou instalar cada pacote individualmente, de pretender algum controlo. No mínimo é conveniente ter o xorg, xfce4 e o synaptic, permitindo instalar o resto através do synaptic.

Instalado, resta iniciar o ambiente grafico escrevendo o comando

startx.

Executando a aplicação gráfica de adicionar e remover programas (o menu surge clicando com o botão direito do rato no desktop, e a aplicação está no menu “sistema”). podemos adicionar mais algumas aplicações, nomeadamente:

  • disk analyser - aplicação gráfica com informação sobre o disco e espaço ocupado, com base no Baobab e algumas bibliotecas do Gnome
  • gedit - bloco de notas do GNOME, que estou habituado a usar.
  • monitor de sistemamonitor do sistema, CPU e memória, semelhante ao gestor de tarefas do Windows.
  • 7zip - pacote para ver e abrir ficheiros compactados, também existente para o Windows. (a alternativa gratuita ao WinZip e WinRar).

Uma analise efectuada executando o analisador de disco (Menu -> Accessorios -> Analisador de Utilização do disco), podemos ver o estado da instalação do disco:

São utilizados cerca de 1.4GB do disco, onde cerca de 450MB são programas novos instalados, e 188MB são ficheiros na cache do programa apt (/var/cache/apt), que podem ser removidos se desejados.

Num próximo post, irei referir a configuração do ambiente gráfico, do aspecto, menus e afins. O XFCE é efectivamente interessante e eficiente.

BackupPC

August 13th, 2008

Em tempos, neste blog, inclui uma série de posts dedicados a backups. Uma das soluções que mencionei foi o BackupPC, uma aplicação Linux que permite efectuar backups de maquinas em Linux, Windows e até MAC, via a rede.

Durante o último ano tive uma máquina recuperada a funcionar na Misericórdia local com a aplicação, a efectuar backups dos dados das várias estações de trabalho e servidores. Infelizmente a minha primeira configuração não resultou completamente. Parte do problema foi a configuração efectuada ao nível dos discos no Linux – o mount point do disco para os backups não deveria estar bem configurado, e com qualquer reboot da máquina, o disco não era montado e o serviço de backup não arrancava. Parte do problema deveria ser do próprio BackupPC a funcionar com o samba (um serviço do Linux que permite comunicar/partilhar com o Windows) – não conseguia copiar os dados das pastas Document and Settings correctamente. Decidi actualizar o Linux e refazer a configuração, desta vez utilizando o rsync para efectuar a comunicação.

Como disse, a máquina é um PC recuperado – um Pentium 4 a 1.6Ghz com 512MB de RAM, um disco de 20GB + 500GB, e uma placa de rede 1GB. Funciona bem com o Ubuntu (desktop) em cima (escolhi a versão desktop pela interface gráfica). Desta vez, na instalação, decidi acertar os pontos de montagem. O disco de 20GB foi divido em três – 10GB montado em / em ext3, 5GB montado em /home, também em ext3 e os restantes 5GB como swap. Para finalizar, montei o disco de 500Gb em /var/lib/backuppc (a pasta onde o BackupPC armazena os dados) no sistema de ficheiros ReiserFS, que tem journaling e aparenta ser bom com ficheiros pequenos. Finalmente, um dos problemas originais ficou resolvido – tendo configurado os pontos de montagem logo na instalação, o segundo disco é montado correctamente no arranque, e o serviço do BackupPC pode arrancar no arranque, correctamente, também.

Com o Ubuntu a funcionar e actualizado (8.04 + actualizações), instalei o BackupPC via o Synaptics. Surgiu um problema com a configuração do BackupPC no Apache, que foi facilmente resolvido – tive de trocar a configuração de Apache para Apache2. Um tutorial simples pode ser visto no How To Forge.

Nota 20090206- Caso surgam problemas no acesso à página (ou seja se o apache n encontrar a página do backuppc, pode ser necessário executar mais um passo: copie e execute as seguintes linhas, como referido por “Girya” nos foruns do Ubuntu:

sudo chmod 777 /etc/apache2/apache2.conf
sudo cat /etc/backuppc/apache.conf >> /etc/apache2/apache2.conf
sudo chmod 644 /etc/apache2/apache2.conf
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/apache2 start

I was having the same problem as you. I don’t why backuppc won’t auto configure apache2 but I found this in a post by searching backuppc. it was posted by bgearig. It adds the required lines to the apache config file so apache can find backuppc.

A segunda parte é (ou era) a mais complexa – a da configuração do BackupPC. Felizmente o BackupPC cresceu a nível de funcionalidade e já não é necessário editar os ficheiros de configuração à mão – o backoffice web agora incluí formulários de configuração onde podemos indicar os valores dos parâmetros gerais (como o modo de transferência – rsync/rsyncd/samba), a partilha base de backup, o user e pass para o backup, periodicidade de backups, etc. Também existe formulários para efectuar a configuração de parâmetros para máquinas individuais (fazendo o overide dos gerais).

Desta vez, na configuração decidi utilizar o rsync como método de transferência. O rsync é nativo ao Linux para transferência de ficheiros, mas existe um projecto chamado cygwin que inclui o rsync a funcionar em Windows. E pelos vistos o rysnc é melhor e mais eficiente que o samba na transferência de ficheiros. O cygwin-rsync pode ser obtido no Sourceforge do BackupPC, já quase quase configurado. O único “mal” de o rsync é que é necessário instalar/configurar em cada máquina. Mas correctamente gerido, é até um processo rápido.

Um óptimo tutorial para a configuração está em http://gerwick.ucsd.edu/backuppc_manual/backuppc_winxp.html. Ele indica uma forma correcta de instalar o rsync, que fica a trabalhar como serviço no Windows. Basta copiar os ficheiros para a pasta C:\rsyncd , editar o ficheiro .secrets com o user/pass e o .conf com a informação da máquina host permitida e as pastas (ou drives) a transferir, e iniciar o serviço. Por defeito, o ficheiro indica a pasta c:\Document and Settings como uma das configurações (“docs”)e o C:\ como a outra (“cDrive”). Nas maquinas onde havia mais que um disco, adicionei um “dDrive”. Criei tb um ficheio .bat na pasta com o conjunto de comandos para adicionar os serviços:

cd \rsyncd
 cygrunsrv.exe -I rsyncd -e CYGWIN=nontsec -p c:/rsyncd/rsync.exe -a "--config=c:/rsyncd/rsyncd.conf --daemon --no-detach"
sc start rsyncd

Assim, bastava copiar a pasta para cada máquina, adicionar info aos .conf, caso necessário, e executar o .bat para iniciar o serviço. Caso houvesse firewall a funcionar, tinha de abrir uma excepção para o rsync que utiliza a porta 873. Simples!

A minha tarefa ficou bem mais simples desta forma. No BackupPC, adicionei cada uma das máquinas (à medida que ia instalando o rsync) na lista de Hosts. A parte do Xfer geral tem – rsyncd como método de transferência; “cDrive” e “docs” como partilhas base, o user e pass de acesso e a definição do porto de acesso. Caso a máquina necessitasse, adicionava a partilha “dDrive” como override para a máquina. Tudo no backoffice web. :D

E agora sim, tenho o os documentos a serem copiados correctamente, podendo preservar correctamente os ficheiros de trabalho.

NOTA: Em máquinas Vista, convém correr o .bat na linha de comandos iniciado como Administrador…