『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 4032|回复: 3

[经验分享] 将我的一个朋友的服务器上的某个服务接入HA

[复制链接]

10

主题

181

帖子

2584

积分

金牌会员

Rank: 6Rank: 6

积分
2584
金钱
2398
HASS币
60
发表于 2020-6-13 17:04:48 | 显示全部楼层 |阅读模式
本帖最后由 lyfff 于 2020-6-13 17:40 编辑

大概很久以前呢,我在帮一个朋友的服务器(UBUNTU)安插一个后台运行的服务,用supervisor来管理,朋友会偶尔用用,但我也不大知道是用来干什么的。那么,干脆今天在这里先把当年的步骤记下来,当作方便我的一个朋友想起来要用的时候,回来取经的地方吧。
服务器运行的是Ubuntu,用到的命令也是Linux的。先把接入HA后的UI界面卡片截图放上来,给大家看看。
1.png
思路是这样的:
这个后台服务是通过supervisor来管理的,Supervisor有Web端的控制后台,所以要开启Supervisor的web服务,然后HA通过shell command来调用lynx命令去模拟登录web后台,点击其中的某个按钮链接,达到控制supervisor的目的,不需要root权限。

启动这个后台程序的命令(暂且叫它做“V”)是这样的:
/usr/bin/v --config=/etc/v/config.json
可见这个命令的所有参数都写在/etc/v/config.json这个配置文件中,我们只要再supervisor的配置中写下他的命令/usr/bin/v--config=/etc/v/config.json,当程序的配置需要变化时,更换/etc/v/config.json文件,然后让supervisor重启这个程序即可。那么,开搞:
1、首先打开Supervisor的web服务:
在Supervisor的配置文件/etc/supervisor/supervisord.conf中加入:
[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (supervisor的web服务绑定的IP和端口)
username=你的用户名              ; (访问web后台所用的用户名)
password=你的密码               ; (访问web后台所用的密码)
重启supervisor:
sudo systemctl restart supervisor.service
此时即可使用http://你的ip:9001/访问supervisor的web后台。
2、编写V的配置文件:
略,配置文件的写法见V的开发文档(因为我也没说V是啥软件,自己去它的项目地址看看吧)

将配置文件放到/etc/v/。因为我的V的经常用的配置有3个,所以我在/etc/v/路径中分别放有4个配置文件:
$ ls /etc/v/ -lh
总用量 24K
-rw-r--r-- 1 root root 768 6月   7 01:03 config.1.json
-rw-r--r-- 1 root root 768 6月   7 01:06 config.2.json
-rw-r--r-- 1 root root 768 6月   7 01:06 config.3.json
-rw-r--r-- 1 root root 768 5月  23 19:21 config.json
其中的config.json是随意复制上面的某个config.*.json文件得到的,与config.*.json是完全相同的副本。
3、将V软件的启动命令写到supervisor的配置里:
在路径/etc/supervisor/conf.d/中,添加一个文件v.conf:
[program:v]
# 命令
command=/usr/bin/v --config=/etc/v/config.json
# 是否自启
autostart=true
# 什么情况下自动重启程序(false --不重启、unexpected --意外退出时、或 true --总是)
autorestart=true
# 命令启动所需的时间(秒)(在此之后程序状态将由 Starting 转为 Running)
#startsecs=10
# 允许启动失败次数
startretries=10
# 是否将 stderr 信息重定向到 stdout 文件
redirect_stderr=false
# stdout 日志输出的目录(NONE 为不输出)
stdout_logfile=NONE
# stderr 日志输出的目录(NONE 为不输出)
stderr_logfile=/var/log/supervisor/v_local/v.log
重新加载supervisor的配置:
sudo supervisorctl reload
到这里,服务就会开始运行了。
4、接再来就是HA的配置文件了:
在HA的配置文件中加入:
shell_command:
  # 切换V的配置文件
switch_config_file_to_01: >
  cp /etc/v/config.1.json /etc/v/config.json
switch_config_file_to_02: >
  cp /etc/v/config.2.json /etc/v/config.json
switch_config_file_to_03: >
  cp /etc/v/config.3.json /etc/v/config.json
  # 停止 v服务
stop_v:>
lynx -mime_header -auth=用户名:密码 "http://127.0.0.1:9001/index.html?processname=v&action=stop"
# 重启 v服务
restart_v: >
lynx -mime_header -auth=用户名:密码 http://127.0.0.1:9001/index.html?processname=v&action=restart
input_select:
v_service:
    name: V Service Selector
    icon: mdi:ip-network
    options:
    - '线路1'
    - '线路2'
    - '线路3'
automation:
- alias: Switch V Service
  trigger:
    platform: state
    entity_id: input_select. v_service
  action:
  - service: shell_command.stop_v
  - service_template: >
      {% if is_state("input_select.v_service", "线路1") %}
        shell_command.switch_config_file_to_01
      {% elif is_state("input_select.v_service", "线路2") %}
        shell_command.switch_config_file_to_02
      {% else %}
        shell_command.switch_config_file_to_03
      {% endif %}
  - delay: 3
        shell_command.restart_v
保存重启HA即可。
上面的代码编辑器有些缩进不太对的,我也不知咋调,怕是越调越乱。
UI中的卡片:
entities:
  - entity: input_select.v_service
    name: 选择路线
show_header_toggle: false
type: entities
2.png

不知道此文写得正不正确,如果不正确,轻轻删掉吧。











评分

参与人数 1金钱 +20 HASS币 +10 收起 理由
+ 20 + 10 厉害了word楼主!

查看全部评分

大佬: 请勿咨询任何问题,所有问题都能 Google 到答案
回复

使用道具 举报

1

主题

41

帖子

1292

积分

金牌会员

Rank: 6Rank: 6

积分
1292
金钱
1251
HASS币
0
发表于 2020-6-13 22:16:57 | 显示全部楼层
哈哈,有意思, 装个pa¥¥wall或者¥¥plus之类的可以方便的多节点自动切换或负载均衡更方便吧。
或者我也没看明白是服务端还是客户端
回复

使用道具 举报

10

主题

181

帖子

2584

积分

金牌会员

Rank: 6Rank: 6

积分
2584
金钱
2398
HASS币
60
 楼主| 发表于 2020-6-14 17:24:15 | 显示全部楼层
feezai 发表于 2020-6-13 22:16
哈哈,有意思, 装个pa¥¥wall或者¥¥plus之类的可以方便的多节点自动切换或负载均衡更方便吧。
或者我也 ...

可能我的朋友的不同节点流量计算倍率是不一样的
大佬: 请勿咨询任何问题,所有问题都能 Google 到答案
回复

使用道具 举报

7

主题

363

帖子

1308

积分

金牌会员

Rank: 6Rank: 6

积分
1308
金钱
945
HASS币
0
发表于 2020-6-16 09:18:16 | 显示全部楼层
这有点秀啊,不过这是自建,大多人是机场还是不一样
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-19 13:30 , Processed in 0.066521 second(s), 29 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表