Jedi Tux

Atualização do PostgreSQL para 9.2 – Arch Linux

Posted in Dicas, Servers by Fernando Basso on 28 de setembro de 2012

----------------------------------------------------
bash-4.2, vaio@nando, Fri Sep 28 07:37:53 
$PWD="~/"  
$ sudo rc.d start postgresql 
[sudo] password for nando: 
:: Starting PostgreSQL

[BUSY] pg_ctl: could not start server
               Examine the lot output

    vim /var/log/postgresql.log

FATAL:   database files are incompatible with server 6009
DETAIL:  The data directory was initialized by PostgreSQL version 9.1, which
is not compatible with this version 9.2.1.

-------------------------------------------------------------------------------
http://www.postgresql.org/docs/current/static/upgrading.html

NOTA: É possível fazer isso com a versão 9.2, mas como no meu caso eu nem consegui
inicializar o postgresql com ela, fiz com a 9.1 mesmo.

    sudo pacman -U /var/cache/pacman/pkg/postgresql-9.1.4-1-i686.pkg.tar.xz


Primeiro de tudo, salvar o banco de dados atual, com a versão 9.1 do postgresql
rodando:

    pg_dumpall > postgresql_backup_completo.sql

Mas aí teve algo errado, pois ele ficava peding a senha do usuário linha após
linha, e com
    pg_dumpall -U postgres ...

aconteceu a mesma coisa.

vim ~/.pgpass
localhost:5432:db_nando:nando:1234

Mas pra fazer o backup de tudo, temos que deixar o campo que especifica
a database com "*":
localhost:5432:*:nando:1234

http://www.postgresql.org/docs/9.2/static/libpq-pgpass.html
On Unix systems, the permissions on .pgpass must disallow any access to world
or group; achieve this by the command chmod 0600 ~/.pgpass. If the permissions
are less strict than this, the file will be ignored. On Microsoft Windows,
it is assumed that the file is stored in a directory that is secure, so no
special permissions check is made.


(08:29)  gciolli: Should ~/.pgpass allow my to just type psql and connect 
                     without any further iteration?
(08:31)  FernandoBasso: .pgpass only takes care of not having to type the 
                     password, all the other options are handled via environment 
                     variables like PGUSER, etc.

http://www.postgresql.org/docs/9.2/static/libpq-envars.html
Pode ser no bashrc.
export PGUSER=myFavouritePostgresUser
export PGDATABASE=db_nando

Agora já devemos estar podento digitar apenas "psql" pra logar sem
ter que especificar o password nem a database.

--------------------------- // ----------------------- // -----------------

Agora deve funcionar:
    pg_dumpall > postgressql_backup_completo_upgrade_para_9.2

    sudo rc.d stop postgresql (arch linux)

    cd /var/lib/postgres
    mv data bkp_data_9.1

    rc.d start postgresql
    rc.d stopt postgresql

    cp bkp_data_9.1/pg_hba.conf data/
    cp bkp_data_9.1/postgresql.conf data/


    vim data/pg_hba.conf

E seta
    host    all     all    127.0.0.1/32     md5
para
    host    all     all    127.0.0.1/32     trust

por que os passwords e usuários não vão funcionar mais.

    psql -U postgres


Criamos um usuário:

    CREATE ROLE admin WITH LOGIN PASSWORD 'admin' CREATEDB CREATEROLE; 
    ALTER USER admin VALID UNTIL 'infinity';

Colocamos uma senha para o superuser postgres:
    ALTER USER postgres WITH PASSWORD 'serect_passwd';

Recuperar os dados (deu alguns avisos aqui, mas funcionou tudo mesmo assim):

    psql -d postgres -f postgresql_backup_completo.sql

Coloca os 'trust' para 'md5' novamente no arquivo pg_hba.conf.

Reinicia o postgres e já deve estar tudo ok.


For further reading:

https://wiki.archlinux.org/index.php/PostgreSQL#Upgrading_PostgreSQL
http://www.postgresql.org/docs/current/static/upgrading.html



PPH_Info

Posted in Servers by Fernando Basso on 8 de setembro de 2009

Para ver todas as informações de como o PHP está configurado em um determinado server, crie um arquivo .php com o seginte conteúdo:

<?php
    phpinfo()
?>

Então abra este arquivo no navegador. É muita informação!

Apache2 + PHP5 + VirtualHosts no Debian e Ubuntu

Posted in Servers by Fernando Basso on 8 de setembro de 2009

A Causa

Quando iniciei o estudo de PHP me deparei com o fato de que é necessário um server para poder processar o código. Não basta apenas criar o arquivo .php e querer abir no navegador.

Vou demonstrar aqui o que fiz para ter o meu ambiente de estudos PHP. Estes exemplos foram realizados em um Ubuntu 9.10, e em um Debian Lenny.

O que vamos fazer é criar dois VirtualHosts:
http://www.estudo_1.home
e
http://www.estudo_2.home
# –> indica que o comando deve ser executado como root.
$ –> indica que o comando deve ser executado como usuário comum.

OBS: Os seus pcs devem estar configurados com ip fixo.

Instalando Apache2 e PHP5


# aptitude install apache2 php5 libapache2-mod-php5 php5-common php5-cgi php5-mysql

(php5-mysql é o módulo que nos permite acessar o MySQL)

Criando O Usuário E Os Diretórios Necessários

Vamos adicionar um usuário, o qual em sua $HOME ficarão os sites.

useradd -m www -s /bin/bash
passwd www

O primeiro comando adiciona o usuário www com sua pasta $HOME.
O segundo comando é para criar um password para o usuário www.

Agora logue-se como usuário www.

Vamos criar os diretórios necessários para a hospedagem dos nossos dois sites.

$ mkdir -p public_html/estudo_1.home/public
$ mkdir -p public_html/estudo_2.home/public

Crie um arquivo chamado index.html na pasta public dos dois sites com algum conteúdo (html/php) qualquer.

Criando Os Hosts Virtuais


# vim /etc/apache2/sites-available/www.estudo_1.home

Coloque o seguinte conteúdo dentro do arquivo:

<VirtualHost *:80>
    ServerName www.estudo_1.home
    DocumentRoot /home/www/public_html/estudo_1.home/public
</VirtualHost>

E

# vim /etc/apache2/sites-available/www.estudo_2.home

Coloque o seguinte conteúdo dentro do arquivo:

<VirtualHost *:80>
    ServerName www.estudo_2.home
    DocumentRoot /home/www/public_html/estudo_2.home/public
</VirtualHost>

Claro que tem muito mais opções, e eu nem sei muito, mas estas aí já fazem o necessário para um site básico.

Desabilite o site default do apache e abilte os seus sites recém criados:

# a2dissite default
# a2ensite http://www.estudo_1.home
# a2ensite http://www.estudo_2.home

Editando o /etc/apache2/apache2.conf

Certifique-se de que, por volta da linha 50, você tenha:

NameVirtualHost *:80
ServerName "www.estudos.home"
ServerRoot "/home/www"

Editando o /etc/apache2/ports.conf

Aqui, apenas certifique-se de que você tenha:

NameVirtualHost *:80
Listen 80

Tornar Seus Sites Visíveis Na Lan

Abra o /etc/hosts e adicione:

192.168.1.5 http://www.estudo_1.home
192.168.1.5 http://www.estudo_2.home

Claro, isto supondo-se que o ip do seu pc é 192.168.1.5. Use o seu próprio ip.

Se quiser que outros pcs da LAN possam acessar seus dois sites, abra o /etc/hosts destes pcs, e adicione as mesmas linhas demonstradas acima. No windows é c:\windows\system32\drivers\etc\hosts (Por que raios o \etc\hosts do windows está em um dir chamado drivers?!?!)

OBS: Para estudar php em casa, isto já é o suficiente, mas o correto seria configurar um servidor DNS.

Reiniciando O Apache

# /etc/init.d/apache2 restart

OBS: No Debian, foi perfeito. No Ubuntu porém, eu recebi um erro:
[error] (EAI 2)Name or service not known: Could not resolve host name *80 -- ignoring!

Pelo que pesquisei na web, para este erro é causado porque não temos um servidor dns configurado. Mesmo assim, isto não chega a ser um problema. Você vai conseguir acessar os seus dois sites normalmente apartir da LAN.

UTF-8

Ainda, para evitar problemas com acentos, edite o arquivo /etc/apache2/conf.d/charset e adicione (ou descomente) AddDefaultCharset UTF-8

Finalizando

O básico está pronto. Agora já é possível abrir seus arquivos .php tanto do Server quanto dos hosts da lan. Abra um navegador e digite http://www.estudo_1.home/ na barra de endereços e você deverá ver o a página index.html que você criou anteriormente na pasta public dos sites.
Agora basta cirar seus arquivos .php. Digamos que você fez o hello_world.php basta digitar:
http://www.estudo_1.home/hello_world.php

IMPORTANTE: Não adianta querer abrir os arquivos .php direto do HD (clicando com o botão direito do mouse e escolher ‘abrir com firefox’ (ou opera!) , como fazemos com arquivos .html. Não funciona!. Os arquivos .php precisam ser processados no server. Por isso é necessário digitar a url na barra de endereços do browser.

Uma última dica: se você precisar colocar códigos php em arquivos html, eles não serão executados, obviamente. Para que o código php sejá executado dentro de arquivos com extensão .html, crie um arquivo chamado .htaccess na pasta /home/www/public_htm (ou em qualquer outra pasta onde houver arquivos a serem executados) e addicione:
AddType application/x-httpd-php .html. Com isto todos os seus arquivos .html serão executados como php.

Desculpem quaisquer erros. Funcionou pra mim, e espero que ajudem alguém.