Advertisement
  1. Code
  2. Yii

Creando su startup con PHP: Cómo elegir y configurar alojamiento web de producción

by
Read Time:10 minsLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Exporting iCal Files into Calendar Events
Building Your Startup With PHP: Collecting and Managing User Reports and Feedback

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

Este tutorial forma parte de la serie Creando su startup con PHP en Envato Tuts+. En esta serie, te voy guiando a través del lanzamiento de un inicio de concepto a realidad utilizando mi aplicación de Meeting Planner como un ejemplo de la vida real. Cada paso, voy a publicar el código de Meeting Planner como ejemplos en código abierto del que puede aprender. También me ocuparé de asuntos relacionados con el inicio del negocio a medida que surjan.

En este tutorial, exploraré la elección de una plataforma de alojamiento ideal para Meeting Planner y la configuración inicial de nuestro servidor. Estaré guiando a través del proceso a medida que migre el sitio web de lanzamiento previo a un mejor entorno de producción para nuestro próximo lanzamiento alfa.

Si aún no ha probado Meeting Planner, siga adelante y programe su primera reunión. Participo en los hilos de los comentarios de abajo, así que ¡dígame lo que piensa! Me interesa especialmente si desea sugerir características o temas para futuros tutoriales.

Como recordatorio, todo el código para Meeting Planner está escrito en el Yii2 Framework para PHP. Si desea obtener más información acerca de Yii2, consulte nuestra serie paralela Programando con Yii2.

Selección de una empresa de alojamiento

Para muchas empresas, AWS de Amazon es la solución emergente. Cuando AWS se cae, también lo hacen muchos de los servicios más conocidos de la web. Pero AWS también es costosa, a menudo excesivamente compleja, y dirigida poruna compañía que tiene una historia de hostilidad hacia los empleados, especialmente sus trabajadoras mujeres y de los almacenes. Además, Amazon ha presionado por su cuenta el rápido desarrollo excesivo de mi ciudad natal Seattle de tal manera que ha cambiado la ciudad para siempre, pero no necesariamente para bien.

Recientemente, escribí una guía de alternativas a Amazon para servicios de computación en la nube. Hay un montón de competidores, ninguno tan vasto, pero muchos más, más accesible y más fácil de usar. A medida que el Meeting Planner crece, puedo considerar AWS de nuevo, pero por ahora quiero buscar en otro lugar.

A corto plazo, a lo sumo, necesitaré un servidor o dos corriendo servicios web y de base de datos. Para esto, las empresas de alojamiento gestionado, tales como Rackspace, Linode, y mi favorito Digital Ocean trabajan muy bien.

Por ahora, Meeting Planner puede ejecutarse en un servidor, pero a medida que crece, es posible que necesite varios servidores web y de base de datos. Basado en mi experiencia, AWS facilita la implementación de esto, pero los administradores de sistemas experimentados pueden hacer esto fácilmente con los proveedores de la nube antes mencionados.

Este tutorial le guiará a través del lanzamiento de una web y un servidor de base de datos en las nubes de Digital Ocean.

Trabajando con Digital Ocean

He escrito un puñado de tutoriales sobre Digital Ocean en Envato Tuts +, incluyendo cómo usar su API para la configuración de servidores. Recientemente escribí sobre mi experiencia positiva con el programa de afiliados de Digital Ocean. Divulgación total: cuando se le preguntó, Ocean Digital proporcionó un pequeño crédito para cubrir los costos de los droplet para esta serie por hasta seis meses.

En los últimos dos años que he sido un usuario allí, han mejorado de forma consistente su calidad de servicio, experiencia de usuario, soporte y conjunto de funciones. Por un tiempo ahora, ha sido extremadamente raro experimentar una desaceleración o interrupción, común en el inicio del mercado de alojamiento en nube.

Comencemos configurando el servidor de producción inicial para Meeting Planner.

Configuración de un nuevo Droplet

Creando un nuevo Droplet

Las instancias oceánicas digitales se llaman droplets. Estoy seguro de que pensaron en llamarlos renacuajos o peces, pero los desarrolladores a menudo los destruimos, por lo que droplets (gotas) es un término mejor.

En el menú Droplets, crearemos un Droplet. Primero, elegimos Ubuntu 14.04 para nuestra imagen y la opción de servidor de $10 por mes:

Meeting Planner Hosting - Create DropletMeeting Planner Hosting - Create DropletMeeting Planner Hosting - Create Droplet

Luego elegí la región de San Francisco porque está más cerca de mí:

Meeting Planner Hosting - Choose a RegionMeeting Planner Hosting - Choose a RegionMeeting Planner Hosting - Choose a Region

También le pedí a Digital Ocean que reutilizara mi clave pública para establecer el login; El inicio de sesión de clave es más seguro que el inicio de sesión de contraseña. Luego, elegí el nombre de host apps.meetingplanner.io para el servidor:

Meeting Planner Hosting - Choose a HostnameMeeting Planner Hosting - Choose a HostnameMeeting Planner Hosting - Choose a Hostname

Al hacer clic en Crear, verá la droplet que se está formando:

Meeting Planner Hosting - Status of Your Droplet Being CreatedMeeting Planner Hosting - Status of Your Droplet Being CreatedMeeting Planner Hosting - Status of Your Droplet Being Created

Una vez que esté listo, se le dará una dirección IP, a la que mapeé los registros de dominio meetingplanner.io para la configuración inicial:

Meeting Planner Hosting - Updating Your DNS Records to Point to the DropletMeeting Planner Hosting - Updating Your DNS Records to Point to the DropletMeeting Planner Hosting - Updating Your DNS Records to Point to the Droplet

Voy a esperar hasta más tarde para asignar el dominio raíz meetingplanner.io al nuevo servidor.

Configuración del servidor

Esto es lo que verás cuando inicies sesión en el servidor la primera vez:

Digital Ocean ofrece una amplia variedad de guías útiles. Creé un nuevo usuario para mi cuenta principal no-root y mis cuentas de implementación utilizando esta guia.

También he editado la configuración de SSH para eliminar el inicio de sesión de root y personalizar el puerto SSH a otro que no sea 22.

Luego, instalé el típico servidor UAMP (Ubuntu, Apache, PHP y MySQL) en el servidor. Es posible que acabo de crear una nueva sigla hija de LAMP.

A continuación, configuré mi zona horaria predeterminada. El Meeting Planner (Planificador de reuniones) se ejecuta internamente en la hora estándar del Pacífico (PST). He editado php.ini asi:

Y, agregué esto:

Ahora es el momento de obtener nuestra base de código en el servidor.

Migración del código base y activos

Instalando Git

Primero, instalé git:

Luego, como mi usuario de implementación de código, creé una nueva clave SSH para establecer una conexión segura con GitHub:

También tienes que pegar la clave en la configuración de tu cuenta de Git.

Instalar Composer

A continuación, instalé Composer:

Me encanta composer porque ahorra tanto tiempo, pero hay días en que me molesto con él, cuando deja de funcionar en ninguna parte—como la forma en que Yii Framework requiere que instale el fxp/composer-asset-plugin para usarlo correctamente:

Instalación del código de Meeting Planner

Es cierto que he usado GitHub para sincronizar el código más reciente hasta que me acordé de que en realidad Yii2 configura una gran cantidad de archivos que GitHub ignora, incluyendo index.php. También hay archivos de claves locales y imágenes de perfil de usuario cargadas. Por lo tanto, he utilizado tar para comprimir el código base activo:

Entonces, utilicé SCP para mover los archivos al nuevo servidor, y lo descomprimí:

En última instancia, también hubo algunos trabajos en la revisión de las claves de base de datos local (que he actualizado en el nuevo servidor) y la revisión de mis permisos de archivo.

Ahora, vamos a mover la base de datos.

Mover la base de datos MySQL

Primero, descargué la base de datos existente en un archivo:

Luego, lo moví al nuevo servidor con scp:

En el nuevo servidor, creé una nueva base de datos con nuevos detalles y configuré algunos permisos para Apache:

Finalmente, importé el archivo sql en la nueva base de datos:

Entonces era hora de configurar Apache.

Configuración del servidor web

He creado un archivo .conf en el nuevo servidor:

Pude obtener gran parte desde el archivo .conf existente:

Entonces, activé el sitio y volví a cargar Apache:

Como mencioné anteriormente, tuve que asegurarse de que los archivos locales con claves y rutas de entorno eran correctos en el nuevo servidor.

Aunque definitivamente hubo golpes, en última instancia, todo se unió.

Migración del DNS

Finalmente, volví a mapear el DNS para la URL principal del Meeting Planner. Poco después, el nuevo servidor estaba en linea:

Startup Series - Meeting Planner Home PageStartup Series - Meeting Planner Home PageStartup Series - Meeting Planner Home Page

Puedes notar que utilicé mi tutorial reciente sobre increíblemente impresionante Let's Encrypt: He instalado https para Meeting Planner antes de tomar la captura de pantalla anterior.

Actualización de las tareas cron

Meeting Planner y Let's Encrypt dependen de cron para ejecutar procesos clave en segundo plano. Así pues, moví mis ajustes del crontab desde del servidor viejo:

Lea esto si se está preguntando por qué me refiero a cron en minúsculas.

¿Que sigue?

Meeting Planner ha hecho un tremendo progreso en los últimos meses. He programado reuniones de negocios, y un par de fechas personales  eligieron programar las segundas fechas conmigo usando la aplicación. Sin embargo, todavía hay muchas deficiencias—y los comentarios de los primeros usuarios es vital. Por lo tanto, en el próximo tutorial, voy a configurar un sistema para recopilar comentarios de los usuarios, ayudándoles a obtener respuestas a preguntas comunes y aprendiendo todo lo que pueda para mejorar el servicio antes de declarar MVP y un lanzamiento alfa.

Espero que hayas disfrutado este episodio. Vea los próximos tutoriales en nuestra serie Creando su Startup con PHP, también hay un montón de trabajo polaco y algunas características más grandes.

Por favor, no dude en agregar sus preguntas y comentarios a continuación; Generalmente participo en las discusiones. También puede contactarme directamente en Twitter @reifman.

Enlaces relacionados

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.