我需要为我的应用程序的邮件功能定义一个这样的环境变量才能工作:
RUBY_MAIL_SMTP_SETTINGS='
:address: "smtp.example.com"
:port: "25"
:authentication: :plain
:encryption: :tls
:user_name: "user"
:password: "pass"
'
Run Code Online (Sandbox Code Playgroud)
将其粘贴到 bash 终端可以正常工作,但将其放入环境文件并从带有该EnvironmentFile
选项的 systemd 单元文件中引用它不起作用:
juli 01 07:17:58 myserver systemd[1]:忽略无效环境 'RUBY_MAIL_SMTP_SETTINGS= juli 01 07:17:58 myserver systemd[1] ::地址:“smtp.example.com” juli 01 07:17:58 myserver systemd[1]::端口:“25” juli 01 07:17:58 myserver systemd[1]::authentication::plain juli 01 07:17:58 myserver systemd[1]::encryption::tls juli 01 07:17:58 myserver systemd[1]::user_name:“用户” juli 01 07:17:58 myserver systemd[1]::password:"pass"':/usr/local/etc/myproject/environment
我试过在每一行后附加一个反斜杠,如下所示:
RUBY_MAIL_SMTP_SETTINGS='\
:address: "smtp.example.com"\
:port: "25"\
:authentication: :plain\
:encryption: :tls\
:user_name: "user"\
:password: "pass"
'
Run Code Online (Sandbox Code Playgroud)
这有效,但被解释为一长行,这意味着无法将内容解析为 YAML。
那么这是否意味着无法将多行环境变量添加到 systemd 环境文件中?
小智 5
您需要引用整个变量赋值(不是值)和反斜杠每一行。
示例服务文件:
[Service]
Environment='RUBY_MAIL_SMTP_SETTINGS=\
:address: "smtp.example.com"\
:port: "25"\
:authentication: :plain\
:encryption: :tls\
:user_name: "user"\
:password: "pass"\
'
ExecStart=/bin/echo $RUBY_MAIL_SMTP_SETTINGS
Run Code Online (Sandbox Code Playgroud)
运行此示例将生成日志:
Oct 27 14:03:32 io echo[9621]: :address: smtp.example.com :port: 25 :authentication: :plain :encryption: :tls :user_name: user :password: pass
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5699 次 |
最近记录: |