将frp做成系统服务
提示: 以下代码均以./frps -c frps.toml命令为基础
一、目录假设(不变)
text
/home/frp/frp_0.65.0_linux_amd64/
├── frps
├── frps.toml
├── frp.sh # 管理脚本(start/stop/restart/log)二、frp 管理脚本(命令入口)
/home/frp/frp_0.65.0_linux_amd64/frp.sh
bash
#!/bin/bash
SERVICE_NAME=frp
case "$1" in
start)
sudo systemctl start ${SERVICE_NAME}
;;
stop)
sudo systemctl stop ${SERVICE_NAME}
;;
restart)
sudo systemctl restart ${SERVICE_NAME}
;;
status)
systemctl status ${SERVICE_NAME}
;;
log)
journalctl -u ${SERVICE_NAME} -f
;;
*)
echo "Usage: frp {start|stop|restart|status|log}"
exit 1
;;
esacbash
chmod +x frp.sh三、systemd 服务文件(核心)
创建服务
bash
sudo nano /etc/systemd/system/frp.service✅ /etc/systemd/system/frp.service
ini
[Unit]
Description=FRP Server (frps)
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=yize
WorkingDirectory=/home/frp/frp_0.65.0_linux_amd64
ExecStart=/home/frp/frp_0.65.0_linux_amd64/frps -c frps.toml
Restart=always
RestartSec=5
LimitNOFILE=1048576
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target四、加载 & 开机自启
bash
sudo systemctl daemon-reload
sudo systemctl enable frp
sudo systemctl start frp五、把 frp 做成系统命令(强烈推荐)
bash
sudo ln -s /home/frp/frp_0.65.0_linux_amd64/frp.sh /usr/local/bin/frp现在你可以直接使用:
bash
frp start
frp stop
frp restart
frp status
frp log六、验证是否成功
bash
systemctl status frp看到:
text
Active: active (running)说明一切正常 ✅
七、常见补充(必要时)
端口 < 1024(例如 80 / 443)
bash
sudo setcap 'cap_net_bind_service=+ep' /home/frp/frp_0.65.0_linux_amd64/frps最终总结一句话
frp = systemd 服务名 + 统一 CLI 命令,前台运行 frps,systemd 负责后台与自启