Linux服务器配置内网穿透及开机自启动的流程
本文由 简悦 SimpRead 转码, 原文地址 www.wudianban.com
Linux 服务器环境搭建完成后,一般可以保证我们的项目程序能正常运行。
happytang • 2023 年 2 月 15 日 下午 2:48 • 技术博文 • 阅读 258
Linux 服务器环境搭建完成后,一般可以保证我们的项目程序能正常运行。但是,如果不配置内网穿透及开机自启动,则关机(现场断电等突发状况导致)后,项目需要专业人员进行命令行手动启动。
在能源电力领域,我们的服务器一般部署在发电场、变电站等区域,其位置一般比较偏僻,进出需要严格的手续,不方便项目的运维。因此,记录我们在 Linux 服务器配置内网穿透及开机自启动的流程,供大家参考。
一、Linux 配置内网穿透流程
一般而言,我们可以采取两种安装方式:
- 手动安装方式:在 Cpolar 官网下载下载适用于 Linux 平台的 zip 压缩包,解压后得到 cpolar,然后通过命令行带参数运行即可。
- 自动安装方式:采用一键自动安装脚本
说明,内网穿透工具有很多,Cpolar 是本次部署采用的工具,还有诸如花生壳等商业服务公司提供的工具,也有 FRP、NGROCK 等开源工具。
1. 一键自动安装脚本
环境需求:
该脚本适用于 Ubuntu16.04/18.04/20.04 及以后,Centos7/8 及以后版本,树莓派最新官方镜像,及支持 systemd 的新式 Linux 操作系统,该脚本会自动判断 CPU 架构(i386/amd64/mips/arm/arm64 等等),自动下载对应 cpolar 客户端,并自动部署安装。
1.1 cpolar 安装(国内使用)
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
或 cpolar 短链接安装方式:(国外使用)
curl -sL https://git.io/cpolar | sudo bash
1.2 查看版本号,显示 3.2.88.22
cpolar version
1.3 token 认证
登录后台,查看自己的认证 token,之后将 token 贴在命令行里
cpolar authtoken xxxxxxx
1.4 简单穿透测试
cpolar http 8080
按 ctrl+c 退出
1.5 向系统添加服务
sudo systemctl enable cpolar
1.6 启动 cpolar 服务
sudo systemctl start cpolar
1.7 查看服务状态
sudo systemctl status cpolar
1.8 登录后台,查看隧道在线状态
https://dashboard.cpolar.com/status
1.9 安装完成
可以去入门指南进一步了解 cpolar 的使用方法。
注: cpolar 卸载方法
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash -s -- --remove
2. 配置文件详述
2.1 配置说明:
- cpolar 默认安装路径 /usr/local/bin/cpolar
- 安装脚本会自动配置 systemd 服务脚本,启动以后,可以开机自启动。
- 如果第一次安装,会默认配置一个简单的样例配置文件,创建了两个样例隧道,一个 web,一个 ssh
- cpolar 配置文件路径: /usr/local/etc/cpolar/cpolar.yml
2.2 配置 cpolar.yml
authtoken: xxx
tunnels:
ssh:
proto: tcp
addr: "22"
remote_addr: 1.tcp.cpolar.cn:prot
region: cn_vip
ap:
proto: http
addr: "8080"
region: cn_vip
hostname: app.xiaozhuo.top
gateway:
proto: http
addr: "80"
region: cn_vip
hostname: dev.xiaozhuo.top
mysql:
proto: tcp
addr: "3306"
remote_addr: 2.tcp.vip.cpolar.cn:prot
region: cn_vip
~
2.3 后台配置域名和 tcp 预留通道
二、Linux 配置自启动流程
1. 编写手动脚本
手动脚本支持启动项目,停止项目,查看项目状态,重启项目等功能
vim jeecg.sh
#!/bin/bash
#这里可替换为你自己的执行程序,其他代码无需更改
APP_NAME=jeecg-boot-module-system-3.1.0.jar
APP_PATH=/home/whut/ap/jeecg-boot-module-system-3.1.0.jar
#使用说明,用来提示输入参数
usage() {
echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
exit 1
}
#检查程序是否在运行
is_exist(){
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#如果不存在返回1,存在返回0
if [ -z "${pid}" ]; then
return 1
else
return 0
fi
}
#启动方法
start(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
else
nohup java -jar $APP_PATH 2>&1 &
echo "${APP_NAME} start success"
fi
}
#停止方法
stop(){
is_exist
if [ $? -eq "0" ]; then
kill -9 $pid
else
echo "${APP_NAME} is not running"
fi
}
#输出运行状态
status(){
is_exist
if [ $? -eq "0" ]; then
echo "${APP_NAME} is running. Pid is ${pid}"
else
echo "${APP_NAME} is NOT running."
fi
}
#重启
restart(){
stop
start
}
#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"start")
start
;;
"stop")
stop
;;
"status")
status
;;
"restart")
restart
;;
*)
usage
;;
esac
2. 执行手动脚本
#启动项目
sh jeecg.sh start
#停止项目
sh jeecg.sh stop
#查看项目状态
sh jeecg.sh status
#重启项目
sh jeecg.sh restart
3. 编写自动启动脚本
vim /usr/local/sbin/start.sh
#!/bin/bash
#项目文件存放路径
APP_PATH=/home/whut/ap/jeecg-boot-module-system-3.1.0.jar
#文件名称
APP_NAME=jeecg-boot-module-system-3.1.0.jar
#查询存在的进程
pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
#此处需要休息两秒,不然pid没有赋值成功
sleep 2
#杀掉存在的进程
if [ $pid ]; then
echo "${APP_NAME} is already running. pid=${pid} ."
kill -9 $pid
echo "${pid} 进程终止成功"
sleep 2
fi
#启动项目
if test -e $APP_PATH
then
echo '文件存在开始部署'
nohup java -jar $APP_PATH 2>&1 &
else
echo '$APP_NAME 文件不存在'
fi
#项目启动成功后启动nginx,直接设置nginx开启启动会因为代理域名没响应报错
sleep 60
service nginx start
4. 注册开机启动服务
#切换到系统目录
cd /etc/systemd/system
#编辑注册服务脚本
vim data.service
编辑内容参考
[Unit]
Description=data server
# 依赖项,在这些程序之后启动
After=NetworkManager.service mysqld.service
[Service]
Type=forking
# 配置启动脚本
ExecStart=/usr/local/sbin/start.sh
# 配置重启脚本
ExecReload=/usr/local/sbin/restart.sh
# 配置停止脚本
ExecStop=/usr/local/sbin/stop.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
继续注册开机启动
#配置开机启动
systemctl enable data.service
#重新加载配置
systemctl daemon-reload
#查看启动配置
systemctl list-unit-files | grep data
#使用systemctl启动服务
systemctl start data.service
#使用systemctl停止服务
systemctl stop data.service
原创文章,作者:happytang,如若转载,请注明出处:https://www.wudianban.com/boot-self-starting.html