【网络安全】服务基础第二阶段——第六节:Linux系统管理基础----网站环境搭建

embedded/2024/9/24 14:08:34/

本文我们接着上一节介绍LAMP中的另一大板块——PHP

欢迎订阅本专栏,专栏持续更新网络安全知识🌟🌟🌟

一、PHP环境搭建及基本应用
1.1 PHP语言介绍

PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,它特别适用于网页开发,并可嵌入到HTML中使用。PHP的语法借鉴了C、Java、Perl等语言,使得其成为一种强大的编程工具。它可以生成动态页面,处理表单,管理文件上传,以及与数据库进行交互。

1.1.1 PHP主要特性
  • 服务器端脚本:PHP脚本在服务器上执行,生成HTML内容,然后发送给客户端浏览器。
  • 嵌入HTML中:PHP代码可以嵌入到HTML中,或者通过PHP标签包围起来。
  • 强大的数据库支持:PHP支持多种数据库系统,如MySQL、PostgreSQL、SQLite等。
  • 易于学习:PHP有简单的语法,适合初学者学习。
  • 面向对象编程:PHP支持面向对象的编程方式,提供了类和对象的操作。
  • 广泛的应用:PHP被用于开发各种类型的网站和Web应用程序,包括内容管理系统(CMS)、电子商务平台、论坛、博客等。
  • 模块化:PHP提供了大量的内置函数和扩展模块,可以轻松实现各种功能。
  • 跨平台:PHP可以在多种操作系统上运行,包括Linux、Windows、macOS等。
  • 安全性:PHP提供了多种安全特性,如数据过滤、加密和用户认证。
  • 社区支持:PHP有一个庞大的开发者社区,提供了大量的资源、框架和工具。

PHP通常与Apache、Nginx等Web服务器一起使用,并且与MySQL数据库配合得非常好,这使得它成为开发动态网站和Web应用程序的流行选择。此外,PHP还有许多流行的框架,如Laravel、Symfony、CodeIgniter等,这些框架提供了一套完整的工具和库,可以帮助开发者快速构建复杂的Web应用程序。

1.2 PHP环境搭建及配置
1.2.1 PHP安装

在CentOS7 上,可以使用yum安装php,和之前一样,执行yum install php,就可下载php

进入到/etc目录,如果存在php.d文件夹,说明安装成功了

可以查看PHP版本来确认是否安装成功

之后我们再来下载一下php链接mysql的数据库和字符集,因为我目前只需要搭建简单的网站,所以暂时只需要下载这两个,如果你有更多需求,可以参考如下命令

yum install php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
//安装php-mysql链接模块、php的fastcgi解析器php-fpm

1.2.2 php配置

php的配置文件一般存放在/etc下,名为php.ini,我们打开来看一下里面的内容。

首先,他应该支持短标记功能,也就是说可以用尖括号<>去写一些函数

现在我们来试着在网页中验证一下PHP是否安装成功。

在PHP中,你可以通过创建一个简单的PHP脚本并尝试运行它来验证PHP是否已成功安装在服务器上。以下是一个基本的步骤,用于验证PHP安装:

首先,在服务器的Web根目录或任何可以被Web服务器访问的地方,创建一个名为 phpinfo.php 的新文件,例如在此处,我把文件放在了之前的html包下(Apache默认访问路径)。把html包下影响我们的东西清理掉,使用 vim index.php 来创建一个php文件。在 index.php 文件中,添加以下代码:

phpinfo() 函数会输出大量关于PHP的当前状态的信息,包括版本号、编译选项、已安装的扩展等

之后,在apache的配置文件中,令其能够识别index.php


现在我们访问网页,正常情况应该可以访问到下面的页面,这就证明我们的PHP环境成功搭建了,如果无法访问,可以逐步排查以下点:

  • 短标记功能是否打开
  • apache配置是否支持识别 .php文件
  • 网络配置是否有误
  • 如果使用另一台主机进行测试,确认两台主机是否能ping通
  • ……

至此,php环境搭建完成

1.3 简单网站搭建

现在让我们来了解一下网站搭建的利器——CMS。

CMS 是内容管理系统(Content Management System)的缩写,它是一种软件应用或一套相关的程序,用于创建和管理数字内容。CMS 通常用于网站内容管理和企业内容管理。

想象一下,你要开一家店,但你得先建个店面。在网络世界里,这个“店面”就是你的网站。CMS 就是你用来搭建和装修这个店面的工具箱。

  • 不用自己动手:CMS 就像是一个装修团队,你告诉他们你想要什么样的店面,他们就能帮你搞定,不需要你自己去敲墙、刷漆。
  • 换风格简单:如果你哪天想换个风格,比如从现代简约风换成复古风,CMS 可以让你轻松更换“墙纸”(网站模板),不用重新装修。
  • 添加商品(内容)方便:你的店里要摆商品,网站上要放内容。CMS 让你轻松添加新商品(比如文章、图片、视频)。
  • 多种工具(插件):就像工具箱里有各种工具一样,CMS 有各种插件,可以帮你做更多事情,比如计算店里有多少人(网站流量分析),或者让你的顾客在社交媒体上分享你的商品(社交分享功能)。
  • 多语言:如果你的店面向国际顾客,CMS 可以让你的店面有多种语言的介绍,让不同国家的人都能理解。
  • 保安(安全性):开店要防盗,网站也要防黑客。CMS 会帮你看着,防止坏人进来搞破坏。
  • 社区支持:如果你不知道怎么用这个工具箱,没关系,有很多用过这个工具箱的人(社区)可以给你建议和帮助。
  • 适合不同规模的店:不管你是想开个小卖部(个人博客),还是大型购物中心(大型企业网站),都有适合你的 CMS。

你可以上网搜素一些你想要的CMS,在这里我使用了一个简易的QQ社区,链接放在下面了

链接: https://pan.baidu.com/s/1t5fkQsNi8hYA1zgEnLe8hA  密码: n0bt
--来自百度网盘超级会员V5的分享

使用unzip解压压缩文件,解压后你会得到一个文件,文件夹中有一个upload文件夹,这其中的内容就是我们的网站资源,将upload中的所有内容nv复制到发布路径下,再次打开网页就可以看到一个安装向导页面。

这是一个web安装向导,当前的文件目录权限检查显示是不可写的,他提示我们“建议将权限修改为777”,即所有人都有全部权限。

目录相关的配置文件在我们的发布路径http下,我们cd进来,可以看到一个uncenter文件夹,这里面存放的就是目录和文件,我们使用ll检查一下权限。


他推荐我们将权限改为777,但这样做不太安全,所以我们可以考虑更改所有者,因为我们在上面可以看到,所有者是拥有写权限的,并且我们已知访问网站的用户和组是以apache身份访问的,所以我们只需要将拥有者改为apache就可以解决这个问题了(注意,是改www下的html文件夹的权限,只有这样才能将多个文件的所有者一并修改)

刷新,现在变为可写了

点击下一步,我们来创建数据库,根据它给我们的引导填写即可


可以看到,他自动为我们下载了一个数据库,名字就是我们之前命名的QQfarm

它提醒我们为了安全删除一些目录,但反正我是在虚拟机上,无所谓了,我们跳过这一步。

进入我们的网页,在这里,我们终于看到了我们搭建的内容。点击“交流论坛”,跳转到了Discuz,这就是一个我们之前提到的“CMS”。


Discuz! 是一个广泛使用的论坛软件,它是一个用 PHP 编写的开源项目,通常与 MySQL 数据库一起使用。Discuz! 提供了一个功能丰富的平台,让网站管理员能够创建和管理在线社区和论坛。

点击登录,输入我们之前创建的管理员账号密码,就可以登录到论坛中了,可以对网站实施管理

我们再来看看其他内容。回到一开始的页面,点击“网络家园”,点击QQ农场看看

这时,页面会显示数据库错误,这是因为我们的数据库是后安装的,还没有数据交互功能。

要解决这个问题,我们可以转到默认发布路径html,将其中的数据库导入

这就又用到了之前数据库的知识,不知道如何导入sql文件的去看上一篇博客。指路:https://blog.csdn.net/goldfish8848/article/details/142099999?spm=1001.2014.3001.5501

现在刷新一下页面,数据库链接成功了,提示我下载一个flash插件,CentOS7 下载不了,无所谓,我们可以使用Win10来访问,使用win2019 访问CentOS的IP地址,在Windows上下载。之后的步骤就自己去探索吧。

二、Nginx平台搭建
2.1 Nginx介绍

Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx以其高稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。以下是Nginx的一些主要用途和特点:

  • Web服务器:Nginx可以用来托管网站和Web应用程序,处理客户端的HTTP请求,并提供静态文件(如HTML、CSS、JavaScript和图片)。
  • 反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的一个或多个服务器上。这有助于负载均衡和提高网站的性能和可靠性。
  • 负载均衡器:Nginx可以在多个服务器之间分配流量,平衡负载,防止任何单一服务器因请求过多而崩溃。
  • 邮件代理:Nginx支持IMAP、POP3和SMTP协议,可以作为邮件代理服务器使用。
  • 缓存服务器:Nginx可以缓存静态内容,减少后端服务器的负载,提高响应速度。
  • 安全性:Nginx提供了多种安全功能,包括SSL/TLS支持、防DDoS攻击、请求限制和访问控制。
  • 模块化设计:Nginx具有模块化的设计,可以通过安装额外的模块来扩展其功能。
  • 高并发处理能力:Nginx使用异步非阻塞的方式处理请求,能够支持数以万计的并发连接,适合高流量网站。
  • 配置简单:Nginx的配置文件结构清晰,易于理解和管理。
  • 跨平台:Nginx可以在多种操作系统上运行,包括Linux、BSD、macOS和Windows。
  • 开源:Nginx是一个开源项目,有一个活跃的社区,为用户提供支持和贡献代码。

Nginx通常与PHP-FPM(FastCGI Process Manager)一起使用,以支持PHP应用程序,如WordPress。它也可以与数据库服务器(如MySQL或MariaDB)和其他后端应用程序一起工作,形成一个完整的Web服务架构。

由于其高性能和可扩展性,Nginx被许多大型网站和服务(如Netflix、GitHub和WordPress.com)用作Web服务器和反向代理。

2.2 Nginx平台部署

对于web服务,无法支持php解析的。nginx可以实现多并发访问,支持负载均衡。

首先,我们要建立一个程序用户用来专门启动Nginx。

[root@localhost Desktop]# useradd -u 250 -s /sbin/nologin -M nginx

这一步创建了一个名为 nginx 的新用户,该用户具有以下特点:

  • -u 250:指定用户的用户ID为250。
  • -s /sbin/nologin:设置用户的登录shell为 /sbin/nologin,这意味着该用户不能通过终端登录系统,这是一个安全措施,因为Nginx不需要交互式登录。
  • -M:表示不创建用户的主目录。

执行 id nginx 命令可以查看用户 nginx 的信息,确认用户已经创建。

之后我们使用yum安装开发包

[root@localhost Desktop]# yum install pcre-devel zlib-devel -y

这一步安装了PCRE(Perl Compatible Regular Expressions)和zlib的开发包。PCRE用于Nginx的正则表达式处理,zlib用于数据压缩。这些库的开发版本是编译Nginx时需要的,因为Nginx需要它们在编译期间进行静态链接。我已经下载好了开发包,所以显示Nothing to do,没有安装过的会显示下载完成

接下来我们进行编译安装Nginx:

  • 首先,你需要下载Nginx的源代码包并解压。
  • 然后,使用 ./configure 命令来配置Nginx的编译选项。这里的选项指定了安装路径、运行用户和组:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
    • --prefix=/usr/local/nginx:指定Nginx安装的前缀路径。
    • --user=nginx 和 --group=nginx:指定Nginx在运行时使用的用户名和组名。
  • make -j 2:使用 make 命令编译Nginx。-j 2 参数表示使用两个核心来编译,以加快编译速度。
  • make install:安装编译好的Nginx到指定的目录。


最后,启动Nginx:

/usr/local/nginx/sbin/nginx

有时可能会遇到无法启动的问题,例如端口被占用等

我在运行Nginx之前并没有停止Apache服务,所以80端口必然是占用的,这里我们有两种选择,停止Apache服务或更改Nginx端口。如果你不想或不能停止 Apache,你可以配置 Nginx 监听其他端口,如 8089。

sudo vim /usr/local/nginx/conf/nginx.conf

找到 listen 80; 这一行,将其更改为 listen 8089;,然后重启 Nginx,启动成功。访问网页(注意如果你修改了端口号后面要跟上端口号)看到欢迎页

 

2.3 Nginx实现LNMP平台
2.3.1 php-fpm安装

我们写的主页文件是不能被php运行的,因为nginx是无法识别PHP语句的。解决方法就是安装 php-fpm,作用是让php编程一个服务端提供服务 开端口 开监听

要配合 Nginx 实现 LNMP(Linux, Nginx, MySQL, PHP)平台,你需要确保每个组件都正确安装和配置。

首先确保你已经创建了一个名为 nginx 的用户,这是为了安全起见,让 Nginx 以非 root 用户运行。

useradd -u 250 -s /sbin/nologin -M nginx

进入 Nginx 的 sbin 目录并启动服务。

/usr/local/nginx/sbin/nginx

默认主页通常存放在 /usr/local/nginx/html 目录。

之后,我们要安装PHP- FPM,PHP-FPM(FastCGI Process Manager)是 PHP 的一个版本,它作为一个长期运行的进程,通过 FastCGI 与 Nginx 通信,提供动态内容。

yum install php-fpm -y

启动 PHP-FPM 服务,并在后台运行。

php-fpm &

现在来验证PHP-FPM,使用 ss 命令检查 PHP-FPM 是否在监听 9000 端口(默认的 FastCGI 端口)

ss -antpl | grep php-fpm

如果看到 PHP-FPM 进程在监听端口 9000,则表示 PHP-FPM 已经成功启动。

为了让 Nginx 能够处理 PHP 文件,你需要配置 Nginx 以使用 PHP-FPM。编辑 Nginx 配置文件(通常位于 /usr/local/nginx/conf/nginx.conf),并添加或修改一个 server 块来包含类似以下内容:

server {listen 8089;server_name localhost;root /usr/local/nginx/html;index index.php index.html;location / {try_files $uri $uri/ =404;}location ~ \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

这个配置告诉 Nginx 对于以 .php 结尾的请求,应该通过 FastCGI 协议将请求转发给本地的 9000 端口,这是 PHP-FPM 监听的端口。

配置完成后,重启 Nginx 以应用更改

sudo /usr/local/nginx/sbin/nginx -s reload

现在我们来创建一个测试 PHP 文件来验证 LNMP 环境是否正常工作。在 /usr/local/nginx/html 目录下创建一个名为 index.php 的文件,内容如下:

<?php
phpinfo();
?>

然后在浏览器中访问 http://your_server_ip/index.php。如果一切正常,你应该能看到 PHP 的信息页面。

三、Tomcat搭建及基本应用

Tomcat是一个开源的轻量级Web应用服务器,由Apache软件基金会的Jakarta项目开发。它支持Java Servlet和JavaServer Pages(JSP)技术,允许开发者构建和部署Web应用。Tomcat本身作为一个Servlet容器,可以处理客户端请求的URL映射到对应的Servlet,与Servlet程序合作处理HTTP请求,并提供Web服务。它还支持多种协议如HTTP、JMX、JNDI、LDAP等,具有良好的可扩展性,可以通过添加组件或插件来扩展其功能。Tomcat也提供了易于管理和维护的工具和文档,支持集群部署,实现负载均衡和故障转移,提高系统的可用性和可靠性。

Tomcat的主要组件包括服务器(Server)、服务(Service)、连接器(Connector)和容器(Container)。连接器负责监听网络端口,接收和响应网络请求,而容器则负责处理这些请求。容器由Engine、Host、Context和Wrapper组成,它们分别负责不同的职责,如Engine代表一个完整的Servlet引擎,Host代表虚拟主机,Context代表Servlet的运行环境,Wrapper则负责管理Servlet。

Tomcat的工作原理涉及接收HTTP请求、管理Servlet生命周期、URL映射和集群部署等功能。它通过连接器接收请求,并将请求传递给容器进行处理,然后将结果返回给用户。Tomcat还负责创建和销毁Servlet,以及将客户端请求的URL映射到对应的Servlet。

目前,Tomcat的最新稳定版本是10.1.15,它实现了Jakarta EE 10平台的一部分规范。Tomcat 8.5.x系列将于2024年3月31日终止生命周期,而Tomcat 11.0.0-M13是一个针对Jakarta EE 11的里程碑版本,目前仍处于Alpha阶段。

Tomcat的安装和部署相对简单,用户可以通过下载二进制发行版或源码包进行安装。部署Web应用时,可以将应用的WAR文件放置在Tomcat的webapps目录下,Tomcat会自动解压并部署应用。此外,Tomcat还提供了管理界面,允许管理员通过Web界面进行配置和管理。

总的来说,Tomcat是一个功能强大、灵活且易于使用的Web应用服务器,适用于中小规模的Web应用部署和开发。对于需要高性能、高并发处理的大型应用,可能需要考虑使用更强大的应用服务器,如Apache HTTP Server或其他商业服务器产品。

3.1 Tomcat安装

在一切开始之前,你需要先确保你的电脑有Java环境,这样才能部署Tomcat,如果没有可以使用yum安装Java

和之前的步骤一样,先解压apache-tomcat压缩包

我们进入到解压出的文件夹里看一下有什么内容

  • apache-tomcat-7.0.96:这是Tomcat的安装目录。
  • bin:包含了用于启动和管理Tomcat的脚本。
  • logs:存储Tomcat运行时生成的日志文件。
  • RELEASE-NOTES:包含了这个版本的发布说明。
  • webapps:这是部署Web应用程序的地方。默认情况下,Tomcat会在这里查找Web应用程序的WAR文件并自动部署它们。
  • lib:包含了Tomcat运行所需的库文件。
  • NOTICE:包含了Apache软件通知文件。
  • BUILDING.txt:包含了构建Tomcat的说明。
  • RUNNING.txt:包含了运行Tomcat的说明。
  • work:Tomcat在处理请求时会在这里存放一些临时文件。
  • conf:包含了Tomcat的配置文件,如server.xmlweb.xml,这些文件控制着Tomcat的行为。
  • temp:存储临时文件。

这些文件和目录是Tomcat服务器运行和维护的基础。通过这些脚本和配置文件,管理员可以控制Tomcat的行为,部署和管理Web应用程序

我们再进入到bin目录看一下

  • bootstrap.jar:Tomcat启动时使用的一个jar文件,包含了启动过程中需要的类。
  • catalina.bat 和 catalina.sh:这两个脚本用于在Windows和Unix系统上启动和管理Tomcat的Catalina Servlet容器。
  • commons-daemon.jar 和 commons-daemon-native.tar.gz:这些文件与Apache Commons Daemon有关,它是一个用于管理Unix系统上Java应用程序的工具。
  • configtest.bat 和 configtest.sh:用于测试Tomcat配置的脚本。
  • daemon.sh:一个用于在Unix系统上作为守护进程启动和管理Tomcat的脚本。
  • digest.bat 和 digest.sh:这些脚本可能用于生成Tomcat的摘要信息。
  • setclasspath.bat 和 setclasspath.sh:用于设置Tomcat类路径的脚本。
  • shutdown.bat 和 shutdown.sh:用于关闭Tomcat服务器的脚本。
  • startup.bat 和 startup.sh:用于启动Tomcat服务器的脚本。
  • tomcat-juli.jar:包含了Tomcat的日志框架。
  • tomcat-native.tar.gz:包含了Tomcat Native库,它提供了对某些本地操作系统功能的访问,如线程优先级和文件锁定。
  • tool-wrapper.bat 和 tool-wrapper.sh:这些脚本可能用于包装和运行Tomcat工具。
  • version.bat 和 version.sh:用于显示Tomcat版本的脚本。

其中,如果我们想要在Windows上运行Tomcat,我们需要关闭批处理文件,现在我们使用命令来关闭 .bat

现在我们访问8080端口,成功访问到了tomcat的欢迎页面,部署完成。

​​​​​​​


http://www.ppmy.cn/embedded/112527.html

相关文章

计算机网络 --- 计算机网络性能【七大性能指标】

目录 一、计算机网络的性能指标 1.1 速率 1.2 带宽 1.3 吞吐量 1.4 总结 1.5 时延 1.5.1 发送时延、传播时延、处理时延、排队时延 1.5.2 例题 1.6 时延带宽积 1.7 往返时间RTT(Round-Trip Time) 1.8 信道利用率 ​编辑​编辑 1.9 总结 一、计算机网络的性能指…

EG边缘计算网关连接纵横云3.0物联网平台(MQTT协议)

上文&#xff1a; EG边缘计算网关连接中移ONENET物联网平台&#xff08;MQTT协议&#xff09; 更多可见&#xff1a;成都纵横智控 需求概述 本章节主要实现一个流程&#xff1a;EG8000采集的数据&#xff0c;组装成JSON格式&#xff0c;并通过TCP上报应用平台&#xff1b;同…

pnpm解說

pnpm&#xff08;Performance Node Package Manager&#xff09;是一个高性能的Node.js包管理器&#xff0c;它旨在解决npm和yarn在处理依赖关系时可能遇到的一些问题&#xff0c;如重复安装相同版本的包、包的存储空间占用过大等。 pnpm使用了一种称为“硬链接”和“符号链接…

龙蜥8.9系统hadoop3.3.6上spark3.5.2安装(伪分布)

继续接着上篇的环境安装。 1、去清华的镜像源下载相关文件 https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.5.2/ 2、解压缩 tar zxvf spark-3.5.2-bin-hadoop3.tgz3、移动到适当位置 mv spark-3.5.2-bin-hadoop3 /app/spark-34、下载scala https://www.scala-la…

专业学习|系统动力学概观(方法特色、构成要素、建模步骤)

一、系统动力学概览 &#xff08;一&#xff09;系统动力学介绍 系统动力学是一门综合交叉学科&#xff0c;其基础理论涵盖了控制论、信息论和决策论等多个领域。它利用计算机仿真技术对复杂系统进行定量研究&#xff0c;尤其是那些具有非线性、高阶次和多重反馈特征的系统。这…

【Linux】调试和Git及进度条实现

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;Linux入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 目录 1.…

代码随想录Day 45|leetcode题目:115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 题目题目一&#xff1a; 115.不同的子序列解题思路&#xff1a;1. 确定dp数组&#xff08;dp table&#xff09;以及下标的含义2. 确定递推公式3. dp数组如何初始化4. 确定遍历顺序5. 举例推导dp数…

为什么H.266未能普及?EasyCVR视频编码技术如何填补市场空白

H.266&#xff0c;也被称为Versatile Video Coding&#xff08;VVC&#xff09;&#xff0c;是近年来由MPEG&#xff08;Moving Picture Experts Group&#xff09;和ITU&#xff08;International Telecommunication Union&#xff09;联合开发并发布的新一代国际视频编码标准…