当前位置: 首页 > 知识库问答 >
问题:

supervisor - 关于amh面板Supervisor守护进程功能环境变量设置问题?

小牛23072
2024-10-03

关于amh面板Supervisor守护进程功能环境变量设置问题
想了想还是单独提出来,如果后续有人也遇到,可以参考~~


情况秒说:
现在,我通过二进制文件方式部署了gitea,管理用户为自建的git,权限755
官方的Supervisor配置文件如下:

[program:gitea]
directory=/home/git/go/src/github.com/go-gitea/gitea/
command=/home/git/go/src/github.com/go-gitea/gitea/gitea web
autostart=true
autorestart=true
startsecs=10
stdout_logfile=/var/log/gitea/stdout.log
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/var/log/gitea/stderr.log
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
user = git
environment = HOME="/home/git", USER="git"

我实际运行时,需要设置环境变量

/home/wwwroot/Lngx02/domain/gitea.a.site/web/gitea-1.22.2-linux-amd64 web -w /home/wwwroot/Lngx02/domain/gitea.a.site/web/Data -p 10001 

而AMH面板,目前的UI配置是没有环境变量这一节的,如果直接修改配置文件,手动增加

environment = HOME="/home/git", USER="git"

似乎也没有作用
想请教下大佬

目前,我有三种办法解决这个问题:
一是直接在服务器内再次安装一次Supervisor,增加配置文件,不过这个办法太重复占用资源了
二是直接用screen后台运行,但这不是长久之计
三是有个离谱的办法:先手动新建一个脚本a.sh,通过这个脚本定义变量,然后启动:

# /home/wwwroot/Lngx02/domain/gitea.a.site/web/a.sh
export HOME="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Gituser/"
export GITEA_WORK_DIR="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Data"

export GITEA_CUSTOM="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Data"
export PORT="10001"

exec /home/wwwroot/Lngx02/domain/gitea.asite/web/gitea-1.22.2-linux-amd64 web -w $GITEA_WORK_DIR -C $GITEA_CUSTOM -p $PORT

然后再用AMH的Supervisor守护进程或者计划任务去守护运行这个脚本……
不过这也太鸡肋了


此外,近期陆续搬迁docekr到amhpod时发现几个运用的问题:

  • 仅能使用docekr-compose方式部署的docekr容器目前没法代替
  • 需要大量交互的docker容器目前没法使用
  • 不知道怎么进入podman部署的容器内部去执行命令或者导出文件数据,一旦部署时少绑定宿主机文件地址,后续很麻烦
  • 部署容器时,没有进度显示,,有时心里贼着急
  • 另外使用时发现,如果某个容器想重新部署,点击暂停再点击未运行时可以直接清除配置……没有说明用户自己尝试确实蛋疼

共有1个答案

吕灿
2024-10-03

针对Supervisor环境变量设置问题的回答

在Supervisor配置文件中设置环境变量时,确保环境变量的设置正确无误,并且Supervisor的配置文件被正确加载。根据你提供的情况,如果直接在Supervisor配置文件中设置environment参数没有效果,可能是Supervisor没有正确读取或应用这些设置。以下是一些可能的解决步骤:

  1. 确认Supervisor版本
    确保你使用的Supervisor版本支持在配置文件中设置环境变量。大多数现代版本的Supervisor都支持此功能。
  2. 检查配置文件语法
    确保你的Supervisor配置文件语法正确,没有多余的空格或拼写错误。environment参数应该紧跟在程序配置块的下方,并且格式正确,如:

    [program:gitea]
    directory=/home/git/go/src/github.com/go-gitea/gitea/
    command=/path/to/gitea-binary web -w /some/path -p 10001
    autostart=true
    autorestart=true
    startsecs=10
    ...
    environment=HOME="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Gituser/",USER="git",GITEA_WORK_DIR="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Data",GITEA_CUSTOM="/home/wwwroot/Lngx02/domain/gitea.a.site/web/Data",PORT="10001"

    注意:environment设置中的每个环境变量之间应该使用逗号加空格分隔,而不是换行。

  3. 重新加载Supervisor配置
    修改Supervisor配置文件后,需要重新加载Supervisor配置以应用更改。你可以通过运行supervisorctl rereadsupervisorctl update命令来实现。
  4. 检查Supervisor日志
    查看Supervisor的日志文件,看是否有关于配置文件或环境变量的错误消息。
  5. 使用脚本启动
    如果你仍然遇到问题,可以考虑使用你提到的脚本方法。这种方法虽然略显复杂,但可以作为临时解决方案。确保脚本具有执行权限,并且Supervisor配置为运行该脚本。

针对AMH Pod与Docker相关问题的回答

  • Docker Compose的替代
    如果AMH Pod目前不支持Docker Compose,你可能需要寻找其他容器编排工具,如Kubernetes(通过K8s集群)或Docker Swarm,这些工具提供了更复杂的容器编排和管理功能。
  • 大量交互的Docker容器
    对于需要大量交互的容器,确保你的容器配置允许适当的端口映射和交互模式(如使用-it标志在Docker命令行中)。如果AMH Pod不支持这些交互模式,可能需要重新考虑容器设计或寻找其他管理工具。
  • 进入Podman容器
    Podman提供了与Docker类似的命令来管理容器。你可以使用podman exec -it <container_id> /bin/bash(或相应的shell)来进入正在运行的容器。确保你的Podman版本和配置支持此功能。
  • 部署进度显示
    如果AMH Pod在部署容器时没有进度显示,这可能是由于界面设计或后端实现的问题。你可能需要联系AMH Pod的开发者或查看其文档以获取更多信息。
  • 容器重新部署和配置清除
    在重新部署容器时,请仔细阅读AMH Pod的文档和界面提示,以确保你了解重新部署的操作将如何影响现有配置和数据。如果可能,建议在执行此类操作之前备份重要数据。如果AMH Pod没有提供明确的重新部署选项或警告,你可能需要手动管理容器配置和生命周期。
 类似资料:
  • 问题一: 请教如何开启root用户?系统是debian11。在运行amh supervisor admin chroot off命令后“启动用户”项内依旧没有root用户。重启主机也无效。 问题二: “运行目录”和“启动命令”是/home/wwwroot/lnmp01/domain/xxxx.com/web/还是/lnmp01/domain/xxxx.com/web/即可?

  • 反馈一下AMH supervisor root权限设置问题 想要跑MC服务器,用AMH supervisor守护下进程 然后发现默认为了安全是锁死root用户的 按照教程ssh中尝试了amh supervisor admin chroot off 但是会直接跳出进程来,没有按照预期打开root权限 虽然已经通过www用户执行了,不过这个bug还是反馈一下

  • Supervisor 是一个客户端服务器系统,允许用户监控和控制类 Unix 操作系统上的进程数。 详细介绍和使用方法请看 http://my.oschina.net/tenking/blog/29363

  • 我通过Github将我的项目部署到GAE。有一些外国API密钥,我不想保存在存储库中并公开它们。是否可以在GAE控制面板中为项目设置环境变量,以便在应用程序中捕获它?

  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以

  • 本文向大家介绍关于Java JDK安装、配置环境变量的问题,包括了关于Java JDK安装、配置环境变量的问题的使用技巧和注意事项,需要的朋友参考一下 JDK安装 1. 点击进入官方网站下载JDK(注意,下载需要注册账号) 根据自己的电脑版本选择相对应的 JDK 软件包 2. 双击安装,选择安装路径 我这里选择的是安装在F盘(可根据自己的需要选择合适的安装路径) 配置环境变量 1. 我的电脑——>