默认情况下,Apache只支持CGI这种古老的动态网页技术;如果要使Apache支持目前因特网和企业应用中广泛运用的JSP、PHP等的动态网页技术,还要安装第三方的软件或模块。
在互联网初期,大多数网页都是静态的,这意味着它们的内容是固定不变的,除非手动更改HTML代码,否则页面展示的信息将一直相同;然而,随着技术的发展,特别是随着用户对个性化和动态内容需求的增加,动态网页技术应运而生并迅速发展。
动态网页的核心特点包括交互性、自动更新能力和能够根据不同用户或时间显示不同内容的能力;这些特性使得网站能够提供更为丰富和个性化的用户体验。例如,电子商务网站利用动态网页技术展示个性化的商品推荐,社交网络通过动态内容展示好友的最新动态等。
HTML语言是制作网页的基本语言,但它只能编写出静态的网页。而动态网页技术则可以使网页根据访问者输入的信息做出不同的处理,返回不同的响应信息。目前主流的动态网页技术包括CGI、JSP、PHP、ASP等。
从技术实现角度来看,动态网页主要依赖于服务器端脚本语言来生成。这些技术各有其特点和适用场景:
虽然动态网页技术带来了许多便利,但也面临一些挑战,如安全性问题、性能优化和搜索引擎优化(SEO)问题;动态网页由于其运行机制,可能成为安全攻击的目标,因此开发者需要采取有效的安全措施来保护网站和用户数据的安全;同时,动态内容的生成通常会消耗更多的服务器资源,这要求开发者优化代码和数据库查询,以提高响应速度和处理效率;此外,动态网页中的一些元素(如查询字符串)可能会影响搜索引擎的索引,因此需要在设计时考虑SEO的最佳实践。
动态网页的工作原理涉及客户端请求、服务器处理和内容生成等过程。
动态网页技术是现代web开发中重要的一环,其核心在于能够根据用户的请求实时生成内容,从而实现高度的个性化和交互性;这种技术的应用使得网站能够针对不同的用户输入或环境条件展示不同的页面内容,极大地丰富了用户体验。
CGI技术介绍
公共网关接口(CGI)是一个允许Web服务器与外部应用程序交互的标准接口。
CGI是Web服务器运行时外部程序的一种规范,它使得编写的程序可以扩展服务器的功能。这种技术的核心在于它的能力,即通过浏览器接收用户输入信息,并将这些信息传递给服务器端的程序进行处理。处理后的数据通常以HTML文档的格式发回给客户端浏览器,实现信息的动态展示和交互。几乎每个Web服务器都支持CGI,且可以用多种编程语言来实现,如C、C++、Java、VB和Delphi等,这为开发者提供了极大的灵活性。
CGI技术工作原理
CGI的工作过程可以分为几个关键步骤
PHP技术介绍
PHP是一种强大的服务器端脚本语言,特别适合于Web开发。
PHP(Hypertext Preprocessor)即“超文本预处理器”,是一种广泛使用的开源服务器端脚本语言,特别适合于Web开发。PHP的语法受到了C、Java和Perl的影响,同时它也发展出了自己的特色语法。PHP的核心优势在于它的灵活性,支持面向对象和面向过程的开发方式,使得开发者能够根据项目需求选择最合适的编程范式。
PHP技术工作原理
JSP技术介绍
JSP技术介绍和工作原理是基于Java的动态网页开发技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容的生成和管理。
JSP(Java Server Pages)是一种建立在Servlet规范之上的动态网页开发技术。在JSP文件中,HTML代码与Java代码共存,其中HTML用于展示静态内容,而Java代码则负责生成动态内容;这种结合方式使得JSP既能够提供动态的网页功能,又能保持网页结构的逻辑清晰。
JSP技术工作原理
ASP技术介绍
ASP技术,全称为动态服务器页面(Active Server Pages),是由Microsoft公司开发的服务器端脚本环境。
ASP技术允许开发者在HTML页面中嵌入服务器端脚本代码,这些脚本代码通常使用VBScript或JavaScript编写;当服务器收到对ASP文件的请求时,它会处理这些服务器端脚本代码,并构建发送给浏览器的HTML页面;这种方式极大地简化了动态网页的开发过程,使得开发者能够快速创建出交互式的Web应用。
ASP技术工作原理
Tomcat,全名为Apache Tomcat,是由Apache Software Foundation(ASF)维护的一个开源项目,主要用于提供Java Servlet和JavaServer Pages (JSP)技术的支持;Tomcat实现了Java EE(现Jakarta EE)中的几个关键规范,包括Servlet、JSP、EL和WebSocket等,使其成为开发和部署Java Web应用的理想环境。
Tomcat 是一个基于 Java 的应用服务器,因此需要先安装 JDK
(两条命令都可以使用)
[root@root ~]# yum install java-devel
[root@root ~]# dnf install java-1.8.0-openjdk-devel
下载Tomcat
[root@root ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz
--2024-06-15 10:40:01-- https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.71/bin/apache-tomcat-9.0.71.tar.gz
Resolving archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
Connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11613392 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.71.tar.gz’
apache-tomcat-9.0.71.tar.gz 100%[==================================================================================================>] 11.08M 4.30MB/s in 2.6s
2024-06-15 10:40:05 (4.30 MB/s) - ‘apache-tomcat-9.0.71.tar.gz’ saved [11613392/11613392]
解压下载的Tomcat
[root@root ~]# tar -xzf apache-tomcat-9.0.71.tar.gz
[root@root ~]# ls
apache-tomcat-9.0.71 apache-tomcat-9.0.71.tar.gz
移动解压后的 Tomcat 目录到合适的位置
[root@root ~]# mv apache-tomcat-9.0.71 /opt/tomcat
[root@root ~]# cd /
[root@root /]# ls
afs bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@root /]# cd /opt/
[root@root opt]# ls
tomcat
[root@root opt]# ls tomcat/
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@root opt]# cd ~
[root@root ~]# ls
apache-tomcat-9.0.71.tar.gz
设置 Tomcat 的所有者和权限
[root@root ~]# chown -R $USER:$USER /opt/tomcat
[root@root ~]# chmod -R u+x /opt/tomcat/bin
编辑 /etc/profile 文件
[root@root ~]# export CATALINA_HOME=/opt/tomcat
[root@root ~]# export PATH=$PATH:$CATALINA_HOME/bin
使环境变量生效
[root@root ~]# source /etc/profile
[root@root ~]# ps -ef | grep tomcat
root 115729 109403 0 10:49 pts/0 00:00:00 grep --color=auto tomcat
创建一个 Tomcat 服务脚本文件
[root@root ~]# vi /etc/systemd/system/tomcat.service
[Unit] #表示这是一个单元文件,用于描述一个系统服务
Description=Apache Tomcat Web Application Container #描述这个服务的功能,即Apache Tomcat Web应用容器
After=network.target #表示在网络服务启动后再启动这个服务
[Service] #表示接下来是服务的配置信息
Type=forking #表示服务的类型是forking,即父进程会fork出子进程来执行任务
Environment=JAVA_HOME=/usr/java/jdk-11 #设置环境变量JAVA_HOME的值为/usr/java/jdk-11
Environment=CATALINA_HOME=/opt/tomcat #设置环境变量CATALINA_HOME的值为/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat #设置环境变量CATALINA_BASE的值为/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh #指定启动脚本为/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh #指定停止脚本为/opt/tomcat/bin/shutdown.sh
User=tomcat #指定运行服务的用户为tomcat
Group=tomcat #指定运行服务的组为tomcat
RestartSec=10 #表示服务失败后10秒重启
Restart=always #表示服务总是自动重启
[Install] #表示接下来是安装配置信息
WantedBy=multi-user.target #表示这个服务是在多用户模式下需要启动的服务
(注:用户与用户组根据实际情况配置)
重载系统服务配置
[root@root ~]# systemctl daemon-reload
启用 Tomcat 服务,设置开机自启动
[root@root ~]# systemctl enable tomcat
[root@root ~]# systemctl start tomcat
[root@root /]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; preset: disabled)
Active: activating (auto-restart) (Result: exit-code) since Sat 2024-06-15 11:12:34 CST; 8s ago
Process: 117710 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 117717 (code=exited, status=127)
CPU: 11ms
(注:这里只是激活,没有完全启动)
[root@root /]# ls /opt/tomcat/bin/
bootstrap.jar catalina-tasks.xml commons-daemon.jar configtest.sh digest.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh
catalina.bat ciphers.bat commons-daemon-native.tar.gz daemon.sh makebase.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
catalina.sh ciphers.sh configtest.bat digest.bat makebase.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
[root@root /]# cat /etc/passwd
[root@root /]# cat /etc/group
[root@root /]# cd /opt/tomcat/bin/
[root@root bin]# ./startup.sh
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@root bin]# systemctl status tomcat
● tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; enabled; preset: disabled)
Active: activating (auto-restart) (Result: exit-code) since Sat 2024-06-15 12:26:29 CST; 3s ago
Process: 123569 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=0/SUCCESS)
Main PID: 123576 (code=exited, status=127)
CPU: 10ms
[root@root usr]# cat /etc/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/java/jdk-11
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=root
Group=root
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
[root@root usr]# java -version
openjdk version "11.0.20.1" 2023-08-24 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.20.1.1-2) (build 11.0.20.1+1-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.20.1.1-2) (build 11.0.20.1+1-LTS, mixed mode, sharing)
[root@root usr]# rpm -qa| grep java
tzdata-java-2024a-2.el9.noarch
javapackages-filesystem-6.0.0-4.el9.noarch
java-11-openjdk-headless-11.0.20.1.1-2.el9.x86_64
java-11-openjdk-11.0.20.1.1-2.el9.x86_64
java-11-openjdk-devel-11.0.20.1.1-2.el9.x86_64
java-1.8.0-openjdk-headless-1.8.0.362.b09-4.el9.x86_64
java-1.8.0-openjdk-1.8.0.362.b09-4.el9.x86_64
java-1.8.0-openjdk-devel-1.8.0.362.b09-4.el9.x86_64
[root@root usr]# echo $JAVA_HOME
[root@root usr]# which java
/usr/bin/java
[root@root opt]# cd tomcat/logs
[root@root logs]# cat localhost.2024-06-15.log
[root@root logs]# cat catalina.out
/opt/tomcat/bin/catalina.sh: line 504: /usr/java/jdk-11/bin/java: No such file or directory
[root@root logs]# cat catalina.2024-06-15.log
(注:根据上述日志查找问题)
[root@root logs]# netstat -antp | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 108025/httpd