本文由 简悦 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