versiones proyecto new my_project instalar full español crear symfony deployment assets assetic
http://www.vincentprat.info/tmp/acra-server-1.0.0.ziphttp://www.vincentprat.info/tmp/acra-server-1.0.0.zip

proyecto - Creando un zip de aplicación Symfony 2 listo para usar



symfony windows (4)

He creado un paquete de aplicaciones symfomy que se puede usar para recopilar informes de fallos de aplicaciones de Android (para aquellos interesados ​​en Android y ACRA: https://github.com/marvinlabs/acra-server ).

Las personas que están de acuerdo con eso pueden simplemente instalar esa aplicación como un paquete regular de Symfony 2, obteniéndolo de GitHub y haciendo todas las cosas de línea de comando que se necesitan, PERO deseo que las personas puedan instalar esa aplicación de manera muy simple y sin:

  • cualquier conocimiento de symfony
  • que requiere acceso al compositor php
  • requiriendo escribir cualquier línea de comando php

Para hacer eso, he empacado un archivo zip que contiene todo el código de Symfony + mi paquete. Problema: parece que CSS y Javascripts no se encuentran correctamente, aún necesito ejecutar un comando en el servidor:

php app/console assetic:dump --env=prod --no-debug

Pregunta 1: ¿Cómo podría deshacerme de ese último paso?

Pregunta 2: En general, ¿qué agregarías a mi proceso antes de crear el archivo comprimido?

Antes de hacer ese archivo zip, esto es lo que hago:

  • Eliminar todas las carpetas de git
  • Eliminar mi archivo app / config / parameters.yml (específico de mi entorno de desarrollo)

También ejecuto los siguientes comandos:

php app/console cache:clear --env=dev php app/console cache:clear --env=prod php app/console doctrine:schema:create --env=dev --dump-sql > create-schema.sql php app/console doctrine:schema:update --env=dev --dump-sql > update-schema.sql php app/console assets:install --env=prod --no-debug php app/console assetic:dump --env=prod --no-debug

PD:

Instrucciones para instalar para aquellos que quieran intentar solucionarlo:

  1. Descargue http://www.vincentprat.info/tmp/acra-server-1.0.0.zip
  2. Cargue el contenido zip en su servidor
  3. Dar permisos 777 a la aplicación de directorios / registros y aplicación / caché
  4. Crear archivo app / config / parameters.yml desde el archivo de muestra app / config / parameters.yml.dist
  5. Crear tablas de bases de datos con la ayuda del archivo create-schema.sql
  6. Haga que su (sub) dominio apunte al directorio acra-server / web
  7. Acceda a la página de inicio: http://www.example.com/dashboard

Editar 12/06/2013

Listado de archivos y permisos justo después de descomprimir

~/acra-server/web$ ls -l css total 10 -rw-r--r--+ 1 vincentp users 8990 May 23 18:26 d82d504.css ~/acra-server/web$ ls -l js total 103 -rw-r--r--+ 1 vincentp users 104721 May 23 18:26 7cb568e.js

Listado de archivos y permisos después del comando de volcado de assetic

:~/acra-server$ ls -l web/js total 281 -rw-r--r--+ 1 vincentp users 205123 May 28 21:48 7cb568e.js -rw-r--r--+ 1 vincentp users 21767 May 28 21:48 b96fe74.js

Podemos ver que se ha generado otro archivo JS (lo mismo ocurre con CSS). Supongo que Assetic no está buscando los archivos correctos de la descompresión. ¿Alguna idea sobre cómo corregir eso? ¿Tal vez forzar la fuerza para usar un nombre de archivo dado?


¿Qué está diciendo html? ¿Tus rutas de activos se generan correctamente?

Y veo una: "recursos de php app / console: install --env = prod --no-debug"

así que en realidad el CSS debe estar allí.

Tal vez intente el comando con su dir web. que copia sobre el CSS de su carpeta de Recursos / Público a su web / nombre de paquete / ...

"recursos de php app / console: install web"

o es lo mismo?


Volcado a un nombre de archivo dado

( opción de salida de assetic )

Puede configurar su colección de activos para volcar en un nombre de archivo dado. Esto se puede lograr dentro de la rama con la opción de salida . No más nombres de archivos generados automáticamente como 7cb568e.js .

ejemplo:

{% stylesheets ''bundles/mlabsacraserver/stylesheets/*'' filter=''cssrewrite'' output=''css/stylesheets.css'' %} <link href="{{ asset_url }}" type="text/css" rel="stylesheet" /> {% endstylesheets %}

... o javascripts ...

{% javascripts ''bundles/mlabsacraserver/js/jquery.min.js'' ''bundles/mlabsacraserver/js/*'' output=''js/javascripts.js'' %} <script src="{{ asset_url }}" type="text/javascript"></script> {% endjavascripts %}

Ahora assetic va a volcar sus activos a js / javascripts.js y css / stylesheets.css usando los filtros dados.

La ruta base donde assetic va a volcar estos activos se puede configurar en su config.yml con assetic.write_to y defaults.to the web / folder.

colecciones de activos preconfigurados

puede hacerlo aún mejor y mantener su código más estructurado. Puede definir colecciones de activos dentro de su config.yml (u otro archivo de configuración importado).

La configuración se puede encontrar en assetic.assets

ejemplo:

# app/config.yml assetic: # ... assets: js_main: inputs: - "bundles/mlabsacraserver/js/jquery.min.js" - "bundles/mlabsacraserver/js/*" output: js/javascripts.js css_main: inputs: - "bundles/mlabsacraserver/stylesheets/*" filters: - cssrewrite # ...add more if you like output: css/stylesheets.css

Ahora puede usar estas colecciones dentro de sus plantillas de rama usando la función asset() assetic y la @ -syntax con los nombres de colección correspondientes.

ejemplo:

<link href="{{ asset(''@css_main'') }}" type="text/css" rel="stylesheet" />

... y ...

<script src="{{ asset(''@js_main'') }}" type="text/javascript"></script>

De esta forma puede configurar dónde buscarán sus activos activos, cambiar los nombres con un único parámetro de configuración y mantener esta lógica fuera de sus plantillas, haciéndolas más legibles y fáciles de mantener.

ejemplo resultado resultante:

<link href="/web/css/stylesheets.css" type="text/css" rel="stylesheet" /> <script src="/web/js/javascripts.js" type="text/javascript"></script>

Ahora tiene un único punto de configuración en su aplicación donde agrega y elimina activos usando colecciones y luego simplemente usa su nombre de referencia en sus plantillas.

más mejoras para la implementación

Puede hacer que los usuarios ingresen su host, usuario y contraseña de MySQL y que Symfony escriba el archivo de parámetros por usted.

Esto es lo que hace la edición estándar de Symfony con SensioDistributionBundle cuando accede por primera vez a su aplicación.

La clase que realiza la escritura real de los parameters.yml es Sensio / DistributionBundle / Configurator / Configurator .

use Sensio/DistributionBundle/Configurator/Configurator;

Ahora usa el configurador en tu Controlador de instalación.

$configurator = new Configurator($this->get(''kernel'')->getRootDir()); $configurator->mergeParameters(array( ''my_parameter'' = ''my_value'', ''my_parameter2'' = ''my_value2'', )); $configurator->write(); }

Lo mejor será mirar la clase Configurator en sí para entender cómo funciona.

¿Puedo hacer una generosidad ahora? ;-)


lo siento pero (de nuevo hablaré de tener que ejecutar líneas de comando) cómo tener que escribir 7 comandos (downaload / wget, descomprimir, chmod, cp, sql, config) es más simple que hacer

composer create-project marvinlabs/acra-server --prefer-dist acra-server

Si agrega algunas secuencias de comandos de instalación posterior , incluso podría configurar automáticamente el servidor web / ...

Por ejemplo, el paso de parametere.yml ya lo maneja una secuencia de comandos de compositor en Symfony-standard ( https://github.com/Incenteev/ParameterHandler ).

Le sugiero encarecidamente que no use un archivo zip, pero si lo desea, aquí hay enlaces para solucionar su problema de assetic:

De forma predeterminada, assetic siempre genera nombres de archivo únicos, por lo que cada volcado es otro nombre de archivo.


Si no es crítico para usted, es posible que no use assetic en absoluto y no combine todos los archivos de activos en uno. Pierdes todas las características como minify, combine y otras. En cambio, ya no es necesario ejecutar la php app/console assetic:dump --env=prod --no-debug .

Para hacer eso: ejecutar php app/console assets:install web . Copia todos tus activos a web/bundles carpeta web/bundles . Luego, en la plantilla base.html.twig puede incluir sus activos de forma manual.

{% block stylesheets %} <link href="{{ asset(''bundles/mlabsacraserverbundle/stylesheets/style.css'') }}" rel="stylesheet" media="screen"> ... {% endblock %} {% block javascripts %} <script src="{{ asset(''bundles/mlabsacraserverbundle/js/jquery.min.js'')}}"></script> ... {% endblock %}

Esta es la forma más sencilla de resolver su problema.

Otra forma es llamar al comando desde el código php como se describe en la documentación aquí y vivir el ejemplo aquí . Puede hacer una página de instalación , donde ejecutar este comando e instalar activos.