一尘不染

为理论和elasticsearch设置环境变量

elasticsearch

如何为symfony设置环境变量。

就像我运行我的项目一样,它应该解开环境并执行操作,例如-

http: //production.com -> prod * environment *
http: //localhost:9200 -> * dev * environment --- for elasticsearch
http: //localhost:8000 -> * dev * environment --- for doctrine/mysql

因此,如果我在本地主机上运行mysql请求,则应在以下位置发出请求

http: //localhost:8000

如果我提出对Elasticsearch的要求,则应在以下位置提出要求

http: //localhost:9200

如果它在生产环境中运行,则应在

http: //production.com:9200 --- elasticsearch
http: //production.com:8000 --- doctrine/mysql

我认为可以做到这一点,parameters.yml但我真的不知道如何做到。

有人可以帮我解决这个问题。非常感谢高级。


阅读 279

收藏
2020-06-22

共1个答案

一尘不染

我不确定这是什么问题,因此我将为您提供更一般的答案。

Symfony提供了一种非常好的方式来针对不同情况(或环境)配置项目。您应该看一下详细解释事情的官方文档

默认情况下,Symfony具有针对不同环境的3种配置:

  1. app/config/config_dev.yml 为了发展
  2. app/config/config_prod.yml 用于生产
  3. app/config/config_test.yml 用于(单元)测试

每个配置文件都可以覆盖基本配置文件中的设置app/config/config.yml。您将在此处存储常规/通用设置。每当需要为特定环境覆盖某些内容时,只需转到环境配置并进行更改。

假设您在中具有以下基本配置app/config/config.yml

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%prod_database_host%"
        port:     "%prod_database_port%"
        dbname:   "%prod_database_name%"
        user:     "%prod_database_user%"
        password: "%prod_database_password%"
        charset:  UTF8

现在让我们说,你必须为每个环境中3级不同的数据库-
proddevtest。这样做的方法是覆盖环境配置文件中的配置(让我们说app/config/config_dev.yml

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%dev_database_host%"
        port:     "%dev_database_port%"
        dbname:   "%dev_database_name%"
        user:     "%dev_database_user%"
        password: "%dev_database_password%"
        charset:  UTF8

在和中添加必要的%dev_*%参数。现在,每当您使用环境打开应用程序时,它将在您的参数()中连接到指定的数据库。app/config/parameters.yml.dist``app/config/parameters.yml``dev``%dev_database...%

差不多了。您可以对在特定环境中需要更改的任何配置执行相同的操作。您绝对应该看一下文档。通过示例直接说明。

2020-06-22