WEB服务器的部署及优化

WEB服务器的部署及优化

1. 用户常用的关于web的信息

1.1 什么是www

  • www是world wide web的缩写,及万维网,也就是全球信息广播的意思;
  • 通常说的上网就是使用www来查询用户所需要的信息。
  • www可以结合文字、图形、影像以及声音等多媒体,超链接的方式将信息以Internet传递到世界各处去。
  • 当你连接www网站,该网站会提供一些数据,客户端要使用可以解析这些数据的软件来处理,那就是浏览器

1.2 网址

  • URI:Uniform Resource Identifier统一资源标识,分为URL和URN
  • URN:Uniform Resource Naming,统一资源命名,P2P下载使用的磁力链接是URN的一种实现
  • URL:Uniform Resorce Locator,统一资源定位符用于描述某服务器某特定资源位置
  • 两者区别:而URL提供查找该事物的方法。URN仅用于命名,而不指定地址

1.3 URL的组成

  • URL组成机构如下:

    复制代码
    <scheme>://<user>:<password>@<host>:<port>/<path>:<params>?<query>#<frag>
  • 每部分的定义为:

    scheme 方案 访问服务器以获取资源时要使用哪种协议
    user 用户 某些方案访问资源时需要的用户名
    password 密码 用户对应的密码,中间用:分隔
    scheme 方案 访问服务器以获取资源时要使用哪种协议
    host 主机 资源宿主服务器的主机名或IP地址
    port 端口 资源宿主服务器正在监听的端口号,很多方案有默认端口号
    path 路径 服务器资源的本地名,由一个/将其与前面的URL组件分隔
    params 参数 指定输入的参数,参数为名/值对,多个参数,用;分隔
    query 查询 传递参数给程序,如数据库,用?分隔,多个查询用&分隔
    frag 片段 一小片或一部分资源的名字,此组件在客户端使用,用#分隔

2. HTTP简介

2.1 什么是http

  • HTTP协议:全称为Hyper Text Transfer Protocol(超文本传输协议)
  • 简单来说http就是从服务器传输超文本(html)到本地浏览器的传输协议
  • HTTP协议工作于B/S架构上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务端发送请求(Request)Web服务端根据接收到的请求数据后,向客户端发送响应信息(Response)
  • https://developer.mozilla.org/zh-CN/docs/Web

2.2 http的工作机制

  • 一次http事务包括:

    • http请求:http request

    • http响应: http response

  • Web资源: web resource

一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web页面"通常并不是单个资源,而是一组资源的集合。

  • 资源类型:

    • 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同
    • 常见文件后缀:.html,.txt,.jpg,.js,.css,mp3,avi
  • 动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同

    • 常见文件后缀:.php,jsp,asp
  • web中常用的语言介绍

    • html语言 超文本标记语言

      html 复制代码
      <html>
      <head>
      <meta http-equiv=Content-Type content="text/html;charset=utf-8">
      <title>HTML语言</title>
      </head>
      <body>
      <img src="http://www.xianoupeng.com/uploadfile/2019/0424/20190424115929686.jpg">
      <h1 style="color:red">欢迎</h1>
      <p><a href=http://www.baidu.com>百度</a>欢迎你</p>
      </body>
      </html>
    • css 层叠样式表 表述网站的风格

      css 复制代码
      html网页主体
      ---
      <html>
      <head>
      <meta http-equiv=Content-Type content="text/htm1;charset=utf-8">
      <link rel="stylesheet" type="text/css" href="mystyle.css" />
      </head>
      <body>
      <h1>这是 heading 1</h1>
      <p>这是一段普通的段落。请注意,该段落的文本是红色的。在body选择器中定义了本页面中的默认文本颜
      色。</p>
      <p class="ex">该段落定义了class="ex"。该段落中的文本是蓝色的。</p>
      </body>
      </html>
      css文件
      --
      body {color:red }
      h1 {color:yellow }
      p.ex {color:blue }
    • js实现html和css实现不了的功能比如动画效果

      js 复制代码
      <!DOCTYPE html>
      <html>
      <head>
      <meta http-equiv=Content-Type content="text/html;charset=utf-8">
      </head>
      <body>
      <h2>我的第一个JavaScript</h2>
      <button type="button"
      onclick="document.getElementById('demo').innerHTML = Date()">
      点击这里来显示日期和时间
      </button>
      <p id="demo"></p>
      </body>
      </html>
  • mine(Multipurpose Internet Mail Extensions)多用途因特网邮件扩展

    • 它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理;
    • 为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
    • 其主要功能是让服务器将它们发送的多媒体数据的类型告诉浏览器。
    • 服务器将MIME标志符放入传送的数据中来告诉浏览器使用哪种插件读取相关文件;
    • MIME类型存在于HTTP响应报文的响应头部信息里,它是一种文本标记;
    • MIME格式: type/subtype 文件类型后缀(html txt jpg png... ...)
    MIME类型 文件类型
    text/html html、htm、shtml文本类型
    text/css css文本类型
    text/xml xml文本类型
    image/gif gif图像类型
    image/jpeg jpeg、jpg图像类型
    application/javascript js文本类型
    text/plain txt文本类型
    application/json json文本类型
    video/mp4 mp4视频类型
    video/quicktime mov视频类型
    video/x-flv flv视频类型
    video/x-ms-wmv wmv视频类型
    video/x-msvideo avi视频类

2.3 http访问请求的完整过程

  • 建立连接:

​ TCP的3次握手建立链接,向服务器发送http请求,服务器拒绝或允许

  • 接受请求

​ 接受客户端请求报文对某个资源的一次请求过程web响应访问模型

a.单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应

b.多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求

c.复用I/O结构:启动一个进程,同时响应N个连接请求

d.复用的多进程I/O模型:启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求

  • 处理请求:

服务器对请求报文进行解析,并获取请求的资源及请求方法等相关信息,根据方法,资源,首部和可选

的主体部分对请求进行处理常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS

  • 访问资源:

​ 服务器获取请求报文中请求的资源web服务器,即存放了web资源的服务器,负责向请求者提供对方请求

的静态资源,或动态运行后生成的资源

  • 5.构建响应报文:

​ 一旦Web服务器识别除了资源,就执行请求方法中描述的动作,并返回响应报文。响应报文中包含有响

应状态码、响应首部,如果生成了响应主体的话,还包括响应主体

​ 响应实体:如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文中通常包括:描述了响应主体MIME类型的Content-Type首部;描述了响应主体长度的Content-Length

实际报文的主体内容:

  1. URL重定向:web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径
  2. MIME类型:Web服务器要负责确定响应主体的MIME类型。多种配置服务器的方法可将MIME类型与资源管理起来
  • 发送响应报文

​ Web服务器通过连接发送数据时也会面临与接收数据一样的问题。服务器可能有很多条到各个客户端的连接,有些是空闲的,有些在向服务器发送数据,还有一些在向客户端回送响应数据。服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。对持久连接来说,连接可能仍保持打开状态,在这种情况下,服务器要正确地计算Content-Length首部,不然客户端就无法知道响应什么时候结束。

2.4 http协议报文的头部结构

  • 请求报文

    • 图示:

    • 请求情报文由三部分组成即:开始行、首部行、实体主体;

    • 开始行:请求方法 url 版本 CRLF;

    • 首部行:通常用键值表示;

    • 空格;

    • 实体主体数据,一般在post动作中可以提看到

    • 开始行中的请求方法:

      方法 描述
      GET 请求指定页面信息,并返回实体主体
      HEAD 类似get要求,只不过返回相应中没有主题内容,用户获取报头
      POST 向指定资源提交数据请求,数据包含在请求中,此请求可能会生成新的资源或修改已有资源
      PUT 从客户端向服务端传送数据取代指定的文档内容
      DELETE 请求服务器删除指定页面
      CONNECT HTTP/1.1协议中预留给弄够将改为管道方式的代理服务器
      OPTIONS 允许客户端查看服务器的性能
      TRACE 回显服务器收到的请求,用于测试和诊断
  • 响应报文

    • 图示:

    • 求情报文由三部分组成即:开始行、首部行、实体主体;

    • 开始行:http版本 状态码 短语 CRLF;

    • 首部行通常用键值表示;

    • 空格;

    • 实体主体数据,即获取内容。

2.5 状态代码

  • 状态码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值
状态码 含义 详解
1xx 指示信息 表示请求已接收,继续处理
2xx 成功 表示请求已被成功接收、理解、接受
3xx 重定向 要完成请求必须进行更进一步的操作
4xx 客户端错误 请求有语法错误或请求无法实现
5xx 服务器端错误 服务器未能实现合法的请求
  • 常见状态代码、状态描述的说明如下:

    状态码 含义
    200 OK 客户端请求成功
    400 Bad Request 客户端请求有语法错误,不能被服务器所理解
    401 Unauthorized 请求未经授权,这个状态代码必须和 WWW-Authenticate报头域一起使用
    403 Forbidden 服务器收到请求,但是拒绝提供服务
    404 Not Found 请求资源不存在,举个例子:输入了错误的URL
    500 Internal Server Error 服务器发生不可预期的错误
    503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

3. web服务器的配置详解

3.1 web服务的常用类型

  • Apache
  • Nginx
  • openresty
  • 大厂自研

3.2 Nginx的安装

  • 开源版本的Nginx官网:http://nginx.org
  • Nginx在安装的过程中可以选择源码安装也可以选择使用软件包安装
  • 源码安装下载相应的源码压缩包解压后编译完成安装
  • 软件安装包可以使用rpm或者apt命令进行安装,也可以使用dnf通过软件仓库安装

以软件仓库安装为例:

  • 配置软件仓库

    复制代码
    [root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
    [nginx]
    name=nginx
    baseurl=http://nginx.org/packages/rhel/9/x86_64
    gpgcheck=0
  • 执行安装命令

    复制代码
    [root@localhost ~]# dnf install nginx --y
  • 启动服务并启用服务

    复制代码
    [root@localhost ~]# systemctl enable --now nginx.service   #启动并立即执行nginx服务
    [root@localhost ~]# netstat -antlupe | grep nginx		#查看nginx端口,默认为80
    [root@localhost ~]# firewall-cmd --permanent --add-service=http
    [root@localhost ~]# firewall-cmd --reload
  • 注意:在安装nginx之前还要配置好系统的软件仓库,nginx的安装需要通过系统软件仓库来解决依赖性

3.3 Nginx涉及到的文件

  • 相关配置文件的作用

    • 主配置文件:/etc/nginx/nginx.conf

    • 相关配置文件:/etc/nginx/conf.d

      复制代码
      相关配置文件的作用
      主配置目录:/etc/nginx
      相关配置文件:/etc/nginx
    • 日志文件:/var/log/nginx

    • 默认发布目录:/usr/share/niginx/html/

    • 默认发布文件内容:/usr/share/niginx/html/index.html

3.4 Nginx配置文件内容详解

复制代码
# 编辑 Nginx 的主配置文件
[root@localhost ~]# vim /etc/nginx/nginx.conf
# 检查 Nginx 配置文件语法错误的命令
[root@localhost ~]# nginx -t	
# 在不停止 Nginx 服务的情况下,重新加载配置文件
[root@localhost ~]# nginx -s reload		
  • nginx全局配置

    复制代码
    user nginx; 		#nginx程序运行用户
    worker_processes auto; 		#指定nginx开启的work进程个数
    error_log /var/log/nginx/error.log notice; 		#错误日志
    pid /var/run/nginx.pid; 		#pid文件
    events {
    worker_connections 1024; 		#指定每个 Nginx 工作进程可以同时处理的最大连接数
    }
  • http模块配置:用于配置与 HTTP 协议相关的全局设置以及服务器和位置相关的指令。

    复制代码
    http {
         # 定义了一个名为main的日志格式。这个格式指定了如何记录访问日志中的信息
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '   
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;		#配置了访问日志的路径和使用的日志格式
    
        sendfile            on;		# Nginx服务器是否使用sendfile()传输文件
        # 与sendfile配合使用,当sendfile开启且tcp_nopush设置为on时,Nginx 会尝试将多个小的数据包合并成一个大的数据包发送,减少网络传输中的小数据包数量,提高网络传输效率。
        tcp_nopush          on;		
        tcp_nodelay         on;		# 当包累计到一定大小后就发送,默认0.2s一次
        # 定义了一个 HTTP 连接在空闲状态下保持打开的时间,这里设置为 65 秒。在这个时间内,如果客户端再次发起请求,可以复用之前的连接,减少连接建立和关闭的开销,提高性能。
        keepalive_timeout   65;		# 长连接超时时间
        types_hash_max_size 4096;		#设置了 MIME 类型哈希表的最大大小
    
        include             /etc/nginx/mime.types;		#包含的配置文件
        default_type        application/octet-stream;		#设置了默认的 MIME 类型。如果 Nginx 无法根据文件扩展名确定 MIME 类型,就会使用这个默认值。
    
        #gzip on; 		#可以使网站的css、js 、xml、html 等静态资源在传输时进行压缩
        include /etc/nginx/conf.d/*.conf;		#指定子配置文件
        
         server {
            listen       80;		#指定了这个虚拟主机监听的端口为 80
            listen       [::]:80;		#用于监听 IPv6 地址的 80 端口
            server_name  _;
            root         /usr/share/nginx/html;		#默认发布目录,当客户端请求一个URL时,Nginx会在这个目录下查找相应的文件来响应请求。
            index		/usr/share/nginx/html/index.html		#默认发布文件,配置文件中没有,需要手动创建修改
            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }
  • 子配置文件

    复制代码
    /etc/nginx/conf.d/default.conf
    server {
        listen 80; 		#监听端口
        server_name localhost; 		#服务器的名字
        location / {
        root /usr/share/nginx/html; 		#默认发布目录
        index index.html index.htm; 		#默认发布文件
        }
    #error_page 404 /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page 500 502 503 504 /50x.html;		 #访问出错呈现错误页面
        location = /50x.html {
        root /usr/share/nginx/html;
        }
    }

3.5 Nginx配置

  • nginx虚拟主机

    • 默认情况下nginx只能发布一个站点;
    • 如果要发布多个站点需要搭建多台nginx来满足,如果这样会浪费太多资源;
    • 为解决上述问题,启用nginx的虚拟主机即可;
    • 虚拟主机有两种模式,基于IP或者基于域名
  • 基于IP的虚拟主机

    复制代码
    [root@localhost ~]# ip addr add 172.25.254.111/24 dev ens160
    [root@localhost ~]# ip addr add 172.25.254.222/24 dev ens160
    [root@localhost ~]# mkdir -p /usr/share/nginx/vhostroot/{111,222}/html
    [root@localhost ~]# echo 172.25.254.111 > /usr/share/nginx/vhostroot/111/html/index.html
    [root@localhost ~]# echo 172.25.254.222 > /usr/share/nginx/vhostroot/222/html/index.html
    [root@localhost ~]# vim /etc/nginx/conf.d/vhost_ip.conf
    server{
    listen 172.25.254.111:80;
    location / {
    root /usr/share/nginx/vhostroot/111/html;
    index index.html
    		}
    	}
    server{
    listen 172.25.254.222:80;
    location / {
    root /usr/share/nginx/vhostroot/222/html;
    index index.html 
    		}
    	}
    [root@localhost ~]# curl 172.25.254.222:8080
    172.25.254.222
    [root@localhost ~]# curl 172.25.254.111
    172.25.254.111
  • 基于域名的虚拟主机

    复制代码
    [root@localhost ~]# mkdir -p /usr/share/nginx/vhostroot/{bbs,news}/html
    [root@localhost ~]# echo news.easylee.org > /usr/share/nginx/vhostroot/news/html/index.html
    [root@localhost ~]# echo bbs.easylee.org > /usr/share/nginx/vhostroot/bbs/html/index.html
    [root@localhost ~]# vim /etc/nginx/conf.d/vhost_name.conf
    server {
    listen 80;
    server_name bbs.easylee.org;
    location / {
    root /usr/share/nginx/vhostroot/bbs/html;
    index index.html;
    		}
    	}
    server {
    listen 80;
    server_name news.easylee.org;
    location / {
    root /usr/share/nginx/vhostroot/news/html;
    index index.html;
    		}
        }
  • web服务器的访问控制

    • 基于IP的访问控制

      • 设置访问控制

        复制代码
        [root@localhost ~]# mkdir -p /usr/share/nginx/vhostroot/bbs/html/admin
        [root@localhost ~]# echo admin page > /usr/share/nginx/vhostroot/bbs/html/admin/index.html
        [root@localhost ~]# vim vhost_name.conf
        server {
            listen 80;
            root /usr/share/nginx/vhostroot/bbs/html;
            index index.html index.htm;
            server_name bbs.easylee.org;
            location / {
        }
            location /admin/ {
                allow 172.25.254.100;
                deny all;
            }
        }
      • 测试

        复制代码
        在100中访问
        [root@localhost ~]# curl bbs.easylee.org/admin/
        admin page
        在其他主机中访问
        ] ➤ curl bbs.easylee.org/admin/
        <html>
        <head><title>403 Forbidden</title></head>
        <body>
        <center><h1>403 Forbidden</h1></center>
        <hr><center>nginx/1.24.0</center>
        </body>
        </html>
    • 基于认证的访问控制

      • 建立认证文件按

        复制代码
        [root@localhost ~]# dnf install httpd-tools -y
        [root@localhost ~]# htpasswd -cm /etc/nginx/.htpasswd admin
        New password:
        Re-type new password:
        Adding password for user admin
        
        注意:htpasswd -c 表示新建认证文件,无论认证文件存不存在
        
        当认证文件存在时加-c参数会把认证文件之前的内容全部清空
      • 设置认证访问控制

        复制代码
        [root@localhost ~]# vim vhost_name.conf
        server {
            listen 80;
            root /usr/share/nginx/vhostroot/bbs/html;
            index index.html index.htm;
            server_name bbs.easylee.org;
            location / {
            }
            location /admin/ {
                auth_basic on;
                auth_basic_user_file /etc/nginx/.htpasswd;
            }
        }
      • 测试

        复制代码
        未输入用户密码
        [root@localhost ~]# curl bbs.easylee.org/admin/
        <html>
        <head><title>401 Authorization Required</title></head>
        <body>
        <center><h1>401 Authorization Required</h1></center>
        <hr><center>nginx/1.24.0</center>
        </body>
        </html>
        输入用户没密码
        [root@localhost ~]# curl bbs.easylee.org/admin/ -uadmin:lee
        admin page

3.6 web服务器的数据加密(https)

  • https简介
    • HTTP协议以明文方式发送内容,不提供任何方式的数据加密,HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等;
    • 为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
    • HTTPS全称:Hyper Text Transfer Protocol over Secure Socket Layer ),是以安全为目标的HTTP通道;
    • HTTPS并不是一个新协议,而是HTTP+SSL(TLS);
    • 原本HTTP先和TCP直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信相当于SSL被嵌在了HTTP和TCP之间。
    • 注意:SSL 是"Secure Sockets Layer"的缩写,中文叫做"安全套接层"。它是在上世纪90年代中期,由网景公司设计的。到了1999年,SSL 应用广泛,已经成为互联网上的事实标准。IETF 就把SSL 标准化。标准化之后SSL被改为 TLS(Transport Layer Security传输层安全协议)
  • https握手流程
  • 部署https

    • 生成密钥

      复制代码
      [root@localhost ~]# mkdir -p /etc/nginx/certs
      [root@localhost ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/nginx/certs/easylee.org.key -x509 -days 365 -out /etc/nginx/certs/easylee.org.crt
      --------------------------------------
      按照提示填入相应信息
      Country Name (2 letter code) [XX]:CN
      State or Province Name (full name) []:Shannxi
      Locality Name (eg, city) [Default City]:Xi'An
      Organization Name (eg, company) [Default Company Ltd]:easylee
      Organizational Unit Name (eg, section) []:web
      Common Name (eg, your name or your server's hostname) []:www.easylee.org
      Email Address []:lee@easylee.org
      
      # 查看证书内容
      [root@localhost ~]# openssl x509 -in easylee.org.crt -text -noout
      
      我们生成的证书需要通过CA机构认证才能投入生产环境中
      CA就是一个公认的公证单位,你可以自行产生一把密钥且制作出必要的证书数据并向CA单位注册,那么当客户端的浏览器在浏览时,该浏览器会主动向CA单位确认该证书是否为合法注册过,如果是,那么该次连接才会建立,如果不是,浏览器会发出警告信息,告知用户应避免建立连接
    • 配置nginx开启https功能

      复制代码
      [root@localhost ~]# mkdir /usr/share/nginx/vhostroot/login/html -p
      [root@localhost ~]# echo login.easylee.org > /usr/share/nginx/vhostroot/login/html/index.html
      [root@localhost ~]# vim /etc/nginx/conf.d/https.conf
      server {
          listen 443 ssl;
          server_name login.easylee.org;
          ssl_certificate /etc/nginx/certs/easylee.org.crt;		#证书
          ssl_certificate_key /etc/nginx/certs/easylee.org.key;		#密钥
          ssl_protocols TLSv1 TLSv1.1 TLSv1.2;		#支持版本
          ssl_ciphers HIGH:!aNULL:!MD5;		#加密方式
          location / {
              root /usr/share/nginx/vhostroot/login/html;
              index index.html;
          }
      }
      
      # 检查 Nginx 配置文件语法错误的命令
      [root@localhost ~]# nginx -t	
      # 在不停止 Nginx 服务的情况下,重新加载配置文件
      [root@localhost ~]# nginx -s reload	
      
      当开启https后客户一般情况下不会在浏览器中特别添加https去访问,我们需要强制客户在访问某些站点时使用加密
    • 强制访问加密

      复制代码
      [root@localhost ~]# /etc/nginx/conf.d/https.conf
      server {
          listen 80;
          server_name login.easylee.org;
          rewrite ^/(.*)$ https://login.easylee.org/$1 permanent;
      }
      
      
      ^/(.*)$ 这时正则表达式语法表示匹配浏览器地址栏中的所有内容
      $1 login.easylee.org/xxx 这个地址转换时保留xxx
      permanent 表示永久转换301

3.7 搭建动态网站

动态网站指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。

动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。

动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访问网站是通过读取数据库来动态生成网页的方法。

  • 配置web服务器对php站点的支持

    • 下载php并启动服务

      复制代码
      [root@localhost ~]# dnf install php -y
      [root@localhost ~]# systemctl enable --now php-fpm.service
    • 生成php测试页

      复制代码
      [root@localhost ~]# mkdir -p /usr/share/nginx/html/php
      [root@localhost ~]# vim /usr/share/nginx/html/php/index.php
      <?php
      phpinfo();
      ?>
      [root@localhost ~]# nginx -s reload
    • 直接访问172.25.254.100/index.php

地址栏中的所有内容

$1 login.easylee.org/xxx 这个地址转换时保留xxx

permanent 表示永久转换301

```

3.7 搭建动态网站

动态网站指网站内容可根据不同情况动态变更的网站,一般情况下动态网站通过数据库进行架构。

动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更多自动的和高级的功能。

动态网页:使用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访问网站是通过读取数据库来动态生成网页的方法。

  • 配置web服务器对php站点的支持

    • 下载php并启动服务

      复制代码
      [root@localhost ~]# dnf install php -y
      [root@localhost ~]# systemctl enable --now php-fpm.service
    • 生成php测试页

      复制代码
      [root@localhost ~]# mkdir -p /usr/share/nginx/html/php
      [root@localhost ~]# vim /usr/share/nginx/html/php/index.php
      <?php
      phpinfo();
      ?>
      [root@localhost ~]# nginx -s reload
    • 直接访问172.25.254.100/index.php

相关推荐
佐杰20 分钟前
什么是DevOps
运维·devops
CaracalTiger20 分钟前
本地部署 Stable Diffusion3.5!cpolar让远程访问很简单!
java·linux·运维·开发语言·python·微信·stable diffusion
ai_xiaogui21 分钟前
AIStarter跨平台完工:Win/Mac/Linux一键部署Stable Diffusion
linux·macos·stable diffusion·aistarter·kritaai·跨平台部署
顾安r1 小时前
11.10 脚本算法 五子棋 「重要」
服务器·前端·javascript·游戏·flask
梁萌1 小时前
linux中使用docker安装MySQL
linux·运维·docker·容器·mysql安装
文言一心1 小时前
SenseVoice 离线部署指南(Xinference Docker v1.12)
运维·docker·ai·容器
AIchiNiurou1 小时前
mermaid install for free docker
运维·docker·容器
wei_shuo1 小时前
智能运维×低资源占用:金仓数据库助力能源企业降本增效与国产化替换实践
运维·数据库·king base
❀͜͡傀儡师1 小时前
根据docker服务保存日志脚本,时间可选版本
运维·docker·容器
搬砖的小码农_Sky2 小时前
Ubuntu Desktop Linux 文件和文件夹操作命令详解
linux·运维·ubuntu