Eleva tu PHP a la nube

Este artículo lo guiará a través del alojamiento en la nube para su aplicación PHP con Pagoda Box. Detallará cómo manejar las dependencias de PHP, poner en marcha sus bases de datos MySQL (y depurarlas localmente) y personalizar varios aspectos de PHP con facilidad..


Introducción

Como desarrollador que ha estado jugando con PHP desde la edad de 11 años, es difícil recordar muchas cosas que han cambiado absolutamente la forma en que me desarrollo. En 2007, elegí CodeIgniter, lo que me hizo reconsiderar cómo estructuro mi código y uso OOP para hacer las cosas. En 2010, comencé a trabajar con Git y Git Flow para el trabajo en equipo y las sucursales, pero recientemente, lo más importante para cambiar mi flujo de trabajo de desarrollo fue una "Plataforma como servicio", llamada Pagoda Box..

Puede que seas un desarrollador de Rockstar que sepa cómo configurar una pila LAMP, pero cuánto tiempo de desarrollo potencial desperdicias al configurarlo, optimizarlo, protegerlo, bloquearlo, escalar recursos y monitorear el tráfico..

Todos los días, veo a un desarrollador que lucha para defender su servidor de algún grupo de piratas informáticos o chavales de script, que se inunda en el puerto, que tiene problemas para hacer funcionar un parche de seguridad aleatorio, que lucha por migrar a servidores más grandes y potentes, que se enoja al tratar de configurar Capistrano , la lista continua. Los servicios como Pagoda Box pueden ayudarlo a omitir todo eso; así que veamos cómo.


Paso 1 - Registrarse en Pagoda Box

El primer paso es conseguir una cuenta. Es gratis, asi que adelante.


Paso 2 - Crea tu aplicación

Cada aplicación debe tener un nombre único, ya que también se usan para obtener una vista previa de las URL. Puede llamar a esta aplicación como desee, ya que pronto la ocultará detrás de un dominio, pero llámela como algo obvio y memorable..


Paso 3 - Configurar Git

Git es un sistema de gestión de versiones extremadamente útil. En este momento, es enormemente popular gracias a sitios como GitHub que permiten el alojamiento gratuito de códigos sociales, pero también es ideal para implementar su código..

Si eres nuevo en Git, prueba el curso intensivo.

Si aún no lo has hecho, configura Git. Su documentación te ayudará a empezar. Los usuarios de Windows lo encontrarán un poco más difícil que los usuarios de OSX o Linux, por lo que si tiene una Máquina Virtual de Ubuntu por ahí, sería un buen momento para activarlo..


Paso 4 - Crea tu clave SSH

Para enviar su código a Pagoda Box, debe autorizar a su computadora para que tenga acceso a las aplicaciones en su cuenta. Crea una clave SSH y pégala aquí.


Paso 5 - Implementar su código

Primero, configure una carpeta para su aplicación y configure los controles remotos de Git. Los mandos a distancia son esencialmente apodos para una URL de repositorio. Al configurar este control remoto, le estamos permitiendo a nuestro representante local de Git saber cómo enviar el código a Pagoda Box.

 $ mkdir my-awesome-app && cd my-awesome-app $ git init Inicializado repositorio de Git vacío en /Users/phil/Sites/my-awesome-app/.git/ $ git remoto agregar pagoda [email protected] : my-awesome-app.git

Ahora, con toda esta configuración de cuenta y entorno hecha, podemos comenzar a implementar el código. Por ahora, desplegaremos una aplicación simple Hello World:

 $ echo ''> index.php

Este es un pequeño truco de la línea de comandos para poner texto en un archivo. Alternativamente, puede crear este archivo con su editor de texto favorito o IDE..

 $ git add index.php $ git commit -m "OH HAI" [master (root-commit) 6aa23f4] OH HAI 1 archivos modificados, 1 inserciones (+), 0 eliminaciones (-) modo de creación 100644 index.php

Hasta ahora, hemos creado una nueva carpeta para nuestro sitio web, inicializamos Git, agregamos un control remoto que le indica a Git dónde vive la aplicación Pagoda Box y agregamos una nueva index.php archivo, que simplemente dirá Hola Mundo!. Siguiente:

 $ git push pagoda master Contando objetos: 3, hecho. Objetos de escritura: 100% (3/3), 244 bytes, hecho. Total 3 (delta 0), reutilizado 0 (delta 0) :: Implementación automática habilitada para que 'master' +> cambie, visite https://dashboard.pagodabox.com/apps/my-awesome-app/admin :: Implementación to 6aa23f4 en master :: Parsing Boxfile :: Ejecutando deploy +> Init submodules +> Booting web1.1 - [22-Feb-2012 20:38:41] AVISO: fpm is running, pid 54 - [22-Feb-2012 20:38:41] AVISO: listo para manejar conexiones +> Propagando actualizaciones de red :: Limpiando A [email protected]: my-awesome-app.git * [nueva rama] master -> master

Aquí es donde ocurre la magia. Presionará a un control remoto de Git como cualquier otro repositorio, pero luego verá que la salida de Pagoda Box se hace cargo y crea un despliegue. Esto activará una nueva instancia cada vez y pasará instantáneamente de la instancia en vivo a esta nueva instancia, lo que significa actualizaciones inmediatas, a diferencia de los sistemas de implementación de archivos basados ​​en FTP lentos. Además, a diferencia de algunos servicios similares, todos sus archivos temporales (caché, registros, carga de imágenes, etc.) estarán allí después de cualquier cambio de tamaño o re-implementación. Increíble!

Ahora, si actualiza la página de Pagoda Box, verá un Panel con todo tipo de opciones.


Paso 6 - Creando un archivo de caja

Pagoda Box tiene un archivo de configuración especial: Archivo de caja. Esto va en la raíz de su aplicación. Un ejemplo avanzado puede parecer algo como esto:

 web1: ################################################ ## CONFIGURACIÓN GENERAL ############################################## ## shared_writable_dirs: [/ system / cms / cache, / system / cms / logs, / uploads, / addons] ######################### ####################### ## CONFIGURACIONES ESPECÍFICAS DE LA WEB ###################### ########################## index_list: [index.php] ################# ############################### ## PHP AJUSTES ESPECÍFICOS ############### ################################## php_version: 5.3.8 php_extensions: [mysqli, curl, gd, mbstring] php_date_timezone: Europe / London php_max_execution_time: 30 php_max_input_time: 60 php_post_max_size: 25M php_file_uploads: On php_upload_max_filesize: 20M php_max_file_uploads: 20

Este ejemplo le da la oportunidad de crear carpetas de escritura, configurar su index_list (que es index.php por defecto) y cambiar todo tipo de configuraciones de PHP que normalmente estarían en un php.ini expediente.

La línea más importante aquí es:

 extensiones_pp: [mysqli, curl, gd, mbstring]

Pagoda Box le permite listar sus dependencias de aplicaciones. Los "mysqli"driver is" MySQL Improved ", que debería comenzar a usar, ya que" mysql "quedará obsoleto en PHP 5.4." curl "y" gd "son bastante estándar y" mbstring "lo ayuda a trabajar con el código UTF-8.

Es bueno saber que están disponibles, junto con muchos otros, pero para este tutorial solo necesitaremos lo siguiente:

 extensiones_pp: [pdo, pdo_mysql]

Así que vamos a hacer nuestro nuevo archivo de Box y guardarlo:

 web1: extensiones_pp: [pdo, pdo_mysql]

Usaremos esto más adelante.


Paso 7 - Crear una base de datos

En el momento de escribir este artículo, Pagoda Box solo admite bases de datos MySQL, lo cual está bien, ya que es lo que la mayoría de los desarrolladores utilizan.

Podemos iniciar tantas instancias de bases de datos pequeñas como queramos de forma gratuita; solo comenzamos a pagar cuando se hacen más grandes, por lo que no te sorprenderá una factura masiva solo por crear un sitio web. Al igual que las instancias web, también se pueden escalar para crecer con su sitio web..

Para hacer una nueva, haga clic en + icono y darle un nombre. Verás una barra de progreso en la parte superior mientras se construye; entonces la página se actualizará.


Paso 8 - Conectando desde su aplicación

Conectarse a través de PHP es muy fácil. Te dan multiples $ _SERVER variables, que contienen credenciales para cada base de datos que tiene. Esto significa que puede mantener las contraseñas codificadas de su aplicación, lo cual es muy útil si no quiere que todos sus desarrolladores vean las contraseñas en vivo o si tiene su sitio web completo en GitHub, como algunas personas están empezando a hacerlo..

 $ db = nuevo PDO (sprintf ('mysql: host =% s; dbname =% s; puerto =% s', $ _SERVER ['DB1_HOST'], $ _SERVER ['DB1_NAME'], $ _SERVER ['DB1_PORT'] ), $ _SERVER ['DB1_USER'], $ _SERVER ['DB1_PASS']);

Este es un ejemplo básico de las variables en uso: conectarse a su base de datos MySQL a través de la extensión PDO. Si está utilizando un marco, como CodeIgniter, puede insertar esas variables en su database.php archivos de configuración.


Paso 9 - Conectando Remotamente

Algunos servidores web, especialmente los de configuración de cPanel run-of-the-mill, tienen instalado phpMyAdmin y pueden configurarse para permitir el acceso remoto a las bases de datos MySQL.

En lugar de este enfoque, Pagoda Box utiliza Ruby Gem para, entre otras cosas, crear un túnel SSH seguro temporal. Esto significa que sus bases de datos MySQL están bloqueadas detrás de un firewall y solo son accesibles a través de esta conexión segura SSH.

Por lo tanto, para instalar la carrera de gemas:

 $ sudo gem install pagoda

Luego, para crear el túnel, simplemente ejecute:

 $ pagoda túnel db1

La primera vez que ejecute este (o cualquier otro comando de pagoda gem) se le pedirá un nombre de usuario y una contraseña. Este es su nombre de usuario y contraseña de Pagoda Box, y es necesario para que la gema pueda actuar en su nombre y no tenga nada que ver con su base de datos.

 $ pagoda tunnel db1 parece que esta es la primera vez que usa nuestro cliente Nombre de usuario: someguy Contraseña: ¡Túnel establecido! Aceptando conexiones en: ---------------------------------------------- - HOST: 127.0.0.1 (o localhost) PUERTO: 3307 USUARIO: (se encuentra en el panel de control de pagodabox) PASA: (se encuentra en el panel de control de pagodabox) --------------------- -------------------------- (nota: ctrl-c Para cerrar este túnel)

Vaya a su panel y haga clic en la base de datos, luego haga clic en "Mostrar credenciales" para ver una ventana de información como esta:

Utilice estas credenciales para conectarse. No te olvides de especificar qué puerto; aparece en la salida de la gema anterior, no en el cuadro verde. Recuerde que se está conectando al túnel local, no directamente a la base de datos.


Paso 10 - Haciendo un Blog

¿Qué tipo de tutorial sería este si no implicara hacer un blog en 20 minutos??

Para todo el desarrollo, realmente debería estar construyendo cosas localmente usando MAMP, XAMPP, WAMP, etc., luego implementando cambios en el código y la base de datos usando algún tipo de "Migraciones" o cosas de seguimiento de cambios de esquema, pero lo haremos a la antigua usanza..

Primero conéctese a su base de datos de forma remota a través del túnel, luego ejecute esta consulta para crear una nueva tabla:

 CREATE TABLE posts ('id' int (11) NOT NULL AUTO_INCREMENT, 'title' varchar (255) NOT NULL, 'slug' varchar (255) NOT NULL, texto 'resumen' NOT NULL, 'cuerpo' texto NOT NULL, ' created_at 'int (11) NOT NULL,' updated_at 'int (11) NOT NULL, PRIMARY KEY (id)) MOTOR = InnoDB; INSERT INTO VALUES ('1', 'Las mujeres aman a los tipos que usan FuelPHP', 'Las mujeres-amor-chicos-que-usan-fuelphp', 'Es un hecho bien comprobado que las chicas aman a los desarrolladores, pero las cosas nunca han sido tan bueno para los desarrolladores de PHP. Todos los que comienzan a usar FuelPHP obtienen un 150% más de mujeres durante el primer mes. Hecho. "," Es un hecho comprobado que las chicas aman a los desarrolladores, pero las cosas nunca han sido tan buenas para los desarrolladores de PHP. Todos los que comienzan el uso de FuelPHP obtiene un 150% más de mujeres durante el primer mes. Hecho. ',' 1322825332 ',' 1322934052 '), (' 2 ',' Las personas que hacen eco de las aplicaciones mueren más jóvenes ',' malas prácticas ',' Los científicos tienen Se comprobó que los desarrolladores de PHP que hacen eco directamente de los archivos PHP son mucho más jóvenes. A menudo sucede mientras el desarrollador está en la oficina. Mientras están sentados en sus sillas, sufren múltiples heridas, pero aparentemente no hay testigos, a pesar de que sus colegas estaban en la oficina. oficina \ "código incorrecto de refactorización \" todo el día. ',' Texto importante del cuerpo ',' 1322826479 ',' 1322826479 ');

Con algunas publicaciones de prueba en su lugar, podemos crear este index.php:

 consulta ('SELECCIONAR * de publicaciones') como $ fila) echo "

$ fila ['título']

"; eco "

Publicado: ".date ('l jS \ of F Y', $ row ['created_at'])".
"; echo $ row ['resumen']."

";

Con ese archivo guardado y nuestro nuevo archivo de caja (del paso 6) en su lugar, podemos implementar estos nuevos cambios:

 $ git add Boxfile index.php $ git commit -m "Se agregó Boxfile y se implementaron los cambios de index.php" $ git push pagoda master

Vaya a "http://my-awesome-app.pagodabox.com" y vea la salida:

Claramente, esto no es algo que querrás ejecutar en tu sitio web, pero hace lo suficiente. Puede ver que el contenido de su base de datos se envía al navegador y que la URL de demostración está funcionando. Puede reemplazar esto con su CMS de su elección, o construir algo personalizado.


Paso 11 - Usa un dominio real

No tiene sentido tener tu nuevo blog maravilloso en un pagodabox.com subdominio así que vamos a aparcar un dominio encima de él.

Primero, en la pestaña DNS / SSL de su panel, agregue algunas entradas para su dominio:

Ahora que su aplicación está lista para aceptar un dominio, debe dirigirse a quienquiera que maneje el DNS para su dominio. Vaya al área de administración de DNS y establezca una UNA grabar para "myawesomedomain.com" ser "50.97.141.37" - que es la dirección IP que aparece en la interfaz de su aplicación. Estas direcciones IP no son únicas por aplicación, pero no siempre serán las mismas. Establecer un registro CNAME para "www.myawesomedomain.com" a alias "myawesomedomain.com" y deberías estar todo listo.


Resumen

Todo esto puede parecer bastante diferente de cómo trabajas en este momento, pero empieza a pensar cuánto trabajo te estás ahorrando a largo plazo. El uso de PaaS es la misma razón por la que usamos jQuery sobre JavaScript nativo, o los frameworks de PHP sobre la escritura de PHP nativo. ¿Por qué jugar con detalles menores cuando puedes concentrarte en construir una aplicación increíble??

Otras alternativas que podría considerar son PHPFog y Orchestr.io, que ofrecen servicios similares. Diviértete, y gracias por leer.!