OpenEuler下使用systemd设置frp开机自动启动

内网虚拟机安装frp后,需要手动启动,这里通过systemd设置frp随系统自动启动,期间对rc.local赋可执行权限,对frp目录

首先,确认在frp的目录中,带配置文件执行程序可以正常启动。

[root@localhost frp]# ./frpc -c frpc.ini 
2022/10/28 07:24:37 [I] [service.go:357] [7a47c492f1fa317f] login to server success, get run id [7a47c492f1fa317f], server udp port [0]
2022/10/28 07:24:37 [I] [proxy_manager.go:142] [7a47c492f1fa317f] proxy added: [ssh201]
2022/10/28 07:24:37 [I] [control.go:177] [7a47c492f1fa317f] [ssh201] start proxy success

此时,可以在/lib/systemd/system下创建frpc.service单元文件。

[root@localhost system]# cd /lib/systemd/system
[root@localhost system]# vim frpc.service

frpc.service内容如下:

[Unit]
Description=Frp Client Service # 服务描述

[Service]
Type=simple # 不论进程是否启动成功,systemctl start 都执行成功
User=nobody
Restart=on-failure # on-failure 表示仅在服务进程异常退出时重启
RestartSec=5s # 设置在重启服务前暂停多长时间
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini # 根据自己frp的路径调整
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini # 这里也调整路径
LimitNOFILE=1048576 # 最大打开文件数

[Install]
WantedBy=multi-user.target

配置时要删除井号及后面的注释↑

保存后重新载入配置文件,并启动frp。

[root@localhost system]# systemctl daemon-reload

[root@localhost system]# systemctl start frpc
[root@localhost system]# systemctl status frpc
● frpc.service - Frp Client Service
     Loaded: loaded (/usr/lib/systemd/system/frpc.service; disabled>
     Active: activating (auto-restart) (Result: exit-code) since Fr>
    Process: 3085 ExecStart=/usr/local/frp/frpc -c /usr/local/frp/f>
   Main PID: 3085 (code=exited, status=203/EXEC)

此时发现服务并没有成功启动,同时发现在reload时,虚拟机屏幕上打印了如下字样:

systemd-rc-local-generator[3043]: /etc/rc.d/rc.local is not marked executable, skipping.

随即给rc.local文件可执行权限,再重新载入systemd配置文件,不再打印,此时再执行启动命令。

[root@localhost system]# cd /etc/rc.d/
[root@localhost rc.d]# chmod +x rc.local 
[root@localhost rc.d]# systemctl daemon-reload
[root@localhost rc.d]# systemctl start frpc
[root@localhost rc.d]# systemctl status frpc
● frpc.service - Frp Client Service
     Loaded: loaded (/usr/lib/systemd/system/frpc.service; disabled>
     Active: activating (auto-restart) (Result: exit-code) since Fr>
    Process: 3275 ExecStart=/usr/local/frp/frpc -c /usr/local/frp/f>
   Main PID: 3275 (code=exited, status=203/EXEC)

很奇怪,又没拉起来,只能去看系统日志了。

[root@localhost system]# tail -f /var/log/messages

......

Oct 28 07:54:57 localhost systemd[1]: /usr/lib/systemd/system/frpc.service:6: Special user nobody configured, this is not safe!
Oct 28 07:54:57 localhost systemd[1]: Started Frp Client Service.
Oct 28 07:54:57 localhost systemd[3587]: frpc.service: Failed to locate executable /usr/local/frp/frpc: Permission denied
Oct 28 07:54:57 localhost systemd[3587]: frpc.service: Failed at step EXEC spawning /usr/local/frp/frpc: Permission denied
Oct 28 07:54:57 localhost systemd[1]: frpc.service: Main process exited, code=exited, status=203/EXEC
Oct 28 07:54:57 localhost systemd[1]: frpc.service: Failed with result 'exit-code'.

报了一个执行失败,权限不足,百度了一下得知,是SELinux阻止程序访问文件,这里可以禁用SELinux,或者使用restorecon命令恢复SELinux文件属性即恢复文件的安全上下文。

1.禁用SELinux

[root@localhost system]# vim /etc/selinux/config

SELINUX=enforcing 改为 SELINUX=disabled,保存后重启即可。

2.使用restorecon命令

root@localhost frp]# restorecon -rv /usr/local/frp/
Relabeled /usr/local/frp from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:usr_t:s0
......
Relabeled /usr/local/frp/nohup.out from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:usr_t:s0

[root@localhost frp]# systemctl start frpc
[root@localhost frp]# systemctl status frpc
● frpc.service - Frp Client Service
     Loaded: loaded (/usr/lib/systemd/system/frpc.service; disabled; vendor preset: disabled)
     Active: active (running) since Fri 2022-10-28 08:13:13 CST; 1s ago
   Main PID: 4041 (frpc)
      Tasks: 4 (limit: 21420)
     Memory: 6.7M
     CGroup: /system.slice/frpc.service
             └─4041 /usr/local/frp/frpc -c /usr/local/frp/frpc.ini

再用命令启动就正常了,可以继续用systemctl设置开机启动。

root@localhost ]# systemctl is-enabled frpc
disabled
[root@localhost ]# systemctl enable frpc
Created symlink /etc/systemd/system/multi-user.target.wants/frpc.service → /usr/lib/systemd/system/frpc.service.
[root@localhost ]# systemctl is-enabled frpc
enabled

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值