创建即用型 symfony 2 应用程序 zip

2024-05-17

我创建了一个 symfomy 应用程序包,可用于从 Android 应用程序收集崩溃报告(对于那些对 Android 和 ACRA 感兴趣的人:https://github.com/marvinlabs/acra-server https://github.com/marvinlabs/acra-server).

对此感到满意的人可以简单地将该应用程序安装为常规 Symfony 2 捆绑包,方法是从 GitHub 获取它并执行所有需要的命令行操作BUT我希望人们能够非常简单地安装该应用程序,而无需:

  • 任何有关 symfony 的知识
  • 需要访问 php 作曲家
  • 需要输入任何 php 命令行

为此,我打包了一个 zip 文件,其中包含整个 Symfony 代码 + 我的包。问题:似乎没有正确找到CSS和Javascript,我仍然需要在服务器上运行命令:

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

问题 1:我怎样才能摆脱最后一步?

问题 2:总的来说,在制作 zip 文件之前,您会在我的流程中添加哪些内容?


在制作该 zip 文件之前,我会执行以下操作:

  • 删除所有 git 文件夹
  • 删除我的 app/config/parameters.yml 文件(特定于我的开发环境)

我还执行以下命令:

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

PS:

  • 演示在那里:http://acra-server-demo.marvinlabs.com/dashboard http://acra-server-demo.marvinlabs.com/dashboard
  • Zip 文件在那里:http://www.vincentprat.info/tmp/acra-server-1.0.0.zip http://www.vincentprat.info/tmp/acra-server-1.0.0.zip (17MB)

对于那些想要尝试排除故障的人来说,安装说明如下:

  1. 下载http://www.vincentprat.info/tmp/acra-server-1.0.0.zip http://www.vincentprat.info/tmp/acra-server-1.0.0.zip
  2. 将 zip 内容上传到您的服务器上
  3. 为目录 app/logs 和 app/cache 授予权限 777
  4. 从示例文件 app/config/parameters.yml.dist 创建文件 app/config/parameters.yml
  5. 在文件 create-schema.sql 的帮助下创建数据库表
  6. 让您的(子)域指向目录 acra-server/web
  7. 访问主页:http://www.example.com/dashboard http://www.example.com/dashboard

编辑 12/06/2013

解压后立即列出文件和权限

~/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

assetic dump 命令后的文件和权限列表

:~/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

我们可以看到又生成了一个JS文件(CSS也一样)。我猜 Assetic 并没有从解压中寻找正确的文件。关于如何纠正这个问题有什么想法吗?也许强制 assetic 使用给定的文件名?


转储到给定文件名

( assetic的输出选项 )

您可以将资产集合配置为转储到给定的文件名。这可以在树枝内部实现output选项。不再自动生成文件名,例如7cb568e.js.

example:

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

...或JavaScript ...

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

现在 assetic 会将您的资产转储到js/javascripts.js and css/样式表.css使用给定的过滤器。

assetic 将转储这些资产的基本路径可以在 config.yml 中配置:assetic.write_to并默认到 web/ 文件夹。

预配置的资产集合

您可以做得更好并使代码更加结构化。 您可以在 config.yml (或另一个导入的配置文件)中定义资产集合。

配置可以在下面找到资产.资产

example:

# 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

现在您可以使用 assetic 在您的 twig 模板中使用这些集合asset()函数和@- 具有相应集合名称的语法。

example:

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

... 和 ...

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

通过这种方式,您可以配置 assetic 在何处查找您的 asset,使用单个配置参数更改名称,并将此逻辑保留在模板之外,从而使它们更具可读性且更易于维护。

结果输出示例:

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

现在,您的应用程序中有一个配置点,您可以在其中使用集合添加和删除资产,然后只需在模板中使用它们的引用名称。

部署的进一步改进

您可以让您的用户输入他们的 MySQL 主机、用户和密码,并让 symfony 为您写入参数文件。

这就是 symfony 标准版使用的功能SensioDistributionBundle https://github.com/sensio/SensioDistributionBundle当您第一次访问您的应用程序时。

执行实际写入parameters.yml的类是Sensio\分发包\配置器\配置器 https://github.com/sensio/SensioDistributionBundle/blob/master/Configurator/Configurator.php.

use Sensio\DistributionBundle\Configurator\Configurator;

现在使用安装控制器中的配置器。

   $configurator = new Configurator($this->get('kernel')->getRootDir());

   $configurator->mergeParameters(array(
        'my_parameter' = 'my_value',
        'my_parameter2' = 'my_value2',
   ));

  $configurator->write();
}

最好的办法是查看 Configurator 类本身以了解它是如何工作的。

我现在可以领取赏金吗? ;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建即用型 symfony 2 应用程序 zip 的相关文章

  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • phpstorm xdebug 与 symfony2 项目

    我正在尝试使用 xdebug 和 phpstorm 调试 symfony2 应用程序 我的本地开发环境是Ubuntu 14 04 with apache2 Xdebug版本是2 2 7 我在另一个 php 不是 symfony2 项目上使用
  • 无法加载文件或程序集“System.Web.Razor”或其依赖项之一

    我在我的网站 Web 应用程序 中使用了 Umbraco 4 11 6 我的网站在 localhost 中工作 通过 Visual Studio 2012 和 IIS v7 进行测试 但是当我从互联网空间运行它时 出现错误 错误是 无法加载
  • Symfony2 捕获会话超时

    我有一个关于 Symfony2 的问题 希望有人能帮助我 Symfony 在哪里检查用户会话以及没有会话时该怎么办 就像重定向到登录页面一样 我发现了一些类似的问题 但不是我的意思 我为什么想知道它 如果有会话超时 我想检查调用是否是 Xm
  • 是否可以使用 GitHub Action 和 GitHub FTP Deploy 将 Laravel Web 应用程序部署到共享托管?

    是否可以deploy the Laravel网络应用程序到共享主机使用 GitHub Action 和 GitHub FTP 部署 如果可能的话我应该如何更改 github workflows master yml on push bran
  • [程序名称].exe已停止工作

    我有一个基于 Framework 2 0 构建的 NET 应用程序 我已经为它构建了一个安装程序 并尝试在具有 3 5 的计算机上运行它 所有相关环境均在Windows 7上 该应用程序在我的开发机器上以 VS 调试模式完美运行 该机器也具
  • 如何在 kubernetes 上使多个 pod 相互通信

    我是 Kubernetes 新手 我正在尝试通过 microk8s 将应用程序部署到 Kubernetes 该应用程序包含Python Flask后端 Angular前端 Redis和MySQL数据库 我将映像部署在多个 Pod 中 状态显
  • 如何在 Jetty 中配置 webapps 部署目录

    这一定是一个非常简单的答案 但我似乎找不到 我刚刚开始使用码头7 0 2 on CentOS 5 5并部署了一个webapp使用默认设置 只需将我的 WAR 文件放入 webapps目录 当 Jetty 启动时 它将战争提取到 tmp je
  • FOSUserBundle 强制用户写入不同的密码

    我有一个使用 FOSUSerBundle 在 Symfony2 0 上运行的应用程序 连接该应用程序的用户每 3 个月必须更改一次密码 密码已就位且正在运行 今天 如果用户每 3 个月写入与前一个密码相同的新密码 则无需验证 他还可以使用该
  • symfony2.3中'url'和'path'有什么区别

    文件说 src Acme ArticleBundle Resources views Article recentList html twig for article in articles a href article title a e
  • 使用 Git 部署时压缩 JS/CSS 文件

    我对 git 有点陌生 另外 这是我第一个自动化部署过程的项目 到目前为止 能够做到这一点真是太幸福了git push dev并上传文件 复制配置文件等 现在 当我推送到我的开发服务器时 我想缩小 JS CSS 文件 我正在考虑在服务器上安
  • 列出当前请求中使用的所有 Twig 模板

    我正在使用 Symfony2 和 Twig 模板引擎 有没有办法输出当前请求中加载的所有 Twig 模板文件的列表 包括通过加载的模板文件extends include etc 当覆盖第三方捆绑包的块时 这将使我的生活变得更加轻松 但我找不
  • TeamCity - 自动化在哪里

    我们安装了 TeamCity 和 TFS 它们运行良好 我的问题是这两者应该如何提高我们的工作流程效率 一旦我在开发计算机上更改代码 我必须转到 TeamCity UI 来运行构建和测试吗 这里面的自动化在哪里 无论如何我都是手动做的 我在
  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • Capistrano 部署擦除数据库?

    我已成功使用 Capistrano 将我的应用程序部署到生产环境 但我不明白如何处理我的数据库 我正在使用颠覆和乘客 当我运行 cap 部署时 新部署会重新启动一切 它会清除添加到数据库中的数据 显然 必须有一个解决方案 但我很惊讶没有在网
  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json
  • 如何通过 API 平台使用“paramconverter”?

    如何通过 Symfony API 平台实现或使用 paramconverter 我想在路线上使用实体 ID 并立即生成一个对象 准备在控制器中使用 我没有在这个项目上使用注释 路由配置位于 YAML 文件中 resources App Me
  • 使用 Capistrano 通过 FTP 部署(非 Rails 站点)?

    我该怎么办呢 我有一个大部分静态的网站 托管在一个廉价的网络主机上 只允许通过 FTP 访问托管 该网站是在 git 中跟踪的 我正在使用 OS X 我想通过简单地执行以下操作来上传该网站的新版本cap deploy 我们使用 capist
  • XML 到 YAML 转换

    我怎样才能把它转换成yml

随机推荐

  • Facebook iPhone SDK:上传图像时显示进度条

    我想在我的 iPhone 应用程序将图像上传到 Facebook 时显示进度条 是否可以 我可以对我发出的每个 FBRequest 执行此操作吗 我还使用 FBRequest 来检查扩展权限 有时需要花费很多时间 谢谢 对于进度条 您可以做
  • Service Fabric 有状态服务远程处理 V2

    我有一个由无状态服务调用的有状态服务 在 Visual Studio 15 4 上运行的 Net Standard Asp net Core 2 0 中 我无法使 Service Remoting V2 工作 适用于 V1 的有状态服务中的
  • 将文件从不同目录复制到公共目录

    我有很多目录 其中包含 c文件 我想复制全部 c使用 shell 脚本将不同目录中的文件复制到单个目录 find name c exec cp t tmp 启动当前目录中的所有项目 递归 获取名称结尾的项目 c 将这些项目复制到 tmp 如
  • 致命:.git/info/refs 无效:这是一个 git 存储库吗?

    我有一个托管在 Assembla 上的 Git 存储库 我正在尝试执行以下操作 git push u origin master 我一遍又一遍地收到以下错误 fatal https url repo name git info refs n
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • 是否可以将新表和旧表从触发器传递到 MySQL 中的过程中?

    是否可以将新表和旧表从触发器传递到 MySQL 中的过程中 我怀疑不会 因为没有过程接受的表这样的数据类型 有什么可能的解决方法吗 理想情况下它看起来像这样 CREATE TRIGGER Product log AFTER UPDATE O
  • 依赖注入来解决与运行时数据的依赖关系

    我正在为我的 Web api 项目使用简单的注入器 我有一项服务需要会话令牌才能实例化 public class CustomerService public CustomerService Auth auth IRepositoryFac
  • 将 transaction.commit_manually() 升级到 Django > 1.6

    我继承了为 Django 1 4 编写的应用程序的一些代码 我们需要更新代码库以使用 Django 1 7 并最终更新到 1 8 作为下一个长期支持版本 在一些地方它使用旧风格 transaction commit manually and
  • 如何使用 $resource 获取状态代码?

    我提出请求的工厂在这里 angular module myapp factory testResponse http resource AppConfig routeParams rootScope function http resour
  • 从 iOS 13 开始安排 iOS 后台任务

    我正在实现用于更新数据的BackgroundTasks 框架 但我遇到了以下问题 无法计划刷新App 错误域 BGTaskSchedulerErrorDomain代码 1 空 无法安排数据提取 Error Domain BGTaskSche
  • 在 Pandas 中,如何从基于另一个数据框的数据框中删除行?

    我有 2 个数据框 一个名为 USERS 另一个名为 EXCLUDE 他们都有一个名为 电子邮件 的字段 基本上 我想删除 USERS 中包含 EXCLUDE 中包含电子邮件的每一行 我该怎么做 您可以使用boolean indexing
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 堆分配什么的语法?

    是否有语法 模板或函数允许我将任何值本质上转换为指向该值的指针 IE 将其复制到GC堆并返回指向它的指针 new 并不适用于所有类型 std experimental allocator 不适用于 ctfe 并且两者似乎都在指向委托时遇到了
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • Selenium 与 HtmlUnit? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我试图更好地理解测试框架并一直在研究 Selenium 我用过HTMLUnit http htmlun
  • 从 Mac 命令行访问 iOS 应用程序目录(沙箱)

    我需要使用 Mac 或 Linux 上的命令行 非 GUI 访问 iOS 设备上安装的应用程序的沙箱目录 这有助于开发和测试自动化 将 json 文件放入沙箱中可以让我设置参数 例如额外的调试消息和更小的刷新间隔 像 iFunBox 这样的
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • HTML 属性不带引号?

    我一直认为html的属性中需要引号 div class service definition or div class service definition 但最近我注意到 w3 验证器不会将以下内容识别为错误 div class serv
  • 高效memcspn

    有谁知道 memcspn 函数的有效实现吗 它的行为应该类似于 strcspn 但在内存缓冲区中查找跨度 而不是在以 null 结尾的字符串中查找跨度 目标编译器是 VisualC 谢谢 卢卡 一种近乎最佳的实现 size t memcsp
  • 创建即用型 symfony 2 应用程序 zip

    我创建了一个 symfomy 应用程序包 可用于从 Android 应用程序收集崩溃报告 对于那些对 Android 和 ACRA 感兴趣的人 https github com marvinlabs acra server https gi