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

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

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

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

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

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


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


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

安装lrzsz

Linux中rz和sz命令用法详解

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

sz:将选定的文件发送(send)到本地机器

rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

安装命令:

```sh

yum install lrzsz

```

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

```shell

sz filename

```

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

```shell

rz

```

安装插件

```shell

yum install vim

yum install wget

```

安装jdk

1. 解压jdk

```shell

tar -zxvf jdk-8u271-linux-x64.tar.gz

```

2. 配置环境变量并测试

  2.1 编辑文件/etc/profile

```shell

vi /etc/profile

```

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

```shell

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 让环境变量生效,执行下面的命令

```shell

source /etc/profile

```

2.4 验证

```shell

java -version

```


安装maven

1. 下载maven

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

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

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

```shell

tar -zxvf apache-maven-3.8.4-bin.tar.gz

mkdir repository

```

4. 修改Maven本地仓库地址


5. 配置环境变量

```shell

vim /etc/profile

```

在文件下方加入以下配置

```shell

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

```

2. yum安装git被安装在`/usr/libexec/git-core`目录下


3. `git --version`查看version版本

安装nacos

解压

```shell

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

```

进入nacos的bin目录,启动nacos

```shell

sh startup.sh -m standalone

vi ./nacos/logs/start.out可查看启动日志

```

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

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

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

```shell

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

systemctl stop firewalld.service

```

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


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

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

安装docker

使用国内 daocloud 一键安装命令

```shell

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

```

启动docker

```shell

systemctl start docker

```

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

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

docker 安装mysql

```shell

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

```shell

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

```

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


3. 进入管理界面,增加代理源


4. 选择maven2(proxy)


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


5.1 添加几个常用的代理

```txt

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


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



7. setting.xml文件中找到`<servers></servers>`标签,在这个标签理配置用户名,密码

```xml

<server>

<id>releases</id>

<username>admin</username>

<password>abc_123</password>

</server>

<server>

<id>snapshots</id>

<username>admin</username>

<password>abc_123</password>

</server>

```

8. 在项目的pom.xml文件中配置仓库地址

```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执行相关编译、打包命令即可重新下载最新的快照库了,从而也方便了我们进行开发。

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


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

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

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

比如maven-release


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


安装Jenkins

```shell

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命令

```shell

service jenkins restart

```

2. 停止运行Jenkins

```shell

service jenkins stop

```

4. 外部访问Jenkins,需要关闭防火墙

5. 修改端口

```shell

vim /etc/sysconfig/jenkins

```


6. 配置jdk

```shell

vim /etc/init.d/jenkins

```


访问:http://192.168.181.138:10062/

自动化部署项目

部署spring-boot项目

1. 新建item,选择freestyle project



2. 选择git,填入仓库地址


3. 创建密码凭据


4. 构建-->增加构建步骤-->execute shell


5. 填写shell脚本

```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

```


6. 在虚拟机种新建一个脚本start.sh

```shell

#!/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

```

7. 执行命令

```shell

chmod 777 start.sh

```


点击应用-->保存,任务创建完成,点击构建即可实现自动化部署spring-boot项目

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,165评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,503评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,295评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,589评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,439评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,342评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,749评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,397评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,700评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,740评论 2 313
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,523评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,364评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,755评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,024评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,297评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,721评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,918评论 2 336

推荐阅读更多精彩内容