第九周作业

1. 总结 nginx反向代理及https安全加密。

七层代理(应用层)在http模块下配置

http stream配置参数

http {
    upstream name {
        hash $cookie_sessionid
        #hash key
        #ip_hash
        #least_conn;
        server ip:port  //至少一个server服务器配置
        server ip:port weight=3 
        server ip:port down
    }
    server {
        listen 80;
        location / {
            proxy_pass http://name;
    }
}

server支持的parameters如下:
weight=number #设置权重,默认为1,实现类似于LVS中的WRR,WLC等
max_conns=number
#给当前后端server设置最大活动链接数,默认为0表示没有限制
max_fails=number
#后端服务器的下线条件,当客户端访问时,对本次调度选中的后端服务器连续进行检测
多少次,如果都失败就标记为不可用,默认为工次,当客户端访问时,才会利用TCP触发对探测后端服务器健康性检查,而非周期性的探测
fail_timeout=time #后端服务器的上线条件,对已经检测到处于不可用的后端服务器,每隔此时间间隔再次进行检测是否恢复可用,如果发现可用,则将后端服务器参与调度,默认为10秒
backup
#设置为备份服务器,当所有后端服务器不可用时,才会启用此备用服务器
down
#标记为down状态,可以平滑下线后端服务器,新用户不再调度到此主机,旧用户不受影响




hash KEY [consistent];
#基于指定请求报文中首部字段或者URI等key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用,Consistent定义使用一致性hash运算,一致性hash基于取模运算
#示例
hash Srequest_uri consistent; #基于用户请求的uri做hash
hash Scookie_sessionid
#基于cookie中的sessionid这个key进行hash调度,实现会话绑定


ip_hash;
#源地址hash调度方法,基于的客户端的remote_addr(源地址IPv4的前24位或整个IPv6地址)做hash计算,以实现会话保持
#hash Sremote_addr 则是对全部32bit的IPv4进行hash计t算

least_conn;
#敏少连接调度算法,优先将客户端请求调度到当前连接量少的后端服务器,相当于LVS中的WLC

 四层代理(传输层)在stream模块下配置

stream {
    upstream dns {
        server ip:port;
        server ip:port;
    server {
        listen 53 udp;
        proxy_pass dns;
    }
}


2. 完成nginx实现LNMP架构wordpress应用

1.安装mysql数据库,创建用户和数据库并授权
    create database wordpress;
    create user wordpress@'%' identified by '123456'
    grant all on wordpress.* to wordpress@'%';
2.安装nginx,配置文件添加内容
server {
    listen 80;
    server_name www.liguox.org;
location / {
    root /data/nginx/wordpress;
    index index.php index.html index. html;
}


location ~ \-php$ {
    root            /data/nginx/wordpress;
    fastcgi_pass    127.0.0.1: 9000;
    fastcgi_index   index. php;
    fastcgi_param   SCRIPT_FILENAME Sdocument_root$fastcgi_script_name;
    include         fastcgi_params;
   
}
location ~ ^/(ping|pm_status)$ { #实现状态页
    include fastcgi_params;
    fastogi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME    Sdocument_root$fastcgi_script_name;
    #fastcgi_param PATH_TRANSLATED Sdocument_rootSfastcgi_script_name; 
}

3.部署php-fpm服务
4.解压wordpress文件,修改目录权限
5.启动服务器访问


3. 总结 JumpServer管理配置

jumpSever管理配置
用户管理
    用户列表:根据系统管理员、普通用户、系统审计员权限创建对应用户
    用户组:将创建的用户进行分组
资产管理(可以使用模板批量导入)
    资产列表:录入对应资产信息创建
    添加资产节点:将资产进行分组

授权管理:
    通过在linux中创建的用户,实现关联使用jumpserver中的用户资产
    创建授权规则
会话管理:
    查看用户操作,和完整会话录像


4. 总结 tomcat实现多虚拟机

 多虛拟主机配置说明
• name 必须是主机名,用主机名来匹配
• appBase 当前主机的网页根目录,是相对于 SCATALINA_HOME,也可以使用绝对路径
• unpackWARs 是否自动解压war格式
• autoDeploy 热部署,自动加载并运行应用


vim conf/server.xml

<Host name="web1.magedu.org"appBase=" /data/webapps/" unpackwARs="True"autoDeploy=" false">
#虚拟主机专有访问日志
<Valve className="org.apache.catalina.valves AccessLogvalve" directory="logs" prefix="web1_access_log" suffix=" .txt" pattern="%h %1 %u %t &quot;%r&quot; %s
%b"/>
</Host>

#以下行是自带的不需要修改
</Engine>
</Service>
</Server>
#或者如果不加日志也可以用下面简化写法
<Host name="web1.magedu.org" appbase="/data/webapps/" unpackwARs="True" autoDeploy=" false" />

准备虚拟主机数据目录并授权
mkdir /data/app{1,2}/ROOT -pv
chown -R tomcat. /data/app{1,2}/


5. 总结 tomcat定制访问日志格式和反向代理tomcat

环境准备:
192.168.29.100 #nginx反向代理并实现https加密
192.168.29.255 #tomcat运行java程序和数据库

192.168.29.100环境配置:
1.安装nginx
2.修改配置文件
    upstream tomcat {
        server 192.168.29.225:8080;  //代理地址端口
    }

    server {
        listen       80;
        server_name  www.liguox.org;
        return 302 https://$server_name$request_uri; //实现http跳转到https加密
    }
   server {
         listen 443 ssl;
         ssl_certificate /apps/nginx/certs/www.liguox.org.crt;        指定证书相关文件路径
         ssl_certificate_key /apps/nginx/certs/www.liguox.org.key;    
         location / {    
         proxy_pass http://tomcat;
         proxy_set_header Host $http_host;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
    }
3.重载nginx配置文件
    nginx -s reload



192.168.29.225环境配置:
1.安装tomcat
2.安装mysql,创建用户并授权
    create database jpress;
    create user jpress@'%' identified by '123456'
    grant all on jpress.* to jpress@'%';
3.将jpress的java程序包移动到TOMCAT的webapps目录下改名为ROOT.war,删除原本ROOT目录
4.启动tomcat服务

 

6. 完成 tomcat实现MSM集群

non-sticky模式:
1.将jedis.jar放到tomcatd安装目录的lib目录下
2.redis服务器修改配置文件,开启远程连接
3.两台tomcat服务器配置文件修改
<Context>
  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="redis://192.168.29.225"
    sticky="false"
    sessionBackupAsync="false"
    lockingMode="uriPattern:/path1|/path2"
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
    />
</Context>


7. 总结 JVM垃圾回收算法和分代

1.标记-清除 Mark-Sweep
分垃圾标记阶段和内存释放两个阶段
标记阶段,找到所有可访问对象打个标记。清理阶段,遍历整个堆
对未标记对象逐一进行清理
特点:
优点:算法简单
缺点:标记-清除最大的问题会造成内存碎片,但是不浪费空间,效率较高

2.标记-压缩
分垃圾标记阶段和内存整理两个阶段
标记阶段,找到所有可访问对象打个标记
内存清理阶段时,整理时将对象向内存一端移动,整理后存活对象连续的集中在内存一端
特点:
优点:整理后的内存空间连续分配,有大段的连续内存可分配,没有内存碎片
缺点:内存整理过程有消耗,效率相对低

3.复制Copying
先将可用内存分为A、B相同两块区域,每次只用其中一块,比如A,当A用完后,则将A中存活的对象复制到B。复制到B的时候连续的使用内存,最后将A一次性清除干净
特点:
优点:没有碎片,复制过程中保证对象使用连续空间,且一次性清除所有垃圾,所以即使对象很多,收回效率也很高
缺点:比较浪费内存,只能使用原来一半内存,因为内存对半划分,复制过程也是代价


不同场景最合适算法
效率:复制算法>标记清除算法>标记压缩算法
内存整齐度:复制算法=标记压缩算法>标记清除算法
内里利用率:标记压缩算法=标记清除算法>复制算法


JVM分代的实现方式是通过不同的垃圾回收算法来处理不同的内存区域。
新生代:使用复制算法进行垃圾回收,将内存分为一个Eden区和两个Survivor区,
    每次只使用一个Survivor区,当这个Survivor区满了之后,
    将其中的存活对象复制到另一个Survivor区中,同时清空原来的Survivor区。
老年代:使用标记-清除算法进行垃圾回收,标记出所有存活的对象,然后清除所有未标记的对象。


9. 总结 tomcat性能优化方式及java源码编译    

内存空间优化
vim /usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="-server -Xms4g -Xmx4g -XX: NewSize= -XX:MaxNewSize=
-server:服务器模式
-Xms:堆内存初始化大小
Xmx:堆内存空向上限
-XX: Newsize=:新生代空间初始化大小
-XX:MaxNewSize=:新生代空间最大值

线程池调整
vim /usr/local/tomcat/conf/server.xml

[root@centos8 ~]#vim /usr/local/tomcat/conf/server.xml
<Connector port="8080"
protocol="нтр/1.1" connectionTimeout="20000"
redirectport=8443"/>
常用属性:
• connectionTimeout :连接超时时长,单位ms
• maxThreads:最大线程数,默认200
• minSpareThreads:
最小空闲线程数
• maxSpareThreads: 最大空闲线程数
• acceptcount:当启动线程满了之后,等待队列的最大长度,默认100
• URIEncoding:URI 地址编码格式,建议使用UTF-8
•enableLookups:是否启用客户端主机名的DNS反向解析,缺省禁用,建议禁用,就使用客户端IP
就行
• compression:是否启用传输压缩机制,建议 “on”,CPU和流量的平衡
    ° compressionMinSize:启用压缩传输的数据流最小值,单位是字节
    ° compressableMimeType:定义启用压缩功能的MIME类型text/html, text/xml, text/css,
text/javascript



java源码编译:
1.安装maven,修改配置文件
 vim /etc/maven/settings.xml
‹mirrors>
    <!--阿里云镜像-->
    ‹mirror>
    <i d>nexus-aliyun</id>
    <mirrorof>*</mirrorof>
    ‹name>Nexus aliyun</name≥
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

2.进入到包含“pom.xml”路径中,执行:
    mvn clean install package -Dmaven.test.skip=true

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值