架构师第一周作业

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 -version
openjdk 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 -E
rz waiting to receive.****
[root@ubuntu20040201 ~]# ls
nexus-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.rc
run_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 section
application-port=8081
application-host=0.0.0.0
nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-requestlog.xml
nexus-context-path=/
# Nexus section
nexus-edition=nexus-pro-edition
nexus-features=\
nexus-pro-feature
nexus.hazelcast.discovery.isEnabled=true
#查看JVM配置文件
[root@ubuntu20040201 ~]# cat /usr/local/nexus/bin/nexus.vmoptions
-Xms2703m
-Xmx2703m
...
#前台运行
[root@ubuntu20040201 ~]# nexus run
...
[root@ubuntu20040201 ~]# ss -ntl
State          Recv-Q         Send-Q                 Local Address:Port                   Peer Address:Port         Process         
LISTEN         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.password
fc0a3ad3-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.git
Cloning 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 109906
Receiving 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]# ls
changes.txt  docker-build.sh     install.sh      jpress-model             jpress-web      module-page  starter-tomcat
codegen      docker-compose.yml  jpress-addons   jpress-service           LICENSE         pom.xml      upgrade.sh
doc          Dockerfile          jpress-commons  jpress-service-provider  module-article  README.md
docker       Dockerfile.build    jpress-core     jpress-template          module-form     starter
[root@ubuntu200402 jpress]# mvn clean package -Dmaven.test.skip=true
可以看到下面的显示出下载的相关包:
  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑哈哈666

您的鼓励是我创作的源泉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值