Teknologian jakaminen

nginx eteenpäin välityspalvelin ja käänteinen välityspalvelin

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

nginx eteenpäin välityspalvelin ja käänteinen välityspalvelin

Välityspalvelimen ja välimuistin määritys edelleen:
Välityspalvelin: Asiakas ei enää käytä palvelinta suoraan, vaan käyttää palvelinta välityspalvelimen kautta.

Välityspalvelin eteenpäin: Asiakasta vasten pääsemme kohdepalvelimeen välityspalvelimen IP-osoitteen kautta.
Palvelin tietää vain välityspalvelimen osoitteen, ja todellinen asiakkaan IP voidaan piilottaa. (Tieteellinen Internet)

Lisää kuvan kuvaus tähän

Lisää kuvan kuvaus tähän

Aseta puskurialueeksi 256 ja kooksi 4K
proxy_max_temp_file_size 0
#Kun nginx-palvelin toimii välityspalvelimena, tilapäisen tiedoston enimmäiskoko vastaustietojen tilapäiseen tallentamiseen on 0. 0 tarkoittaa, että väliaikaisia ​​tiedostoja ei käytetä.
proxy_cache_valid 200 302 1m;
#Kun tilakoodi on 200 ja 302, välimuistin voimassaoloaika on yksi minuutti.
proxy_cache_valid 301 1h;
#Kun tilakoodi on 301, välimuistin voimassaoloaika on 1 tunti
proxy_cache_valid mikä tahansa 1 m;
#Yllä olevien tilakoodien palautusarvojen lisäksi muut välimuistin tallennusajat ovat 1 m;
)

server {
        listen       8888;
        server_name  localhost;
        resolver 8.8.8.8 valid=300 ipv6=off;
        #设置dns解析地址,解析器的缓存时间300秒,每300秒重新解析一次,关闭ipv6
        resolver_timeout 3s;
        #解析超时的时间3秒
        proxy_read_timeout 30s;
        #读取代理服务器的超时时间,30s,默认是60s.
        proxy_send_timeout 30s;
        #向服务端发送数据的超时时间是30s,默认是60s.
        proxy_connect_timeout 30s;
        #和服务器建立连接的超时时间,30s,默认也是60s
        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass  $scheme://$http_host$request_uri;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Port $server_port;
            #需要把客户端的真实ip,客户端的主机名,客户端的请求方式,服务端的端口,真实的ip地址添加在请求头当中
           # 请求转发到$url的地址,通过代理服务器地址可以直接访问百度 http://$url:端口
           # 设置页面的缓存:
            proxy_buffers 256 4k;
           #设置缓冲区为256个,大小是4k
            proxy_max_temp_file_size 0;
           # nginx服务器做为代理的时候暂时存放的响应数据的最大临时文件的大小为0,不使用临时文件
            proxy_cache_valid 200 302 1m;
           #当状态吗是200和302时,缓存的有效期是1分钟
            proxy_cache_valid 301 1h;
           #当状态吗是301,缓存的有效期是1小时
            proxy_cache_valid any 1m;
           #除了上述的三个状态吗,其他的缓存保存时间1分钟。

        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

käänteinen välityspalvelin

Välityspalvelinta varten tiedämme käyttämämme välityspalvelimen ja verkkopalvelimen osoitteen.

Käänteisessä välityspalvelimessa asiakas käyttää edelleen välityspalvelinosoitetta, mutta emme tiedä, mitä tiettyä verkkopalvelinta käytetään:
Toiminto: Jaa pyynnöt useille taustapalvelimille palvelimen kuormituksen jakamiseksi ja järjestelmän saatavuuden ja vakauden varmistamiseksi.
välimuistin kiihdytys
turvallisuussuoja

Neljännen ja seitsemännen kerroksen välityspalvelinten ero
Välitä välityspalvelin, palvelin ja http-moduulin sijainti
http-moduuli on määritetty seitsemään kerrokseen

Seitsemäs kerros on sovelluskerros, joka käyttää http-protokollaa ja voi pyytää jäsentämistä ja käsittelyä. Seitsemännen kerroksen välityspalvelin käyttää käyttäjätilaa, sovellusprotokollia ja ohjelmatoimintoja.
Seitsemän kerroksen käsittelynopeus on suhteellisen hidas, mutta se voi tarjota edistyneempiä toimintoja ja paremman käyttökokemuksen.
Se voi olla joko verkkotunnus tai IP+portti

Neljäs kerros on siirtokerros, IP + portti. Pyyntöä ei voida analysoida ja käsitellä perusteellisesti.
Nelikerroksinen edelleenlähetys on ytimen tilassa, ja ytimen käsittely ja ytimen edelleenlähetys ovat nopeampia.
Sovellusskenaario: Seitsemänkerroksinen välityspalvelin tarjoaa yleensä ulkoisen pääsyn ja tarvitsee pyyntöjen käsittelyä. Sisältää suojauksen, suodatuksen ja virranhallinnan.
Nelikerroksinen välityspalvelin, jota käytetään yleensä sisäisesti, ei vaadi erityistä liikenteen ja pyyntöjen käsittelyä.

Käänteinen välityspalvelin = kuormituksen tasapainotus
Konfigurointimenetelmä:
Seitsemäs kerros voidaan kirjoittaa vain http-moduulissa, ja komento on ylävirtaan. Se voidaan kirjoittaa vain suureen http-moduuliin, eikä sitä voi kirjoittaa palvelimeen tai sijaintiin.
Neljäs kerros voidaan kirjoittaa vain yleiseen kokoonpanoon, ei http-moduulivirtaan

Lisää kuvan kuvaus tähän

test2 192.168.11.137 välityspalvelin — määritä käänteinen välityspalvelin
test3 192…168.11.138 taustapalvelin
test4 192.168.11.139 taustapalvelin
Asiakas: Google Chrome

Kuormituksen tasapainotusalgoritmi:
1. Äänestys round robin rr : Pollausalgoritmi on yksinkertaisin ja yksinkertaisin algoritmi, ja se on myös oletusalgoritmi. Pyynnöt jaetaan vuorotellen taustapalvelimille.
Pollausalgoritmi sopii tilanteisiin, joissa taustapalvelimen prosessointiominaisuudet ovat samat.Ja kun käyntien määrä ei ole suuri, oletusalgoritmi voidaan jättää pois.

2. Painotettu kysely: Aseta kyselyn perusteella eri painot kullekin taustapalvelimelle. Liikenteen jakautuminen ei välttämättä perustu painosuhteeseen.
Korkeapainoisilla on suurempi todennäköisyys joutua kyselyyn, kun taas pienipainoisilla on pienempi todennäköisyys.

Taustapalvelimien suorituskyky on erilainen. Jos suorituskyky on korkea, paino on pienempi.
paino

http {

upstream xy102 {
       server 192.168.11.138 weight=3;
       server 192.168.11.139 weight=2;

    }
}

 server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://xy102;
        }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3. Minimimäärän yhteyksien algoritmi, jota käytetään painotuksen kanssa
minimum_conn lähettää pyynnön taustapalvelimelle, jolla on vähemmän nykyisiä yhteyksiä.
Kun taustapalvelimet suorittavat erilaisia ​​käsittelytehtäviä, tämä voi estää pyyntöjen keskittymisen palvelimille, joilla on tehokkaammat käsittelyominaisuudet.

4. Kuinka ylläpitää istuntoa ip_hash*:lla?

ip_hash laskee asiakkaan IP-osoitteen hajautusarvon algoritmin perusteella ja välittää sitten pyynnön vastaavalle palvelimelle.
Kun verkkosivustolle avataan ensimmäistä kertaa, hajautusarvo lasketaan ja pyyntö osoitetaan palvelimelle. Jos asiakas kuitenkin käyttää verkkosivustoa seuraavan kerran käyttämällä samaa IP-osoitetta, sitä ei osoiteta toiselle palvelimet, ellei taustapalvelimen algoritmi muutu tai taustapalvelin lähetä muutoksia, jotka muuttavat käytettävää palvelinta.
**Käyttöskenaario: korkea samanaikaisuus** Jos asiakas tulee sisään ja pyörittää palvelinta jatkuvasti, se lisää palvelimen kuormitusta Kiinteänä yhdellä palvelimella, se ei ainoastaan ​​vähennä välityspalvelimeen kohdistuvaa painetta, vaan myös säästää resursseja.

Kuinka ylläpitää istuntoa nginxissä?
ip_hash voi saavuttaa istunnon pysyvyyden
Määritä istunto sessionc dynaamisella sivulla.

5. URL_hash osoittaa hajautusarvon pyydetyn URL-osoitteen mukaan ja lähettää sen sitten eteenpäin. Jos pyydetty URL on joka kerta sama, se osoitetaan samalle palvelimelle taustapalvelinten määrä muuttuu.

http {
upstream xy102 {
        hash $request_uri consistent;
       server 192.168.11.138 weight=4;
       server 192.168.11.139 weight=2;

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

Yllä olevia käytetään seitsemännessä kerroksessa. Neljännessä kerroksessa ei ole ip_hash- ja url_hash-algoritmia.

koe:

                                     基于域名实验负载均衡

给每个主机设置服务域名,去/etc/hosts中进行域名映射,重启nginx服务,进入虚拟机测试。
test2  192.168.11.137   客户端  www.xy33.com
test3 192..168.11.138   后台服务器  www.xy11.com
test4  192.168.11.139   后台服务器  www.xy22.com


[root@test2 conf]# vim nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
     upstream xy102 {
       server www.xy11.com weight=4;
       server www.xy22.com weight=2;

    }
    
    server {
        listen       80;
        server_name  www.xy33.com;
        }
[root@test2 conf]# vim /etc/hosts       
192.168.11.137   www.xy33.com
192.168.11.138   www.xy11.com
192.168.11.139   www.xy22.com



[root@test3 conf]# vim nginx.conf
 server {
        listen       80;
        server_name  www.xy11.com;
        }
        
[root@test3 conf]# vim /etc/hosts       
192.168.11.137   www.xy33.com
192.168.11.138   www.xy11.com
192.168.11.139   www.xy22.com


[root@test4 conf]# vim nginx.conf
 server {
        listen       80;
        server_name  www.xy22.com;
        }
        
[root@test4 conf]# vim /etc/hosts       
192.168.11.137   www.xy33.com
192.168.11.138   www.xy11.com
192.168.11.139   www.xy22.com
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

Nelitasoinen välityspalvelin:
Konfigurointimenetelmä voi olla vain globaalissa moduulissa, algoritmeja on suhteellisen vähän, se voi olla vain ip+portti

test2  192.168.11.137   客户端      192.168.11.137:81
test3 192..168.11.138   后台服务器  192.168.11.138:8081
test4  192.168.11.139   后台服务器  192.168.11.139:8082
客户端配置页面负载均衡搞的


[root@test2 conf]# vim nginx.conf
events {
    worker_connections  1024;
}
stream {
    upstream test {
     server 192.168.11.138:8081 weight=2;
    server  192.168.11.139:8082 weight=2;

   }
    server {
    listen 81;
    proxy_pass  test;
}
}



[root@test3 conf]# vim nginx.conf
    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8081;
        
        
[root@test4 conf]# vim nginx.conf
    #keepalive_timeout  0;
    keepalive_timeout  65;

    server {
        listen       8082;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

nginx-optimointi
Nginx-sijainnin täsmääminen, prioriteetti ja uudelleenohjaus
nginx eteenpäin välityspalvelin ja käänteinen välityspalvelin

tomact
Tomcatia, kuten PHP:tä, käytetään dynaamisten sivujen käsittelyyn.
Tomcatia voidaan käyttää myös web-sovelluspalvelimena ja se on avoimen lähdekoodin.
PHP käsittelee .php:tä
nginx .html
tomcat .jsp

Tomcat on Java-koodilla kirjoitettu ohjelma, joka käyttää Java-verkkosovellusta.
Tomcatin ominaisuudet ja toiminnot:
1. Palvelusäilö: Suorita Java-servlet-palvelinpuolen Java-ohjelma, käsittele asiakkaan http-pyyntö ja vastaa.
2. jsp-säilö Javasever-sivu Tämä on dynaaminen sivutekniikka, joka voi myös upottaa Java-koodin html-sivulle
3. Se on myös itse http-palvelin
4. Tomcat on kevyt dynaaminen sivu, eikä sitä käytetä korkean samanaikaisuuden skenaarioissa.

Tomcat-optimointi: itse tomcatin optimointi sekä järjestelmäytimen optimointi ja jvm-optimointi.

**Servlet:** on avainkomponentti Java-kielessä, jota käytetään verkkosovellusten kehittämiseen.
Käsittele http-pyyntöjä, luo dynaamista sisältöä ja vastaa asiakkaiden pyyntöihin.
Käsittele http-pyyntöjä
Luo dynaamista sisältöä
Liiketoiminnan logiikan käsittely Javassa
Istuntojen hallinta, käyttäjän tilatietojen ylläpito, ostoskorin synkronointi, käyttäjän kirjautuminen jne.
Voit myös välittää nginx-dynaamisia pyyntöjä tietokantaan

jsp:
Verkkosovelluksen käyttöliittymä, tämän käyttöliittymän kieli on toteutettu Java-kielellä.
.jsp-päätteiset tiedostot
index.jsp

Tomcatin osat:
Liitin: Vastaa ulkoisten pyyntöjen hyväksymisestä ja niihin vastaamisesta. Kuunteluportti hyväksyy ulkoiset pyynnöt käsittelyn jälkeen.

Liitin: Liiketoimintalogiikan käsittelystä vastaava Engin-isäntäkontekstikääre koostuu neljästä funktiosta
moottori: hallitsee useita virtuaalisia isäntiä. Palvelulla on vain yksi moottori, ja koneella voi olla useita isäntiä.
Isäntä: Isäntä on isäntä, jota voidaan kutsua myös sivustoksi Konfiguroimalla isäntä, voidaan lisätä useita sivustoja.
konteksti: Konteksti edustaa verkkosovellusta
kääre: kääre, jota käytetään käsittelemään alimman tason logiikkaa

palvelu: Tarjoa ulkopuolisia palveluita ulkomaailmalle, mukaan lukien liitin ja säiliö
Tomcatilla voi olla useita palveluita, jokainen palvelu on riippumaton toisistaan.

Lisää kuvan kuvaus tähän

Tomcat-hakemiston rooli:
1. bin tallentaa tiedostot, jotka käynnistävät ja sammuttavat tomcat-komentosarjat. startup.sh shutdown.sh

2. conf tallentaa tomcatin pääasetustiedoston, server.xml pääasetustiedoston context.xml: isännän oletusmääritystiedot
tomcat-user.xml: Tiedot, jotka liittyvät käyttäjän ja salasanan todentamiseen kirjautumisen yhteydessä. Hallintatiedosto on valtuutettava ja sitä on muokattava ennen kuin se voidaan avata.

3. lib: jar-paketti tarvitaan, kun tomcat on käynnissä.yleensä liikkumaton

4. lokit: lokitiedosto, catalina.out-päälokitiedosto

5. Temp: tallentaa tiedostot, jotka on luotu, kun tomcat on käynnissä.

6. webapps: Hakemisto verkkosovellusten käyttöönottoa varten, samanlainen kuin nginxin html

------主要目录说明----------------------------------------------------------------------------------------------
●bin:存放启动和关闭Tomcat的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh三个文件
●conf:存放Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。
① server.xml: Tomcat的主配置文件,包含Service,Connector,Engine,Realm,Valve,Hosts主组件的相关配置信息;
② context.xml:所有host的默认配置信息;
③ tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息,Tomcat自带的manager默认情况下会用到此文件,在Tomcat中添加/删除用户,为用户指|定角色等将通过编辑此文件实现;
④ web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的web应用程序提供包括MIME映射等默认配置信息;
●lib:存放Tomcat运行需要的库文件的jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的jar 包
●logs:存放 Tomcat 执行时的日志
●temp:存放 Tomcat 运行时产生的文件
●webapps:存放 Tomcat 默认的 Web 应用部署目录
●work:Tomcat工作日录,存放jsp编译后产生的class文件,一般清除Tomcat缓存的时候会使用到
●src:存放Tomcat 的源代码
●doc:存放Tomcat文档
----------------------------------------------------------------------------------------------------------

查看manager文件:
cd /usr/local/tomcat/webapps/manager/META-INF
vim context.xml

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow=".*" /> #允许所有主机访问。


在conf,tomcat-users.xml中,添加账户密码
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
---------------------Tomcat 虚拟主机配置-------------------------
很多时候公司会有多个项目需要运行,一般不会是在一台服务器上运行多个 Tomcat 服务,这样会消耗太多的系统资源。此时, 就需要使用到 Tomcat 虚拟主机。
例如现在新增两个域名 www.kgc.com 和 www.benet.com, 希望通过这两个域名访问到不同的项目内容。

1.创建 kgc 和 benet 项目目录和文件
mkdir /usr/local/tomcat/webapps/kgc   
mkdir /usr/local/tomcat/webapps/benet
echo "This is kgc page!" > /usr/local/tomcat/webapps/kgc/index.jsp
echo "This is benet page!" > /usr/local/tomcat/webapps/benet/index.jsp

2.修改 Tomcat 主配置文件 server.xml
vim /usr/local/tomcat/conf/server.xml
--165行前--插入
<Host name="www.kgc.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/kgc" path="" reloadable="true" />
</Host>   

<Host name="www.benet.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/webapps/benet" path="" reloadable="true" />
</Host>

----------------------------------------------------------------------------------------------------------
Host name:主机名
appBase:Tomcat程序工作目录,即存放web应用程序的目录;相对路径为webapps,绝对路径为 /usr/local/tomcat/webapps
unpackWARs:在启用此webapps时是否对WAR格式的归档文件先进行展开;默认为true
autoDeploy:在Tomcat处于运行状态时放置于appBase目录中的应用程序文件是否自动进行deploy;默认为true
xmlValidation:是否验证xml文件执行有效性检验的标志
xmlNamespaceAware:是否启用xml命名空间,设置该值与xmlValidation为true,表示对web.xml文件执行有效性检验

docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;
path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径 / ;
reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
---------------------Tomcat 服务部署-------------------------
在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

2.安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version

3.设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64:
这个命令设置了一个名为JAVA_HOME的环境变量,它指向Java JDK的安装路径。
这对于告诉系统和其他应用程序Java的安装位置非常重要。你需要将路径替换为你实际安装Java的路径。

export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:
这个命令设置了一个名为CLASSPATH的环境变量,它用于指定Java类的搜索路径。
在这个命令中,.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar 表示当前目录(.)
以及Java工具库(tools.jar)和Java远程调试库(dt.jar)的路径。这些库通常包含一些Java开发所需的类。

export PATH=$JAVA_HOME/bin:$PATH:
这个命令将Java可执行文件的路径添加到系统的PATH环境变量中。
这使得你可以在终端中直接运行Java工具,而不需要输入完整的路径。
这将Java的bin目录添加到了PATH中,使得java、javac等命令可以直接运行。

source /etc/profile.d/java.sh
java -version

----------------------------------------------------------------------------------------------------------
CLASSPATH:编译、运行Java程序时,JRE会去该变量指定的路径中搜索所需的类(.class)文件。
dt.jar:是关于运行环境的类库,主要是可视化的 swing 的包。
tools.jar:主要是一些jdk工具的类库,包括javac、java、javap(jdk自带的一个反编译工具)、javadoc等。
JDK (Java Development Kit):JDK是Java开发工具包,它是用于开发Java应用程序的软件包。
JDK包括了编译器(javac)、调试器、各种工具、Java标准类库(Java API)、以及Java文档等。
JDK是开发者用来创建、编译和运行Java应用程序的重要组件。

JRE (Java Runtime Environment):JRE是Java运行时环境,它是用于执行Java应用程序的部分。
JRE包括了Java虚拟机(JVM)以及Java类库(Java API),这使得用户能够在计算机上运行已编译的Java程序,
而不需要进行开发。JRE是终端用户需要安装的部分,以便能够运行Java应用程序。

JVM (Java Virtual Machine):JVM是Java虚拟机,它是Java应用程序在计算机上运行的核心组件。
JVM负责将编译后的Java字节码(.class文件)解释或编译成本地机器码,以便计算机能够执行它。
JVM提供了内存管理、垃圾回收、线程管理等功能,以确保Java程序在不同平台上具有相似的行为。
----------------------------------------------------------------------------------------------------------

首先使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
首先使用文本工具编写java源代码,比如 Hello.java ;
在命令行中,输入命令:javac Hello.java,对源代码进行编译,生成 class 字节码文件;
编译完成后,如果没有报错信息,输入命令:java Hello,运行 class 字节码文件,由 JVM 对字节码进行解释和运行,
打印 “Hello World”。


vim Hello.java

public class Hello {			
  public static void main(String[] args){
    System.out.println("Hello world!");
  }
}

javac Hello.java
java Hello


public: 这是一个访问修饰符,表示类是公共的,可以从其他地方访问。
class: 关键字用于定义一个类。
Hello: 这是类的名称,这里是一个叫做 "Hello" 的类。


public static void main(String[] args){
public: 访问修饰符,表示这个方法是公共的,可以从其他地方访问。
static: 静态修饰符,表示这个方法属于类而不是实例,可以通过类名直接调用。
void: 这是方法的返回类型,void 表示方法没有返回值。
main: 这是方法的名称,是程序的入口点,当程序运行时会从这里开始执行。
(String[] args): 这是方法的参数列表,args 是一个字符串数组,可以在命令行传递参数给程序。

System.out.println("Hello world!");
System.out: System 是一个类,out 是这个类的一个静态成员,它代表标准输出流。
println: 这是输出方法的名称,它会在控制台输出一行内容。
"Hello world!": 这是要输出的内容,是一个字符串。

4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
##启动tomcat ##
#后台启动
/usr/local/tomcat/bin/startup.sh 
或
/usr/local/tomcat/bin/catalina.sh start
	
#前台启动
/usr/local/tomcat/bin/catalina.sh run		

netstat -natp | grep 8080

浏览器访问Tomcat的默认主页 http://192.168.233.21:8080

5.优化tomcat启动速度
第一次启动tomcat可能会发现 Tomcat 启动很慢,默认情况下可能会需要几十秒,可以修改jdk参数进行改。
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
--117行--修改
securerandom.source=file:/dev/urandom
----------------------------------------------------------------------------------------------------------
/dev/urandom是/dev/random的非阻塞版本,/dev/random的 random pool 依赖于系统中断,因此在系统的中断数不足时,
/dev/random 设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用,
/dev/random设备可以保证数据的随机性。 /dev/urandom不依赖系统的中断,也就不会造成进程忙等待,
但是数据的随机性也不高,所以该随机数的安全性理论上不高。如果应用对安全性要求很高,那么应该使用/dev/random。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62

Tomcat käynnistyy hyvin hitaasti. Oletuksena se voi kestää kymmeniä sekunteja. Voit muuttaa jdk-parametreja.
vim /usr/java/jdk1.8.0_201-amd64/jre/lib/security/java.security
– Rivi 117 – Muutos
securerandom.source=file:/dev/urandom

/dev/urandom on ei-estävä versio /dev/random-tiedostosta. Näin ollen, kun järjestelmäkeskeytyksiä ei ole riittävästi.
/dev/random-laite on aina estetty, ja lukua yrittävä prosessi siirtyy odotustilaan, kunnes järjestelmän keskeytysmäärä on riittävä.
/dev/random-laite voi varmistaa tietojen satunnaisuuden. /dev/urandom ei luota järjestelmän keskeytyksiin, joten se ei aiheuta prosesseja kiireiseen odottamiseen.
Tietojen satunnaisuus ei kuitenkaan ole suuri, joten satunnaisluvun turvallisuus ei ole teoreettisesti korkea. Jos sovelluksella on korkeat turvallisuusvaatimukset, /dev/random tulisi käyttää.


  • 1