• Compra una licencia de Windows 10/11 (10€) u Office (18€) al mejor precio u Office al mejor precio. Entra en este post con las ofertas
  • Conoce los Días Naranjas de PcComponentes: descuentos de hasta un 40% en tecnología. Entra en este post con las ofertas
  • ¡Bienvenid@! Recuerda que para comentar en el foro de El Chapuzas Informático necesitas registrar tu cuenta, tardarás menos de 2 minutos y te dará valiosa información además de ayudarte en lo que necesites o pasar un rato agradable con nosotros.

Servidor de pruebas

No entiendo tanta hostilidad, de verdad...

Me podrías decir por qué es perder el tiempo desarrollar en remoto, por cierto ya trabajo con bitbucket.

Normalmente se desarrolla en local. Hay bastantes motivos para hacerlo:

  • Evitar conflictos con el código en producción. Si modificas directamente el código que está funcionando, ¿cómo vas a depurarlo? Primero se desarrolla, luego se ejecutan los tests, se comprueba que tus cambios son estables, y entonces lo subes/despliegas. Pero no trabajas directamente sobre el código en producción. Sé que me dirás que sólo estás haciendo pruebas, pero ese flujo de trabajo es una mala práctica, y hacerlo de este modo es todo lo contrario. Si estás aprendiendo es razonable que aprendas del mejor modo posible, ¿no? Por ello... Evita eso de sincronizar con el FTP, editar el remoto directamente, etc.
  • Utilizar las herramientas adecuadas. Si utilizas un FTP/SCP/rsync/loquesea para mantener la sincronía entre versiones (local, remoto/producción), estás intentando solucionar el problema de gestionar las versiones con herramientas que no fueron diseñadas para ello. Ese problema lo resuelve Git de una forma eficaz y segura. Y no cuela lo de "es que lo mío es simple", ya borrarás algo sin querer y tendrás que recurrir a commits antiguos de Git. Te alegrarás de no haber sincronizado la cagada con el server de producción. Shit happens, a todo el mundo puede pasarle. El otro día en el IRC de desarrollo web en Freenode, un tío lamentándose no saber más de Git porque no sabía sacar un commit antiguo y se había cargado todo -y reescrito commits- xd
  • Trabajar en local no te limita en nada. Especialmente, y relacionado con el primer punto, eres libre de romper lo que quieras, de dejar el código en un estado inestable, de programar algo ineficiente que saturaría el servidor de producción... Te centras en que funcione y luego ya lo mejorarás. Puedes crearte una rama local nueva en Git para hacer eso, que no tiene por qué estar en el servidor de producción.

Generalmente tendrás 3 zonas a la hora de desarrollar:

  • Local. Donde sucede la magia de la programación. Por local entendemos las máquinas de desarrollo (tu portátil, tu sobremesa, el equipo de tu pareja en el que haces ñapas cuando se te ocurren en el momento), no necesariamente un único equipo. Git te permite gestionar las versiones que vayan surgiendo, ya lo sabes.
  • Staging / desarrollo. Aquí tendrías tu repositorio remoto de Git. En tu caso, Bitbucket. Si ya lo utilizas, entonces entiendes el concepto. También puede ser otro tipo de servidor (VPS, por ejemplo) donde tienes una demo visible del software corriendo.
  • Producción. Donde tu código se está ejecutando mientras tú desarrollas versiones nuevas, mientras duermes y mientras lees esto. Y ese código sólo debería ser modificado cuando tus cambios (generados en local y almacenados en staging) son estables y llega el momento del... ¡Despliegue! Aquí puede ser un VPS también. Y es más guay si es un VPS, de hecho.

Tampoco es estrictamente necesario el VPS para los despliegues. Puedes hacerlo todo localmente (pierde la magia del despliegue remoto, pero está bien).

Por ejemplo, yo desarrollo una aplicación web que depende de un webservice que tira de la misma base de datos para dar servicio a clientes (los clientes son un plugin de WordPress, un módulo de Prestashop...). Todo corre en mis máquinas locales (normalmente en el sobremesa, pero a veces también en un portátil -Atom :meparto:): la aplicación, el WordPress, el PrestaShop y el webservice.

Voy desarrollando localmente, haciendo los commits pertinentes y de cuando en cuando hago push hacia mi Bitbucket, Github o el que corresponda en cada caso. Cuando quiero desplegarlo todo, y aquí viene la parte interesante, desarrollé unos scripts que he colocado en el servidor de producción (que en este caso sí es un VPS, pero desde el punto de vista de desarrollo lo trato igual que si fuera Bitbucket, como cualquier repo remoto) y que, al recibir commits mediante un push, realizan el despliegue de cada repositorio de forma automática: ejecutan los SQL de actualización, modifican el código en producción con lo que yo envío como código estable, eliminan ficheros antiguos que ya no se usan...

En todo ese workflow sólo necesito el VPS para que se vea en Internet, pero antes de tener un VPS lo hacía en local del mismo modo. Lo que te interesa, más que el equipamiento o infraestructura, es el workflow, tu flujo de trabajo, la forma en que mueves el código que sale del horno al entorno de producción. Y en eso es más importante cómo usas Git y cómo haces el despliegue que si tu VPS está en uno u otro proveedor.

Si lo quieres para probar, te da lo mismo cuál sea, mientras cumpla con lo mínimo (no esperar milagros al desplegar cosas complejas en un VPS lentorro). Si lo quieres para producción, entonces es otra historia.

Aquí tienes una guía -en inglés- donde te explican las metodologías, herramientas y flujos de trabajo que se utilizan a día de hoy para desarrollar: http://www.smashingmagazine.com/2015/07/development-to-deployment-workflow/ y puedes encontrar más opciones buscando en Google: https://www.google.es/search?q=development+workflow+php+deployments

Verás que en casi todos los casos, el tema va por ahí (desarrollo local, local/staging/producción, máquinas virtuales, etc).

Por supuesto, puedes simplemente ponerte un VPS, utilizar el Notepad++ (y no un IDE de verdad :wtf:) y sincronizar con el FTP, pero eso no te diferenciaría en nada de millones de programadores chapuceros que suben cagadas una y otra vez al código que está funcionando y que tienen que tirar de backups más a menudo de lo que les gustaría. Lo he visto demasiado -y no soy nada viejo, al contrario- como para no preferir prevenir que curar a estas alturas xD

PD: por cierto, para que aprendas PHP como debe ser http://www.phptherightway.com ;)
 
Las tonterías que hacen algunos para llevar la razón sea como sea... :roto2:
 
De verdad que no entiendo tu actitud...
 
Lo que suelo hacer en mi forma de trabajar es usar git y la rama develop es preproduccion y master es producción


Enviado desde mi iPhone utilizando Tapatalk
 
Mola, me siento aludido.

¿Lo de "IDE de verdad" va en serio?

Me acusabas de querer complicar las cosas con java y quieres meterle a alguien "nuevo" un IDE de PHP?

Soy el primero que usa XAMPP para probar, y cuando la cosa está perfecta, al servidor directo.Pero si alguien quiere movilidad, un VPS baratito (lentorro) va perfecto.
Somos nosotros los que debemos adaptar las herramientas, no nosotros a ellas.
 
Va en serio lo del IDE, sí. Si luismi_12 está utilizando Git y Bitbucket y ya gestiona varias ramas, nuevo no sé si es... Y está en ese nivel en el que el IDE ya le puede ayudar a bastantes cosillas. Una captura del Netbeans modificando código que está en un repositorio...

295zvoi.png


Te indica cambios, añadidos o eliminaciones, puedes revertirlos fácilmente, y también te facilita la gestión de ramas, repos remotos, push/pull, revisar el historial... Vamos, muy completito para usar con Git. El soporte mejoró muchísimo con la versión 8 de Netbeans. En Eclipse no lo he probado tanto, pero creo que es menos intuitivo.

También en el caso del Java era alguien que quería aprender a programar, debía aprender los fundamentos, mientras que luismi_12 ya sabe programar. No creo que un IDE sea traumático si sabe programar en estos momentos, pero buen punto con tu última frase. Creo que debería tenerla algo más en cuenta.
 
Tras estas conversaciones creo qué voy a seguir trabajando en local y usar el vps para preproduccion, ya que buscaba la comodidad pero sin mirar la mejor manera de trabajar. Novato soy pero tengo un grado de Desarrollo de aplicaciones web y llevo un año trabajando con git y dos servidores


Enviado desde mi iPhone utilizando Tapatalk
 
Por cierto si que uso un IDE uso aptana studio


Enviado desde mi iPhone utilizando Tapatalk
 
Tras estas conversaciones creo qué voy a seguir trabajando en local y usar el vps para preproduccion, ya que buscaba la comodidad pero sin mirar la mejor manera de trabajar. Novato soy pero tengo un grado de Desarrollo de aplicaciones web y llevo un año trabajando con git y dos servidores


Enviado desde mi iPhone utilizando Tapatalk

Siento haberte causado dudas :)

En estas cosas, se es muy personal, cada uno trabaja de una forma, y es difícil hacernos cambiar de opinion
 
Tranquilo, no pasa nada. Por ahora mi entorno de desarrollo lo tengo montado así:
Ampps
Aptana
Mysql Workbench
Git r repositorio en bitbucket
No se como veis ese entorno


Enviado desde mi iPad utilizando Tapatalk
 
Buenas elecciones. Creo que MySQL Workbench está infravaloradísimo, y es una herramienta super potente. Tienes una software que complementa bien al Workbench para manejar rápidamente datos: Adminer.
 
Existe alguna manera de automatizar la exportación de datos por ejemplo cada vez que ejecutó un pull o algo así


Enviado desde mi iPhone utilizando Tapatalk
 
Claro, con los hooks de git. Puedes crear un script que Git ejecutará cuando hagas un push, cuando reciba un commit... Las acciones en las que Git ejecuta los scripts son los hooks, y tú puedes enganchar un script en ellas.

Existe otra forma de automatizar tareas que es usando Grunt. Es lo más utilizado para según qué cosas (comprimir CSS, por ejemplo). Yo actualmente utilizo git hooks para realizar despliegues sencillos en mi server de producción, pero aún debo iniciarme con Grunt, que es otra genial herramienta creo yo.

Aunque normalmente lo que se suele hacer (no sé si es a lo que te refieres) es crear scripts .sql de actualización (que insertan datos, modifican el schema de la BD, o lo que sea), y se ejecutan con un git hook en post-receive, por ejemplo. Ejecutar ya sabes que es sencillo (mysql -u usuario -p base_de_datos < fichero.sql).

Para la máxima automatización -y complejidad- Capistrano.
 
Arriba