Ubuntu20.0.4下设置frpc开机自启动
目录
一、下载frp
二、解压
三、服务端部署
1.配置
2.运行
三、客户端部署
1、配置
2、后台运行
四、开机启动
1、拷贝frpc.service
2、修改配置
3、启用服务
五、ubuntu20.04使用 rc-local.service设置开机启动
1、建立开机服务添加 [Install] 段
2、授权rc-local.service
3、然后设置该 rc-local.service 服务开机启动:
4、创建 /etc/rc.local
1)、首先,新建一个 start.sh 脚本, 给start 脚本赋予执行权限 chmod 777 start.sh
2)、然后,编辑 /etc/rc.local , 加入test 脚本的调用绝对路径,这里的路径必须是绝对路径,当前文件是 rc.local
3)、然后执行以下命令赋予 /etc/rc.local 执行权限,这步一定要有,否则没效果的
4). 检查服务状态
5). 重启验证
一、下载frp
windows版本
https://github.com/fatedier/frp/releases/download/v0.37.0
amd版本:https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
二、解压
tar -zxvf frp_0.37.0_linux_amd64.tar.gz
安装系统服务工具systemd
sudo apt install systemd
三、服务端部署
1.配置
mv frp_0.37.0_linux_amd64 frp
修改frps.ini
[common]
bind_port = 7000
dashboard_port = 7500token = frp@test.cn
dashboard_user = admin
dashboard_pwd = frp@test.cn
vhost_http_port = 10080
vhost_https_port = 10443
2.运行
./frps -c frps.ini
三、客户端部署
1、配置
[common]
server_addr = frp.test.cn
server_port = 7000
token = frp@test.cn
[ubuntu_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7101[ubuntu_nginx]
type = tcp
local_ip = 127.0.0.1
local_port = 7102
remote_port = 7102
# 解决应用无法获取真实ip目前支持 v1 和 v2 两个版本的 proxy protocol 协议。
proxy_protocol_version = v2[ubuntu_mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 7103[ubuntu_redis]
type = tcp
local_ip = 127.0.0.1
local_port = 6379
remote_port = 7104[ubuntu_rabbitmq_5637]
type = tcp
local_ip = 127.0.0.1
local_port = 5672
remote_port = 7105[ubuntu_rabbitmq_15672]
type = tcp
local_ip = 127.0.0.1
local_port = 15672
remote_port = 7106[ubuntu_es_9200]
type = tcp
local_ip = 127.0.0.1
local_port = 9200
remote_port = 9200[ubuntu_logstash_5044]
type = tcp
local_ip = 127.0.0.1
local_port = 5044
remote_port = 5044[ubuntu_kibana_5601]
type = tcp
local_ip = 127.0.0.1
local_port = 5601
remote_port = 5601[ubuntu_sentinel_8858]
type = tcp
local_ip = 127.0.0.1
local_port = 8858
remote_port = 8858[ubuntu_emqx_1884]
type = tcp
local_ip = 127.0.0.1
local_port = 1884
remote_port = 1884[ubuntu_wx_7443]
type = tcp
local_ip = 127.0.0.1
local_port = 7443
remote_port = 7443
# 目前支持 v1 和 v2 两个版本的 proxy protocol 协议。
proxy_protocol_version = v2
2、后台运行
nohup ./frps -c frps.ini &
四、开机启动
1、拷贝frpc.service
打开目录
root@sony-HP-Notebook:~# cd /usr/local/frp/systemd
root@sony-HP-Notebook:/usr/local/frp/systemd# ls -l
总用量 16
-rw-r--r-- 1 1001 docker 263 6月 3 2021 frpc.service
-rw-r--r-- 1 1001 docker 257 6月 3 2021 frpc@.service
-rw-r--r-- 1 1001 docker 210 6月 3 2021 frps.service
-rw-r--r-- 1 1001 docker 208 6月 3 2021 frps@.service
cp -rp /usr/local/frp/systemd/frpc.service /etc/systemd/system/
2、修改配置
重点是frpc的路径,以及失败重试
[Unit]
Description=Frp Client Service
After=network.target[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frpc.ini
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini[Install]
WantedBy=multi-user.target
3、启用服务
Systemctl daemon-reload
systemctl enable frpc.service
systemctl status frpc.service
# 启动
systemctl start frpc.service
五、ubuntu20.04使用 rc-local.service设置开机启动
参考:Ubuntu 20.04 设置开机自启脚本
rc-local.service 是系统自带的一个开机自启服务, 但是在 Ubuntu20 的 systemd 启动方式下,该服务默认没有开启。,启用它需要做些简单的配置。
在 路径下 /lib/systemd/system/rc-local.service 的 rc-local.service 的脚本,内容规定了 rc.local 的启动顺序和行为
1、建立开机服务添加 [Install] 段
在 路径下 /lib/systemd/system/rc-local.service 查看 rc-local.service 文件内容, 前面注释不看了,只看主要内容, 每个字段的解释
[Unit] # 区块:启动顺序与依赖关系
Description=/etc/rc.local Compatibility # 服务的描述,方便人们阅读
Documentation=man:systemd-rc-local-generator(8) # 一组用空格分隔的文档URI列表,这些文档是对此单元的详细说明
ConditionFileIsExecutable=/etc/rc.local # 指定了执行的文件, 表示服务要启动的程序(或脚本)# 系统会检测指定的路径是否存在并且是一个可执行文件,必须使用绝对路径
After=network.target # 定义启动顺序。示该服务的依赖关系# Before=xxx.service,代表本服务在xxx.service启动之前启动;# After=xxx.service,代表本服务在xxx.service之后启动。[Service] # 区块:启动行为,如何启动,启动类型。
Type=forking # 后台运行的形式
ExecStart=/etc/rc.local start # 指定启动单元的命令或者脚本, 启动服务的命令(命令必须写绝对路径)
TimeoutSec=0
RemainAfterExit=yes # 如果设置这个选择为真,服务会被认为是在激活状态
GuessMainPID=no#这一段原文件没有,需要自己添加
[Install] # 区块,定义如何安装这个配置文件,即怎样做到开机启动
WantedBy=multi-user.target # WantedBy:表示该服务所在的 Target(服务组)# multi-user.target 表示多用户命令行状态
Alias=rc-local.service # 指的是表示该服务所属 target
原本的文件是没有[Install] 所以我们需要增加[Install] 内容
最终内容为如下,注意切记不要有中文注释:
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no[Install]
WantedBy=multi-user.target
Alias=rc-local.service
上述命令只写了启动的,重启、停止等可以根据自己情况添加。
注意:启动、重启、停止命令全部要求使用绝对路径
ExecReload 为服务的重启命令
ExecStop 为服务的停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
原始的 rc-local .service 文件的 Unit 段有行代码:
ExecStart=/etc/rc.local start
1
这行代码规定了这个service在开机启动时所执行的命令是:/etc/rc.local start。即运行 /etc/rc.local 脚本。不过可以看出,这个脚本的内容少了 [Install] 段,也就是说,没有定义如何做到开机启动,所以显然这是这个service是无效的。 因此我们就需要在后面帮他加上 [Install] 段
2、授权rc-local.service
sudo vim /lib/systemd/system/rc-local.service
1
3、然后设置该 rc-local.service 服务开机启动:
systemd 默认读取 /etc/systemd/system 下的配置文件, 所以还需要在 /etc/systemd/system 目录下创建软链接,执行下面的命令
sudo systemctl enable rc-local.service
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /lib/systemd/system/rc-local.service.# 上面的命令等效于一个软链接命令
ln -s /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
这条指令的实际意义是向 /etc/systemd/system 中添加一个 /lib/systemd/system 的软链接(软链接可以理解为快捷方式),看终端中这条指令运行后打印的信息就知道了。
systemd 默认从目录 /etc/systemd/system 读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录
/lib/systemd/system,真正的配置文件存放在这个目录。systemclt enable
命令用于在上面两个目录之间建立符号链接关系。.service 文件在 Linux
中存在于三个位置:/etc/systemd/system、/run/systemd/system、/lib/systemd/system,这三个目录的配置文件优先级依次从高到低,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。
另外:经过实际测试,不使用 systemclt enable 指令创建链接这一步其实也是可以实现开机启动的,这可能跟系统会在上述三种
system 目录下查找 service 并启动有关,只是启动顺序不同而已。
4、创建 /etc/rc.local
Ubuntu 20.04 默认不存在 /etc/rc.local,需要自己创建 touch /etc/rc.local,rc.local 中主要有两种方法添加开机启动内容
1)、首先,新建一个 start.sh 脚本, 给start 脚本赋予执行权限 chmod 777 start.sh
当前文件是 /usr/local/job/start.sh, start.sh 的内容是
#!/bin/sh
logFile='/usr/local/job/start_frp.log'
ltime=$(date "+%Y-%m-%d %H:%M:%S")
echo "${ltime} frp start ***********" >> "${logFile}"
./frpc -c frpc.ini &echo "${ltime} frp started" >> "${logFile}"cd /usr/local/job
./start.sh &
echo "${ltime} job started" >> "${logFile}"exit 0
2)、然后,编辑 /etc/rc.local , 加入test 脚本的调用绝对路径,这里的路径必须是绝对路径,当前文件是 rc.local
#!/bin/bash# 将你需要执行的命令写在这里,禁止写入死循环命令
logFile='/usr/local/start.log'
ltime=$(date "+%Y-%m-%d %H:%M:%S")echo "${ltime} 看到这行字,说明添加自启动脚本成功。" > "${logFile}"
cd /usr/local/job
./start.sh &
echo "${ltime} job started" >> "${logFile}"exit 0
注意:调用 sh 脚本最后必须加上 & 是让脚本启动后在后台运行的作用, 否则可能会一直卡在开机界面,这个没有去测试过3)、然后执行以下命令赋予 /etc/rc.local 执行权限,这步一定要有,否则没效果的
sudo chmod 777 /etc/rc.local# 或者
sudo chmod +x /etc/rc.local
4). 检查服务状态
使用 sudo systemctl status rc-local.service 查看 rc-local 服务的状态, 显示 loaded 和 enabled。
5). 重启验证
相关文章:
Ubuntu20.0.4下设置frpc开机自启动
目录 一、下载frp 二、解压 三、服务端部署 1.配置 2.运行 三、客户端部署 1、配置 2、后台运行 四、开机启动 1、拷贝frpc.service 2、修改配置 3、启用服务 五、ubuntu20.04使用 rc-local.service设置开机启动 1、建立开机服务添加 [Install] 段 2、授权rc-local.service 3、…...

05 Redis之Benchmark+简单动态字符串SDS+集合的底层实现
3.8 Benchmark Redis安装完毕后会自动安装一个redis-benchmark测试工具,其是一个压力测试工具,用于测试 Redis 的性能。 src目录下可找到该工具 通过 redis-benchmark –help 命令可以查看到其用法 3.8.1 测试1 3.9 简单动态字符串SDS 无论是 Redis …...
【C++】priority_queue优先队列
头文件#include <queue> 优先队列具有队列的所有特性,本质是一个堆实现的,和队列基本操作相同: top 访问队头元素 empty 队列是否为空 size 返回队列内元素个数 push 插入元素到队尾 (并排序) emplace 原地构造一个元素并插入队列 pop 弹出队头元素…...
蓝桥杯---三国游戏
问题描述 小蓝正在玩一款游戏。游戏中魏蜀吴三个国家各自拥有一定数量的士兵 X, Y, Z (一开始可以认为都为 0 )。游戏有 n 个可能会发生的事件,每个事件之 间相互独立且最多只会发生一次,当第 i 个事件发生时会分别让 X, Y, Z 增加 Ai , Bi ,Ci 。…...
设计一个分布式ID
为了保证全局唯一性可以用时间作为区分点一部分,时间尽可能细化,可以精确到毫秒,甚至是微秒和纳秒。如果是分布式系统有多态机器,可以根据机器ID再进行以下区分。如哦机器运行的特别快,1毫秒有大量ID生成,可…...

259:vue+openlayers: 显示海量多边形数据,10ms加载完成
第259个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers项目中通过WebGLVectorLayerRenderer方式加载海量多边形数据。这里相当于将海量的数据放在同一个层的source中,然后通过webglTile的方式渲染出这一层。 本示例数据为5000个多边形,加载速度超级快。 直接…...

Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用
前言 Go语言凭借低占用,高并发等优秀特性成为后台编程语言的新星,GoZero框架由七牛云技术副总裁团队编写,目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求,后台api调用rpc服务的相…...

K8s 安装部署-Master和Minion(Node)
K8s 安装部署-Master和Minion(Node) 操作系统版本:CentOS 7.4 Master :172.20.26.167 Minion-1:172.20.26.198 Minion-2:172.20.26.210(后增加节点) ETCD:172.20.27.218 先安装部署ETCD y…...

从零学习Linux操作系统 第二十部分 mariadb数据库的管理
一、对于数据库的基本介绍 1.什么是数据库 数据库就是个高级的表格软件 2.常见数据库 Mysql Oracle mongodb db2 sqlite sqlserver … 3.Mysql (SUN -----> Oracle) 4.mariadb (Mysql的一种) 数据库中的常用名词 1.字段 :表格中的表头 2.表 &…...

数据脱敏和数据加密有什么区别
数据脱敏:主要是为了兼顾数据安全与数据使用,采用专业的数据脱敏算法。 数据加密:通过对数据进行编码来保护数据,获取实际值的唯一方法是使用解密密钥解码数据。 数据加密是可逆的,数据脱敏是不可逆的。 处理方法不同 保护内容…...
主流排序算法
冒泡排序(Bubble Sort): 基本思想:通过比较相邻元素的大小,不断交换相邻元素的位置,使得较大的元素逐渐“浮”到数组的最后。时间复杂度:O(n^2)。 选择排序(Selection Sort…...

MySql的使用方法
一.什么是MySql MySql是一种数据库管理系统,是用来存储数据的,可以有效的管理数据,数据库的存储介质为硬盘和内存。 和文件相比,它具有以下优点: 文件存储数据是不安全的,且不方便数据的查找和管理…...

C#,数据检索算法之三元搜索(Ternary Search)的源代码
数据检索算法是指从数据集合(数组、表、哈希表等)中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索(Ternary Search)的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…...
windbg:常用指令
windbg 调试 参考文档 1、viewing-and-editing-global-variables-in-windbg WinDBG 常用调试命令 加载符号 .sympath // 查看当前符号查找路径 .sympath c:\symbols // 将符号查找路径设为:c:\symbols .sympath c:\symbols // 将c:\symbols添加…...

23. 集合类
集合 1. 概述2. 分类2.1 单列集合(Collection)2.2 双列集合(Map) 单列集合 Collection、List、Set、ArrayList、LinkedList’、Vector、HashSet、TreeSet、LinkedHashSet双列集合 Map、HashTable、HashMap、TreeMap、Properties、…...
OpenAI平台:引领人工智能的创新与应用
在当今迅速发展的技术世界中,OpenAI已成为人工智能(AI)研究和应用的先驱。作为一个致力于确保人工智能的安全和广泛受益的组织,OpenAI通过其平台提供了一系列强大的工具和API,这些工具和API正在重塑我们与技术的互动方…...
redis原理(五)Lua语言
一、介绍: 1、背景: 在 Redis 的 2.6 以上版本中,除了可以使用命令外,还可以使用 Lua 语言操作 Redis。 Redis 命令的计算能力并不算很强大,而使用 Lua 语言则在很大程度上弥补了 Redis 的这个不足。 2、特点&#…...

SOHO外贸怎么建网站?做海洋建站的步骤?
SOHO外贸如何做跨境独立站?搭建外贸自建站的策略? 一位成功的SOHO外贸从业者不仅需要精湛的贸易技能,还需要一个优质的网站来展示产品、与客户互动,并建立强大的在线品牌形象。海洋建站将探讨在SOHO外贸领域如何建立一个成功的网…...

[论文阅读] |RAG评估_Retrieval-Augmented Generation Benchmark
写在前面 检索增强能够有效缓解大模型存在幻觉和知识时效性不足的问题,RAG通常包括文本切分、向量化入库、检索召回和答案生成等基本步骤。近期组里正在探索如何对RAG完整链路进行评估,辅助阶段性优化工作。上周先对评估综述进行了初步的扫描࿰…...

【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接
文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...