AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[environment-variables](server)

Martin Hope
Windscale
Asked: 2022-04-09 06:33:25 +0800 CST

systemd ExecStart、ExecStop 子句中的环境变量未按预期工作

  • 0

我正在为一些 systemd 服务处理一些单元文件。我的一些二进制文件的路径前缀很长,它们在 ExecStart=、ExecStartPost= 和 ExecStop= 子句中多次使用。

我定义了一些环境变量(也需要传递给服务),例如:

Environment=ORACLE_HOME=/u01/app/oracle/product/19/db_1

我相信,从 systemd.service(5) 的“命令行”部分,我应该能够在 Exec*= 子句中使用变量扩展 - 例如:

ExecStart=${ORACLE_HOME}/bin/dbstart

当我尝试这样做并执行 systemctl daemon-reload 时,我在日志中收到以下错误:

systemd[1]: [/usr/lib/systemd/system/oracle.service:37] Executable path is not absolute, ignoring: ${ORACLE_HOME}/bin/dbstart /u01/app/oracle/product/19/db_1

systemd 文档非常清楚,要运行的文件的路径必须以 / 开头(允许的前缀除外),但是我缺少的语法是否有一些细微差别可以让我做我想做的事?

最终,我想要包含使用的环境变量的文件,以便它们可以在 systemd 单元文件中使用,也可以用于设置配置文件等。

我正在使用 RHEL7 和 RHEL8。

linux service environment-variables systemd
  • 1 个回答
  • 460 Views
Martin Hope
Petr Gladkikh
Asked: 2021-09-12 03:36:25 +0800 CST

避免 pod 环境变量与 Docker 样式的链接冲突

  • 1

我们以 Docker 作为容器运行时在 Kubernetes 中运行或组件。它的一个问题是 pod 环境被 Docker 风格的链接变量污染了,比如

  • SERVICENAME_PORT_8181_TCP
  • SERVICENAME_PORT_HTTP
  • ......
  • SERVICENAME_PORT

对于每个可见服务(相同命名空间中的服务)。在这种情况下,自动创建的变量很容易与显式声明的环境发生冲突。这有时会导致难以诊断的问题。我也不想依赖那些自动变量,因为我希望容器不依赖于 Kubernetes 服务配置的细节。目前,我正在为显式变量添加唯一名称前缀以避免此类冲突。

有没有办法配置集群不为每个可见服务添加这些自动变量?或者,使用其他运行时会containerd解决这个问题吗?令我惊讶的是,由于通过环境变量进行配置被认为是一种很好的做法,因此没有现成的 googleable 解决方案。一般来说,我如何在不遇到此类命名冲突的情况下使用环境?或者服务名称被认为是与容器合同的一部分,我不应该随意更改它们?

environment-variables kubernetes
  • 1 个回答
  • 143 Views
Martin Hope
myNewAccount
Asked: 2021-05-09 14:15:20 +0800 CST

从技术上讲,curl、ping 和其他工具如何绕过 NGINX 前端反向代理服务器?

  • 0

如果安装了像 NGINX 这样的前端服务器,我无法理解 Linux 机器上的通信是如何发生的。

例如,这是我的设置。

基于 AWS / EC2 linux 的实例

NGINX - 前端服务器

Node.js / Express - 上游服务器

在这个设置中,即使没有设置环境变量,我也可以通过 NGINX 与ping、和其他工具进行通信。默认情况下,无需任何附加配置,这些工具就知道如何通过 NGINX 并进入互联网。curlNode Package Managerhttp_proxy

在这个常见的设置中,为什么我不必设置http_proxy或类似的东西来允许外部通信?安装 NGINX 后,不是所有流量都通过它吗?

environment-variables proxy reverse-proxy
  • 1 个回答
  • 521 Views
Martin Hope
myNewAccount
Asked: 2021-04-15 13:44:19 +0800 CST

在 profile.d 中的 CentOS 8 上,我是否需要将与环境变量相关的脚本添加到 .sh 和 .csh 文件中?

  • 0

我需要添加与代理服务器相关的环境变量,以允许我的 node.js 应用程序与 Google Cloud 上的 reCAPTCHA Enterprise 通信。

当我通过访问 Google Cloud API 运行脚本时,尽管已成功启用与 Google Cloud的代理通信。但是,展望未来,我需要在启动时提供代理支持。

export GRPC_VERBOSITY=DEBUG  
export GRPC_TRACE=handshaker

export HTTP_PROXY=http://localhost:3128
export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128
export HTTPS_PROXY=http://localhost:3128

当我检查我的profile.d目录时,我注意到它同时具有.sh和.csh文件。例如,

colorgrep.csh
colorgrep.sh
colorls.csh
colorls.sh
colorxzgrep.csh
colorxzgrep.sh
colorzgrep.csh
colorzgrep.sh
csh.local
gawk.csh
gawk.sh
lang.csh
lang.sh
less.csh
less.sh
nano.sh
sh.local
which2.csh
which2.sh

我是否需要将与代理相关的脚本复制并粘贴到单个.sh文件中,还是应该将它们也添加到.csh文件中?也可以进行简单的复制和粘贴,还是需要更改格式?

centos bash environment-variables shell-scripting
  • 1 个回答
  • 138 Views
Martin Hope
user549144
Asked: 2021-01-13 22:34:31 +0800 CST

如何让我的 PHP 源安装使用 /usr/local/programname/lib 或 /usr/local/lib 中的库?

  • 1

如何让我的 PHP Source 安装使用里面的库/usr/local/programname/lib代替或/usr/local/lib?

我尝试将 LD_LIBRARY_PATH 设置为每个程序名称,例如LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib".

而且,我退出了。甚至运行source /etc/environment(我已将 LD_LIBRARY_PATH 变量放在 /etc/environment 中),甚至重新启动系统。

但是,当我运行时./configure --with-openssl --with-curl,它告诉我 libssl 不存在。

我不想使用apt提供的libssl-devandlibcurl-dev包,因为我需要最新版本来测试。

而且,我注意到:如果我安装程序的 lib 目录/usr/local/lib而不是/usr/local/programname/lib,它可以在不设置任何环境变量的情况下工作。

但是,在我看来,/usr/local/programname/lib更清楚,所以我想使用这种类型的路径。

我怎样才能使 PHP 使用里面的库/usr/local/programname/lib而不是/usr/local/lib?我的意思是,我想/usr/local/programname/lib比其他lib目录更优先。

programname是指安装在 中的每个程序的名称/usr/local。

我什至尝试使用(我在里面/etc/ld.so.conf.d/programname.conf写过),然后运行​​. 但仍然没有运气。/usr/local/programnameldconfig

顺便说一句,我使用的是 Ubuntu 20.10

编辑:

“不要与系统的约定作对” ——我不能就这样继续前进。我必须尝试这样做,否则我会被卡住,并且依赖于 apt 给我的有点旧的包(即使它给了我最新的包,我也不能,例如:使用 http/3 并测试它和更多的..)。而且,将无法进行任何测试。我这样做是为了让我的程序经得起未来的考验,甚至是为了享受这些试验的乐趣。通过使用新程序进行测试。安装/usr/local感觉不太好,因为我测试了多个版本的库。就像我使用 OpenSSL 1.1.1i 和 OpenSSL 3.0.0 以及其他版本进行测试一样。所以,安装到 /usr/local 不会让我受益,但安装到/usr/local/openssl-1.1.1i和/usr/local/openssl-3.0.0会更干净,会节省我更多的时间。我不能每次都make install继续跑步。make uninstall不仅是 OpenSSL,甚至是 cURL 和其他包。

php environment-variables configuration make libraries
  • 2 个回答
  • 151 Views
Martin Hope
arthur
Asked: 2020-12-10 00:13:19 +0800 CST

在 windows 中为不同的用户设置环境变量

  • 0

网络上有大量示例如何为当前用户设置环境变量。是否可以在 Windows 中为不同的用户设置环境变量(没有登录权限?)

windows environment-variables
  • 1 个回答
  • 2014 Views
Martin Hope
Mervin Hemaraju
Asked: 2020-12-06 14:19:13 +0800 CST

Python 在导出环境变量时抛出 KeyError

  • 0

我有一个奇怪的情况,我有一个 secret.env 文件,我在其中设置了所有环境变量:

秘密.env

export TWITTER_CONSUMER_KEY="something"
export TWITTER_CONSUMER_SECRET="something"

然后我构建了一个 docker 文件来导出所有变量并像这样运行应用程序:

FROM python:3.8-slim-buster

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install the dependencies
RUN pip install -r requirements.txt

RUN find . -name \*.pyc -delete

# Export all variables
RUN /bin/bash -c "source secret.env";

# tell the port number the container should expose
EXPOSE 8083

# run the command
ENTRYPOINT ["python", "run.py"]

但是,这引发了一个关键错误:

$ docker run --name fortweet --rm -i -t fortweet:latest bash
Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from app import socketio, app
  File "/app/app/__init__.py", line 65, in <module>
    app = create_app()
  File "/app/app/__init__.py", line 38, in create_app
    my_settings = settings.TwitterSettings.get_instance()
  File "/app/app/setup/settings.py", line 47, in get_instance
    TwitterSettings()
  File "/app/app/setup/settings.py", line 14, in __init__
    self.consumer_key = os.environ["TWITTER_CONSUMER_KEY"]
  File "/usr/local/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'TWITTER_CONSUMER_KEY'

当我在我的 Windows 上运行它时,它工作正常!

有人可以帮我吗?

ubuntu environment-variables python docker-machine
  • 1 个回答
  • 1348 Views
Martin Hope
Jose
Asked: 2020-11-16 08:56:41 +0800 CST

在 Postfix 和 Dovecot 配置文件中使用 ENV 变量

  • 2

我正在尝试对我的邮件服务器进行dockerize处理,但在我应该如何在 Postfix 和 Dovecot 配置文件中使用环境变量方面遇到了一些麻烦(我正在使用通过 apt for ubuntu:18.04 获得的最新软件包)。

我已经在 Dovecot.conf (1) 和 main.cf (2) 中导入了我想使用的变量,但老实说,我现在不知道我必须遵循哪种语法才能使用它们。

(1) Dovecot.conf

import_environment= MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORD, DOMAIN_NAME, CERTS_DIR, DOVECOT_SASL_PORT

(2) Postfix的main.cf

import_environment= MYSQL_DATABASE, MYSQL_USER, {MYSQL_PASSWORD}, DOMAIN_NAME, CERTS_DIR, DOVECOT_SASL_PORT

根据Dovecot 的文档,我应该env:MYSQL_DATABASE在我想引用我的数据库时使用,env:DOMAIN_NAME每当我想引用我的域名时,等等。但是,根据2019 年的邮件列表,用户将其 ENV 变量称为%{env:EXAMPLE_VAR}. 哪种方法是正确的?它们是否同样有效?

另一方面,关于 Postfix,我找不到与引用环境变量时必须使用什么语法相关的任何内容,如果有人能告诉我应该如何进行,我将不胜感激。

非常感谢!

linux environment-variables postfix troubleshooting dovecot
  • 3 个回答
  • 1321 Views
Martin Hope
cidy.long
Asked: 2020-10-25 17:53:23 +0800 CST

gammu 1.42,gammu-smsd 服务错误,找不到 LD_LIBRARY_PATH

  • 0

我正在尝试安装 Gammu 1.42 以在 Centos 8 上为我的 SMS 网关提供服务。

制作,制作测试,制作安装工作正常。

LD_LIBRARY_PATH 在 /etc/profile 中配置为:

......
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:.:/usr/local/lib64
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL LD_LIBRARY_PATH
......

我通过 printenv 打印 env,找到了 LD_LIBRARY_PATH。/etc/gammu-smsdrc 配置为:

......
[gammu]
device = /dev/ttyUSB0
model = E3131
connection = at115200

[smsd]
service = sql
driver = native_pgsql
logFIle = /var/log/gammu/smsd.log
logFormat = errorsdate
Host = xx.0.1.xx:xxxx
user = xxxx
password = xxxxx
database = xxxxx
debuglevel = 2
StatusFrequency = 60
LoopSleep = 60
DeliveryReport = sms
PhoneID = ozssc-smsd
SMSC = +614xxxxxxxx
BackendRetries = 60

我尝试在终端中启动 gammu 命令行,它工作正常。但是当我尝试使用 systemctl 启动系统服务时,它失败了。

错误查询结果为:

[root@Centos8Gateway etc]# systemctl status gammu-smsd.service
● gammu-smsd.service - SMS daemon for Gammu
  Loaded: loaded (/usr/lib/systemd/system/gammu-smsd.service; disabled; vendor preset: disabled)
  Active: failed (Result: exit-code) since Sun 2020-10-25 12:13:42 AEDT; 19s ago
     Docs: man:gammu-smsd(1)
  Process: 23247 ExecStopPost=/bin/rm -f /var/run/gammu-smsd.pid (code=exited, status=0/SUCCESS)
  Process: 23245 ExecStart=/usr/local/bin/gammu-smsd --pid=/var/run/gammu-smsd.pid --daemon (code=exited, status=127)

Oct 25 12:13:42 Centos8Gateway systemd[1]: Starting SMS daemon for Gammu...
Oct 25 12:13:42 Centos8Gateway gammu-smsd[23245]: /usr/local/bin/gammu-smsd: error while loading shared libraries: libgsmsd.so.8: cannot open shared object file: No such file or directory
Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Control process exited, code=exited status=127
Oct 25 12:13:42 Centos8Gateway systemd[1]: gammu-smsd.service: Failed with result 'exit-code'.
Oct 25 12:13:42 Centos8Gateway systemd[1]: Failed to start SMS daemon for Gammu.
[root@Centos8Gateway etc]# 

我试图找出为什么 Centos 8 系统服务加载器不使用配置的系统环境变量?并且不提供命令行 LD lib 路径参数。

我错过了什么?请指教!

environment-variables centos8 systemctl
  • 2 个回答
  • 617 Views
Martin Hope
sevzas
Asked: 2020-10-15 09:51:52 +0800 CST

NUMBER_OF_PROCESSORS env var 在带有 Windows Server 2012 R2 的 Dell PowerEdge Gen14 上不正确

  • 0

我发现环境变量 NUMBER_OF_PROCESSORS 在我新安装的运行 Windows Server 2012 R2 Standard 的 Dell PowerEdge 740xd Gen 14 上不正确。

该机器包含 2 个 CPU - Intel Platinum Xeon 8173M。每个 CPU 包含 28 个内核,因此总共 56 个内核,但每个内核都是超线程的,因此总共有 112 个线程。我希望看到 NUMBER_OF_PROCESSORS=112 但我看到 NUMBER_OF_PROCESSORS=56 。我可以进入控制面板、系统并手动更改 NUMBER_OF_PROCESSORS 的值,但是当机器重新启动时,它又回到了 56。

请务必注意,诸如 msinfo32 和任务管理器等各种系统工具会报告正确的处理器、内核和线程数。

我在这里找到了一个相关的线程:如何生成 NUMBER_OF_PROCESSORS 环境变量?在底部,它建议在 BIOS 设置中关闭节点交错。我发现我的机器上已经关闭了 Node Interleaving,但我决定打开它,效果是 NUMBER_OF_PROCESSORS 变为 64。

在运行相同操作系统的较旧的 Dell Gen 13 机器上,我确实看到 NUMBER_OF_PROCESSORS env var 设置为 number_of_cpus x cores_per_cpu x 2 。所以这似乎是与戴尔 Gen 14 相关的问题。

environment-variables threads dell-poweredge windows-server-2012-r2
  • 1 个回答
  • 364 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve