赞
踩
1.在虚拟机安装tomcat并且部署一个服务,并且实现会话共享。
- #Oracle JDK的二进制文件安装
- [root@ubuntu200406 ~]#rz -E
- rz waiting to receive.**[root@ubuntu200406 ~]#ls
- jdk-11.0.19_linux-x64_bin.tar.gz snap
- [root@ubuntu200406 ~]#tar xf jdk-11.0.19_linux-x64_bin.tar.gz -C /usr/local/
- [root@ubuntu200406 ~]#cd /usr/local
- [root@ubuntu200406 local]#ls
- bin etc games include jdk-11.0.19 lib man sbin share src
- [root@ubuntu200406 local]#ln -s jdk-11.0.19/ jdk
- [root@ubuntu200406 local]#ls jdk
- bin conf include jmods legal lib man README.html release
- [root@ubuntu200406 local]#ls jdk/bin
- jar javac jcmd jdeprscan jhsdb jjs jmod jshell jstatd rmic serialver
- jarsigner javadoc jconsole jdeps jimage jlink jps jstack keytool rmid unpack200
- java javap jdb jfr jinfo jmap jrunscript jstat pack200 rmiregistry
- [root@ubuntu200406 local]#vim /etc/profile.d/jdk.sh
- #!/bin/bash
- export JAVA_HOME=/usr/local/jdk/
- export PATH=$JAVA_HOME/bin:$PATH
- [root@ubuntu200406 local]#. /etc/profile.d/jdk.sh
- [root@ubuntu200406 local]#cd
- [root@ubuntu200406 ~]#java -version
- java version "11.0.19" 2023-04-18 LTS
- Java(TM) SE Runtime Environment 18.9 (build 11.0.19+9-LTS-224)
- Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.19+9-LTS-224, mixed mode)
- [root@ubuntu200406 ~]#javac
- Usage: javac <options> <source files>
- ...
- [root@ubuntu200406 ~]#jps
- 3139 Jps
-
- #二进制安装 Tomcat (安装Tomcat之前先安装Java环境)
- [root@ubuntu200406 ~]#rz -E
- rz waiting to receive.**********[root@ubuntu200406 ~]#ls
- apache-tomcat-9.0.83.tar.gz jdk-11.0.19_linux-x64_bin.tar.gz snap
- [root@ubuntu200406 ~]#tar xf apache-tomcat-9.0.83.tar.gz -C /usr/local/
- [root@ubuntu200406 ~]#cd /usr/local/
- [root@ubuntu200406 local]#ln -s apache-tomcat-9.0.83/ tomcat
- #指定PATH变量
- [root@ubuntu200406 ~]#echo 'PATH=/usr/local/tomcat/bin:$PATH' > /etc/profile.d/tomcat.sh
- [root@ubuntu200406 ~]#. /etc/profile.d/tomcat.sh
- [root@ubuntu200406 ~]#echo $PATH
- /usr/local/tomcat/bin:/usr/local/tomcat/bin:/usr/local/jdk//bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
-
- #启动tomcat
- [root@ubuntu200406 ~]#startup.sh
- Using CATALINA_BASE: /usr/local/tomcat
- Using CATALINA_HOME: /usr/local/tomcat
- Using CATALINA_TMPDIR: /usr/local/tomcat/temp
- Using JRE_HOME: /usr/local/jdk/
- Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
- Using CATALINA_OPTS:
- Tomcat started.
-
- #查看端口
- [root@ubuntu200406 ~]#ss -ntlp
- State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
- LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=785,fd=13))
- LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=846,fd=3))
- LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:* users:(("java",pid=2314,fd=52))
- LISTEN 0 100 *:8080 *:* users:(("java",pid=2314,fd=43))
- LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=846,fd=4))
此时,打开浏览器访问:http://192.168.31.179:8080/,可以看到如下界面:
2.总结JVM内存结构和垃圾回收算法。
JVM 组成部分:
- 类加载子系统: 使用Java语言编写.java Source Code文件,通过javac编译成.class Byte Code文 件。class loader类加载器将所需所有类加载到内存,必要时将类实例化成实例
- 运行时数据区: 最消耗内存的空间,需要优化
- 执行引擎: 包括JIT (JustInTimeCompiler)即时编译器, GC垃圾回收器
- 本地方法接口: 将本地方法栈通过JNI(Java Native Interface)调用Native Method Libraries, 比 如:C,C++库等,扩展Java功能,融合不同的编程语言为Java所用
垃圾回收算法:
- 标记-清除 Mark-Sweep
分垃圾标记阶段和内存释放两个阶段:
标记阶段,找到所有可访问对象打个标记。
清理阶段,遍历整个堆 对未标记对象(即不再使用的对象)逐一进行清理。
优点:算法简单
缺点:标记-清除最大的问题会造成内存碎片,但是不浪费空间,效率较高(如果对象较多时,逐一删除效率也 会受到影响)- 标记-压缩 (压实)Mark-Compact
分垃圾标记阶段和内存整理两个阶段:
标记阶段,找到所有可访问对象打个标记。
内存清理阶段时,整理时将对象向内存一端移动,整理后存活对象连续的集中在内存一端。
优点:整理后内存空间连续分配,有大段的连续内存可分配,没有内存碎片。
缺点:内存整理过程有消耗,效率相对低下- 复制 Copying
先将可用内存分为大小相同两块区域A和B,每次只用其中一块,比如A。当A用完后,则将A中存活的对 象复制到B。复制到B的时候连续的使用内存,最后将A一次性清除干净。
优点:没有碎片,复制过程中保证对象使用连续空间,且一次性清除所有垃圾,所以即使对象很多,收回效率也很高
缺点:比较浪费内存,只能使用原来一半内存,因为内存对半划分了,复制过程毕竟也是有代价。多种算法总结:没有最好的算法,在不同场景选择最合适的算法
- 效率: 复制算法>标记清除算法> 标记压缩算法
- 内存整齐度: 复制算法=标记压缩算法> 标记清除算法
- 内存利用率: 标记压缩算法=标记清除算法>复制算法
3.总结安装Nexus步骤实现私有仓库
Nexus 是一个强大的 Maven 和其它仓库的管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。
下载并启动 Nexus
注意: 安装Nexus 建议内存至少4G以上
#安装JDK[root@ubuntu20040201 ~]# apt update && apt install openjdk-8-jdk -y[root@ubuntu20040201 ~]# java -versionopenjdk version "1.8.0_392"OpenJDK Runtime Environment (build 1.8.0_392-8u392-ga-1~20.04-b08)OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)[root@ubuntu20040201 ~]# rz -Erz waiting to receive.****[root@ubuntu20040201 ~]# lsnexus-3.54.1-01-unix.tar.gz snap[root@ubuntu20040201 ~]# ll -h nexus-3.54.1-01-unix.tar.gz-rw-rw-rw- 1 root root 201M Dec 13 09:33 nexus-3.54.1-01-unix.tar.gz[root@ubuntu20040201 ~]# tar xf nexus-3.54.1-01-unix.tar.gz -C /usr/local/[root@ubuntu20040201 ~]# ls /usr/local/bin etc games include lib man nexus-3.54.1-01 sbin share sonatype-work src[root@ubuntu20040201 ~]# ln -s /usr/local/nexus-3.54.1-01/ /usr/local/nexus[root@ubuntu20040201 ~]# ln -s /usr/local/nexus/bin/nexus /usr/bin/[root@ubuntu20040201 ~]# file /usr/local/nexus/bin/nexus/usr/local/nexus/bin/nexus: POSIX shell script, ASCII text executable, with very long lines#指定运行身份[root@ubuntu20040201 ~]# vim /usr/local/nexus/bin/nexus.rcrun_as_user="root"#查看配置文件,可以在此文件中修改端口等配置[root@ubuntu20040201 ~]# cat /usr/local/nexus/etc/nexus-default.properties## DO NOT EDIT - CUSTOMIZATIONS BELONG IN $data-dir/etc/nexus.properties### Jetty sectionapplication-port=8081application-host=0.0.0.0nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xmlnexus-context-path=/# Nexus sectionnexus-edition=nexus-pro-editionnexus-features=\nexus-pro-featurenexus.hazelcast.discovery.isEnabled=true#查看JVM配置文件[root@ubuntu20040201 ~]# cat /usr/local/nexus/bin/nexus.vmoptions-Xms2703m-Xmx2703m...#前台运行[root@ubuntu20040201 ~]# nexus run...[root@ubuntu20040201 ~]# ss -ntlState Recv-Q Send-Q Local Address:Port Peer Address:Port ProcessLISTEN 0 1 127.0.0.1:36031 0.0.0.0:*LISTEN 0 5 0.0.0.0:873 0.0.0.0:*LISTEN 0 50 0.0.0.0: 8081 0.0.0.0:*LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*LISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 70 *:33060 *:*LISTEN 0 5 [::]:873 [::]:*LISTEN 0 151 *:3306 *:*LISTEN 0 128 [::]:22 [::]:*此时就可以在浏览器中访问了:http://192.168.31.13:8081点击【Sign in】,账号是admin,初始密码在/usr/local/sonatype-work/nexus3/admin.password文件中[root@ubuntu20040201 ~]# cat /usr/local/sonatype-work/nexus3/admin.passwordfc0a3ad3-83bf-40e7-8a49-38606663727d输入账号密码即可登录,进来后可以重新设置密码,密码设好后,下一步选择匿名访问,
启用匿名访问将默认允许未经授权的下载,浏览和搜索存储库内容,可以通过编辑分配给匿名用户的角 色来更改匿名用户的权限。
生产建议打开匿名访问功能,无需登录就可以下载资源
配置完成:
验证默认仓库:
默认仓库有以下 type 类型:
Hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库,比如公司的第三方库
Proxy:代理仓库,它们被用来代理远程的公共仓库,如maven 中央仓库(官方仓库)
Group:仓库组,用来合并多个 hosted/proxy 仓库,当你的项目希望在多个repository 使用资源时就 不需要多次引用了,只需要引用一个 group 即可
点击设置图标--点击【Repositories】--点击"maven-central"
Maven的仓库优化配置:
默认仓库maven-central使用国外仓库地址,可修改为如下的国内镜像地址进行加速
把Remote storage路径改成阿里云的
在Maven配置文件指定Nexus服务器地址,后续进行JAVA源码编译可以从Nexus仓库下载相关包
这个是公司内部仓库路径 http://192.168.31.13:8081/repository/maven-central/,然后把maven之前的阿里云镜像替换成公司内部仓库路径
#二进制安装Maven的镜像配置[root@ubuntu20040201 ~]# vim /usr/local/maven/conf/settings.xml<mirrors>......<mirror><id> nexus-n83</id><mirrorOf>*</mirrorOf><name> Nexus n83</name><url> http://192.168.31.13:8081/repository/maven-central/</url></mirror></mirrors>#包安装Maven的镜像配置[root@ubuntu200406 ~]# vim /etc/maven/settings.xml<mirrors>......<mirror><id> nexus-n83</id><mirrorOf>*</mirrorOf><name> Nexus n83</name><url> http://192.168.31.13:8081/repository/maven-central/</url></mirror></mirrors>然后就可以下载源码,进行编译了, 此时的编译就会从nexus服务器下载相关包:[root@ubuntu200402 ~]# git clone https://gitee.com/JPressProjects/jpress.gitCloning into 'jpress'...remote: Enumerating objects: 111587, done.remote: Counting objects: 100% (1681/1681), done.remote: Compressing objects: 100% (880/880), done.remote: Total 111587 (delta 529), reused 1161 (delta 294), pack-reused 109906Receiving objects: 100% (111587/111587), 200.98 MiB | 12.46 MiB/s, done.Resolving deltas: 100% (45755/45755), done.[root@ubuntu200402 ~]# cd jpress/[root@ubuntu200402 jpress]# lschanges.txt docker-build.sh install.sh jpress-model jpress-web module-page starter-tomcatcodegen docker-compose.yml jpress-addons jpress-service LICENSE pom.xml upgrade.shdoc Dockerfile jpress-commons jpress-service-provider module-article README.mddocker Dockerfile.build jpress-core jpress-template module-form starter[root@ubuntu200402 jpress]# mvn clean package -Dmaven.test.skip=true可以看到下面的显示出下载的相关包:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。