Berbagi teknologi

[Penjelasan Lengkap Direktori Tomcat] Apa lagi yang perlu Anda ketahui tentang Tomcat

2024-07-12

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

Semoga artikelnya dapat memberi anda inspirasi dan inspirasi~
Jika menurut Anda artikel ini bermanfaat bagi Anda,Suka+Ikuti+Kumpulkan Tolong dukung blogger~

Catatan Pembukaan

Tomcat masih aktif dalam kehidupan sehari-hari para pengembang, tetapi apakah kita memiliki pemahaman yang lebih mendalam tentangnya, atau cukup hanya mengetahui cara menginstal, mengkonfigurasi, dan memulainya? Artikel ini menjadi ringkasan dan catatan saya. Saya harap ada sesuatu yang Anda butuhkan;

Masukkan deskripsi gambar di sini

1. Deskripsi lingkungan dasar

Mempertimbangkan faktor lingkungan, setiap orang harus membandingkan dan menganalisis lingkungan perangkat lunak dan perangkat keras mereka sendiri dengan benar ~ Harap baca lingkungan perangkat keras dan perangkat lunak dengan cermat.

1.1 Lingkungan perangkat keras

Windows 11 专业版

1.2 Lingkungan perangkat lunak

alat pengembangan:Tomcat 9.0

2. Struktur file Tomcat

Struktur direktori file terutama dibagi menjadi: bin, conf, lib, logs, temp, webapps, work. Struktur direktori file di Tomcat relatif jelas, dan setiap direktori memilikinya sendiri特定的功能Dan用途

Masukkan deskripsi gambar di sini

2.1 direktori bin

Direktori bin menyimpan file skrip startup dan shutdown Tomcat;重要的文件Kita harus tahu;

  • File yang diakhiri dengan .sh: skrip startup dan shutdown pada platform Linux atau Mac.
  • File yang diakhiri dengan .bat: skrip startup dan shutdown pada platform Windows.
  • catalina.sh: Skrip startup inti Tomcat, tempat parameter JVM dapat diatur.
  • startup.sh dan shutdown.sh: masing-masing digunakan untuk memulai dan mematikan server Tomcat.
  • service.bat: digunakan untuk mendaftarkan layanan Tomcat di windows.

2.1.1 memulai dan mematikan

untukstartupDanshutdown Anda pasti sudah sangat familiar dengannya. Kita harus menggunakannya setiap hari untuk memulai dan mematikan server Tomcat dengan cepat. Sedangkan untuk akhiran bat, tergantung pada jenis sistem operasi Anda.

2.1.2 Katalina

tentangCatalinaFilenya juga dari Tomcat启动脚本,DanstartupPerbedaan utamanya adalah yang terakhir专注启动, sedangkan yang pertama masih bisa lewat配置参数untuk mencapai tujuan lain;

Misalnya disini saya menggunakan catalina untuk memulai Tomcat, saya akan melakukan ini: entercatalina.bat start (sistem windows)
Masukkan deskripsi gambar di sini
di sini adalahtomcat的bin目录Dieksekusi di bawah, jika Anda telah mengkonfigurasi环境变量, maka Anda dapat melakukan operasi ini di lokasi mana pun, kami juga dapat menggunakan hal yang sama;catalina.bat stopuntuk menghentikan layanan;

Jadi bagaimana cara mengkonfigurasi parameter?

Pendekatan yang biasa dilakukan adalah mengonfigurasi parameter yang relevan dengan memodifikasi file catalina. Konfigurasi parameter yang paling umum adalah JVM dan konten terkait lainnya, misalnya, di file catalina-Xms512msudah diaturJVM的初始堆内存adalah 512MB,-Xmx1024msudah diatur最大堆内存adalah 1024MB,-XX:+UseG1GCDiaktifkanG1垃圾回收器-Duser.timezone=Asia/Shanghaisudah diaturJVM的时区

Masukkan deskripsi gambar di sini
Setelah modifikasi, restart Tomcat agar konfigurasi dapat diterapkan, berikut perbandingan perbedaan sebelum dan sesudah konfigurasi;
Masukkan deskripsi gambar di sini
Masukkan deskripsi gambar di sini
Program dimulai secara normal, dan kita dapat melihat informasi parameter yang kita konfigurasikan di konsol;

需要注意的是, dalam situasi sebenarnya kita tidak melakukannya不建议直接在catalina中修改, yang tidak bersahabat dengan peningkatan dan pemeliharaan layanan kucing jantan kami, jadi kami merekomendasikan通过setenv配置文件 Untuk mengkonfigurasi parameter; mengapa setenv? Mari kita lihat file konfigurasi catalina. Paragraf ini memberitahu kita bahwa skrip akan membuat penilaian ketika dimulai. Jika file ini ada, maka secara otomatis dipanggil. File ini biasanya tidak ada di direktori Tomcat saat ini, dan kita membutuhkannya untuk membuatnya sendiri secara manual.
Masukkan deskripsi gambar di sini
Setelah membuat setenv (setenv.bat di Windows, setenv.sh di mac/linux), lalu tambahkan konfigurasi di dalamnya sesuai dengan sistem yang berbeda; harap dicatat bahwa sintaksnya akan sedikit berbeda;

// mac或linux
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai"
  • 1
  • 2
// windows
set JAVA_OPTS=-Xms512m -Xmx1024m -XX:+UseG1GC -Duser.timezone=Asia/Shanghai
  • 1
  • 2

2.1.3 layanan.bat (Windows)

file layanan, kita hanya melihat file ini di Windows, biasanya digunakan untuk mendaftarkan layanan Tomcat sebagai layanan sistem, penggunaan utamanya adalah masuk ke direktori bin dan menjalankan service.bat install + nama layanan khusus;
Masukkan deskripsi gambar di sini
Masukkan deskripsi gambar di sini
Kemudian kita dapat melihat di layanan windows bahwa itu belum dimulai saat ini. Anda dapat mengklik untuk memulai atau memulai ulang komputer. Ini akan dimulai secara otomatis saat komputer dihidupkan ulang berikutnya;

2.2 direktori conf

Direktori conf menyimpan berbagai file konfigurasi global server Tomcat.

  • server.xml: File konfigurasi utama Tomcat, termasuk informasi konfigurasi Layanan, Konektor, Mesin, Host, dan komponen lainnya.
  • web.xml: File konfigurasi yang mengikuti standar spesifikasi Servlet dan digunakan untuk mengkonfigurasi servlet dan memberikan informasi konfigurasi default untuk semua aplikasi web.
  • tomcat-users.xml: Peran terkait, pengguna, kata sandi, dan informasi lain yang digunakan dalam otentikasi Realm.
  • konteks.xml: Informasi konfigurasi default untuk semua host.
  • catalina.policy: File konfigurasi kebijakan keamanan terkait Java.
  • catalina.properties: Definisi paket internal Tomcat dan file kontrol terkait akses.
  • logging.properties: Informasi konfigurasi yang terkait dengan logger Tomcat.

2.2.1 server.xml

Di file konfigurasi server.xml Apache Tomcat, Anda bisa配置多个端口, tapi yang paling umum termasukHTTP服务的端口(Bawaannya adalah 8080),AJP服务的端口(standarnya adalah 8009), danSSL/TLS(即HTTPS)的端口(Jika diaktifkan, defaultnya mungkin 8443, tetapi ini tergantung pada konfigurasi spesifik)
【1】port konektor http

Konektor HTTP digunakan untuk menangani permintaan HTTP yang masuk ke Tomcat. Secara default, Tomcat mendengarkan pada port 8080. Anda dapat mengubah port ini dengan memodifikasi atribut port label.

Masukkan deskripsi gambar di sini
【2】port konektor AJP

Konektor AJP (Apache JServ Protocol) digunakan untuk komunikasi antara Tomcat dan server HTTP Apache, terutama saat menggunakan modul mod_jk. Secara default, Tomcat mendengarkan pada port 8009.

AJP目前我们其实不怎么使用,因为nginx已经可以替代它;它一开始是默认注释的,根据自己需要来开启

【3】Port konektor SSL/TLS (HTTPS).

Jika Anda berencana agar Tomcat menangani permintaan HTTPS, Anda perlu mengonfigurasi konektor SSL/TLS.Ini melibatkan penentuan informasi seperti keystore (keystore) dan kata sandi sertifikat SSL

Masukkan deskripsi gambar di sini
这个也是默认注释的,当你需要用到https请求的时候,再去开启;certificateKeystoreFile和certificateKeystorePassword应该指向你的密钥库文件和它的密码。这些值需要根据你的实际密钥库文件和密码进行更改

2.2.2 web.xml (sedikit berubah)

Di direktori instalasi Tomcatconf目录tengahweb.xml文件Ya全局配置文件 , yang mendefinisikan Servlet default di seluruh server Tomcat dan pemetaan tipe MIME, dll. Biasanya, file web.xml global ini tidak perlu sering dimodifikasi oleh pengembang, kecuali Anda perlu menambahkan pemetaan Servlet global, filter (Filter), pendengar (Listener), dll. ke seluruh server Tomcat;

一些配置是可以通过注解(Annotations)来完成,这减少了对web.xml文件的依赖;

2.2.3 tomcat-pengguna.xml

<tomcat-users xmlns="http://tomcat.apache.org/xml"  
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"  
              version="1.0">  
  
  <!--  
    注意:默认情况下,Tomcat Manager是禁用的,并且没有设置任何用户。  
    要启用Tomcat Manager,并为其设置用户,你需要取消以下注释,  
    并根据需要修改用户名、密码和角色。  
  -->  
  
  <role rolename="manager-gui"/>  
  <role rolename="manager-script"/>  
  <user username="tomcat" password="tomcat" roles="manager-gui"/>  
  <user username="admin" password="admin123" roles="manager-script"/>  
  
</tomcat-users>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

2.2.4 pencatatan.properti

Dengan mengedit file ini, Anda dapat menentukan level log, format, lokasi keluaran, dll. Ini berguna untuk memantau dan men-debug server Tomcat dan aplikasi yang diterapkan.

# 设置日志的根级别和处理器  
handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler  
  
# 设置根日志级别  
.level = INFO  
  
# 设置特定类别的日志级别  
org.apache.catalina.level = INFO  
org.apache.catalina.startup.level = FINE  
org.apache.catalina.session.level = FINE  
org.apache.catalina.util.lifecycle.level = FINE  
  
# 为不同的处理器(文件处理器和控制台处理器)设置格式和文件路径  
# 文件处理器示例  
1catalina.org.apache.juli.FileHandler.level = FINE  
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
1catalina.org.apache.juli.FileHandler.prefix = catalina.  
  
2localhost.org.apache.juli.FileHandler.level = FINE  
2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
2localhost.org.apache.juli.FileHandler.prefix = localhost.  
  
3manager.org.apache.juli.FileHandler.level = FINE  
3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
3manager.org.apache.juli.FileHandler.prefix = manager.  
  
4host-manager.org.apache.juli.FileHandler.level = FINE  
4host-manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs  
4host-manager.org.apache.juli.FileHandler.prefix = host-manager.  
  
# 控制台处理器  
java.util.logging.ConsoleHandler.level = FINE  
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter  
  
# 设置日志文件的编码  
org.apache.juli.FileHandler.encoding = UTF-8  
  
# Java 类的日志级别  
org.apache.jasper.level = INFO  
org.apache.coyote.level = INFO
  • 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

Direktori 2.3 lib (pada dasarnya tidak berubah)

Fungsi: Menyimpan file perpustakaan (file JAR) yang diperlukan untuk menjalankan Tomcat.
Catatan: Meskipun beberapa versi lama Tomcat atau konfigurasi tertentu mungkin menyimpan file JAR di direktori lain seperti common/lib, server/lib atau shared/lib, versi modern Tomcat lebih memilih untuk menyimpan file perpustakaan inti di direktori lib.

2.4 direktori log

Fungsi: Menyimpan file log saat Tomcat dijalankan.
Konten: termasuk berbagai informasi log selama startup Tomcat, proses berjalan dan mematikan, seperti catalina.out, localhost.log, dll.

Masukkan deskripsi gambar di sini
这里catalina.2024-7-10是通过日志滚动策略生成的,用于记录Catalina容器的日常运行日志;

locahost.2024-7-10,localhost_access_log.2024-7-10分别记录了应用程序的日志信息和访问日志;

host-manager日志是监控和管理Tomcat服务器上虚拟主机的重要工具。通过分析这些日志文件,管理员可以了解虚拟主机的使用情况,以及是否存在潜在的问题或安全风险

Biasanya saat kami memeriksa log setiap hari, kami tidak memilih Catalina.log/Catalina.out/appName.log, dll.;

2.5 direktori aplikasi web

Fungsi: Direktori penerbitan Web utama Tomcat, digunakan untuk menyimpan aplikasi Web.
Konten: Secara default, aplikasi dapat dipublikasikan dengan menempatkan file aplikasi web di direktori ini. Tomcat akan secara otomatis memindai aplikasi di direktori ini dan menyebarkannya.

Karakteristik aplikasi web adalah:
【1】Penyebaran otomatis: Tomcat akan secara teratur memindai semua konten di direktori webapps.ketika Anda menempatkan a WAR 文件(misalnya, myapp.war) ketika ditempatkan di direktori webapps, Tomcat akan secara otomatis mendeteksi file ini dan尝试部署它 .Jika file tersebut adalah paket WAR, Tomcat akan mendekompresi file terlebih dahulu dan kemudian menyebarkan aplikasi sesuai dengan struktur direktori yang didekompresi.
【2】Manajemen: Dengan langsung mengoperasikan file di direktori webapps, Anda dapat dengan mudah mengelola aplikasi Web di Tomcat.Misalnya, Anda bisa lulus删除目录来卸载应用程序, atau melalui替换 WAR 文件Datangmemperbaruiaplikasi.

【3】 Jalur penerapan yang disesuaikan:Tomcat 默认将 Web 应用程序部署在 webapps 目录下, tetapi Anda juga dapat memodifikasi file konfigurasi Tomcat (misalnya server.xml ) untuk menentukan direktori lain sebagai jalur penerapan aplikasi. Izinkan saya menyebutkan hal ini, jarang sekali melihat jalan lain ditentukan tetapi bukan tidak mungkin;

<Host name="localhost"  appBase="webapps"  
        unpackWARs="true" autoDeploy="true">  
  
    <!-- 配置一个Context来指定其他目录为应用程序的部署路径 -->  
    <Context path="/myapp" docBase="/path/to/your/application" reloadable="true">  
        <!-- 这里可以添加更多的Context配置 -->  
    </Context>  
  
    <!-- 其他Host配置 -->  
  
</Host>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.6 direktori kerja

Fungsi: Menyimpan file kelas yang dihasilkan setelah kompilasi JSP dan file sementara Servlet.
Catatan: Hapus isi direktori ini dan restart Tomcat untuk menghapus cache JSP dan Servlet yang dikompilasi.

简单的来说,work的作用就是JSP编译和缓存来提高tomcat的性能,主要体现在响应速度上;
注意需要定期清理该目录,长期tomcat的运行和更新会导致该目录越来愈大;占用大量的磁盘空间;

2.7 direktori sementara

Fungsi: Menyimpan file-file sementara yang dihasilkan selama menjalankan Tomcat.
Catatan: File-file sementara ini biasanya digunakan untuk mendukung operasi internal Tomcat, seperti manajemen sesi, pengunggahan file, dll.

这个目录有点类似于work目录,也是通过缓存临时文件来提高应用程序的性能

3. Akhirnya

[1] Setelah membuat konfigurasi yang relevan, Anda sering kali perlu memulai ulang Tomcat agar dapat diterapkan;

[2] Meskipun direktori sementara dan kerja adalah file cache dan file sementara, Anda tetap perlu membuat cadangan saat membersihkannya, dan mengonfirmasi apakah file ini masih ditempati oleh proses aplikasi lain;

[3] Ketika shutdown dijalankan, proses ini tidak langsung berhenti, tetapi mencoba mematikan Tomcat dengan baik. Proses ini mungkin memerlukan waktu untuk berhenti tergantung pada situasinya; Anda dapat menilai apakah Tomcat telah dimatikan dengan memeriksa status port Tomcat ;