首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 4、Capistrano 3和Dotenv -如何使用服务器端.env文件进行部署

Rails 4、Capistrano 3和Dotenv -如何使用服务器端.env文件进行部署
EN

Stack Overflow用户
提问于 2017-01-10 07:10:54
回答 2查看 2.1K关注 0票数 3

我有一个带有Dotenv的Rails 4应用程序来读取文件.env中的变量。

我设置了一些变量,以便让mysql用户使用rails应用程序中的"root“以外的用户,例如:

代码语言:javascript
运行
AI代码解释
复制
MYSQL_ROOT_USER='rootuser'
MYSQL_ROOT_PASSWORD='rootpassword'
APP_DATABASE_USER='mydbuser'
APP_DATABASE_PASSWORD='userpassword'

我还创建了一个bash脚本,用于在scripts/database_setup.bash下创建mysql用户

代码语言:javascript
运行
AI代码解释
复制
#!/bin/bash
source ../.env
# creates the user
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "CREATE USER '${APP_DATABASE_USER}'@'localhost' IDENTIFIED BY '${APP_DATABASE_PASSWORD}';"
# grants permission
mysql -u${MYSQL_ROOT_USER} --password="${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON \`myapp\_%\`.* TO '${APP_DATABASE_USER}'@'localhost';"

在服务器端,Capistrano部署到`/home/myuser/app/myapp/

我有三个问题:

  1. 放置服务器端.env文件的最佳位置是哪里?现在,我把它放在/home/myuser/apps/myapp/目录中。
  2. 我如何告诉Capistrano将其复制到Rails根目录?
  3. 在运行迁移之前,我如何告诉Capistrano执行bash脚本?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-10 07:38:38

在生产环境中,我认为您根本不应该使用.env

也许最好把ENV车放进去:

/etc/environment

通过这样编写变量:

export ENV_VARIABLE=value

票数 5
EN

Stack Overflow用户

发布于 2017-03-27 19:17:30

如果有人在这方面仍有问题,下面是我的.env如何在生产中与Capistrano 3.5+一起工作:

在生产中将.env.production添加到/shared目录。然后,在部署脚本中,使用Capistrano的append命令从/shared目录加载链接文件,如下所示:

代码语言:javascript
运行
AI代码解释
复制
append :linked_files, ".env.production"

运行标准部署(cap production deploy)

您可以测试是否通过在生产模式(rails c p)中从/current目录中启动rails控制台来附加env。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41572037

复制
相关文章

相似问题

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