如标题所言,这次的教程肯定就是适用于Linux系统啦。GoFrp官方文档中早已有使用systemctl开启Frps、Frpc的基础教程,网上少有单文件多配置多开Frp教程,那么我就在此写上一手!
注:本教程仅适合使用Frp原版应用,理论上也适合其他程序+配置文件的应用进行多开(如cloudreve),对于Sakura Frp等魔改端,官方已给出教程。
2023.7.18更新: 在这加一个提示,如果是版本过新(如:debian12),或是beta版的linux,有可能会导致以下Unit配置文件无法正常使用systemd启动,可以参照注释进行改进。注释可以不写入实际配置文件中。
首先,基本的systemctl命令我们应该都要清楚,如下:
启动:systemctl start <Unit名称>
结束:systemctl stop <Unit名称>
状态:systemctl status <Unit名称>
自启动:systemctl enable <Unit名称>
关闭自启动:systemctl disable <Unit名称>
注:Unit名称是你配置文件的名称,并非配置文件中的服务名称(即Description = 后的参数)
其次,一个Unit配置文件一般存在于以下两个目录中,任意存放都可,一般会选择放在第二个以符合规范。
/lib/systemd/system ------可能部分系统会是/usr/lib/systemd/system
/etc/systemd/system
配置文件的命名方式在此开始有所不同,示例指令:
vim /etc/systemd/system/frpcc@.service
你可以看到在frpc后面多出了@ 参数。
接下来的配置文件撰写部分,也是此次多开与单开的不同,这边使用到了 %i 或 %I 参数,用于识别命令Unit名称中 @ 后的参数。这次的 Frp多开教程,我便以Frp为例。
注:看不惯示例中# 开头的注释,可以在正式写入时删除。
[Unit]
# "frp server"为服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type=simple
# User=nobody (可不加)
# 若您的Linux版本较高,建议您将 User=nobody 改为 DynamicUser=yes
Restart=on-failure
RestartSec=60s
# 启动frps的命令,将/Your_path1换成你的frpc所在目录,将/Your_path2换成你的frpc.ini即配置所在目录
# 注意%i.ini不要修改,frpc可以改为你的frpc文件的名字
ExecStart = /Your_path1/frpc -c /Your_path2/%i.ini
[Install]
WantedBy = multi-user.target
然后,我们在最开始讲到的启动命令也需要有变化,这个变化仅仅体现在<Unit名称>上,我们使用到了@,以便于i% 进行识别,例如:
保存配置后先reload:systemctl daemon-reload
启动:systemctl start frpcc@frpc.service
当然,启动命令也可以简写为:systemctl start frpcc@frpc
其他的指令以此类推既可
注:最好将所有的frpc.ini配置文件放于同一个文件夹,即目录/Your_path2 ,否则你在打启动命令时会很麻烦,且在Unit配置文件中不能填入/Your_path2。@后的文件名参数不需要输入文件后缀名(格式),因为配置文件中已经给出
最后,frps.ini命名并不是唯一的,也可以是1.ini、2.ini、3.ini,你可以换成其他的命名作为配置文件,只要后缀为.ini即可。多开只需更换@后参数,并多次执行启动命令。
查询所有你开过的隧道可用如下命令
systemctl list-units --all "frpcc@*"
添加配置文件可以使用vim或vi等你熟练的软件,并不是指定的。
若你想学得更多关于systemctl的内容,欢迎查阅本文文章参考:
①帮助文档 - Sakura Frp (natfrp.com)
②Linux学习-systemctl 针对 service 类型的配置文件
③使用 systemd | frp (gofrp.org)