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


三、服务端部署

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). 重启验证
 

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/647954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda常用命令、操作、镜像源

Anaconda常用操作 命令例子作用conda create -n 环境名 需要的库conda create -n pythonenv python3.8创建环境conda info --envsconda info --envs查看全部环境activate 环境名activate pythonenv激活环境conda deactivateconda deactivate退出环境conda remove -n 环境名 --a…

pytorch学习笔记(十一)

优化器学习 把搭建好的模型拿来训练,得到最优的参数。 import torch.optim import torchvision from torch import nn from torch.nn import Sequential, Conv2d, MaxPool2d, Flatten, Linear from torch.utils.data import DataLoaderdataset torchvision.datas…

uniapp安卓android离线打包本地打包整理

离线打包准备 下载Android studio 1.准备资源hbuilder 2.准备离线SDK 最新android平台SDK下载最新android平台SDK下载 3.离线打包key申请 4.直接导入HBuilder-Integrate-AS工程,直接运行simpleDemo项目即可 5.安装java 1.8 jdk-8u151-windows-x64 6.遇到这个报错报错Caus…

在游戏里开公司!基于ERNIE SDK的多智能体游戏应用

在虚拟世界有一座神奇的办公室,当你输入你的创业方向,办公室的智慧打工人们将团结合作,为你的项目勤劳奔走,并在过程中,把日报周报都写好,让你随时掌握项目进度和最终成果!该项目基于ERNIE SDK开…

工厂方法模式-C#实现

该实例基于WPF实现,直接上代码,下面为三层架构的代码。 一 Model using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 设计模式练习.Model.工厂方法模式 {internal class…

MSG3D论文解读

论文在stgcn与sta-lstm基础上做的。下面讲一下里面的方法: 1.准备工作 符号。这里是对符号进行解释。 一个人体骨骼图被记为G(v,E) 图卷积: 图卷积定义 考虑一种常用于处理图像的标准卷积神经网络 (CNN)。输入是像素网格。每个像素都有一个数据值向…

趣学贝叶斯统计:量化

概率理论不仅仅是一个数学概念,更是一种对随机性和不确定性的理解方式。通过量化我们对事件发生的信念,我们能够更准确地预测和解释各种现象。在本章中,我们将探讨事件概率与信念概率,为我们的理论和分析工具箱增添新的维度。 事…

Angular封装HttpClient文件下载

Angular HttpClient 文件下载 前言HttpRequest.tsdemo后端接口koa2示例功能优化实现下载进度监控 前言 使用Angular框架开发工作中,实现文件下载业务时,我们可以使用Angular自带的HttpClient。下面我们就封装一下HttpClient实现文件下载,当接…

前端网络请求之JavaScript XHR、Fetch、Axios

一、JavaScript XHR、Fetch AJAX:一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。在不重新加载整个网页的情况下,对网页的某部分进行更新 Fetch&…

主流电商平台:item_get-通过商品ID取商品详情,主图,sku

随着全球化的加速和互联网技术的不断发展,跨境电商已经成为了全球商业的重要组成部分。在这个环境下,如何有效地获取商品详情成为了关键的问题。本文将探讨一种基于商品ID获取商品详情的跨境电商创新方式,即item_get接口,以及其潜…

Vue3-在HTML标签、组件标签上使用v-model

本篇为Vue3学习中遇到的v-model相关的记录&#xff0c;如有问题欢迎指正 一、在标签上使用v-model v-model通常在input、select等标签上来实现数据双向绑定 <input type"text" v-model"username"> 原理&#xff1a;v-model通过给标签value赋值来实…

Windows10上使Git Bash支持rsync命令操作步骤

rsync命令是linux上常用的工具之一&#xff0c;用于远程以及本地系统中拷贝/同步文件和文件夹。 Windows Git Bash默认并不支持rsync&#xff0c;如下图所示&#xff1a; 使Git Bash支持rsync命令操作步骤&#xff1a; 1.从https://repo.msys2.org/msys/x86_64/ 下…

一、MongoDB、express的安装和基本使用

数据库【Sqlite3、MongoDB、Mysql】简介&小记 Sqlite3&#xff1a; SQLite3是一个轻量级的数据库系统&#xff0c;它被设计成嵌入式数据库。这意味着它是一个包含在应用程序中的数据库&#xff0c;而不是独立运行的系统服务。适用场景&#xff1a;如小型工具、游戏、本地…

算力总规模位列全球第二!中创:助推数据中心建设

近日&#xff0c;国新办举办新闻发布会&#xff0c;介绍2023年工业和信息化发展情况。算力、数据中心、云计算等与数字化转型、能源利用息息相关&#xff0c;被多次提及。 工业和信息化部新闻发言人、运行监测协调局局长陶青表示&#xff1a; 数字基础设施支撑有力&#xff0c;…

力扣算法-Day18

18.四数之和 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1…

关于数据库被勒索如何解决?

今天发现数据库被删&#xff0c;原因是勒索病毒&#xff0c;这期文章来说明下: **使用binlog日志恢复**&#xff1a; - **确认binlog状态**&#xff1a;检查MySQL服务器是否开启了binlog日志功能。如果服务器启用了binlog&#xff0c;那么在数据被篡改之前的操作都有可能被记…

golang 根据URL获取文件名

只有一个文件地址&#xff0c;但是没有文件名称&#xff0c;文件地址&#xff1a;http://XXXXXXX/getfile.aspx?fileid999 但是系统需要把文件名称也写入到数据库 可以根据 resp.Header["Content-Disposition"] 获取文件名 resp.Header["Content-Disposition&q…

继承和原型链

基于原型链的继承示例 // 继承方法 const parent { value: 2, method() { console.log(this); return this.value 1 } } console.log(parent.method());//3 不难理解 const child { __proto__: parent, } console.log(child.method());//3 this 指向child 但是属性中没有v…

亚马逊鲲鹏系统:批量注册买家号的新利器

近年来&#xff0c;随着电商市场的迅速发展&#xff0c;亚马逊作为全球最大的在线零售平台之一&#xff0c;其买家号的需求也日益增长。而亚马逊鲲鹏系统是一个能够批量全自动注册亚马逊买家号的系统。而对于全自动批量注册&#xff0c;账号资料方面&#xff0c;也有一定的要求…

vue3 + antd 封装动态表单组件(二)

传送带&#xff1a; vue3 antd 封装动态表单组件&#xff08;一&#xff09; 前置条件&#xff1a; vue版本 v3.3.11 ant-design-vue版本 v4.1.1 vue3 antd 封装动态表单组件&#xff08;一&#xff09;是基础版本&#xff0c;但是并不好用&#xff0c; 因为需要配置很多表…