¿En qué clase de servidor funciona Symfony?

Quizá el título no sea demasiado descriptivo pero es que tengo este pequeña duda en la cabeza.

Últimamente me he visto en necesidad de usar Codeigniter para un par de cosas que debo hacer, y no es malo, pero es demasiado trabajo manual en muchas ocasiones, la ventaja que tiene es que básicamente funciona donde lo tires; shared, vps, dedicado, cloud, da igual, el arranca de un tajo y mi situación geopolítica me restringe a mi (y a todo cliente potencial) el acceso a dólares, por ende pagar un VPS o cualquier servicio fuera del país es un lujo que muy pocos se pueden dar y pagar servicios de este tipo en moneda local se antoja bastante costoso y sólo proyectos ya planificados con presupuestos bien nutridos se pueden costear.

Por ende lo que normalmente un cliente pequeño-mediano busca es conseguir lo mejorcito que pueda funcionar en un compartido o tratar de resolver por donde se pueda.

¿Opciones? Hasta ahora Yii es lo que podría reemplazar a CI, pero siendo sinceros, aunque automatiza muchas mas cosas, y se pinta muy bueno, no sé, no termina de convencerme.

Llego a la conclusión de que si tengo que elegir, elegiría Symfony o Laravel (este último me parece muy muy bueno) lo que no se, de lo que no he visto rastros ni me han sabido responder es si puedo hacer funcionar apps hechas con estos frameworks en algún shared, por ejemplo.

He visto que en todos los tutoriales basta con XAMPP y Composer instalando Laravel y ya tienes funcionando todo, eso me dice que en teoría funcionaría en un shared común. Pero Laravel posee muchos módulos de Symfony 2 según sé y, los pocos que me han dado opiniones, me dicen que este último no se puede usar así de simple en servidores comunes.

Sólo para cerrar, cuando hablo de proyectos, puedo hablar desde armar páginas web simples, páginas ya con cierto manejo de bases de datos un tanto mas complejas (usuarios, entradas, un CRUD por así decirlo) hasta servicios REST para ser consumidos por apps en JS.

Gracias por adelantado ;)

Respuestas

#1

Creo que la respuesta habría que dividirla en dos partes:

  1. ¿Qué servidor es técnicamente capaz de ejecutar aplicaciones Symfony2?
  2. ¿Qué servidor necesito para que las aplicaciones Symfony2 se ejecuten bien?

¿Qué servidor es técnicamente capaz de ejecutar aplicaciones Symfony2?

Según este artículo de la documentación oficial de Symfony, los únicos requisitos técnicos totalmente obligatorios son los siguientes:

  • PHP 5.3.3 o superior
  • Tener activadas las extensiones de JSON y ctype
  • Configurar la opción date.timezone en el archivo php.ini

El resto de requisitos técnicos que se mencionan son opcionales, aunque en mi experiencia, a nada que hagas una aplicación mínimamente compleja, se transforman en requisitos obligatorios.

En cualquier caso, la mejor forma de probar si un servidor es capaz de ejecutar Symfony2 consiste en utilizar el script check.php que se incluye en el propio código fuente de Symfony. Así que puedes hacer lo siguiente para comprobar si tu servidor cumple con los requisitos:

# instalar Composer si no lo tienes instalado previamente
$ curl -sS https://getcomposer.org/installer | php
 
# descargar Symfony2 si no lo has hecho ya
$ php composer.phar create-project symfony/framework-standard-edition tu-directorio/ 2.3.6
 
# ejecutar el archivo check.php
$ cd tu-directorio/
$ php app/check.php

Si por lo que sea no puedes ejecutar el script, en su código fuente puedes ver la lista completa de requisitos de Symfony2.

¿Qué servidor necesito para que las aplicaciones Symfony2 se ejecuten bien?

La respuesta a esta pregunta es más subjetiva, pero como regla general, si optas por un servidor compartido muy barato (o sea, malísimo) las aplicaciones Symfony2 van a ir muy lentas.

Si el servidor compartido es bueno, Symfony2 se va a ejecutar muy bien. Lo que te aconsejo es que busques bien en el sitio web de las empresas de hosting o que les preguntes directamente si es posible ejecutar Symfony2. En la página de los servidores compartidos de ServerGrove se indica por ejemplo que pueden ejecutar sin problemas tanto Symfony2 como Zend Framework 2. De hecho, la gente de ServerGrove ha llegado a desarrollar una herramienta llamada Maestro para facilitar la instalación y configuración de Symfony 1 y Symfony 2 en los servidores compartidos.

Así que te recomiendo que preguntes directamente a las empresas de hosting que has buscado porque ellos lo van a saber mejor que nadie.

#2

Por ejemplo en 1and1 con un alojamiento compartido no puedo ejecutar la descarga/instalacion de Symfony2. Obtiene un error "Out of memory".

Si ejecutas /app/check.php obtienes OK para casi todas los requisitos salvo la falta de APC y la falta de librerías de terceros (que no se han instalado debido al error anteriormente comentado)

#3

@antoniogarcia78 por eso le comentaba que algunos de los requisitos marcados como opcionales, en la práctica son obligatorios. El caso más claro es el de contar con un acelerador tipo APC, OPCache, etc.

Con respecto al problema Out of memory que comentas, ¿realmente está tan bajo el nivel de memoria en los servidores de 1and1? A menos que la página sea muy compleja, yo no suelo ver páginas de Symfony2 que consuman más de 5 o 6 MB.

#4

El problema me da al intentar instalar las dependencias de Symfony con Composer.

Hay que tener en cuenta que es un hosting compartido y tengo varias aplicaciones en PHP. Algún problema de conexión a MySQL y de memoria he tenido en tareas de actualización masiva de datos.

Personalmente en consola me manejo con lo básico.

#5

@antoniogarcia78, ahora entiendo el problema :) Composer consume una cantidad exagerada de memoria. Si el proyecto tiene muchas dependencias y su resolución es compleja, es posible que ni con 512 megas sea suficiente.

#6

Alguien sabe de algun web hosting que soporte laravel o symfony ?

#7

Es sencillo, busca un hosting compartido con CPanel, como por ejemplo

banahosting (recomendado): https://manage.banahosting.com/aff.php?aff=1965

o

nodenet (poco recomendado): https://nodenet.es/

Por poner un par de ejemplos.

Una vez tu dominio tenga las DNS correctas y puedas acceder a tu servicio, accede a CPanel y ve a buscar Softaculous (app installer). Busca symfony, y é voila! Lo podemos instalar desde ahí. El maravilloso softaculous lo instala solito y a disfrutar! Sirve para: codeIgniter, lavarel, symfony, yii, zend, cakePHP, smarty, devshell... etc etc etc.

Personalmente he tenido hostings compartidos en dhapcenter, 1and1, nodenet, banahosting... y tengo compañeros que han probado otros tantos.

Sin duda alguna, en compartido, Banahosting es mucho mejor que los anteriores. En velocidad, recursos, estabilidad etc. Así que para una aplicación con cualquiera de esos frameworks, recomiendo BANA-CORPORATE DELUXE (9,95$/mes me cuesta, unos 8,9€ ahora mismo. Tengo metido ahí un wordpress, un prestashop y una aplicación que desarrollé con symfony2 y va todo fluido (uso php7).

Por probar podéis coger bana-starter deluxe que sale a mitad de precio si a alguien puede parecerle caro el anterior.

Espero haber ayudado, Saludos!