首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Symfony-CMF项目部署到Heroku

将Symfony-CMF项目部署到Heroku
EN

Stack Overflow用户
提问于 2016-01-31 11:12:21
回答 1查看 636关注 0票数 0

我目前遵循CMF文档来创建一个项目:https://symfony.com/doc/master/cmf/tutorial/introduction.html

当我继续教程的时候,我喜欢把这个项目推给heroku。但是当我需要连接数据库时,我遇到了一个问题。

比我找到的消息来源:https://coderwall.com/p/qpitzq/deploing-symfony-project-using-mysql-to-heroku

这有帮助,但我也需要配置'phpcr_backend‘参数。我把它们放在控制台上:

代码语言:javascript
复制
heroku config:set phpcr_backend=[type:doctrinedbal,connection:default]
or
heroku config:set phpcr_backend=(type:doctrinedbal,connection:default)
or 
heroku config:set phpcr_backend={type:doctrinedbal,connection:default}
or
heroku config:set phpcr_backend=type:doctrinedbal,connection:default

heroku config:set phpcr_workspace=default
heroku config:set phpcr_user=admin
heroku config:set phpcr_pass=admin

并更新parameters_production.php文件:

代码语言:javascript
复制
<?php
$db = parse_url(getenv('...'));
...
$container->setParameter('phpcr_backend', getenv('phpcr_backend'));
$container->setParameter('phpcr_workspace', getenv('phpcr_workspace'));
$container->setParameter('phpcr_user', getenv('phpcr_user'));
$container->setParameter('phpcr_pass', getenv('phpcr_pass'));

现在,当我部署这个项目时,我得到了这个错误:

代码语言:javascript
复制
           [Symfony\Component\Config\Definition\Exception\InvalidTypeException]                                        

       Invalid type for path "doctrine_phpcr.session.sessions.default.backend". Expected array, but got boolean    

我不确定,我把这些参数设置在正确的语法上。就目前而言,这就是问题所在。

编辑:

我在doctrine_phpcr文件中硬编码了config.yml参数:

代码语言:javascript
复制
doctrine_phpcr:
   # configure the PHPCR session
   session:
       backend: { type: doctrinedbal, connection: default}
       workspace: default
       username: admin
       password: admin
    # enable the ODM layer
   odm:
       auto_mapping: true
       auto_generate_proxy_classes: "%kernel.debug%"

当前错误是

代码语言:javascript
复制
PHP Fatal error:  Cannot use 'String' as class name as it is reserved in /tmp/build_4d5c173733f27d9fb1cec775f9522884/ersah123-cmf-testing-118c5df/vendor/doctrine/phpcr-odm/lib/Doctrine/ODM/PHPCR/Mapping/Annotations/String.php on line 32   

编辑2:

通过在composer.json中更改php版本,修复了最后一个问题。现在,当我部署项目时,构建成功。但另一个问题是:

代码语言:javascript
复制
 heroku run php bin/console doctrine:database:create


 [Doctrine\DBAL\Exception\ConnectionException]                                                                                   
  An exception occured in driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known 

您的帮助将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-31 20:15:55

一步一步的说明沙箱。

首先,克隆人:

代码语言:javascript
复制
git clone https://github.com/symfony-cmf/cmf-sandbox.git
cd cmf-sandbox
composer install

然后根据需要声明可选扩展:

代码语言:javascript
复制
php -dmemory_limit=4G $(which composer) require "ext-gd:*" "ext-exif:*"
git add composer.json composer.lock
git commit -m "require gd and exif extensions"

数据库设置

地图(JAWSDB_|CLEARDB_)?DATABASE_URL (composer.json):

代码语言:javascript
复制
diff --git a/composer.json b/composer.json
index 0d880da..07a3ba8 100644
--- a/composer.json
+++ b/composer.json
@@ -91,7 +91,9 @@
         "incenteev-parameters": [
             {
                 "file": "app/config/parameters.yml",
-                "env-map": {}
+                "env-map": {
+                    "database_url": "DATABASE_URL"
+                }
             },
             {
                 "file": "app/config/phpcr.yml",

使用config.yml详细信息更新database_urlconfig_prod.yml

代码语言:javascript
复制
diff --git a/app/config/config.yml b/app/config/config.yml
index 3075825..0685fda 100644
--- a/app/config/config.yml
+++ b/app/config/config.yml
@@ -55,13 +55,6 @@ swiftmailer:
 # for jackalope-doctrine-dbal
 doctrine:
     dbal:
-        driver:   '%database_driver%'
-        host:     '%database_host%'
-        port:     '%database_port%'
-        dbname:   '%database_name%'
-        user:     '%database_user%'
-        password: '%database_password%'
-        path:     '%database_path%'
         charset:  UTF8

 # cmf configuration
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml
index aa51fbf..b704da2 100644
--- a/app/config/config_prod.yml
+++ b/app/config/config_prod.yml
@@ -17,3 +17,7 @@ monolog:
             type:  stream
             path:  '%kernel.logs_dir%/%kernel.environment%.log'
             level: debug
+
+doctrine:
+    dbal:
+        url: '%database_url%'

..。以及更新和提交:

代码语言:javascript
复制
php -dmemory_limit=4G $(which composer) update --lock
git add composer.json composer.lock app/config/config.yml app/config/config_prod.yml
git commit -m "map DATABASE_URL"

日志记录

使用日志记录详细信息更新config_prod.yml

代码语言:javascript
复制
diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml
index b704da2..755cff9 100644
--- a/app/config/config_prod.yml
+++ b/app/config/config_prod.yml
@@ -15,7 +15,7 @@ monolog:
             handler:      nested
         nested:
             type:  stream
-            path:  '%kernel.logs_dir%/%kernel.environment%.log'
+            path:  'php://stderr'
             level: debug

 doctrine:

...and提交:

代码语言:javascript
复制
git add app/config/config_prod.yml
git commit -m "log to stderr in prod"

PHPCR配置需要在repo中:

代码语言:javascript
复制
cp app/config/phpcr_doctrine_dbal.yml.dist app/config/phpcr.yml
sed -i '' '/phpcr.yml/d' .gitignore
git add app/config/phpcr.yml
git commit -m "PHPCR config"

创建一个Procfile

代码语言:javascript
复制
echo 'web: $(composer config bin-dir)/heroku-php-apache2 web/' > Procfile
git add Procfile
git commit -m "Heroku Procfile"

部署

代码语言:javascript
复制
heroku create
heroku config:set SYMFONY_ENV=prod
heroku addons:create heroku-postgresql
git push heroku master

init DB

代码语言:javascript
复制
heroku run "php app/console doctrine:phpcr:init:dbal --force"
heroku run "php app/console doctrine:phpcr:workspace:create default"
heroku run "php app/console doctrine:phpcr:repository:init"
heroku run "php app/console -v -n doctrine:phpcr:fixtures:load"

完成了!

代码语言:javascript
复制
heroku open
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35113169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档