如标题所言,这次的教程肯定就是适用于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)

最后修改:2023 年 07 月 18 日
如果觉得我的文章对你有用,请随意赞赏