Actualización (24/01/2017): Hace unos días publiqué un artículo en el que explico cómo usar PrestaShop con Docker, que tiene un mejor rendimiento que Vagrant aunque al principio puede resultar un poco más confuso.
Cuando se trabaja en un proyecto web no es una buena idea trabajar directamente en el servidor de “producción”. Es mucho más acertado tener en nuestro ordenador una copia donde podamos hacer todos los cambios necesarios sin miedo romper la web. En este artículo explico cómo preparar un entorno de desarrollo para PrestaShop.
NOTA: También es muy recomendable tener un servidor de pruebas donde poder comprobar que todo funciona como debe antes de pasar al servidor “real”.
Antes de comenzar un desarrollo en PrestaShop es recomendable tener estas cuatro cosas en nuestro ordenador:
- Servidor Apache con PHP. Se recomienda tener una versión de PHP superior a 5.6 ya que en futuras versiones PrestaShop requerirá ésta versión como mínimo.
- Servidor MySQL.
- Instalación de PrestaShop. Es recomendable tener la última versión estable.
- Editor PHP. Hay muchísimos en el mercado, de pago y gratuitos. Mi favorito es el PHPStorm (este es de pago).
Servidor Apache con PHP y servidor MySQL
Para poder trabajar localmente es necesario tener instalador un servidor Apache con PHP y un servidor MySQL.
En la Edad Media tenías que instalar tu propio servidor. Luego llegaron los LAMP, WAMP y MAMP. Pero, afortunadamente, ahora hay mejores opciones.
Puedes instalar una máquina virtual con Vagrant y VirtualBox y configurarlo a tu gusto. Para que sea más sencillo he creado un paquete que hace casi toda la instalación por tí. A continuación explico cómo preparar e instalar PrestaShop en tu ordenador con Vagrant.
En este otro artículo explico ¿Por qué usar Vagrant y no LAMP o WAMP?
Instalación del entorno de desarrollo con Vagrant
Instala los programas:
- VirtualBox: https://www.virtualbox.org/
- Vagrant: https://www.vagrantup.com/
Es muy importante que, sobre todo con Vagrant, instales las versiones más recientes. Con versiones de Vagrant anteriores a la 1.5 vas a tener algunos errores al instalar PrestaShop.
Ahora crea una carpeta donde vas a tener los archivos de PrestaShop. Yo tengo una carpeta llamada “webs” donde coloco todos mis proyectos. Dado que este es un proyecto de ejemplo yo voy a llamar a la carpeta: “prestashop”.
Vamos a suponer que la instalación va a ser en la carpeta “webs/prestashop”. A esta carpeta la vamos a llamar carpeta de proyecto.
Descarga este paquete y extrae su contenido en tu carpeta de proyecto:
https://github.com/gorkau/vagrant-prestashop
NOTA: Asegúrate de copiar los archivos bootstrap.sh y VagrantFile directamente en tu carpeta de proyecto, no en una subcarpeta.
Es un paquete que he creado que realizará las siguientes tareas:
- Instalar la versión Precise (64 bits) de Ubuntu.
- Instalar el servidor Apache 2 con soporte para PHP. Se instalará la versión 5.6 de PrestaShop.
- Añadir los módulos PHP necesarios para funcionar con PrestaShop.
- Instalar el servidor MySQL.
- Descargar la última versión de PrestaShop y dejarla preparada para la instalación.
- Crear la base de datos.
- Dejarlo todo preparado para que puedas acceder al código de PrestaShop desde tu carpeta de proyecto.
Abre un terminal y ejecuta el siguiente comando:
$ vagrant up
Dependiendo de tu conexión a Internet tardará más o menos en descargarse e instalarse todo. Suele tardar unos quince minutos. Puedes aprovechar para hacer un descansito o relajarte un rato.
Instalando PrestaShop
En este momento, si ha ido todo bien, ya tendemos nuestra tienda PrestaShop preparada en nuestra máquina. Ahora hay que hacer la instalación:
- Abre el navegador.
- Entra en la URL: http://localhost:8080/prestashop
- A partir de aquí ya tienes una instalación normal y corriente de PrestaShop. Sigue los pasos para terminala.
Datos del servidor MySQL:
- Nombre de la base de datos: prestashop
- Usuario: root
- Contraseña: prestashop
Llegado a este punto tu tienda debería estar instalada en tu ordenador y ya puedes empezar a trabajar con ella.
Trabajar con el código PrestaShop
Los archivos con el código de PrestaShop estarán dentro de tu carpeta de proyecto.
Con tu editor de PHP puedes crear un nuevo proyecto y empezar a trabajar.
Los archivos de la máquina virtual que has creado con Vagrant están sincronizados con los de tu carpeta de proyecto. Así que cuando modifiques un fichero de tu carpeta de proyecto se modificará automáticamente el de la máquina virtual.
Acceder a la consola de la máquina virtual
Encender y apagar la máquina virtual
Antes de apagar tu ordenador es conveniente apagar primero la máquina virtual:
$ vagrant suspend
Para volver a arrancarla:
$ vagrant resume
Recuerda que estos comandos tienes que ejecutarlos en tu carpeta de proyecto.
Borrar la máquina virtual
Si quieres borrar la máquina virtual (conservando los archivos de tu proyecto PrestaShop) puedes ejecutar el comando:
$ vagrant destroy
Cambiar la configuración de Vagrant
Si quieres hacer algún cambio en la configuración de Vagrant puedes hacerlo en los ficheros que te has descargado al principio. Éstos estarán en tu carpeta de proyecto. Verás que hay dos archivos:
- VagrantFile – Es el archivo de configuración de Vagrant donde se dan instrucciones del sistema operativo a instalar y la forma de comunicarse entre tu ordenador y la máquina virtual.
- bootstrap.sh – Este es el archivo post-instalación. Se ejecuta una vez se ha terminado de instalar el sistema operativo. Es el que se encarga de instalar los servidores Apache y MySQL, el PHP y descargar el PrestaShop.
Si ya tienes instalada la tienda deberás ejecutar el siguiente comando después de hacer alguno de los cambios que se indican a continuación:
$ vagrant provision
¡Mucho cuidado! Esto borrará la base de datos y perderás todos los cambios que hayas hecho.
Nombre de la base de datos
Para cambiar el nombre de la base de datos deberás editar el fichero bootstrap.sh y cambiar esta líne:
mysql -uroot -pprestashop -e 'create database prestashop'
Cambia el prestashop del final por el nombre que quieras darle. Mucho ojo, no cambies el de -pprestashop porque es la clave del usuario root.
Clave de acceso a la base de datos
Edita el fichero bootstrap.sh y cambia estas dos líneas:
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password NUEVA_CONTRASEÑA' sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password NUEVA_CONTRASEÑA'
Cambia NUEVA_CONTRASEÑA por la contraseña que quieras usar.
No olvides cambiar también la línea que crea la base de datos:
mysql -uroot -pprestashop -e 'create database NUEVA_CONTRASEÑA'
Crear otro usuario para la base de datos
No suele ser muy buena idea acceder a una base de datos con el usuario root, conviene crear un nuevo usuario.
Para eso edita el fichero bootstrap.sh y añade al final estas líneas:
sql="CREATE USER 'USUARIO'@'localhost' IDENTIFIED BY 'CONTRASEÑA';" mysql -uroot -pprestashop -e "$sql" sql="GRANT ALL PRIVILEGES ON prestashop . * TO 'USUARIO'@'localhost';" mysql -uroot -pprestashop -e "$sql"
Donde ponga USUARIO y CONTRASEÑA usa los datos que quieras.
Cuando hagas la instalación de PrestaShop puedes utilizar este usuario en lugar de root.
Puerto del servidor Apache
Si prefieres usar otro puerto en lugar de 8080 para conectarte a la máquina virtual puedes modificar el fichero VagrantFile:
config.vm.network :forwarded_port, guest: 80, host: 8080
y cambia el 8080 por otro puerto que te guste más (y que esté disponible).
¿Y si quiero instalar otra tienda?
Si quieres puedes instalar otra tienda dentro de la misma máquina virtual pero yo prefiero tener cada proyecto en su propia máquina virtual (por si alguno necesita una configuración diferente).
Para instalar otra máquina virtual basta con seguir todos los pasos del artículo pero usando una carpeta de proyecto diferente.
Buenas,
Seguí tus instrucciones, pero después de instalar vagrant voy a la consola pongo $ vagrant up y me dice que no se reconoce como un comando interno o externo…
Qué más hay que hacer??
Gracias,
Saludos!
Buenas de nuevo… lo conseguí sin poner el $. Perdona pero no soy nada experto en estas cosas e igual era obvio.
Por otro lado, me lanza la instalación del presta 1.6 pero quería instalar el 1.7, se podría hacer? o está preparado solo para el 1.6?
Gracias y perdona las molestias 😉
Saludos!
@Koke Eso del $ se suele poner para indicar que es un comando que hay que teclear en la consola 😀
En cuanto al 1.7 debería poderse instalar sin problemas. El problema que puede haber es por el cambio que se ha hecho en PrestaShop en esta versión. Como sabrás, ahora se está empezando a user el framework Symfony. Algunas secciones del admin (como, por ejemplo, la sección de módulos) ya están adaptados a Symfony y las rutas son diferentes. Es posible que al entrar en alguna de estas secciones veas que te redirige a la página principal. Si es así avisa. Estoy preparando un artículo al respecto.
Si es así avisa.
También tienes la opción de usar Docker. Tengo preparado un paquete listo para usar (más o menos):
https://github.com/gorkau/prestashop-17-docker/blob/master/README.md