Introducción
Se desea instalar la aplicación Oscommerce para
montar una tienda Web, con características de seguridad, fácil administración y
navegación utilizando el servidor Web Apache, y la base de datos Mysql en
FreeBSD 6.0.
Requerimientos
FreeBSD 6.0 Instalado
Instalar el Port de Oscommerce (se encuentra en
/usr/ports/www/oscommerce)
Instalar el Port de Mysql (Se encuentra en
/usr/ports/databases/mysql41-server)
Instalar el Apache (se encuentra en
/usr/ports/www/apache2)
Instalar PHP 4 (Se encuentra en
/usr/ports/lang/php4)
Procederemos a editar el Archivo Makefile de PHP para
incluir soporte para PCRE que es el paquete de manejo de expresiones regulares
de perl usado por PHP que se encuentra en:
/usr/ports/lang/php4/Makefile
Nos colocamos en el directorio:
/usr/ports/lang/php4/
oscommerce$ cd
/usr/ports/lang/php4/
Y editamos el archivo Makefile
oscommerce$ emacs Makefile
Añadimos en la línea 59 después del .endif lo
siguiente:
#pcre
CONFIGURE_ARGS+=--with-pcre-regex=yes
PHP_HEADER_DIRS=pcrelib
Guardamos el archivo, y con esto queda activado el
soporte de expresiones regulares para PHP.
Instalación de
OSCOMMERCE
Nos colocamos en el directorio:
/usr/ports/www/oscommerce
oscommerce# cd
/usr/ports/www/oscommerce
Y tecleamos:
oscommerce# make install clean
con lo que bajara, compilara e instalara, Oscommerce,
Mysql, Apache 2 y php4 y demás dependencias.
Cabe destacar que cuando termine de descargar el
paquete de Oscommerce nos preguntara si deseamos incluir algunas opciones,
marcaremos la opción de APACHE2 y OPENSSL, con esto aseguraremos que la versión
de Apache que se instalara sea la 2 y además que sea capaz de manejar conexiones
seguras.
Al darle OK en las opciones, continuara descargando
los demás paquetes que se necesitan.
Configuración de inicio de
servicios:
Editamos el archivo /etc/rc.conf y añadimos:
oscommerce# emacs /etc/rc.conf
añadimos:
apache2_enable="YES"
apache2_flags="-DSSL"
mysql_enable="YES"
Con esto conseguimos activar apache y mysql para que
arranquen desde el inicio, además de que apache soporte conexiones
seguras.
Configuración de Apache
2:
Editamos el archivo de configuración que de apache
que se encuentra en: /usr/local/etc/apache2/httpd.conf para añadir los módulos
de PHP, con el fin de que nuestro servidor Web interprete correctamente las
extensiones *.php
oscommerce# emacs
/usr/local/etc/apache2/httpd.conf
añadimos lo siguiente en la línea 885 del archivo de
configuración.
AddType application/x-httpd-php
.php
AddType application/x-httpd-php-source
.phps
guardamos el archivo de configuración y con esto
queda activado el soporte PHP de nuestro servidor Web.
Configuración de los certificados de
seguridad:
Crearemos los certificados de seguridad utilizando la
utilería openssl.
Primero se deben de crear los directorios con sus
permisos correspondientes para esto hacemos lo siguiente:
oscommerce# mkdir
/usr/local/etc/apache2/ssl.key
oscommerce# mkdir
/usr/local/etc/apache2/ssl.crt
oscommerce# chmod 0700
/usr/local/etc/apache2/ssl.key
oscommerce# chmod 0700
/usr/local/etc/apache2/ssl.crt
con esto ya tenemos el lugar específico en donde
estarán nuestros certificados de seguridad y los permisos
correctos.
oscommerce# cd ~
oscommerce# openssl genrsa -des3 -out server.key
1024
Se les preguntara una frase password en este paso es
muy importante que se anote y la recuerden para su uso
posterior.
El siguiente paso es Generar la firma del
certificado:
oscommerce#openssl req -new -key server.key -out
server.csr
Con esto el certificado esta listo para ser firmado,
los siguientes pasos mostraran como auto firmar el certificado de seguridad aun
que también se puede pagar dinero a compañías como verisign para que lo firmen
(www.verisign.com).
oscommerce#openssl x509 -req -days 365 -in
/root/server.csr -signkey /root/server.key -out /root/server.crt
.
Este paso le da una validez al certificado de 365
días procederemos a copiar los
certificados en los lugares correspondientes:
oscommerce#
oscommerce#
cp ~/server.key /usr/local/etc/apache2/ssl.key/
cp ~/server.crt /usr/local/etc/apache2/ssl.crt/
Ahora daremos a los certificados los permisos
adecuados:
oscommerce#chmod 0400
/usr/local/etc/apache2/ssl.key/server.key
oscommerce#chmod 0400
/usr/local/etc/apache2/ssl.crt/server.crt
Cuando se inicia el servicio de apache nos solicitara
la frase que pusimos en el certificado de seguridad, para que no suceda esto,
hacemos lo siguiente:
oscommerce#cd
/usr/local/etc/apache2/ssl.key
oscommerce#cp server.key
server.key.orig
oscommerce#openssl rsa -in server.key.orig -out
server.key
Y con esto nuestro servidor de apache prendera sin
ningún problema.
Ahora nuestro servidor Web esta listo para aceptar
conexiones seguras.
Configuración de
PHP.
Debemos renombrar el archivo
/usr/local/etc/php.ini-dist y llamarlo php.ini para esto:
Nos colocamos en el directorio
/usr/local/etc.
oscommerce# cd /usr/local/etc
y renombramos el archivo SIN borrar el original que
nos puede servir de respaldo en el caso de alguna
eventualidad.
oscommerce# cp php.ini-dist
php.ini
Una vez hecho esto editamos el archivo php.ini que se
encuentra en el mismo lugar (/usr/local/etc/php.ini) y pondremos la opción
register_globals que se encuentra por default en OFF la cambiaremos ON esto es
en la linea 365 de dicho archivo:
oscommerce# emacs php.ini
register_globals=On
Guardamos el archivo de configuración y con esto
habilitaremos el manejo de variables vía oscommerce.
Configuración de
Lo primero que tenemos que hacer una vez instalado el
Servidor de Mysql es asignar una contraseña a la cuenta root y crearemos la base
de datos llamada bdoscommerce:
Prendemos el servicio de mysql
con:
oscommerce# /usr/local/etc/rc.d/mysql-server.sh
start
oscommerce# /usr/local/bin/mysqladmin -u root password
'algunpassword'
oscommerce# echo "CREATE DATABASE bdoscommerce;" |
mysql -u root -palgunpassword
oscommerce# mysql -u root
-palgunpassword
mysql> grant INSERT,SELECT on bdoscommerce.* to
root@localhost;
Query OK, 0 rows affected
(0.01sec)
mysql> quit
Con esto además de prender el servicio de mysql y
crear la cuenta de root con password creamos la base de datos bdoscommerce y
permitimos a los usuarios realizar operaciones sobre ella.
Configuración de
OSCOMMERCE:
Imaginemos que el IP de nuestro servidor FreeBSD con
OsCommerce es 192.168.1.1 entonces , entraremos a algún navegador Web como el
Firefox o algún otro de su preferencia y teclearemos en la barra de direcciones
:
http://192.168.1.1/oscommerce/catalog/install/index.php
1.- Nos llevara a la primera pantalla de
configuración de oscommerce. en la cual daremos click sobre el botón de
INSTALL
2.-En la siguiente pantalla vienen seleccionadas las
opciones de: Import Catalog Database y Automatic Configuration las cuales
dejaremos intactas para que el sistema instale las tablas que trae por default y
aplique las configuraciones de manera automática.
3.-La siguiente pantalla es la más importante ya que
en ella vamos a introducir los parámetros de acceso a la base de datos y serán
los siguientes:
a) Database Server: localhost
b) Username: root
c) Password: algunpassword (es el password que le asignamos a la
base de datos mysql)
d) Database Name: bdoscommerce
y activaremos la opción de:
Session Storage: DATABASE (para almacenar las
sesiones de los usuarios en la base de datos)
4.- Damos click en continue, y nos debe de aparecer
un mensaje como:
A test connection made to the database was
successful.
En caso contrario debemos dar click en back y revisar
tanto el nombre de la base de datos como los demás
parámetros.
5.-Daremos click de nuevo en el botón continue para
importar los catálogos de datos.
6.-De nueva cuenta nos debe de aparecer:
The database import was
succesful.
En caso contrario debemos revisar que la ubicación
del archivo:
/usr/local/www/data/oscommerce/catalog/install/oscommerce.sql
sea la correcta.
7.-Damos de nuevo click en continue y nos aparecerá
la pantalla de:
Please enter the Web server
information:
En la cual vienen definidos nuestros parámetros por
default, si deseamos hacer algún ajuste de los directorios o de nuestro nombre
de la página editamos las opciones.
La opción interesante aquí es Enable SSL Connections:
la cual debemos activar, para que nuestra página Web maneje conexiones seguras
basándose en los certificados que creamos anteriormente.
8.- De nueva cuenta presionamos el botón continue y
ahora nos lleva a la pantalla de configuración del entorno seguro, el cual ya
trae los valores por default necesarios para empezar a usar nuestra
pagina.
9.-Damos click en continue y nos llevara a la
pantalla de
osCommerce Configuration
En la cual revisaremos los ajustes básicos que ya
tenemos de pantallas anteriores damos click en Continue, y con esto se termina
el proceso de instalación del sistema Oscommerce.
10.- Para acceder al panel de control de Oscommerce
se debe teclear desde algún navegador Web:
http://192.168.1.1/oscommerce/catalog/admin/index.php
o bien si queremos acceder por conexión
segura:
https://192.168.1.1/oscommerce/catalog/admin/index.php
11.- Para acceder a la interfase del catalogo o
tienda debemos entrar a:
http://192.168.1.1/oscommerce/catalog/index.php
Configuración después de la
instalación:
Después de instalar Oscommerce se necesitan seguir
los siguientes pasos.
1.-Renombrar o borrar el directorio de instalación de
Oscommerce para lo que tecleamos.
oscommerce# rm -rf
/usr/local/www/data/oscommerce/catalog/install
con esto se BORRARA el directorio install
.
2. Resetear los permisos de
/usr/local/www/data/oscommerce/catalog/includes/configure.php a 444 para
lo cual hacemos:
oscommerce#chmod 444
/usr/local/www/data/oscommerce/catalog/includes/configure.php
3. Configurar los permisos en el directorio de imágenes
"/usr/local/www/data/oscommerce/catalog/images" a 777
oscommerce# chmod 777
/usr/local/www/data/oscommerce/catalog/images
4. Configurar los permisos en el directorio
"/usr/local/www/data/oscommerce/catalog/admin/images/graphs" a
777
oscommerce#chmod 777
/usr/local/www/data/oscommerce/catalog/admin/images/graph
5. Crear el directorio
/usr/local/www/data/oscommerce/catalog/admin/backups y ponerle permisos
777 (Este es el fólder en donde se guardará el respaldo de la base de datos que
se hace en la sección de
herramientas del panel de administración de oscommerce).
oscommerce#mkdir
/usr/local/www/data/oscommerce/catalog/admin/backups
oscommerce#chmod 777
/usr/local/www/data/oscommerce/catalog/admin/backups
Configuración del Panel de Administración de
Oscommerce.
1.- Seguridad
Primero que todo necesitamos proteger con contraseña
el panel de administración , ya que por default este viene abierto a que todo el
mundo pueda entrar sin necesidad de utilizar contraseña , utilizaremos la
seguridad de apache , en especifico el archivo .htaccess para lo que hacemos lo
siguiente :
oscommerce#emacs
/usr/local/etc/apache2/httpd.conf
buscamos la línea 396, que debiera de ser
AllowOverride, en la sección de Directory y sustituimos:
AllowOverride NONE
POR
AllowOverride AuthConfig
Y guardamos el archivo.
Se Necesitará crear un archivo de contraseñas. Éste
archivo se deberá colocar en algún sitio no accesible mediante
Para crear un archivo de contraseñas, use la utilidad
htpasswd que viene con Apache.
escribimos:
oscommerce#mkdir /usr/local/etc/apache2/passwd
oscommerce# htpasswd -c
/usr/local/etc/apache2/passwd/passwords usuario
aparecerá:
New password: mypassword
Re-type new password:
mypassword
Adding password for user
usuario
htpasswd
pedirá la contraseña, y luego
la volverá a pedir para confirmarla.
lo que se consigue con esto es crear un archivo
passwords en el directorio /usr/local/etc/apache2/passwd con la información del
login de: usuario y la contraseña.
El siguiente paso es configurar el servidor para que
solicite una contraseña y decirle al servidor a qué usuarios se les permite el
acceso. Puede hacer esto editando el archivo httpd.conf o usando un archivo
.htaccess. Por ejemplo, si desea proteger el directorio
/usr/local/www/data/oscommerce/catalog/admin, puede usar las siguientes
directivas, colocándolas en el
archivo
/usr/local/www/data/oscommerce/catalog/admin/.htaccess
Para lo que hacemos:
oscommerce#emacs
/usr/local/www/data/oscommerce/catalog/admin/.htaccess
y añadimos:
AuthType Basic
AuthName "Panel de control”
AuthUserFile
/usr/local/etc/apache2/passwd/passwords
Require user usuario
guardamos el archivo de
configuración.
NOTA IMPORTANTE: EL archivo
.htaccess solo debe contener la información listada arriba toda otra directiva
debe de ser comentada o borrada.
Para que los cambios tengan efecto, debemos reiniciar
el servicio de apache .para esto tecleamos:
oscommerce# /usr/local/etc/rc.d/apache2.sh
restart
Para lo cual debe de aparecer:
Syntax OK
Stopping Apache2
Waiting for Pids
starting apache2 .
La
directiva AuthType selecciona el método que se va a usar para autentificar al
usuario. El método más común es Basic, y éste método está implementado en
mod_auth. Es importante ser consciente, sin embargo, de que la autentificación
Básica envía la contraseña desde el cliente hasta el navegador sin encriptar.
Por lo tanto, este método no debería ser usado para información altamente
sensible. Apache soporta otro método de autentificación: AuthType Digest. Este
método está implementado en mod_auth_digest y es mucho más seguro. Sólo las
versiones más recientes de clientes soportan la autentificación del tipo
Digest.
La directiva AuthName establece el Dominio a usar en
la autentificación. El dominio (realm) cumple dos funciones importantes.
Primero, el cliente frecuentemente presenta esta información al usuario como
parte del cuatro de diálogo para la contraseña. Segundo, es usado por el cliente
para determinar qué contraseña enviar para un área autentificada
dada.
Así, por ejemplo, una vez que el cliente se haya
autentificado en el área "Panel de control ", automáticamente se volverá a
tratar de usar la misma contraseña en cualquier área del mismo servidor que esté
marcado con el Dominio (Realm) "Panel de control”. Por lo tanto, puede evitar
que se le pida al usuario la contraseña más de una vez permitiendo compartir el
mismo dominio (realm) para múltiples áreas restringidas. Por supuesto, por
razones de seguridad, el cliente siempre necesitará pedir de nuevo la contraseña
cuando cambie el nombre de la máquina del servidor.
La directiva AuthUserFile establece la ruta al
archivo de contraseña que acabamos de crear con htpasswd. Si tiene un gran
número de usuarios, sería bastante lento buscar por medio de un archivo en texto
plano para autentificar al usuario en cada solicitud. Apache también tiene la
capacidad de almacenar la información del usuario en archivos rápidos de bases
de datos. El módulo mod_auth_dbm proporciona la directiva AuthDBMUserFile. Estos
archivos pueden ser creados y manipulados con el programa dbmmanage. Muchos
otros tipos de opciones de autentificación están disponibles en módulos de
terceras partes en
Finalmente, la directiva Require proporciona la parte
de la autorización del proceso estableciendo el usuario al que se le permite
acceder a esa área del servidor.
Cambios a algunos archivos de Configuración
de Oscommerce:
1.- Cuando tratamos de borrar TODOS los Fabricantes
que vienen definidos por default, al momento de eliminar el último, nos
aparecerá este error:
Fabricantes
Esto es por que la tabla de manufacturers de nuestra
base de datos mysql NO permite estar vacía, por lo que tenemos que modificar lo
siguiente:
1064 - You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right syntax to
use near '-20, 20' at line 1
select manufacturers_id, manufacturers_name,
manufacturers_image, date_added, last_modified from manufacturers order by
manufacturers_name limit -20, 20
Hacemos
un backup del archivo:
/usr/local/www/data/oscommerce/catalog/admin/includes/classes/split_page_results.php
.
oscommerce#cd
/usr/local/www/data/oscommerce/catalog/admin/includes/classes
oscommerce#cp split_page_results.php
split_page_results.php.respaldo
Después editamos el archivo split_page_results.php, y
añadimos lo siguiente:
oscommerce#emacs
split_page_results.php
localizamos la línea: 37 y 38 que
dicen:
$offset = ($max_rows_per_page * ($current_page_number
- 1));
$sql_query .= " limit " . $offset . ", " .
$max_rows_per_page;
y ponemos lo siguiente:
$offset = ($max_rows_per_page * ($current_page_number
- 1));
if ($offset < 0)
{
$offset = 0 ;
}
$sql_query .= " limit " . $offset . ", " .
$max_rows_per_page;
Guardamos el archivo de configuración, con esto
aseguramos que nuestra tabla no genere errores al quedarse
vacía.
Conclusiones
Se tiene ahora la plataforma Oscommerce instalada y
depurada, lista para ser utilizada
como tienda Web, manejar pedidos, productos y
estadísticas de manera segura y rápida
espero que les sea de utilidad.
Agradecimientos
Especiales:
Quiero agradecer de manera muy especial la
colaboración de:
Alicia Rodríguez Suárez (Procedimientos de error de
Oscommerce)
Mario Alberto Luna Pavo (Configuración de
Oscommerce)
Ignacio Padua Hernández (Depuración de
Oscommerce)
Paulina
Reyes Villanueva (Asesoría y consulta. )
Fuentes de
Información
www.oscommerce.com
http://httpd.apache.org/docs/2.0/howto/auth.html
http://www.oscommerce.info/docs/english/e_post-installation.html
www.bsdguides.com
www.freebsd.org.mx
--------------------------------------------------------------------------------
Dudas y comentarios son
bienvenidos a jleal@univillarica.mx