Publicar aplicación PHP en Clouding directamente desde NetBeans
En este documento voy a explicar como configurar el IDE NetBeans para poder desarrollar una aplicación web en PHP en local y subir automáticamente los cambios a un servidor web en la nube de Clouding.io sin necesidad de utilizar clientes FTP o SSH. O incluso automatizar el proceso.
Ya hicimos un artículo sobre como montar un proyecto web desarrollado en PHP en el IDE NetBeans y las librerías CodeIgniter.
En colaboración con Clouding vamos a ver cómo podemos automatizar el despliegue de la aplicación web que estamos desarrollando en NetBeans a nuestro servidor web en la nube.
En Clouding tienen guías sobre como montar un servidor LAMP, podemos tener un servidor web preparado para publicar una web en pocos minutos, con la garantía de que si necesitásemos más recursos en Clouding es muy fácil aumentar la CPU, memoria, espacio de disco… de nuestro servidor.
Lo primero será configurar nuestro servidor LAMP, siguiendo el manual de Clouding tendremos nuestro servidor preparado en pocos minutos.
Tras unos minutos el servidor estara listo y podremos conocer su IP y la contraseña de root para poder acceder al mismo.
Debemos verificar varios puntos, tendremos que asegurarnos que permitimos acceso por SSH al usuario propietario de los ficheros web, por ejemplo, www-data. El sitio web en el servidor LAMP deberá cumplir también los requisitos mínimos exigidos por CodeIgniter, que podremos comprobar en esta página. Si queremos gestionar también desde NetBeans la base de datos en el servidor deberemos crear un usuario con acceso desde el exterior a MySQL (o MariaDB) y asegurarnos de abrir los puertos necesarios en el firewall. Una vez terminado el desarrollo podremos cerrarlos para mejorar la seguridad. También nos aseguraremos que tenemos configurado el DNS para acceder al sitio web por nombre, en caso contrario lo haremos por IP, habrá que configurar el servidor Apache del servidor en la nube en consecuencia.
Una vez configurado podemos comprobar que tenemos acceso al servidor web y que está correctamente instalado y funcionando.
También siguiendo el anterior articulo podemos montar nuestra aplicación CodeIgniter en local y empezar el desarrollo. En este caso utilizaremos un Windows 10 Profesional por lo que deberemos montar nuestro entorno WAMP en local descargando las correspondientes versiones de Apache, MySQL y PHP para Windows. O podemos optar por uno de los innumerables paquetes preconfigurados que existen. Yo suelo recomendar Uniform Server, que nos deja un entorno WAMP perfecto para trabajar.
Obtenemos la version mas reciente de NetBeans de su web oficial y la instalamos en nuestro equipo de desarrollo local. Una vez instalado lo ejecutamos y creamos un nuevo proyecto PHP.
La última versión de CodeIgniter requiere PHP 7.3 o superior.
Configuramos nuestro poryecto como local y la URL local (localhost) desde donde se va a servir.
Obtenemos también la última versión de CodeIgniter y la descomprimimos dentro de la carpeta del proyecto. Yo recomiento crear un subdirectorio separado para la aplicación web diferente del resto de ficheros de la aplicación (recursos, manuales, ficheros de configuración , scripts SQL o de despliegue…) Siguiendo las instrucciones del articulo anterior preparamos la web local dentro del directorio website.
Como podemos ver CodeIgniter ha cambiado un poco su arquitectura, ahora el fichero inxex.php se encuentra dentro del directorio public, para mejorar la seguridad y la separación del código.
Este directorio public es el que deberemos configurar en nuestro servidor Apache como la raíz de nuestro sitio web.
Una vez configurado Apache podemos acceder a la aplicación web local.
Desde NetBeans también podemos gestionar la base de datos, para ello deberemos descargar e instalar el driver JDBC de MySQL (o MariaDB) y configurar la conexión en la pestaña de servidores
Configuramos la aplicación CodeIgniter para utilizar la base de datos creada con NetBeans. Si usamos el mismo usuario y contraseña en local y en el servidor de Clouding podemos utilizar el mismo fichero Database.php en ambos entornos. En caso contrario deberemos modificarlo cuando subamos los ficheros al servidor. Una opción que nos da CodeIgniter es tener distintos ficheros de configuración según el entorno, en ese caso podremos mantener configuraciones separadas.
Una vez tenemos el entorno local listo podemos empezar a programar y probar nuestra aplicación en local. Crearemos y modificaremos los ficheros .php, .css, .js, etc. que necesitemos y crearemos las tablas necesarias en la base de datos.
A parte de utilizar un repositorio de código fuente, lo que es muy recomendable tal como indicamos en este artículo, podemos desde NetBeans publicar directamente la aplicación en el servidor alojado en la nube. Para ello utilizaremos la funcionalidad de configuración del entorno de ejecución de NetBeans. Por defecto se configura para la ejecución en local
Cambiamos el desplegable etiquetado como Run As de Local a Remote Web Site. Nos aparecerán nuevos campos para configurar la conexión remota.
Con el botón etiquetado Manage accedemos a la configuración de la conexión con el servidor en la nube. Seleccionamos la opción SFTP
En el formulario de configuración de la conexión debemos indicar el nombre (o IP) del servidor y un usuario y contraseña. Recordar que debe ser un usuario con permisos de escritura en los directorios del servidor web, en el caso de Ubuntu suele ser www-data o un usuario que esté en el grupo www-data. Cuidado, no debemos indicar dos veces la ruta de los ficheros en el servidor, ya que la ruta destino se crea concatenando la ruta especificada en la conexión y la ruta indicada en el proyecto, lo recomendable es especificar la ruta más general en la conexión, por ejemplo /var/www en el caso de Ubuntu. Podemos comprobar la correcta configuración de la conexión con el botón rotulado Test Connection.
Para tener el control de cuando queremos que se suban los ficheros al servidor seleccionaremos la opción Manually en el desplegable Upload Files. También podemos seleccionar On Run que copiará los ficheros al pulsar Run en el IDE u On Save, que subirá los ficheros cada vez que los creemos o guardemos.
Para subir los ficheros de la web al servidor seleccionamos la opción Uplad del menu contextual.
Un diálogo nos permitirá seleccionar aquellos ficheros que deseamos subir.
En la ventana de salida del IDE veremos el resultado de la operación.
La opción de sincronizar nos permitirá comparar los ficheros locales con los del servidor y actualizar aquellos que deseemos.
Esta operación es mas lenta y costosa pero muy útil cuando no estamos seguros de si hemos subido los últimos cambios o queremos deshacer cambios locales. Aunque para esto es mejor el uso de un repositorio de código fuente.
Podemos comparar el fichero local con el remoto.
Lo mismo haremos para la base de datos, crearemos una conexión nueva en la pestaña de servidores de NetBeans y configuraremos el acceso al MySQL del servidor en la nube. Una vez conectados podremos manejar el esquema y los datos igual que en la base de datos local.
Con todo configurado y una vez subidos los ficheros al servidor podemos comprobar que nuestra aplicación funciona exactamente igual en el servidor remoto que en local.
Eso es todo lo necesario para poder realizar nuestros desarrollos PHP en local con NetBeans y poder publicarlos en el servidor en la nube de Clouding.io directamente desde el IDE. Las capturas se han realizado desde una estación de trabajo Windows 10 pero en un equipo Linux seria exactamente igual.
Gracias por su atención, saludos.