HCRM博客

如何在CentOS上设置frp开机自动启动?

实现CentOS系统下frp服务开机自启的完整指南

在服务器管理中,确保关键服务开机自动启动是运维工作的重要环节,对于使用frp(Fast Reverse Proxy)进行内网穿透的用户而言,配置frp客户端或服务端随系统启动,能有效避免因服务器意外重启导致的服务中断,本文将详细介绍在CentOS系统中实现frp开机自启的两种主流方法,并提供安全优化建议。

如何在CentOS上设置frp开机自动启动?-图1

一、准备工作:安装frp与基础配置

在配置开机启动前,需确保已正确安装frp并完成基础配置。

1、下载frp程序

- 访问frp官方GitHub仓库,根据系统架构选择对应版本(如frp_0.52.3_linux_amd64.tar.gz)。

- 使用wget命令下载至服务器:

  • wget https://github.com/fatedier/frp/releases/download/v0.52.3/frp_0.52.3_linux_amd64.tar.gz

- 解压并移动到指定目录(如/usr/local/frp):

  • tar -zxvf frp_0.52.3_linux_amd64.tar.gz
  • mv frp_0.52.3_linux_amd64 /usr/local/frp

2、配置frp参数

如何在CentOS上设置frp开机自动启动?-图2

- 编辑客户端配置文件(frpc.ini)或服务端配置文件(frps.ini),设置server_addrtoken等必要参数。

- 测试frp服务是否能正常运行:

  • cd /usr/local/frp
  • ./frpc -c frpc.ini # 客户端启动命令
  • # 或
  • ./frps -c frps.ini # 服务端启动命令

二、方法一:通过systemd服务实现开机自启

systemd是CentOS 7及以上版本默认的初始化系统,通过编写服务单元文件可精准控制进程行为。

1、创建systemd服务文件

- 新建文件/etc/systemd/system/frpc.service(客户端)或/etc/systemd/system/frps.service(服务端):

如何在CentOS上设置frp开机自动启动?-图3
  • vi /etc/systemd/system/frpc.service

- 输入以下内容(以客户端为例,注意替换路径和配置文件名称):

  • [Unit]
  • Description=Frp Client Service
  • After=network.target
  • [Service]
  • Type=simple
  • User=root
  • ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
  • Restart=on-failure
  • RestartSec=5s
  • [Install]
  • WantedBy=multi-user.target

2、启用并启动服务

- 重载systemd配置:

  • systemctl daemon-reload

- 设置开机自启并立即启动服务:

  • systemctl enable frpc
  • systemctl start frpc

- 检查服务状态:

  • systemctl status frpc

三、方法二:使用rc.local实现开机启动(兼容旧版本系统)

对于使用CentOS 6或习惯传统脚本的用户,可通过修改rc.local文件实现。

1、赋予rc.local执行权限

CentOS 7默认未启用rc.local,需先添加权限:

  • chmod +x /etc/rc.d/rc.local

2、添加启动命令

- 编辑/etc/rc.local文件:

  • vi /etc/rc.local

- 在文件末尾添加以下命令(示例为客户端):

  • /usr/local/frp/frpc -c /usr/local/frp/frpc.ini > /var/log/frpc.log 2>&1 &

3、验证生效性

- 重启服务器后,执行ps -ef | grep frpc确认进程是否存在。

四、安全与稳定性优化建议

1、最小权限原则

- 避免使用root用户运行frp,可新建专用用户并限制目录权限:

  • useradd -s /sbin/nologin frpuser
  • chown -R frpuser:frpuser /usr/local/frp

- 在systemd服务文件中将User=root改为User=frpuser

2、日志管理与监控

- 指定日志输出路径,便于排查问题,例如在frpc.ini中增加:

  • [common]
  • log_file = /var/log/frpc.log
  • log_level = info

- 配合logrotate定期归档日志,避免磁盘占满。

3、防火墙配置

- 开放frp所需端口(如7000为服务端默认端口),同时限制访问来源IP:

  • firewall-cmd --permanent --add-port=7000/tcp
  • firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" port protocol="tcp" port="7000" accept'
  • firewall-cmd --reload

五、常见问题与解决方案

Q:服务启动失败,提示“permission denied”

A:检查文件权限(尤其是frpc/frps可执行文件)及SELinux状态,可暂时禁用SELinux测试:setenforce 0

Q:systemd服务状态显示“Active: activating (auto-restart)”

A:查看日志journalctl -u frpc -xe,通常因配置文件错误或端口冲突导致。

Q:开机启动后frp连接不稳定

A:在systemd服务中增加restart=always参数,并检查网络延迟或服务端配置。

作为长期使用frp的开发者,个人更推荐通过systemd管理服务:它不仅支持进程守护、自动重启,还能通过journalctl集中查看日志,极大提升了运维效率,定期更新frp版本至官方最新稳定版,可避免潜在漏洞对服务造成影响。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/29724.html

分享:
扫描分享到社交APP
上一篇
下一篇