sábado, diciembre 23, 2006

FreeBSD + PostgreSQL + Apache

FreeBSD + PostgreSQL + Apache
Probado en FreeBSD 6.1 y 6.2

Ultima actualizacion (dd mm aaaa): 10 01 2007

http://www.bsd.org.pe/documentos/091006231846.html

http://www.freebsddiary.org/postgresql.php

Pasos para poner a funcionar la cosa

1) Instalar el postgresql
# whereis postgresql82-server
postgresql82-server: /usr/ports/databases/postgresql82-server
# cd /usr/ports/databases/postgresql82-server
# make install clean

2) Hacer que el sistema inicie el posgresql automaticamente
colocar esta linea en el /etc/rc.conf
postgresql_enable="YES"

3) Crear la carpeta data en este lugar /usr/local/pgsql/data
# cd /usr/local/pgsql/
# mkdir data
Darle permisos al usuario pgsql en la carpeta
# chown pgsql:pgsql data

4) Iniciar la base de datos inicial
# su -l pgsql -c "initdb -D /usr/local/pgsql/data -W -A md5"

Verificar que este corriendo
# sockstat -4

Arrancar el postgres si no esta corriendo
# sh /usr/local/etc/rc.d/postgresql start &
Pararlo si esta corriendo
# sh /usr/local/etc/rc.d/postgresql stop

(si por algun motivo inicia y se cae, verifique los permisos de los archivos del /usr/local/pgsql/ sean del usuario y grupo pgsql si no, cambielo con
# chown -R pgsql:pgsql * )

5) Entrar como usuario pgsql

$ su
Password:
# psql -U pgsql template1

o de esta otra forma

$ su
Password:
alpha# su pgsql
$ psql template1
Password: python
Welcome to psql 8.2.0, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

template1=#

6) Crear la primera base de datos
CREATE DATABASE dbminutaje WITH OWNER = pgsql ENCODING = 'LATIN1';

7) Importar los datos
descomprimir los datos
# gunzip mibackup.bak.gz

$ su
Password:
# su - pgsql

$ pgsql dbminutaje < /ruta/dbminutaje.bak 8) Hacer el backups manualmente $ su Password: # su - pgsql $ pg_dump dbminutaje | gzip > /usr/home/hd1/backups/dbminutaje.bak.gz

Automatico mediante el cron
Crear el archivo /root/.pgpass con esta estructura
hostname:port:database:username:password

con nuestros datos quedaria asi
localhost:5432:pgsql:mipassword

Poner una entrada como esta en el cron
# crontab -u root -e
32 12 * * 1,2,3,4,5,6 /usr/local/bin/pg_dump -U pgsql dbminutaje | gzip > /usr/home/hd1/backups/dbminutajefinal.bak.gz

o con un script que le adicione la fecha

10 23 * * 1,2,3,4,5,6 /usr/home/hd1/backups/scripts/BackupMinutaje.sh

Optimizar la base de datos

0 23 * * 1,2,3,4,5,6 /usr/local/bin/vacuumdb -U pgsql --analyze dbminutaje

9) Instalar el apache v. 2.2
# whereis apache22
apache22: /usr/ports/www/apache22
# cd /usr/ports/www/apache22
# make install clean

Para que inicie con el sistema poner esta linea en el /etc/rc.conf

apache22_enable="YES"

10) Ponerle soporte PHP al Apache
Instalar el port /usr/ports/lang/php5
# whereis php5
php5: /usr/ports/lang/php5
# cd /usr/ports/lang/php5
# make install clean
Marcarle esta opcion [x] Build apache module

(esto colocara la linea "LoadModule php5_module libexec/apache22/libphp5.so en el httpd.conf")

Modificar el /usr/local/etc/apache22/httpd.conf

Verificar que tenga esta linea
LoadModule php5_module libexec/apache22/libphp5.so

Cambiar:

DirectoryIndex index.html

por esto otro:

DirectoryIndex index.php index.html
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

11) Ponerle soporte postgresql al php

Instalar el port /usr/ports/databases/php5-pgsql
# whereis php5-pgsql
php5-pgsql: /usr/ports/databases/php5-pgsql
# cd /usr/ports/databases/php5-pgsql
# make install clean

Para verificar que el soporte a postgresql este funcionando entre a esta direccion
http://localhost/php.php

Nota:
En
/usr/local/etc/php.ini-dist
o
/usr/local/etc/php.ini-production (creo es el de las nuevas versiones)
descomentar ";" la linea para que quede asi:

default_charset = "iso-8859-1" (en nueva version la tengo inactiva para ver que pasa)

De esta forma mostrara los acentos correctamente

12) Instalar el programa pgadmin3 para administrar la DB
instalar este port pgadmin3
# whereis pgadmin3
pgadmin3: /usr/ports/databases/pgadmin3
# cd /usr/ports/databases/pgadmin3
# make install clean

iniciarlo asi:
pgadmin3

Actualizacion:

Luego de un tiempo requerimos poder hacer conexiones desde PHP con una cuenta en Gmail, para poder hacerlo, se debe instalar el port php5-openssl
# whereis php5-openssl
php5-openssl: /usr/ports/security/php5-openssl
# cd /usr/ports/security/php5-openssl
# make install clean

Al terminar la instalacion, automaticamente se agrega la linea
extension=openssl.so en el archivo
/usr/local/etc/php/extensions.ini

Re iniciar el Apache
# /usr/local/etc/rc.d/apache22 restart

Actualizacion 2:

Par poder hacer conexiones SSH desde PHP, se debe instalar el port pecl-ssh2
# whereis pecl-ssh2
pecl-ssh2: /usr/ports/security/pecl-ssh2
# cd /usr/ports/security/pecl-ssh2
# make install clean

Al finalizar la instalacion, nos indicara que agrego en /usr/local/etc/php/extensions.ini
la siguiente linea:
extension=ssh2.so

Re iniciar el Apache
# /usr/local/etc/rc.d/apache22 restart

No hay comentarios.: