2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
अग्रे प्रॉक्सी तथा कैश विन्यासः :
प्रॉक्सी : क्लायन्ट् इदानीं प्रत्यक्षतया सर्वरं न प्राप्नोति, अपितु प्रॉक्सी सर्वरेण सर्वरं प्राप्नोति ।
अग्रे प्रॉक्सी : क्लायन्ट् इत्यस्य सम्मुखं वयं प्रॉक्सी सर्वरस्य IP-सङ्केतेन लक्ष्यसर्वरं प्राप्नुमः ।
सर्वरः केवलं प्रॉक्सी सर्वरस्य पतां जानाति, वास्तविकं क्लायन्ट् IP च गोपनीयं कर्तुं शक्यते । (विज्ञान अन्तर्जाल) २.
बफरक्षेत्रं 256 तथा आकारं 4K इति सेट् कुर्वन्तु
प्रॉक्सी_अधिकतम_अस्थायी_सञ्चिका_आकार 0
#यदा nginx सर्वरः प्रॉक्सीरूपेण कार्यं करोति तदा अस्थायीरूपेण प्रतिक्रियादत्तांशस्य संग्रहणार्थं अधिकतमः अस्थायीसञ्चिकाआकारः 0. 0 इत्यस्य अर्थः अस्ति यत् अस्थायीसञ्चिकानां उपयोगः न भवति ।
प्रॉक्सी_कैश_वैध 200 302 1m;
#यदा स्थितिसङ्केतः २०० तथा ३०२ भवति तदा कैश वैधताकालः एकः निमेषः भवति ।
प्रॉक्सी_कैश_वैध 301 1h;
#यदा स्थितिसङ्केतः ३०१ भवति तदा कैशवैधताकालः १ घण्टा भवति
proxy_cache_valid कोऽपि 1m;
#उपर्युक्तस्य स्थितिसङ्केतस्य प्रत्यागमनमूल्यानां अतिरिक्तं अन्ये कैशभण्डारणसमयाः 1m भवन्ति;
)
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分钟。
}
अग्रे प्रॉक्सी कृते वयं प्रॉक्सी सर्वरस्य पतां जानीमः तथा च वयं यत् जालसर्वरं अभिगच्छामः ।
विपरीत-प्रॉक्सी-मध्ये, क्लायन्ट् अद्यापि प्रॉक्सी-सङ्केतं अभिगच्छति, परन्तु वयं न जानीमः यत् कः विशिष्टः जाल-सर्वरः अभिगतः अस्ति:
कार्यम् : सर्वरभारं साझां कर्तुं तथा च प्रणाली उपलब्धतां स्थिरतां च प्रदातुं बहुपृष्ठभूमिसर्वरेभ्यः अनुरोधं वितरन्तु ।
cache त्वरणम्
सुरक्षा रक्षण
चतुर्थस्तरस्य सप्तस्तरस्य च प्रॉक्सीयोः भेदः
http मॉड्यूलस्य प्रॉक्सी, सर्वरः, स्थानं च अग्रे प्रेषयन्तु
http मॉड्यूल् सप्तस्तरैः सह विन्यस्तम् अस्ति
सप्तमः स्तरः अनुप्रयोगस्तरः अस्ति, यः http प्रोटोकॉलस्य उपयोगं करोति तथा च पार्सिंग् तथा प्रसंस्करणस्य अनुरोधं कर्तुं शक्नोति सप्तमः स्तरः प्रॉक्सी उपयोक्तृविधिः, अनुप्रयोगप्रोटोकॉलः, प्रोग्रामकार्यं च उपयुज्यते ।
सप्तमस्तरस्य प्रक्रियावेगः तुल्यकालिकरूपेण मन्दः भवति, परन्तु अधिक उन्नतकार्यं, उत्तमः उपयोक्तृअनुभवं च दातुं शक्नोति ।
एतत् डोमेननाम अथवा IP+पोर्ट् वा भवितुम् अर्हति
चतुर्थः स्तरः परिवहनस्तरः, IP + पोर्ट् अस्ति अनुरोधः पृष्ठभागं प्रति अग्रे प्रेषितः भवति ।
चतुःस्तरीयं अग्रेषणं कर्नेल् अवस्थायां भवति, कर्नल-प्रक्रियाकरणं कर्नल-अग्रेषणं च सह, यत् द्रुततरं भवति ।
अनुप्रयोगपरिदृश्यम् : सप्तस्तरीयप्रॉक्सी सामान्यतया बाह्यप्रवेशं प्रदाति तथा च अनुरोधानाम् संसाधनस्य आवश्यकता भवति । सुरक्षा, छाननं, प्रवाहनियन्त्रणं च समाविष्टम् अस्ति ।
सामान्यतया आन्तरिकरूपेण उपयुज्यमानस्य चतुःस्तरीयप्रॉक्सी इत्यस्य यातायातस्य अनुरोधस्य च विशेषप्रक्रियाकरणस्य आवश्यकता नास्ति ।
विपरीत प्रॉक्सी = भार संतुलन
विन्यासविधिः : १.
सप्तमः स्तरः केवलं http मॉड्यूल् मध्ये एव लिखितुं शक्यते, तथा च आदेशः अपस्ट्रीम अस्ति केवलं http इत्यस्य बृहत् मॉड्यूल् मध्ये लिखितुं शक्यते, तथा च सर्वरे अथवा स्थाने लिखितुं न शक्यते ।
चतुर्थस्तरः केवलं वैश्विकविन्यासे एव लिखितुं शक्यते, न तु http मॉड्यूलधारायां
test2 192.168.11.137 प्रॉक्सी—विपरीत प्रॉक्सी विन्यस्तं कुर्वन्तु
test3 192...168.11.138 पृष्ठभूमि सर्वर
test4 192.168.11.139 पृष्ठभूमि सर्वर
ग्राहकः गूगल क्रोम
भारसंतुलन एल्गोरिदम् : १.
1. मतदान गोल रोबिन rr : मतदान-अल्गोरिदम् सरलतमं मूलभूततमं च एल्गोरिदम् अस्ति, अपि च पूर्वनिर्धारित-अल्गोरिदम् अपि अस्ति । अनुरोधाः क्रमेण पृष्ठभागसर्वरयोः वितरिताः भवन्ति ।
मतदान-अल्गोरिदम् तासु परिस्थितिषु उपयुक्तं भवति यत्र पृष्ठ-अन्त-सर्वर-प्रक्रिया-क्षमता समाना भवति ।यदा च भ्रमणस्य संख्या महती नास्ति तदा पूर्वनिर्धारित-अल्गोरिदम् लोपयितुं शक्यते ।
2. भारित-मतदानम् : मतदानस्य आधारेण प्रत्येकस्य पृष्ठ-अन्त-सर्वरस्य कृते भिन्नानि भाराः सेट् कुर्वन्तु । यातायातस्य वितरणं भार-अनुपातस्य आधारेण न भवति इति अनिवार्यम् ।
येषां भारः अधिकः भवति तेषां मतदानस्य सम्भावना अधिका भवति, न्यूनभारयुक्तानां तु सम्भावना न्यूना भवति ।
पृष्ठभागस्य सर्वरस्य कार्यक्षमता भिन्ना भवति यदि कार्यक्षमता अधिका भवति तर्हि भारः अधिकः भविष्यति यदि कार्यक्षमता न्यूना भवति ।
भारः
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;
}
3. न्यूनतमसङ्ख्यायाः संयोजनानां एल्गोरिदम्, भारीकरणेन सह उपयुज्यते
least_conn इत्येतत् अनुरोधं पृष्ठभागसर्वरं प्रति न्यूनाधिकवर्तमानसम्बद्धैः सह प्रेषयिष्यति ।
यदा पृष्ठभाग-सर्वरः भिन्नानि संसाधनकार्यं गृह्णाति तदा एतेन अनुरोधाः दृढतर-प्रक्रिया-क्षमतायुक्तेषु सर्वरेषु केन्द्रीकृताः न भवेयुः ।
4. ip_hash* इत्यनेन सत्रं कथं निर्वाहयितव्यम्?
ip_hash एल्गोरिदम् इत्यस्य आधारेण क्लायन्ट् इत्यस्य IP-सङ्केतस्य हैश-मूल्यं गणयति, ततः प्रतिक्रियादातृसर्वरं प्रति अनुरोधं अग्रे प्रेषयति ।
यदा प्रथमवारं जालपुटे प्रवेशः भवति तदा हैशमूल्यं गण्यते तथा च अनुरोधः सर्वरे नियुक्तः भविष्यति परन्तु यदि ग्राहकः अग्रिमे समये पुनः समानं IP-सङ्केतं उपयुज्य जालपुटं प्रविशति तर्हि अन्येभ्यः न नियुक्तं भविष्यति सर्वर्स् यावत् पृष्ठभागस्य सर्वरस्य एल्गोरिदम् परिवर्तनं न भवति अथवा पृष्ठभूमिसर्वरः परिवर्तनं न प्रेषयति, यत् अभिगतं सर्वरं परिवर्तयिष्यति ।
**उपयोगस्य परिदृश्यम्: उच्चसमवर्ती** यदि क्लायन्ट् आगत्य सर्वरं निरन्तरं परिभ्रमति तर्हि सर्वरे भारं वर्धयिष्यति एकस्मिन् सर्वरे नियतम्, न केवलं प्रॉक्सी सर्वरे दबावं न्यूनीकरोति, अपितु संसाधनानाम् अपि रक्षणं करोति।
nginx मध्ये सत्रं कथं निर्वाहयितव्यम् ?
ip_hash सत्रस्य स्थायित्वं प्राप्तुं शक्नोति
sessionc गतिशीलपृष्ठे सत्रं विन्यस्यताम् ।
5. URL_hash अनुरोधितस्य URL-सङ्केतस्य अनुसारं हैश-मूल्यं सम्बोधयति ततः अग्रे प्रेषयति यदि प्रत्येकं अनुरोधितं URL समानं भवति तर्हि अग्रे प्रेषितं पता परिवर्तते तर्हि पृष्ठभाग-सर्वरः कैशं वा स्वच्छं करोति पृष्ठभागसर्वरस्य संख्या परिवर्तते ।
http {
upstream xy102 {
hash $request_uri consistent;
server 192.168.11.138 weight=4;
server 192.168.11.139 weight=2;
}
}
उपर्युक्तानि सर्वाणि सप्तमे स्तरे उपयुज्यन्ते चतुर्थे स्तरे ip_hash तथा url_hash अल्गोरिदम् नास्ति ।
प्रयोगं:
基于域名实验负载均衡
给每个主机设置服务域名,去/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
चतुःस्तरीयः प्रॉक्सी : १.
विन्यासविधिः केवलं वैश्विकमॉड्यूले एव भवितुम् अर्हति, तुल्यकालिकरूपेण अल्पाः अल्गोरिदम्स् सन्ति, केवलं ip+port एव भवितुम् अर्हति
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;
nginx अनुकूलन
nginx स्थानस्य मेलनं, प्राथमिकता, पुनर्निर्देशनं च
nginx अग्रे प्रॉक्सी तथा विपरीत प्रॉक्सी
tomact
Tomcat इत्यस्य उपयोगः PHP इव गतिशीलपृष्ठानां संसाधनार्थं भवति ।
Tomcat इत्यस्य उपयोगः जाल-अनुप्रयोग-सर्वररूपेण अपि कर्तुं शक्यते, मुक्तस्रोतः च अस्ति ।
PHP .php सम्पादयति
nginx .html इति
tomcat .jsp
Tomcat इति जावा-सङ्केते लिखितः कार्यक्रमः, जावा-जाल-अनुप्रयोगं च चालयति ।
tomcat इत्यस्य विशेषताः कार्याणि च : १.
1. सेवापात्रम् : Java servlet server-side Java program निष्पादयन्तु, क्लायन्ट् इत्यस्य http अनुरोधं संसाधयन्तु, प्रतिक्रियां च ददतु ।
2. jsp container Javasever page इयं गतिशीलपृष्ठप्रौद्योगिकी अस्ति, अपि च html पृष्ठे Java कोडं एम्बेड् कर्तुं शक्नोति
3. स्वयं http सर्वरः अपि अस्ति
4. Tomcat एकं लघु गतिशीलं पृष्ठं भवति, उच्च-समवर्ती परिदृश्येषु तस्य उपयोगः न भवति ।
Tomcat अनुकूलनम् : tomcat इत्यस्य एव अनुकूलनं, तथैव सिस्टम् कर्नेल् अनुकूलनं jvm अनुकूलनं च ।
**Servlet:** जाल-अनुप्रयोगानाम् विकासाय प्रयुक्तायाः जावा-भाषायाः एकः प्रमुखः घटकः अस्ति ।
http अनुरोधं सम्पादयन्तु, गतिशीलसामग्रीम् उत्पादयन्तु, ग्राहक-अनुरोधानाम् प्रतिक्रियां ददतु च ।
http अनुरोधं सम्पादयन्तु
गतिशील सामग्रीं जनयन्तु
जावायां व्यावसायिकतर्कस्य नियन्त्रणम्
सत्रप्रबन्धनम्, उपयोक्तृस्थितिसूचनाः, शॉपिंगकार्टसमन्वयनं, उपयोक्तृप्रवेशः इत्यादयः ।
भवान् nginx गतिशील-अनुरोधं दत्तांशकोषे अपि अग्रे प्रेषयितुं शक्नोति
jsp: .
जाल-अनुप्रयोगस्य अन्तरफलकं, अस्य अन्तरफलकस्य भाषा जावा-भाषायां कार्यान्वितम् अस्ति ।
.jsp इत्यनेन समाप्ताः सञ्चिकाः
अनुक्रमणिका.जस्प
Tomcat घटकाः : १.
संयोजकः : बाह्य-अनुरोधानाम् स्वीकारस्य प्रतिक्रियायाः च उत्तरदायी एतत् Tomcat-क्लायन्ट्-योः मध्ये संचारस्य केन्द्रम् अस्ति ।
संयोजकः : व्यावसायिकतर्कस्य संसाधनार्थं उत्तरदायी, Engin होस्ट् सन्दर्भ-रैपर् चत्वारि कार्याणि सन्ति
engine: बहुविधं वर्चुअल् होस्ट् प्रबन्धयति । सेवायां केवलमेकं इञ्जिनं भवति, इञ्जिनस्य बहुविधाः होस्ट्-आदयः भवितुम् अर्हन्ति ।
होस्ट् : होस्ट् इति होस्ट् अस्ति, यत् होस्ट् विन्यस्तं कृत्वा अपि अनेकानि साइट्-स्थानानि योजयितुं शक्यन्ते ।
context: सन्दर्भः जाल-अनुप्रयोगस्य प्रतिनिधित्वं करोति
wrapper: wrapper, निम्नतमस्तरीयं तर्कं नियन्त्रयितुं प्रयुक्तम्
service: बाह्यजगति बाह्यसेवाः प्रदातुं, यत्र संयोजकः, पात्रः च सन्ति
Tomcat इत्यस्य बहुविधाः सेवाः भवितुम् अर्हन्ति, प्रत्येकं सेवा परस्परं स्वतन्त्रा भवति ।
tomcat निर्देशिकायाः भूमिका : १.
1. bin tomcat स्क्रिप्ट् आरभन्ते निष्क्रियं च कुर्वन्ति सञ्चिकाः संगृह्णाति । startup.sh shutdown.sh
2. conf tomcat इत्यस्य मुख्यविन्याससञ्चिकां, server.xml मुख्यविन्याससञ्चिकां context.xml: host इत्यस्य पूर्वनिर्धारितविन्याससूचनाः संगृह्णाति
tomcat-user.xml: प्रवेशकाले उपयोक्तुः गुप्तशब्दश्च प्रमाणीकरणसम्बद्धा सूचना । प्रबन्धकसञ्चिका उद्घाटयितुं पूर्वं अधिकृता परिवर्तिता च भवितुमर्हति ।
3. lib: jar संकुलस्य आवश्यकता यदा tomcat चाल्यते।सामान्यतः निश्चलः
4. logs: लॉग सञ्चिका, catalina.out मुख्य लॉग सञ्चिका
5. Temp: tomcat चालने सति उत्पन्नानि सञ्चिकानि संग्रहयति ।
6. webapps: जाल-अनुप्रयोगानाम् परिनियोजनाय निर्देशिका, nginx’s 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"/>
---------------------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
---------------------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
首先使用文本工具编写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。
/dev/urandom /dev/random इत्यस्य अ-अवरोधकसंस्करणम् अस्ति /dev/random इत्यस्य यादृच्छिकपूलः प्रणालीव्यत्ययानां उपरि अवलम्बते अतः यदा प्रणालीव्यत्ययानां संख्या अपर्याप्तं भवति ।
/dev/random यन्त्रं सर्वदा अवरुद्धं भविष्यति, पठितुं प्रयतमाना प्रक्रिया यावत् प्रणाल्याः व्यत्ययसङ्ख्या पर्याप्तं न भवति तावत् प्रतीक्षास्थितौ प्रविशति ।
/dev/random यन्त्रं दत्तांशस्य यादृच्छिकतां सुनिश्चितं कर्तुं शक्नोति । /dev/urandom system interrupts इत्यस्य उपरि न अवलम्बते, अतः प्रक्रियाणां प्रतीक्षायां व्यस्ततां न जनयति ।
परन्तु दत्तांशस्य यादृच्छिकता अधिका नास्ति अतः यादृच्छिकसङ्ख्यायाः सुरक्षा सैद्धान्तिकरूपेण अधिका नास्ति । यदि अनुप्रयोगस्य उच्चसुरक्षाआवश्यकता अस्ति तर्हि /dev/random इत्यस्य उपयोगः करणीयः ।