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

一、准备工作:安装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参数

- 编辑客户端配置文件(frpc.ini
)或服务端配置文件(frps.ini
),设置server_addr
、token
等必要参数。
- 测试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
(服务端):

- 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版本至官方最新稳定版,可避免潜在漏洞对服务造成影响。