设置frp客户端开机自启

在frp 成功连接后,接下来需要设置为开机自启,毕竟每次开机输入命令太麻烦。
如果觉得每次启动 frpc 的黑色窗口太丑,我们可以设置将其隐藏。

Windows:

方法1:利用开始菜单启动项。

1.假如在D盘根目录的 frpc 文件夹中,新建文本文档,修改名称为 frpc.vbs,注意后缀不再是 txt。

2.用记事本打开 frpc.vbs,写入以下命令后保存。

Set ws = CreateObject("Wscript.Shell") 
   ws.run "cmd /c d:\frpc\frpc.exe -c d:\frpc\frpc.ini",vbhide

3.
(Win10)打开 C:\Users\你的电脑用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\,启动目录。
(Win7)打开 Windows 的开始菜单——程序——启动——右键点击启动——打开,这样就打开启动文件夹了。

4.将 frpc.vbs 右键拖动到 启动 文件夹目录,并且在当前位置创建frpc.vbs的快捷方式。

5.重启后看看任务管理器进程里面frpc.exe进程有没有存在,这样就会在你每次开机的时候启动 Frp 了。

方法2:利用任务计划程序。

首先在frpc目录下创建新txt文件,重命名为start.bat,记事本打开。
填入下面脚本配置,并保存。

@echo off
set retime=60
:start
frpc.exe -c frpc.ini
echo Error
echo --------------------------------------------
echo 连节点或登入失败-即将在%retime%秒后重新连
echo --------------------------------------------
timeout /t %retime% 
goto start

然后打开开始菜单,输入 “任务计划程序” 将会自动搜索,接着打开它。
计划任务

点击右侧的 “创建任务”,名称随意填写,安全选项选择 “不管用户是否登录都要运行”,当然你也可以选择 “只在用户登录时运行”。
选择 “不管用户是否登录都要运行” 可以让你的电脑在断电自动启动后自动运行 frp,你就可以远程桌面连接电脑了。
“使用最高权限运行” 也是可选的,根据个人需要可以选上。
最后勾选 “隐藏”,就不会在启动时弹出命令行窗口了。
计划任务

接着转到 “触发器” 页,点击新建,选择 “启动时”
计划任务

接着转到 “操作” 页,点击新建,选择 “启动程序”
在程序或脚本一栏选择第一步创建的 start.bat,下面的 “起始于” 填写 start.bat 的路径(不要包含 start.bat)
例如你的 start.bat 在 E:\frpc\start.bat,那么你只需要在 “起始于” 填写 E:\frpc\
计划任务

接着返回 “常规” 页,点击确定,此时会要求输入密码,输入你的电脑密码,然后点击确定即可。
以后就会开机自动启动 frp 了,并且不会弹出命令提示符窗口。

方法3:利用winsw。

首先要下载winsw。它是一个单个的可执行文件,我们到Github release这里就可以下载winsw了。一般来说当然是下载最新的。winsw可以运行在.NET2和.NET4两个版本上,当然如果使用Win10等比较新的系统,最好下载更新版本的.NET。
winsw
下载地址:https://github.com/winsw/winsw/releases
32位系统用WinSW.NET2.exe,64位系统用WinSW.NET4.exe。
下载完之后最好把文件改成一个比较短小的名字,例如winsw.exe这样的,方便后面输入命令。
winsw
配置方法:
我这里是将winsw.exe和frpc.exe,frpc.ini放到了一起(直接将winsw放到frpc里面就好了),这样只需要直接填写程序名称。然后在和winsw.exe同级的目录下,新建winsw.xml文件,输入以下内容。

<service>
    <id>frpc</id>
    <name>frpc</name>
    <description>用frp发布本地电脑网站到外网</description>
 <!-- 启动可执行文件的路径 -->
    <executable>frpc/frpc.exe</executable>
    <arguments>-c frpc.ini</arguments>
    <logmode>reset</logmode>
</service>

然后CMD命令窗口 cd到frpc目录下,打开管理员权限命令提示符,使用下面的命令安装并启动服务。(执行winsw install如果返回值为0,说明已将程序注册为服务,然后winsw start就将frpc注册为系统开机启动程序了更重要的是,没有那个既不美观又烦人的命令提示符窗口。)
如果还是不是太明白如何使用可以参考winsw的具体使用方法:http://dwz.cz/?akc
winsw命令如下:

winsw install

winsw start

winsw stop

winsw uninstall

说明:如果不再需要这个服务,使用winsw uninstall即可卸载服务。当然还有诸如start、stop这样的命令启动和关闭服务。

Linux:

Linux配置自动启动这里介绍两种方法

方法1:Systemctl。

第一种方法我们使用systemctl来控制启动,我们在服务端进行配置。

首先我们需要在/lib/systemd/system/下新建一个名为frps.service的文件。

$sudo vim /lib/systemd/system/frpc.service

写入以下内容(请自行去掉#及其后面的中文注释这部分,不然可能会报错):

[Unit]
Description=Frp Server Service
After=network.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frpc/frpc -c /root/frpc/frpc.ini
[Install]
WantedBy=multi-user.target

:x保存并退出,然后启动frpc服务并设置开机自启动:

$sudo systemctl start frpc

$sudo systemctl enable frpc

其他systemctl命令:

重启 sudo systemctl restart frpc
停止 sudo systemctl stop frpc
查看应用日志 sudo systemctl status frpc

方法2:Supervisor。

因为如果用Systemctl来给树莓派设置开机自启的话,树莓派很大概率会出现unreachable错误,unreachable就是路由表里没这个项,路由表里没这个项是因为没联网,没联网是因为联网服务还没起它就起了。为了避免这个错误,我们使用Supervisor来进行开机自启,因为Supervisor支持自动重启,这样就可以解决错误发生。

首先我们需要安装Supervisor:

sudo apt install supervisor

然后我们在/etc/supervisor/conf.d下创建配置文件 frpc.conf:

$sudo vim /etc/supervisor/conf.d/frpc.conf

下面是大致的配置:

[program:frpc]
command= /root/frpc/frpc -c /root/frpc/frpc.ini ; 程序启动命令
autostart=true      ; 在supervisord启动的时候也自动启动
startsecs=5         ; 启动5秒后没有异常退出,就表示进程正常启动了,默认为1秒
autorestart=true    ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启
startretries=5       ; 启动失败自动重试次数,默认是3
user=root            ; 用哪个用户启动进程,默认是root
priority=999         ; 进程启动优先级,默认999,值小的优先启动
stopasgroup=false     ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=false     ;默认为false,向进程组发送kill信号,包括子进程

写完后,要重新加载一下Supervisor,下面是一些相关命令:

# 重启supervisor
sudo systemctl restart supervisor
# 查看supervisor运行状态
sudo supervisorctl status
#停止frpc
supervisorctl stop frpc
#启动frpc
supervisorctl start frpc
#重启frpc
supervisorctl restart frpc