16

从创建服务器到搭建一台内网穿透服务器(一)

 3 years ago
source link: https://blog.csdn.net/weixin_43343006/article/details/122726126
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

创建服务器到搭建一台内网穿透服务器

项目开发完后,如何创建一台新的服务器,把项目部署到服务器上呢,这就需要安装一些基本的工具,如jdk,maven,Jenkins实现自动化部署;除此之外可以搭建一些辅助工具,如nexus(maven私仓)。服务器价格比较高,有时候比较穷,买不起服务器,可选择在自己电脑上安装虚拟机,部署项目,使用holer内网穿透工具,实现外网访问本地虚拟机上部署的项目。

解决VMware虚拟机ip地址经常变化的问题

首先,虚拟机创建好后,会遇到虚拟机ip地址经常变化的问题,因为虚拟机在NAT模式下由Vmware8虚拟网卡提供虚拟机的IP分配,网桥模式下由Vmware1来提供IP分配。虚拟机的IP租约过期后,IP就会自动重新分配,从而造成IP地址自行变化,解决方法如下:

  1. 点击菜单栏中的编辑按钮, 选择虚拟网络编辑器

在这里插入图片描述

  1. 选择正在使用的连接模式,DHCP设置–>将租用的时间设置得长一点,最多可设置63天

在这里插入图片描述

启动虚拟机,创建/work目录,安装包和一些项目都放在/work目录下

安装lrzsz

Linux中rz和sz命令用法详解

rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具。优点就是不用再开一个sftp工具登录上去上传下载文件。

sz:将选定的文件发送(send)到本地机器
rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

安装命令:

yum install lrzsz

从服务端发送文件到客户端:

sz filename

从客户端上传文件到服务端:

rz
yum install vim 
yum install wget

安装jdk

  1. 解压jdk
tar -zxvf jdk-8u271-linux-x64.tar.gz
  1. 配置环境变量并测试

    2.1 编辑文件/etc/profile

vi /etc/profile

​2.2 在最后插入一下配置内容

JAVA_HOME=/work/mySoft/jdk1.8.0_271
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

​ 2.3 让环境变量生效,执行下面的命令

source /etc/profile

​ 2.4 验证

java -version

在这里插入图片描述

安装maven

  1. 下载maven

http://maven.apache.org/download.cgi

  1. 运行rz命令,将maven安装包存到/work/mySoft目录下

  2. 解压,创建仓库目录/work/repository

tar -zxvf apache-maven-3.8.4-bin.tar.gz
mkdir repository
  1. 修改Maven本地仓库地址

在这里插入图片描述

  1. 配置环境变量
vim /etc/profile

在文件下方加入以下配置

export MAVEN_HOME=/work/mySoft/apache-maven-3.8.4
export PATH=${PATH}:${MAVEN_HOME}/bin

在这里插入图片描述

使用source /etc/profile命令重新加载/etc/profile文件,使修改的内容在当前shell窗口中生效。(永久生效,重启系统或注销用户)

执行命令mvn -v, 查看是否配置成功

在这里插入图片描述

安装git

  1. 在Linux上是有yum安装Git,非常简单,只需要一行命令
yum -y install git
  1. yum安装git被安装在/usr/libexec/git-core目录下

在这里插入图片描述

  1. git --version查看version版本

安装nacos

tar -zxvf nacos-server-2.0.0-ALPHA.1.tar.gz 

进入nacos的bin目录,启动nacos

sh startup.sh -m standalone
vi ./nacos/logs/start.out可查看启动日志

启动之后访问:http://192.168.40.133:8848/nacos,192.168.40.133是Nacos服务器的地址,8848是Nacos的默认端口号

如果无法访问页面,则查看日志,看日志报的什么错再进行解决

如果日志没有报错,却还是无法访问,则查看防火墙是否打开

firewall-cmd --state,如果状态为running,则关闭防火墙

systemctl stop firewalld.service

关闭防火墙之后再次访问Nacos的地址,访问成功后会进入如下页面

在这里插入图片描述

初始账号密码是:账号:nacos; 密码:nacos

Nacos的配置可以实时更新,更新后不需要重启项目

安装docker

使用国内 daocloud 一键安装命令

 curl -sSL https://get.daocloud.io/docker | sh

启动docker

systemctl start docker

配置镜像加速器,配置完后重启docker

https://help.aliyun.com/document_detail/60750.html

docker 安装mysql

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run \
--name mysql \
-v /mysql/data:/var/lib/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci \
--lower_case_table_names=1 \
--skip-name-resolve=1 \
--max_connections=1000 \
--wait_timeout=31536000 \
--interactive_timeout=31536000 \
--default-time-zone='+8:00'

搭建maven远程仓库

  1. 安装nexus
docker pull docker.io/sonatype/nexus3
mkdir -p /usr/local/nexus3/nexus-data
chown -R 200 /usr/local/nexus3/nexus-data
docker run -tid -p 8081:8081 --name nexus -e NEXUS_CONTEXT=nexus -v /usr/local/nexus3/nexus-data:/nexus-data  docker.io/sonatype/nexus3

  1. 登录nexus,用户名admin,初始密码在 /usr/local/nexus3/nexus-data/admin.password文件中

img

  1. 进入管理界面,增加代理源
    在这里插入图片描述

  2. 选择maven2(proxy)

在这里插入图片描述

  1. 添加代理(Cache统一设置为200天 288000)

在这里插入图片描述

​ 5.1 添加几个常用的代理

1. aliyun
http://maven.aliyun.com/nexus/content/groups/public
2. apache_snapshot
https://repository.apache.org/content/repositories/snapshots/
3. apache_release
https://repository.apache.org/content/repositories/releases/
4. atlassian
https://maven.atlassian.com/content/repositories/atlassian-public/
5. central.maven.org
http://central.maven.org/maven2/
6. datanucleus
http://www.datanucleus.org/downloads/maven2
7. maven-central (安装后自带,仅需设置Cache有效期即可)
https://repo1.maven.org/maven2/
8. nexus.axiomalaska.com
http://nexus.axiomalaska.com/nexus/content/repositories/public
9. oss.sonatype.org
https://oss.sonatype.org/content/repositories/snapshots
10.pentaho
https://public.nexus.pentaho.org/content/groups/omni/

​ 5.2 添加方式,例如aliyun

在这里插入图片描述

  1. 选择Configuration > Repository, 双击 maven-public, 在Group区域将添加的代理移到右侧Members, 上移到maven-central的上面, 点击 Save。

在这里插入图片描述

在这里插入图片描述

  1. setting.xml文件中找到<servers></servers>标签,在这个标签理配置用户名,密码
	<server>
		<id>releases</id>
		<username>admin</username>
		<password>abc_123</password>
	</server>

	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>abc_123</password>
	</server>
  1. 在项目的pom.xml文件中配置仓库地址
  <distributionManagement>
    <repository>
      <id>releases</id>
      <name>Nexus Release Repository</name>
      <url>http://192.168.181.138:8081/nexus/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
      <id>snapshots</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://192.168.181.138:8081/nexus/repository/maven-snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

snapshot和release版本的区别

​ 在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次。我们知道,maven的依赖管理是基于版本管理的,对于发布状态的artifact,如果版本号相同,即使我们内部的镜像服务器上的组件比本地新,maven也不会主动下载的。如果我们在开发阶段都是基于正式发布版本来做依赖管理,那么遇到这个问题,就需要升级组件的版本号,可这样就明显不符合要求和实际情况了。但是,如果是基于快照版本,那么问题就自热而然的解决了,而maven已经为我们准备好了这一切。

​ maven会根据模块的版本号(pom文件中的version)中是否带有-SNAPSHOT来判断是快照版本还是正式版本。

如果是快照版本:

  • 那么在发布包的时候mvn deploy时会自动发布到快照版本库中
  • 而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。

如果是正式发布版本:

  • 那么在发布包的时候mvn deploy时会自动发布到正式版本库中,
  • 而使用正式版本的模块,在不更改版本号的情况下,编译打包时如果本地已经存在该版本的模块则不会主动去镜像服务器上下载。

​ 所以,我们在开发阶段,可以将公用库的版本设置为快照版本,而被依赖组件则引用快照版本进行开发,在公用库的快照版本更新后,我们也不需要修改pom文件提示版本号来下载新的版本,直接mvn执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

  1. 点击deploy,将包推到maven仓

在这里插入图片描述

问题:deploy时报了401,with status code 401

先看看setting中配置的用户名密码是否正确的

如果是正确的再看看相应的repository是否为“Allow Redeploy”,如果不是的话,设置为Allow Redeploy

比如maven-release
在这里插入图片描述

  1. 发布成功后,可看到包已在仓库中

在这里插入图片描述

安装Jenkins

1. 下载依赖
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
2. 安装秘钥
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
3. 安装jenkins
yum install jenkins
  1. jenkins相关目录释义:
    /usr/lib/jenkins/ jenkins安装目录,war包会放在这
    /etc/sysconfig/jenkins jenkins配置文件,“端口”,“JENKINS_HOME”等都可以在这里配置。
    /var/lib/jenkins/ 默认的JENKINS_HOME。
    /var/log/jenkins/jenkins.log jenkins日志文件。

  2. 运行Jenkins命令

service jenkins restart
  1. 停止运行Jenkins
service jenkins stop
  1. 外部访问Jenkins,需要关闭防火墙

vim /etc/sysconfig/jenkins

在这里插入图片描述

  1. 配置jdk
vim /etc/init.d/jenkins

在这里插入图片描述

访问:http://192.168.181.138:10062/

自动化部署项目

部署spring-boot项目

  1. 新建item,选择freestyle project
    在这里插入图片描述

在这里插入图片描述
2. 选择git,填入仓库地址
在这里插入图片描述

  1. 创建密码凭据

  2. 构建–>增加构建步骤–>execute shell
    在这里插入图片描述

  3. 填写shell脚本

/work/mySoft/apache-maven-3.8.4/bin/mvn clean install
rm -f /work/dts-admin/dts-admin-api-0.0.1-SNAPSHOT.jar
cp /var/lib/jenkins/workspace/dts-admin/dts-admin-api/target/dts-admin-api-0.0.1-SNAPSHOT.jar /work/dts-admin/dts-admin-api-0.0.1-SNAPSHOT.jar
cd /work/dts-admin
BUILD_ID=123456
/work/dts-admin/start.sh
  1. 在虚拟机种新建一个脚本start.sh
#!/bin/bash

export JAVA_HOME=/work/mySoft/jdk1.8.0_271
export JRE_HOME=$JAVA_HOME/jre

## service name
APP_NAME=dts-admin

SERVICE_DIR=/work/dts-admin
SERVICE_NAME=$APP_NAME
JAR_NAME=$APP_NAME*.jar
PID=$APP_NAME\.pid

cd $SERVICE_DIR
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >null 2>&1 &
echo $! > $SERVICE_DIR/$PID
chmod 777 start.sh

在这里插入图片描述
点击应用–>保存,任务创建完成,点击构建即可实现自动化部署spring-boot项目


Recommend

  • 13

    受制于第三方内网穿透服务的各种限制,加上自己恰好有台云服务器,因此通过 frp 搭建了内网穿透服务。 首先,...

  • 15

    搭建自己的内网穿透,搭建ngrok服务器 陈德良EGG · 1天之前 · 144 次点击 · 预计阅读时间 2 分钟 · 不到1分钟之前 开始浏览     ...

  • 9

    旧手机改造成web服务器并实现内网穿透 前几天由于gitee的审核引擎一通乱杀,使得git...

  • 15
    • muyunyun.cn 3 years ago
    • Cache

    搭建家庭服务器&内网穿透

    内网穿透原理架构本文中,我们使用了frp,frp 是一个专注于内网穿透的高性能的反向代理应用。todo: 补充流程图。服务端(云主机) nginx 配置首先将域名(笔者为 frp.muyunyun.cn...

  • 9

    实现内网穿需要有一台公网服务器、域名。(本文将公网服务器称为服务端,内网服务器称为客户端) frp 是什么frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可...

  • 7

    CentOS 7 下搭建自己的 ngrok 内网穿透服务 date_range更新于 2019/12/26 info 现在的...

  • 11
    • blog.devwiki.net 3 years ago
    • Cache

    威联通搭建Frp实现内网穿透

    由于联通不知道什么原因,把整个省的个人动态公网IP都给停止了,所以需要找别的方式来访问我的NAS,.在网上搜索得知,有以下几种方式:使用花生壳或者别的ddns服务使用开源的frp方案查询了下 花生壳的服务收费如下:...

  • 7
    • wwj718.github.io 2 years ago
    • Cache

    搭建ngrok服务(内网穿透)

    搭建ngrok服务(内网穿透) 2015-09-09 技术

  • 13

    Cloudflare 隧道内网穿透搭建记录由于国内运营商不让用80端口,备案又麻烦,因此我想出了这招。 免费且不需要服务器 暂时不支持UDP协议 一个托管于Cloudflare的域名,相...

  • 8

    一、内网穿透简述由于国内网络环境问题, 普遍家庭用户宽带都没有分配到公网 IP(我有固定公网 IP, 嘿嘿); 这时候一般我们需要从外部访问家庭网络时就需要通过一些魔法手段, 比如 VPN、远程软件(向日葵…)等; 但是这些工具都有一个普遍...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK