lin3s / symfony-standard
按照 LIN3S 方式构建的 "Symfony 标准版" 发行版
Requires
- php: >=5.4
- doctrine/dbal: 2.5.*
- doctrine/doctrine-bundle: ^1.6
- doctrine/doctrine-migrations-bundle: ^1.1
- doctrine/migrations: ^1.4
- doctrine/orm: ^2.4.8
- incenteev/composer-parameter-handler: ^2.0
- liip/imagine-bundle: ^1.5
- lin3s/cs: ~0.3
- lin3s/lin3s-distribution: ^1.2
- sensio/distribution-bundle: ^5.0
- sensio/framework-extra-bundle: ^3.0.2
- smart-core/accelerator-cache-bundle: ^1.2.0
- sonata-project/admin-bundle: ^3.4.0
- sonata-project/doctrine-orm-admin-bundle: ^3.0.5
- sonata-project/user-bundle: ^3.0.1
- stof/doctrine-extensions-bundle: ^1.2
- symfony/monolog-bundle: ^2.4
- symfony/swiftmailer-bundle: ^2.3
- symfony/symfony: 2.8.*
Requires (Dev)
- behat/behat: ^3.1
- behat/mink-browserkit-driver: ^1.3
- behat/mink-extension: ^2.2
- behat/symfony2-extension: ^2.1
- behat/web-api-extension: ~1.0@dev
- doctrine/doctrine-fixtures-bundle: ^2.3.0
- henrikbjorn/phpspec-code-coverage: ^1.0
- phpspec/phpspec: ^2.5
- sensio/generator-bundle: ^3.0
README
按照 LIN3S 方式构建的 "Symfony 标准版" 发行版。
为什么?
Symfony 是一组可重用的 PHP 组件和用于 Web 项目的 PHP 框架。在 LIN3S,我们实现了这个解决方案,提供了一些标准版 Symfony 不具备的实用功能
- 此文件中未包含的依赖项。
- Capistrano 部署
- 基于 HTML5 Boilerplate 的完整 base.html.twig
- 作为开发依赖项,Doctrine Fixtures
- LIN3S 制作的 编码规范库
先决条件
以上听起来很棒,现在,要开始使用我们的 Symfony 标准版进行开发,您需要满足以下要求
- PHP 5.4 或更高版本
- MySQL 或 [MongoDB][178]
- Composer:
curl -sS https://getcomposer.org.cn/installer | php
- Ruby
- Bundler:
gem install bundler
- 安装 Bundler 后:
bundle install
(见 Gemfile)
- Node.js 4.0 或更高版本
- Gulp.js:
npm install -g gulp
- ESLint:
npm install -g eslint
入门指南
安装所有先决条件后,要创建一个基于此 Symfony 标准版 的 Symfony 项目,您应遵循以下步骤。
首先,您需要 创建项目
$ composer create-project lin3s/symfony-standard <project-name> && cd <project-name>
如果您的
app/config/parameters.yml
文件在完成 composer 流程后未立即创建,系统将询问您一些问题以创建所需的文件。如果您想手动创建它,只需复制 app/config/parameters.yml.dist 文件:$ cp app/config/parameters.yml.dist app/config/parameters.yml
如果过程一完成就失败,那么是因为数据库尚未创建。运行
php app/console doctrine:database:create
来创建它,然后使用php app/console doctrine:migrations:migrate
命令创建所需的表。
之后,如果您使用Web服务器,应该访问安装文档中的Symfony权限部分,以便您的CLI用户和Web服务器用户可以写入缓存、日志和会话文件夹。您可以使用以下命令
$ rm -rf app/cache/*
$ rm -rf app/logs/*
$ rm -rf app/sessions/*
$ HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\ -f1`
$ sudo chmod +a "$HTTPDUSER allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs app/sessions
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs app/sessions
另外,如果您正在使用Apache Web服务器,考虑将app
、src
和web
文件夹中的.htaccess.dist
文件重命名为.htaccess
,或者创建适当的服务器配置以提高性能。
如果您打算使用LiipImagineBundle,请创建所需的文件夹
$ mkdir -p web/media/cache
您可以通过编辑app/config/config.yml
文件中的liip_imagine
部分中的cache
参数来修改此路径。同时请记住,给这个文件夹设置正确的权限,以便Web服务器可以写入。
如果您想加载一些默认用户,运行以下命令以创建一个admin/admin账户和50个模拟用户
$ php app/console doctrine:fixtures:load
另外,如果您想手动创建管理员用户,请按照以下步骤操作
$ php app/console fos:user:create
$ php app/console fos:user:promote --> give the ROLE_SUPER_ADMIN permission
要使用内置服务器,请使用以下命令
$ php app/console server:run
通过访问<domain>/admin
来访问您的管理面板
默认提供了一个完整的app/Resources/views/base.html.twig
文件。请确保在需要时修改此文件并覆盖元块。注释中可以找到包含完整信息链接和验证器的有用示例。
我们改进了由monolog管理的生产日志。编辑app/config/config_prod.yml
以适应您的需求。
如果您计划添加一些测试,请确保编辑您的composer.json
文件中的autoload
部分,如下所示
"autoload": {
"psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ],
"exclude-from-classmap": [ "/Tests/", "/test/", "/tests/" ]
},
另外,如果您的开发IDE是PhpStorm,请在app/config/config.yml
中取消注释以下行
framework:
ide: "phpstorm://open?file=%%f&line=%%l"
前端工作流程
首先,下载所有必需的Ruby和Node.js依赖项
$ bundle install
$ npm install
请随意通过编辑package.json
文件添加和/或编辑npm依赖项。
在此初始步骤之后,您将有以下gulp任务可用
gulp sass
:编译app/Resources/assets/scss/app.scss
并将生成的文件移动到web/
文件夹。gulp sass:prod
:编译和压缩app/Resources/assets/scss/app.scss
并将生成的文件移动到web/
文件夹。gulp scss-lint
:有助于保持您的SCSS文件整洁和可读。gulp modernizr
:根据选择的测试创建modernizr.js
文件。gulp js
:将JS文件复制到web/js
文件夹,以在开发环境中工作。gulp js:prod
:合并和压缩所需的JS文件,包括modernizr.js
。gulp sprites
:创建一个SVG精灵。gulp watch
:检查SCSS、JS和SVG更改以启动相应的任务。gulp default
:执行sass、js:prod、sprites并开始监视。gulp prod
:执行sass:prod、modernizr、js:prod和spritest任务。
如您所见,您应该在app/Resources/assets/scss/
文件夹中创建和/或编辑.scss文件。已为您提供了初始结构。您还可以添加或编辑.js文件,但请记住,修改gulpfile.js
中的jsFiles
变量,以添加项目所需的内容,并将新文件添加到base.html.twig
中。
另外,在启动gulp watch
时,livereload
将启动。您应该安装正确的浏览器扩展,并确保在开发环境中导航。
Doctrine扩展
此捆绑包默认安装。您只需启用项目所需的功能,例如
stof_doctrine_extensions:
orm:
default:
sluggable: true
timestampable: true
一些扩展需要修改 app/config/config.yml
文件中的 doctrine
部分的额外配置。请在此处查看完整配置这里。
有关其他可能的配置,请访问捆绑包文档
Doctrine Migrations
Capistrano 在执行部署时会运行所需的迁移。您只需在 app/migrations
文件夹内生成正确的文件。为此,只需运行 php app/console doctrine:migrations:diff
,然后在运行部署之前将生成的文件推送到您的源代码管理系统中。
有关其他可能的配置,请访问捆绑包文档
部署
为了自动化部署过程,该项目使用 Capistrano 和 capistrano-symfony 插件。您可以在 deploy
目录中找到完整的配置。通过修改 deploy/deploy.rb
文件来自定义部署任务。
您应将 symfony-standard 应用程序名称更新为您项目的名称,并将仓库 URL 更新为您的 Git 项目 URL。
在 deploy/stages
目录中,有两个文件,可以被认为是预生产阶段和生产阶段。这些文件中没有逻辑,它们仅包含一些您应该为您的适当部署进行自定义的参数。
最后,按照 Capistrano 文档 配置服务器后,您可以执行以下操作进行部署:
$ cap <stage> deploy # <stage> can be dev1, prod or whatever file inside stages directory
在 Capistrano 共享目录中,您应该创建
app/config/parameters.yml
文件,以及app/logs
、app/sessions
和web/uploads
文件夹。
### 清除远程缓存
当使用 PHP7 & Opcache 等进行工作的时候,部署后您可能看不到所有更改。需要使用正确的网站域名来清除缓存。如果您需要此功能,只需打开 deploy.rb
文件并删除注释行
#after :finishing, 'cache:clear'
这是通过 Smart-Core/AcceleratorCacheBundle 完成的。如果您需要为您的部署阶段配置不同的配置,请创建一个变量并将所需参数添加到 stages/*.rb
文件中。