Instalación symfony 4 en ubuntu 16.04

Objetivo

Desplegar en un servidor corriendo Ubuntu 16.04* una aplicación de Symfony 4.

Requisitos

  • git
  • PHP => 7.1.3
  • composer
  • nginx

Instalación

PHP
La versión de PHP mantenida en Ubuntu 16.04 es 7.0 y no está previsto que se actualice. Estos son los pasos para instalarla: Como siempre, antes que nada debemos actualizar Ubuntu: $ sudo apt-get update && sudo apt-get upgrade Lo siguiente es añadir un repositorio de terceros para instalar la última versión de PHP. Usaremos el de Ondřej Surý. Primero vamos a comprobar que tenemos el siguiente paquete instalado para poder añadir repositorios: $ sudo apt-get install software-properties-common A continuación añadimos el repositorio de Ondřej: $ sudo add-apt-repository ppa:ondrej/php Le damos al intro para continuar y actualizamos la lista de paquetes: $ sudo apt-get update Ahora ya podemos instalar la última versión de PHP: $ sudo apt-get install php7.2 Además este comando instalará los siguientes módulos:
  • libapache2-mod-php7.2
  • libargon2-0
  • libsodium23
  • libssl1.1
  • php7.2-cli
  • php7.2-common
  • php7.2-json
  • php7.2-opcache
  • php7.2-readline
Nos faltaría los módulos php-sqlite3, php-xml, php7.2-fpm y php-intl: $ sudo apt-get install php-sqlite3 php7.2-fpm php-xml php-intl Y ya está. Podemos comprobar la instalación con este comando: $ php -v
Git, composer y nginx
Git lo utilizaremos para descargar el código y composer para la gestión de paquetes de terceros. $ sudo apt-get install curl php-cli php-mbstring git unzip Composer dispone de un instalador en PHP. Asegúrate que estás en tu home y descarga el instalador usando curl: $ cd ~ $ curl -sS https://getcomposer.org/installer -o composer-setup.php A continuación verifica el hash SHA-384 del instalador con el siguiente script: $ php -r "if (hash_file('SHA384', 'composer-setup.php') === '<span class="text-danger">93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8</span>') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" Asegúrate de cambiar el hash (resaltado en rojo) con el último publicado. Tras correr el script deberías mostrarse el mensaje siguiente: Installer verified Para instalar Composer globalmente: $ sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer Se descargará e instalará Composer como un comando del sistema bajo /usr/local/bin. Confirma que funciona con: $ composer Por último instalamos nginx:
Si tenemos instalado apache, antes de instalar nginx hay que parar el servidor: $ sudo service apache2 stop
$ sudo apt-get install nginx

Despliegue

Vamos a utilizar el directorio ~/app para desplegar la aplicación y el dominio symfony.technoage.net: $ cd ~$ mkdir app$ cd app Instalamos la demo de Symfony 4 con este comando: $ composer create-project symfony/symfony-demo Ahora ya podríamos arrancar la aplicación usando el servidor nativo de php y acceder a ella por el puerto 8000: $ cd symfony-demo/$ php bin/console server:run symfony.technoage.com:8000 Y ya podríamos acceder a ella en http://symfony.technoage.net:8000

Configuración de un servidor web

Si aspiramos a un despliegue más robusto y con más funcionalidades, lo suyo es utilizar un servidor web. En este caso vamos a ver cómo se haría con nginx. Creamos el siguiente fichero de configuración en /etc/nginx/conf.d/symfony.conf Y reiniciamos el servidor de nginx: $ sudo systemctl restart nginx Ahora ya deberíamos poder acceder a la aplicación en http://symfony.techonage.net Más información en: Instalar php7.2 en ubuntu Instalar Composer Configurar servidor web en Symfony 4 (*)Esta solución valdría para versiones superiores también.

Publicaciones Similares

  • Cómo recuperar ficheros borrados de Amazon Linux

    Escenario Tenemos una aplicación de tipo SpringBoot desplegada en una instancia ec2 de Amazon, con el sistema operativo Amazon Linux. Para sincronizar los cambios con el código desplegado en producción utilizo rsync en este script de bash:

    Ayer cuando desplegué, la aplicación no compilaba en el servidor remoto. Era debido a que una clase…

  • La tabla mysql.plugin no existe

    Escenario Después de necesitar restaurar tres veces el servidor de MySql por culpa de varios crashs provocados por un fallo en el disco duro, encuentro en los logs entradas de este tipo: 2020-09-12T18:46:22.347957Z 5 [Warning] InnoDB: Cannot open table mysql/help_relation from the internal data2020-09-12T18:46:22.348985Z 5 [Warning] InnoDB: Cannot open table mysql/innodb_index_stats from the internal data dictionary of InnoDBdictionary Problema En varios foros leo que la solución pasa por hacer un:

    La cuestión es que, cuando lo intento, me encuentro…

  • Actualización de MySQL: de la versión 5.7 a 8.0

    Atención no probar esta solución en sistemas en producción. Es solo una demostración de prueba. Escenario Por la razón que fuera queremos actualizar la versión de MySQL de 5.7 a 8.0 en ubuntu 16.04. En mi caso quería probar si con la actualización mejoraba cierto problemillas que estaba teniendo con la codificación de caracteres. Problema…

  • Instalación y configuración de Guacamole 1.3

    Escenario Necesitamos acceder de manera remota a nuestro entorno de trabajo y hemos decidido que guacamole es nuestra mejor opción. Permite el uso de protocoles estándares como VNC, RDP y SSH No requiere instalar software en las máquinas de los usuarios. Gracias a HTML5, una vez instalado en un servidor, puedes acceder a tu escritorio…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *