Diario BSD
23Oct/09Off

Php APC

Instalar el optcode de PHP APC:

# cd /usr/ports/www/pecl-APC
# make install clean

Configurar en el php ini las opciones más convenientes (/usr/local/etc/php.ini).

22Oct/09Off

PHP 5.2

Entramos en el directorio del port:

# cd /usr/ports/lang/php5

Configuramos las opciones de instalación (marcamos el soporte de Apache y de Multibyte)

# make configure

e instalamos:

# make install clean

Añadimos al archivo de configuración de Apache:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

En los módulos cargados de Apache ya debe existir

LoadModule php5_module libexec/apache22/libphp5.so

Añadimos index.php como archivo por defecto al entrar en un directorio:

DirectoryIndex index.php index.html

Instalamos las extensiones necesarias:

# cd /usr/ports/lang/php5-extensions
# make configure
# make install clean

Copiamos el archivo /usr/local/etc/php.ini-dist a /usr/local/etc/php.ini

Reiniciamos Apache:

# apachectl -k stop
# apachectl -k start

Las extensiones se cargan desde el archivo /usr/local/etc/php/extensions.ini

El archivo de configuración se encuentra en /usr/local/etc/php.ini

Para ver la versión de php desde consola:

# php -v

Si nos aparece un core dump de php deberemos ir al archivo de configuración de estensiones de php y cargar recode.so antes de cualquier extensión de imap o mysql, lo mejor es moverla a la primera línea.

21Oct/09Off

MySQL 5.1

Para instalar Mysql primero entramos en el directorio del port:

# cd /usr/ports/databases/mysql51-server

Generamos la estructura de permisos de MySQL.

# mysql_install_db

Después copiamos el directorio /var/db/mysql a /usr (si todo va bien lo eliminamos de /var/db) y añadimos en /var/db un enlace simbólico a /usr/mysql

Cambiamos los permisos en /usr/mysql para que pueda crear los archivos pid, de errores (/var/db/mysql/nombre.server.err), deberemos darle permisos de ejecución al directorio /var/db/mysql/mysql para que pueda leer las tablas y cambiar los permisos (le ponemos de usuario y grupo mysql y tanto al directorio como a todos los archivos).

Arrancamos el servicio:

# /usr/local/etc/rc.d/mysql-server start

Creamos el usuario administrador del gestor:

# mysqladmin -u root password 'nuevapass'

Para que el servicio se arranque al iniciar la máquina tenemos que modificar el fichero /etc/rc.conf:

mysql_enable="YES"

Una vez que tenemos el MySQL ejecutándose, querremos crear una base de datos con su usuario correspondiente. Para ello ejecutamos:

# mysql -u root -p (nos pedirá password)
mysql> create database mibasededatos;
mysql> grant all privileges on mibasededatos.* to miusuario@localhost identified by 'mipassword'

El archivo de ejemplo my.cnf (large, medium, small) está localizado en /usr/local/share/mysql

Realizar una copia de my-large.cnf a /var/db/mysql/my.cnf.

Reiniciamos MySQL

# /usr/local/etc/rc.d/mysql-server stop
# /usr/local/etc/rc.d/mysql-server start

Para desactivar las tablas InnoDB (si no vamos a utilizar transacciones) ponemos en el archivo my.cnf de /var/db/mysql/

skip-innodb

y para poner los mensajes de error en español:

language = /usr/local/share/mysql/spanish/

20Oct/09Off

Nginx

Para instalar Nginx primero entramos en el directorio del port:

# cd /usr/posts/www/nginx
# make config
# make install clean

El script de inicio parada de Nginx está en /usr/local/etc/rc.d/nginx por lo que para iniciar, parar o reiniciar nginx deberemos ejecutar:

# /usr/local/etc/rc.d/nginx start|stop|restart

para que arranque Nginx con el sistema deberemos añadir a /etc/rc.conf la línea:

nginx_enable=”YES”

Instalamos lighttpd para obtener el archivo spawn-fcgi y después copiamos el archivo a un directorio temporal, desinstalamos lighttpd y copiamos spawn-fcgi a /usr/local/bin/spawn-fcgi

# cd /usr/ports/www/lighttpd
# make install clean
# cp /usr/local/bin/spawn-fcgi /root/
# make deinstall
# cp /root/spawn-fcgi /usr/local/bin/spawn-fcgi

Creamos el archivo php.cgi.sh

en /usr/local/etc/rc.d/ para proceder al arranque / parada / reinicio / estado de php como fast-cgi (este script se ejecuta con el inicio del sistema)

# cd /usr/local/etc/rc.d/
# touch php.cgi.sh

y le copiamos el contenido del archivo

#!/bin/sh
# Shell Script to start / stop PHP FastCGI using lighttpd - spawn-fcgi binary file.
# -------------------------------------------------------------------------
# Copyright (c) 2006 nixCraft project
# This script is licensed under GNU GPL version 2.0 or above
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# Visit http://bash.cyberciti.biz/ for more information.
# -------------------------------------------------------------------------
PROVIDES=php-cgi
LIGHTTPD_FCGI=/usr/local/bin/spawn-fcgi
SERVER_IP=127.0.0.1
SERVER_PORT=9000
SERVER_USER=www
SERVER_GROUP=www
PHP_CGI=/usr/local/bin/php-cgi
PGREP=/bin/pgrep
KILLALL=/usr/bin/killall
### No editing below ####
cmd=$1

pcgi_start(){
echo "Starting $PROVIDES..."
$LIGHTTPD_FCGI -a $SERVER_IP -p $SERVER_PORT -u $SERVER_USER -g $SERVER_GROUP -f $PHP_CGI
}

pcgi_stop(){
echo "Killing $PROVIDES..."
$KILLALL $PROVIDES
}


pcgi_restart(){
pcgi_stop
pcgi_start
}


pcgi_status(){
$PGREP $PROVIDES > /dev/null
[ $? -eq 0 ] && echo "$PROVIDES running" || echo "$PROVIDES NOT running"

}


pcgi_help(){
echo "Usage: $0 {start|stop|restart|status}"
}

case ${cmd} in
[Ss][Tt][Aa][Rr][Tt]) pcgi_start;;
[Ss][Tt][Oo][Pp]) pcgi_stop;;
[Rr][Ee][Ss][Tt][Aa][Rr][Tt]) pcgi_restart;;
[Ss][Tt][Aa][Tt][Uu][Ss]) pcgi_status 0;;
*) pcgi_help ;;
esac

y configuramos el archivo /usr/local/etc/nginx/nginx.conf de nginx para que sirva las peticiones php mediante php fast cgi.

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nginx$fastcgi_script_name;
include fastcgi_params;
}

Informacion de archivos Nginx:

Archivo de configuración: /usr/local/etc/nginx/nginx.conf
Archivo log de error: /var/log/nginx-error.log
Archivo log de acceso: /var/log/nginx-access.log
DocumentRoot por defecto: /usr/local/www/nginx/

Para la creación de directorios protegidos por password necesitaremos la utilidad de Apache htpasswd que podemos ejecutar en un servidor (*.NIX) con Apache instalado:

# htpasswd -cd archivo usuario

Después podemos copiar el archivo o el contenido del mismo a nuestro archivo de claves de nginx.

19Oct/09Off

Apache 2.2

El port de Apache 2.2 se encuentra en /usr/porst/www/apache22/.

El archivo/s de configuración se encuentra en /usr/local/etc/apache22/.

Para que arranque Apache con el inicio del sistema debe añadirse apache22_enable=”YES” al archivo /etc/rc.conf.

Después de actualizar a Apache 2.2, en ocasiones podemos encontrar el error:

"[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter"

para lo que deberemos cargar dinamicamente el módulo accf_http.ko (para no tener que recompilar el kernel) con la utilidad kldload:

# kldload accf_http.ko

y activarlo por defecto en /boot/defaults/loader.conf

# nano /boot/defaults/loader.conf

Buscar la entrada accf_http_load="NO" y cambiarlo a accf_http_load="YES" (o añadirla en caso de no existir).

Si obtenemos el error:

apr_sockaddr_info_get() failed for *******

Modificamos el archivo de configuración de Apache en /usr/local/etc/apache22/httpd.conf para descomentar o modificar la línea:

ServerName localhost:80

poniendo un nombre válido, si aún así no conseguimos arrancarlo, comentar

#LoadModule unique_id_module libexec/apache22/mod_unique_id.so

Para ver la versión de Apache desde consola

# httpd -v