vielsoft/drupal7-framework

此软件包的最新版本(0.2.4)没有提供许可证信息。

安装: 8

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 14

类型:项目

0.2.4 2016-07-06 22:59 UTC

README

这是开发“Promet Way”起点的一个示例。

您可以通过使用Composer最轻松地开始您的Drupal项目。

composer create-project vielsoft/drupal7-framework YOUR_PROJECT_NAME

运行此命令将下载此项目的最新版本到名为your_project_name的新目录,并在其中调用composer install,这将触发额外的脚本,从Composer下载的包中创建一个工作的Drupal根目录在www子目录中。

我们在composer.json中引用了自定义的Composer仓库这里。这个仓库是通过使用drupal/parse-composer遍历drupal.org上已知的项目列表创建的,包括Drupal本身的包元数据,以及所有带有Drupal 7版本的合法软件包。

我们使用drupal/tangler通过响应installupdate事件来创建Drupal根目录,并使用由drupal/drupal-library-installer-plugin提供的自定义安装程序来处理将ckeditor放置在最终Drupal应用程序的库目录中。我们还使用winmillwill/settings_compilecnf/config.yml渲染settings.php文件,这确保了一个没有PHP知识但了解settings.php中不同可调整参数的操作员能够更新不同部署的应用程序,而无需进行任何修补。

当您向项目添加模块时,只需更新composer.json并运行composer update。您还需要将一些版本锁定,因为您会遇到破坏其他功能的点发行版。如果您对这种做法非常挑剔,那么如果点发行版在您的测试、客户确认以及将更改实际部署到生产之间发生,您将永远不会意外安装错误的模块版本。如果您对约束明智,您将能够在不尝试记住已知不可行的版本和解决方案的情况下更新您的贡献——您只需运行composer update即可完成。

这种策略听起来很像drush make,但实际上,如果您从drush make中提取出好想法,然后丢弃了所有其他内容,然后丢弃了那些好想法以获得更好的想法,然后添加了更多的好想法,那么您就会得到这样的结果。

参见

项目自定义

您可能首先想要定制一下您的盒子的一些内容。这些脚本被构建起来以去除大部分配置的工作。您可能想做以下两件事之一

更改项目名称

通过编辑项目变量,您可以为项目提供一个自定义名称。请注意,这将影响构建中的其他几个配置,包括基本模块的名称以及站点所在的文件夹。

更改VM IP

您可以编辑 IP 变量,如果您想同时运行多个虚拟机。

开始开发

  • 您需要编辑机器的本地主机文件。添加以下条目 10.33.36.11 drupalproject.dev
  • 运行 vagrant up --provision 来构建环境。
  • 使用 vagrant ssh 登录。
  • 导航到 /var/www/sites/drupalproject.dev
  • PARTY!!!

Vagrant provision 目前会进行完整站点的安装。

为了更新而不重新构建,请从 vagrant 箱的项目根目录中运行 build/update.sh

如果您正在处理现有网站,请注意,默认的安装脚本允许您提供一个参考数据库以开始开发。只需将 sql 文件添加到以下任一位置

  • build/ref/drupalproject.sql
  • build/ref/drupalproject.sql.gz

使用

重要

此项目使用 drop_ship 模块来处理部署的可重复部分,因此如果您没有定义依赖项,则所有内容都将被禁用。 DROPSHIP_SEEDS 环境变量(见下面)应仅包含顶级项目模块和环境特定模块。

DROPSHIP_SEEDS=drupalproject:devel

使用 Vagrant 实现轻松开发

我们有一个 Vagrantfile,它引用了一个 Debian 7 箱,其中包含 php 5.4、apache2 和 mysql。安装 Vagrant 后,您可以开始这样进行开发

vagrant up                                 # turn on the box and provision it
vagrant ssh                                # log into the box like it's a server
cd /var/www/sites/drupalproject.dev        # go to the sync'ed folder on the box
alias drush="$PWD/vendor/bin/drush -r $PWD/www" # use drush from composer
drush <whatever>                           # do some stuff to your website

构建和部署脚本

您可能已经注意到,配置 Vagrant 箱会调用 build/install.sh,这会导致我们的所有模块被启用,从而提供起始架构。

请注意,build/install.sh 实际上只是安装 Drupal,然后传递给 build/update.sh,这是一个可重复且非破坏性的脚本,用于将代码更新应用到具有现有内容的 Drupal 站点。这是您在测试时使用的工具,以查看您的更改是否已持久化,以便您的合作者可以使用它们

build/install.sh                                # get a baseline
alias drush="$PWD/vendor/bin/drush -r $PWD/www" # use drush from composer
drush sql-dump > base.sql                       # save your baseline
# ... do a whole bunch of Drupal hacking ...
drush sql-dump > tmp.sql                        # save your intended state
drush -y sql-drop && drush sqlc < base.sql      # restore baseline state
build/update.sh                                 # apply changes to the baseline

例如,如果您未能提供删除基本配置的字段更新钩子,您应该会看到很多错误。或者,如果您已经做了正确的事情,并点击了应该现在可以正常工作的内容,但您发现它没有按预期工作。这是一个修复这些问题的绝佳时机,因为您知道您想要做什么,而您的合作者则不知道!

实际应用更新,包括管理启用模块、触发它们的更新钩子、禁用不应启用的内容以及回滚功能,由 drupal/drop_ship 处理,它使用(kw_manifests 的分支)提供一组具有相互依赖关系的可扩展部署任务。

由于规范无法接收命令行参数,我们使用环境变量向它们传递信息,并提供一个 env.dist,从中创建一个 .env 文件,然后我们的脚本将引用该文件。这允许具有对目标环境访问权限的运营商在频道之外更新这些可调整参数,从而使您可以将任何任意修订版本部署到任何环境。

特别是,用于生成所有应启用的内容的依赖图所使用的模块列表位于 DROPSHIP_SEEDS 环境变量中。您可能会注意到它只有一个列表,并且它是一个具有依赖项的名称不佳的无操作模块。在现实生活中,您会为该模块命名一个与您的项目相关的名称,并且它将负责整体功能或应用程序,例如提供生成必须启用的所有内容的依赖项的最小模块集。您可以将此视为一个不糟糕的安装配置文件,因为它不是单例的,因此可以小心地将整个项目嵌入使用此工作流程的另一个项目中。

参见

本地测试

所有以自动方式进行测试的都可以在您的虚拟机上以同样的方式进行。只需从项目文件夹中运行此命令,它就会进行编码标准测试

./build/drupalcs.sh

或者运行此命令进行behat测试

./build/runtests.sh

待办事项

  • build/scripts/default_set_theme 改为清单
  • 使README更加简洁,将讨论内容提取成文章或博客

故障排除

以下是安装过程中的一些已知问题。

问题1

Your requirements could not be resolved to an installable set of packages.

 Problem 1
   - Installation request for fabpot/goutte v1.0.7 -> satisfiable by fabpot/goutte[v1.0.7].
   - fabpot/goutte v1.0.7 requires ext-curl * -> the requested PHP extension curl is missing from your system.
 Problem 2
   - Installation request for instaclick/php-webdriver 1.0.17 -> satisfiable by instaclick/php-webdriver[1.0.17].
   - instaclick/php-webdriver 1.0.17 requires ext-curl * -> the requested PHP extension curl is missing from your system.
 Problem 3
   - fabpot/goutte v1.0.7 requires ext-curl * -> the requested PHP extension curl is missing from your system.

上述问题表示您未安装curl。

问题1的解决方案

在Ubuntu上,您可以安装 php5-curl 来修复它。只需运行 sudo apt-get install php5-curl

致谢

这个栈是由PrometSource的团队成员创建的。必须向他们致以敬意。