Linux上web服务器搭建(Apache、Nginx)

第五章 web服务器

第一节

DNS:对域名进行解析,查询对应的地址

1.1 web服务器简介

www是world wide web的缩写,也就是全球信息广播的意思

1.2.网址及HTTP简介

web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网站的首页,在redhat中,这个目录默认在 /var/www/html 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据的。

URL:Uniform Resource Locator,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。

网址格式:<协议>://<主机或主机名>[:port]/<目录资源,路径>

浏览器常支持的协议有:http、https、ftp等。

主机地址或者主机名:主机地址就是服务器在因特网所在的IP地址。如果是主机名的话,那么就需要域名解析了。

端口号(port):http为80,https为443 (IANA:互联网数字分配机构)

  • 0-1023:众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限启用并让进程监听)

  • 1024-41951:亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:3306/TCP

  • 41952-60000:客户端程序随机使用的端口,动态端口,或私有端口

1.3.http请求方法:

在http通信中,每个http请求报文都包含一个方法,用以告诉web服务器端需要执行哪些具体的动作,这些动作包括:获取指定web页面、提交内容到服务器、删除服务器上资源文件等。

状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

状态码范围 作用描述
100 - 199 用于指定客户端相应的某些动作
200 - 299 用于表示请求成功
300 - 399 用于己经移动的文件,并且常被包含在定位头信息中指定新的地址系信息
400 - 499 用于指出客户端的错误
500 - 599 用于指出服务端的错误

1.4.常见状态代码、状态描述的说明如下:

200 OK:客户端请求成功

收到数据,但是数据有问题

  • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解

  • 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用

  • 403 Forbidden:服务器收到请求,但是拒绝提供服务

  • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
    服务器内部的问题

  • 500 Internal Server Error:服务器发生不可预期的错误

  • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
    1.5.http协议请求的工作流程
    HTTP默认端口80和8080

(1)终端客户在web浏览器地址栏输入访问地址域名售卖 (2)web浏览器请求DNS服务器把域名www.ceshi.com解析成web服务器的IP地址 (3)web浏览器将端口号(默认是80)从访问地址(URL)中解析出来 (4)web浏览器通过解析后的ip地址及端口号与web服务器之间建立一条TCP连接 (5)建立TCP连接后,web浏览器向web服务器发送一条HTTP请求报文 (6)web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文。(7)web服务器关闭HTTP连接,关闭TCP连接,web浏览器显示访问的网站内容到屏幕上。

第二节 web服务器的类型

2.1 静态页面和动态网页

静态页面

静态页面是指内容固定不变的网页。它的内容在服务器上是以 HTML 文件的形式存在,当用户请求访问时,服务器直接将预先存储好的 HTML 文件发送给用户的浏览器进行显示。

例如,一个简单的个人简历网页,其中的文字、图片、布局等在创建完成后就不会再发生变化,这就是静态页面。

静态页面的优点包括加载速度快,因为不需要服务器进行复杂的处理;对服务器的资源要求较低,易于维护和部署。

但是,其缺点也很明显,比如不易更新和修改内容,每次修改都需要重新编辑 HTML 文件;缺乏交互性,不能根据用户的操作实时动态地显示不同的内容。

动态页面

动态页面则不同,它的内容不是固定不变的,而是根据用户的请求、数据库中的数据以及特定的程序逻辑在服务器端实时生成的。

比如,一个电商网站的商品列表页面,当数据库中的商品信息发生变化时,页面能够实时显示最新的商品信息。

动态页面的优点是具有高度的交互性和灵活性,能够根据用户的操作和不同的条件显示个性化的内容;方便内容管理和更新,无需手动修改每个页面。

然而,动态页面也存在一些缺点,例如加载速度相对较慢,因为服务器需要进行计算和处理;对服务器的性能要求较高,开发和维护成本也相对较高。

2.2静态页面资源特征

静态页面资源具有以下特性:

1. 内容固定: - 一旦创建完成,其显示的文本、图像、布局等元素就不会自行改变。 - 例如,一个介绍历史事件的静态网页,无论何时访问,其描述的内容和呈现方式始终保持一致。

2. 快速加载: - 由于不需要服务器进行额外的计算和处理,直接将预先准备好的 HTML 文件发送给浏览器。 - 比如一个只有简单文字和少量图片的静态博客页面,通常能够迅速加载出来。

3. 低服务器资源消耗: - 服务器只需响应请求并传输文件,对服务器的 CPU、内存等资源占用较少。 - 大量用户同时访问静态页面时,服务器的压力相对较小。

4. 易于缓存: - 浏览器和代理服务器可以更有效地对静态页面进行缓存。 - 下次用户再次访问相同的页面时,可以直接从本地缓存中获取,进一步加快加载速度。

5. 简单维护: - 主要是对 HTML、CSS 和 JavaScript 文件的直接编辑。 - 例如修改页面的颜色、字体或添加新的图片,只需修改相应的文件即可。

6. 安全性较高: - 因为没有与服务器端的动态交互,减少了潜在的安全漏洞。 - 降低了遭受诸如 SQL 注入等攻击的风险。

7. 可预测性强: - 每次访问的结果都是相同的,便于测试和质量保证。 - 开发人员能够准确地知道页面在各种情况下的表现。

2.4 nginx的搭建方式:

LAMP 、LNMP
以下是使用 Nginx 搭建 LAMP(Linux + Apache + MySQL + PHP)和 LNMP(Linux + Nginx + MySQL + PHP)环境的一般步骤:LAMP 环境搭建:
1. 安装 Linux 操作系统(如 CentOS、Ubuntu 等)。
2. 安装 Apache 服务器:- 在 CentOS 上,可以使用命令 `yum install httpd` 安装。- 在 Ubuntu 上,可以使用命令 `apt-get install apache2` 安装。
3. 安装 MySQL 数据库:- CentOS:`yum install mysql-server`- Ubuntu:`apt-get install mysql-server`
4. 安装 PHP:- CentOS:`yum install php`- Ubuntu:`apt-get install php`
5. 配置 Apache 以支持 PHP:- 在 Apache 的配置文件中(如 httpd.conf),添加对 PHP 的支持模块。LNMP 环境搭建:
1. 同样先安装好 Linux 操作系统。
2. 安装 Nginx 服务器:- CentOS:`yum install nginx`- Ubuntu:`apt-get install nginx`
3. 安装 MySQL 数据库(步骤与 LAMP 中的相同)。
4. 安装 PHP:- 同时需要安装 PHP-FPM(FastCGI 进程管理器),以便与 Nginx 协同工作。
5. 配置 Nginx 以支持 PHP:- 在 Nginx 的配置文件(如 nginx.conf)中,设置 PHP 的处理规则,将 PHP 请求转发给 PHP-FPM 处理。需要注意的是,在实际搭建过程中可能会遇到各种依赖问题和配置错误,需要根据具体的错误提示进行解决。
例如,在安装 MySQL 时可能会遇到设置 root 密码的提示,需要牢记密码以便后续使用。在配置 Nginx 时,可能需要根据服务器的实际 IP 地址和域名进行相应的修改。

2.5 web服务器基本配置

nginx服务器:主配置文件:/etc/nginx/nginx.conf子配置文件:/etc/nginx/conf.d/*.conf请求目录文件位置:/var/share/nginx/htmlapache服务器:主配置文件:/etc/httpd/conf/httpd.conf子配置文件:/etc/httpd/conf.d/请求文件位置:/var/www/html

防火墙和关闭 selinux(Security-Enhanced Linux)防火墙。
systemctl stop firewalld 和 setenforce 0
最后查看一下防火墙是否关闭
systemctl status firewalld

systemctl stop firewalld      ##关闭防火墙
systemctl disabled firewalld   ##关闭防火墙开机自启
systemctl status firewalld     ##查看防火墙是否关闭setenforce 0      ##临时关闭selinux
vim /etc/selinux/configSELINUX=disabled   ##永久关闭

1.下载nginx

  [root@server]# yum install nginx -y

2.开启服务

 [root@server]# systemctl start nginx

3.查找uginx的配置文件

    [root@server]# rpm -ql nginx(找.conf)tree /etc/nginx		#查看树形目录
image-20240705154859593

4.编辑

   [root@server]# vim /etc/nginx/nginx.conf
#nginx服务配置文件nginx.conf的结构
#############全局配置(无{}标志)############
user nginx;              #进程所属用户
worker_processes auto;   #线程数量CPU核心数,(双核4线程,可以设置为4)
error_log /var/log/nginx/error.log;  #错误日志文件路径
pid /run/nginx.pid;               #nginx pid文件位置
include /usr/share/nginx/modules/*.conf;  #导入功能模块配置文件
#######################################################
##################性能配置(有{}标志)############
events {worker_connections 1024;  #tcp连接数
}
########################################################
##################http模块配置(有{}标志)############
http {    #http区块开始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;     #开启高效文件传输
tcp_nopush          on;     #性能优化参数
tcp_nodelay         on;     #性能优化参数
keepalive_timeout   65;     #持久连接或超时时间
types_hash_max_size 4096;   #性能优化参数 include             /etc/nginx/mime.types;   #可解析的静态资源类型
default_type        application/octet-stream;include /etc/nginx/conf.d/*.conf;             #加载子配置文件server { #server区块开始,就相当于一个虚拟主机listen       80;listen       [::]:80;   server_name  _;    #服务名root         /usr/share/nginx/html;   #主页存放路径include /etc/nginx/default.d/*.conf;  #子配置文件路径error_page 404 /404.html;    #404错误的返回页面location = /404.html {       #location 定义用户请求的uri,并返回相应的资源文件}error_page 500 502 503 504 /50x.html;  #5xx状态返回的页面location = /50x.html {}
}
}

补充:

看nginx是否在运行 [root@server]# ps -aux | grep nginx
总结:结束进程,可以stop该进程,也可以rm这个进程文件
(这里以nginx.pid举例)
[root@server]# kill -9 1991或者
[root@server]# rm /run/nginx.pid
index.html是默认的,可以不写;

第三节 案例(Nginx)

案例一:多ip访问多网站

网站ip地址主机位为100,设置目录首页为/www/ip/100,网页内容为:this is 100

网站ip地址主机位为200,设置目录首页为/www/ip/200,网页内容为:this is 200

ip -a 查看网卡信息
rounte -n / ip route show  ##查看网关等信息
1、添加IP地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.100/24 +ipv4.gateway 192.168.84.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.200/24
[root@localhost ~]# nmcli connection up ens332、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -pv /www/ip/{100,200}
[root@localhost ~]# echo this is 100 > /www/ip/100/index.html
[root@localhost ~]# echo this is 200 > /www/ip/200/index.html3、新建文件,写入配置
[root@localhost ~]# vim /etc/nginx/conf.d/test1.conf
server {listen 192.168.84.100:80;root /www/ip/100;location / {}
}
server {listen 192.168.84.200:80;root /www/ip/200;location / {}
[root@localhost ~]# systemctl restart nginx4、检查结果
[root@localhost ~]# curl 192.168.84.100
this is 100
[root@localhost ~]# curl 192.168.84.200
this is 200

案例二:基于不同端口访问网站

使用web服务器默认端口的网站,设置网站首页目录位置/www/port/80,网页内容为:the port is 80

建立一个使用1000端口的网站,设置网站首页目录位置/www/port/1000,网页内容为:the port is 1000

1、添加IP地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.address 192.168.84.100/24 +ipv4.gateway 192.168.84.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
[root@localhost ~]# nmcli connection up ens332、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -pv /www/port/{80,1000}
[root@localhost ~]# echo the port is 80 > /www/port/80/index.html
[root@localhost ~]# echo the port is 1000 > /www/port/1000/index.html3、新建文件,写入配置
[root@localhost ~]# vim /etc/nginx/conf.d/test2.conf
server {listen 192.168.84.100:80;root /www/port/80;location / {}
}
server {listen 192.168.84.100:1000;root /www/poort/1000;location / {}
[root@localhost ~]# systemctl restart nginx4、检查结果
[root@localhost ~]# curl 192.168.84.100
the port is 80
[root@localhost ~]# curl 192.168.84.100:1000
the port is 1000

第四节 搭建静态网站–基于https协议

1.简介

HTTP协议以明文方式发送内容,不提供任何方式的数据加密;
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS;

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道。HTTPS并不是一个新协议,而是HTTP+SSL(Secure Sockets Layer — 安全套接层)(TLS)。原本HTTP先和TCP(假定传输层是TCP协议)直接通信,而加了SSL后,就变成HTTP先和SSL通信,再由SSL和TCP通信,相当于SSL被嵌在了HTTP和TCP之间。

SSL协议分为两层:

  • SSL记录协议 (SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能。
  • SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务:

1)认证用户和服务器,确保数据发送到正确的客户机和服务器
2)加密数据以防止数据中途被窃取
3)维护数据的完整性,确保数据在传输过程中不被改变

2.https协议加密所使用的算法

2.1 Hash算法常用在不可还原的密码存储、信息完整性校验等
常见的HASH算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMACSHA1。

2.2 共享密钥加密(对称密钥加密):加密和解密使用相同密钥。
对称加密算法:DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES。

2.3公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫做公开密钥。
常见的非对称加密算法:RSA、ECC(移动设备用)、Diffie-Hellman、El Gamal、DSA(数字签名用)。

3.TLS完整的通信流程

第一阶:段客户端端申请建立https连接第二阶段:客户端和服务器确认加密版本,加密套件第三阶段:证书发送验证 (客户端验证证书取出公钥,用公钥加密生成的对称秘钥发送个服务器通知改变加密信息传递)第四阶段:服务收到消息,用私钥解密取,确认对称秘钥通知客户端ssl通道建立完成第五阶段:客户端和服务端可以通过加密通道开始数据通信第六阶段:客户端断开连接#key是私钥文件
#crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息(第一种)    [root@localhost certs]# make jiami.crt
(第二种) #openssl  req -newkey rsa:4096 -nodes -sha256 -keyout haha.key -x509 -days 365 -out haha.crt
[root@www certs]# openssl genrsa -aes128 2048 > openlab.key(第三种) #openssl req -utf8 -new -key openlab.key -x509 -days 365 -out openlab.crt

4.静态https网站搭建

1. 配置网络接口与 IP 地址- 使用 `nmcli connection modify ens33 +ipv4.addresses 192.168.84.110/24` 为网络接口 `ens33` 配置 IPv4 地址。- 通过 `nmcli connection up ens33` 激活网络连接。2. 创建网站目录与文件- 使用 `mkdir -p /www/https` 创建网站的目录。- 利用 `echo this is https > /www/https/index.html` 创建网站的默认页面文件 `index.html` 并写入内容。3. 生成 SSL 证书和私钥- 通过 `openssl genrsa -out https.key` 生成私钥 `https.key` 。- 执行 `openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt` 基于私钥生成自签名的 SSL 证书 `https.crt` 。4. 配置 Nginx 服务器- 使用 `vim /etc/nginx/conf.d/test_https.conf` 编辑 Nginx 的配置文件。- 在配置文件中设置服务器监听的 IP 地址和端口、网站根目录、SSL 证书和私钥的路径等。5. 测试网站- 使用 `curl -k https://192.168.84.110` 命令访问网站,验证配置是否成功。这些步骤共同构成了创建基于 HTTPS 的静态网站的主要过程,确保网站能够通过安全的 HTTPS 协议正常访问,并提供指定的静态内容。 

具体操作命令:

1、添加ip地址
[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.110/24
[root@localhost ~]# nmcli connection up ens33 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)2、创建网页根目录,定义网页内容
[root@localhost ~]# mkdir -p /www/https
[root@localhost ~]# echo this is https > /www/https/index.html3、生成lls证书和私钥
[root@localhost ~]# cd /etc/pki/tls/certs/
[root@localhost certs]# ls
ca-bundle.crt  ca-bundle.trust.crt[root@localhost certs]# openssl genrsa -out https.key   #生成私钥https.key    使用 openssl 生成一个 RSA 私钥,并将其保存为 https.key 文件
[root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
#基于私钥生成LLS证书,     使用之前生成的私钥 https.key 创建一个自签名的 X.509 证书,有效期为 100 天,并将证书保存为 https.crt 文件。[root@localhost certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  https.crt  https.key4、配置nginx服务器
[root@localhost ~]# vim /etc/nginx/conf.d/test_https.conf
server {listen 192.168.84.110:443 ssl;  #表示监听 192.168.84.110 的 443 端口,并启用 SSL root /www/https;   #指定网站的根目录为 /www/httpsssl_certificate /etc/pki/tls/certs/https.crt;   #指定了 SSL 证书位置。ssl_certificate_key /etc/pki/tls/certs/https.key;  #指定SSL 私钥位置location / {}
}5、测试网站
[root@localhost ~]# curl -k https://192.168.84.110
this is https

5.动态网站搭建

[root@localhost ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.84.120/24
[root@localhost ~]# nmcli connection up ens33 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@localhost ~]# dnf install php php-fpm -y输出 PHP 信息
[root@localhost ~]# echo "<?php phpinfo(); ?>" /usr/share/nginx/html/index.html 
<?php phpinfo(); ?> /usr/share/nginx/html/index.html重启服务
[root@localhost ~]# systemctl restart nginx
查看输出信息
[root@localhost ~]# curl -I 192.168.84.120
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Fri, 28 Jun 2024 10:07:42 GMT
Content-Type: text/html
Content-Length: 3510
Last-Modified: Mon, 23 Oct 2023 15:48:29 GMT
Connection: keep-alive
ETag: "653695cd-db6"
Accept-Ranges: bytes

第五节 案例(Apache)

案例一:设置单实例Apache HTTP服务器

[root@localhost ~]# echo this is apache http > /var/www/html/index.html
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# curl 192.168.84.160
this is apache http

案例二:配置基于不同端口的虚拟主机

cd /etc/httpd/conf.d/
[root@localhost conf.d]# mkdir -pv /www/{8080,9090}
mkdir: 已创建目录 '/www'
mkdir: 已创建目录 '/www/8080'
mkdir: 已创建目录 '/www/9090'
[root@localhost conf.d]# echo 8080 > /www/8080/index.html
[root@localhost conf.d]# echo 9090 > /www/9090/index.html[root@localhost conf.d]#vim /etc/httpd/conf.d/port.conf
listen 8080
listen 9090
<directory /www>allowoverride nonerequire all granted
</directory><virtualhost 192.168.84.160:8080>servername 192.168.84.160documentroot /www/8080
</virtualhost>
<virtualhost 192.168.84.160:9090>servername 192.168.84.160documentroot /www/9090
</virtualhost>[root@localhost conf.d]# setenface 0
[root@localhost conf.d]# systemctl restart httpd[root@localhost conf.d]# curl 192.168.84.160:8080
8080
[root@localhost conf.d]# curl 192.168.84.160:9090
9090

案例三:配置基于Apache的虚拟主机

基于多IP地址访问
[root@localhost conf.d]# cat way1.conf 
<virtualhost 192.168.84.110:80>documentroot /www/way1/a.comservername a.com
</virtualhost>
<virtualhost 192.168.84.120:80>documentroot /www/way1/b.comservername b.com
</virtualhost>root@localhost conf.d]# mkdir -p /www/way1/{a.com,b.com}
[root@localhost conf.d]# echo a.com > /www/way1/a.com/index.html
[root@localhost conf.d]# echo b.com > /www/way1/b.com/index.html[root@localhost conf.d]# systemctl restart httpd[root@localhost conf.d]# curl 192.168.84.110
a.com
[root@localhost conf.d]# curl 192.168.84.120
b.com
基于域名访问root@localhost conf.d]# mkdir -p /www/way2/{abc.com,def.com}
[root@localhost conf.d]# echo abc.com > /www/way2/abc.com/index.html
[root@localhost conf.d]# echo def.com > /www/way2/def.com/index.html[root@localhost conf.d]# cat way2.conf 
<VirtualHost *:80>ServerName a.comDocumentRoot "/www/a.com/"
</VirtualHost><VirtualHost *:80>ServerName b.comDocumentRoot "/www/b.com/"
</VirtualHost>修改物理主机hosts文件(C:\Windows\System32\drivers\etc),这里是因为物理机去访问Apache服务器
在hosts文件里面添加
192.168.81.136 a.com
192.168.81.136 b.com

案例四、在 Apache HTTP 服务器中添加 TLS 加 密

1. 安装必要的模块
首先,需要确保您的服务器已经安装了 `mod_ssl` 模块。如果未安装,可以使用您服务器的包管理工具进行安装。
dnf install mod_ssl2. 生成证书和密钥
可以通过以下两种常见方式获取证书和密钥:
- 自签名证书:这适用于测试和开发环境。可以使用 `openssl` 命令来生成:
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- 从受信任的证书颁发机构(CA)获取:您需要向 CA 提交证书请求并完成相关验证流程,CA 将会颁发有效的证书。3. 配置 Apache
打开 Apache 的配置文件 `httpd.conf` 或 `ssl.conf`(具体取决于您的系统配置),并进行以下关键配置:
- 启用 `mod_ssl` 模块:确保有类似 `LoadModule ssl_module modules/mod_ssl.so` 的行未被注释。
- 设置证书和密钥路径:
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key4. 配置虚拟主机(如果需要)
如果您为多个域名或子域名配置 SSL,需要在虚拟主机的配置中进行相应设置。5. 重启 Apache 服务器
完成配置后,重启 Apache 服务器以使更改生效。
例如,如果您使用 `systemctl` 来管理服务,可以使用以下命令:
sudo systemctl restart apache2

1. 安装 `mod_ssl` 模块:sudo dnf install mod_ssl2. 生成自签名证书和密钥(在合适的目录下,例如 `/etc/httpd/ssl/` ):sudo mkdir -p /etc/httpd/sslopenssl req -new -newkey rsa:2048 -nodes -keyout /etc/httpd/ssl/server.key -out /etc/httpd/ssl/server.csropenssl x509 -req -days 365 -in /etc/httpd/ssl/server.csr -signkey /etc/httpd/ssl/server.key -out /etc/httpd/ssl/server.crt3. 打开 Apache 的配置文件 `/etc/httpd/conf/httpd.conf` :sudo vim /etc/httpd/conf/httpd.conf4. 在配置文件中进行以下配置:- 启用 `mod_ssl` 模块:确保有类似 `LoadModule ssl_module modules/mod_ssl.so` 的行未被注释。- 设置证书和密钥路径:SSLCertificateFile /etc/httpd/ssl/server.crtSSLCertificateKeyFile /etc/httpd/ssl/server.key5. 如果需要配置虚拟主机,在 `/etc/httpd/conf.d/vhost.conf` 或类似的文件中进行设置(假设您要为 `example.com` 配置虚拟主机):<VirtualHost *:443>ServerName example.comDocumentRoot "/var/www/html/example"SSLEngine onSSLCertificateFile /etc/httpd/ssl/server.crtSSLCertificateKeyFile /etc/httpd/ssl/server.key</VirtualHost>6. 重启 Apache 服务器:sudo systemctl restart httpd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/41467.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传统视觉Transformer的替代者:交叉注意力Transformer(CAT)

传统视觉Transformer的替代者:交叉注意力Transformer(CAT) 在深度学习的世界里,Transformer架构以其在自然语言处理(NLP)领域的卓越表现而闻名。然而,当它进入计算机视觉(CV)领域时,却面临着计算成本高昂和推理速度慢的双重挑战。现在,一项革命性的创新——交叉注意…

Qualcomm QCS6490 开发板运行高通AI Hub图像分类程序

相关代码可以在如下链接下载&#xff1a; ai-hub-models/apps/android/ImageClassification at main quic/ai-hub-models GitHub 所用硬件有&#xff1a; 1. UBUNTU20.04 2. 高通QCS6490 开发板 对下载下来的代码进行编译 1. ubuntu环境配置 1. python环境配置 如果你…

[SAP ABAP] 子例程

子例程 示例1 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 示例2 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 补充扩展练习 主程序(Z437_TEST_2024) INCLUDE文件(Z437_TEST_2024_F01) 输出结果如下所示 提示…

验证图像传感器性能

文章目录 验证图像传感器性能 验证图像传感器性能 测试类别测试项目具体方法与描述图像质量测试分辨率测试使用分辨率测试卡&#xff08;如1951 USAF分辨率测试卡&#xff09;拍摄图像&#xff0c;分析成像的清晰度。动态范围测试测试传感器在高对比度场景中的表现&#xff0c…

odoo 物联网 设备数据采集方案

图一 架构手稿(许老师专属) 图二 架构简图 部署 方案一&#xff1a; odoo业务数据库与设备采集数据库使用一个instance。 缺点&#xff1a;重启pg服务相互影响。 方案二&#xff1a; odoo业务数据库与设备采集数据库独立部署&#xff0c;使用两个instance。 优点&#xff1a;…

RedHat / CentOS安装FTP服务

本章教程,记录在RedHat / CentOS中安装FTP的具体步骤。FTP默认端口:21 1、安装 epel 源 yum install -y epel-release2、安装 pure-ftpd yum -y install pure-ftpd3、修改默认配置 # 默认配置位于 /etc/pure-ftpd/pure-ftpd.conf,在配置文件中找到下面几个参数进行修改:#…

AI视频生成技术爆发 引领虚拟数字人产业新潮流

2024年刚开局&#xff0c;先有OpenAI的AI视频生成模型Sora惊艳全网&#xff0c;随后阿里巴巴发布EMO&#xff0c;一张照片音频&#xff0c;就能生成具有生动表情和各种头部姿势、口型完全匹配高保真的人声头像动态视频。 技术的革新不仅为内容创作者打开了新世界的大门&#xf…

数据结构——队列练习题

在C语言中&#xff0c;.和->运算符用于访问结构体的成员变量。它们之间的区别在于&#xff1a;.运算符用于访问结构体变量的成员。->运算符用于访问结构体指针变量的成员 1a&#xff08;rear指向队尾元素后一位&#xff0c;判空判满时牺牲一个存储单元&#xff09; 首先…

小抄 20240703

1 “这么多年&#xff0c;什么都没有变化。” 同样看到这句话&#xff0c;有人会觉得幸福&#xff0c;有人会觉得悲伤。 好的事没变&#xff0c;就觉得幸福。 坏的事没变&#xff0c;会觉得悲伤。 2 人类预测不到的大趋势&#xff0c;只有技术大爆炸&#xff0c;关于人的那…

PEFT - 安装及简单使用

LLM、AIGC、RAG 开发交流裙&#xff1a;377891973 文章目录 一、关于 PEFT二、安装1、使用 PyPI 安装2、使用源码安装 三、快速开始1、训练2、保存模型3、推理4、后续步骤 本文翻译整理自&#xff1a;https://huggingface.co/docs/peft/index 一、关于 PEFT &#x1f917;PEFT…

算力共享解决方案

目录 算力共享解决方案 一、引言 二、目标 三、技术架构 一、基础设施层 二、服务层 三、应用层 四、实施步骤 五、安全与隐私保护 六、经济模型(信用评估-博弈论) 算力共享解决方案 一、引言 背景分析&#xff1a; 随着大数据、人工智能、区块链等技术的飞速发展&…

BugKu-WEB-sodirty

目录 前言 正文 信息收集 代码审计 验证 结尾 前言 七月始,暑假副本也正式开启 正文 信息收集 看着貌似没啥意义 看样子是有备份文件 下载下来 快速审计一下 代码审计 来吧 app.js没啥东西,主要是功能是实现error 我们找一找有没有index.js 找到了 \www\routes\in…

MySQL的Docker部署方式

说明:Docker部署MySQL主要是简单快速&#xff0c;不会对电脑系统造成污染。假如你的本地没有Docker&#xff0c;或者你不会使用Docker&#xff0c;则使用PyCharm去启动MySQL&#xff0c;或者直接在本机安装MySQL都是可以的。最重要的是&#xff0c;你要有一个MySQL环境&#xf…

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号&#xff1a;冬瓜白 在日常开发中&#xff0c;我们可能会不小心将敏感信息提交到 Git。为了防止这种情况&#xff0c;可以利用 Git Hooks 编写一个简单的脚本&#xff0c;当发现提交中包含敏感词时&#xff0c;给出提示。 以下是一个基于 pre-commit 钩子的示例…

踩坑:Unity导出WebGL发布到手机上竖屏时强制显示横屏

具体的适配问题 公司的项目需要将游戏导出WebGL 发布到Web平台 本以为是个很简单的事情 谁知道却被个横竖屏适配搞的头晕 毕竟只有大学浅浅的学了下HTML这门语言 出来工作后基本上都是在跟C# Lua打交道 言归正传 看看具体问题吧 游戏如果从横屏进入 基本上不会有什么适配问题…

C++ 多进程多线程间通信

目录 一、进程间通信 1、管道&#xff08;Pipe&#xff09; 2、消息队列&#xff08;Message Queue&#xff09; 3、共享内存&#xff08;Shared Memory&#xff09; 4、信号量&#xff08;Semaphore&#xff09; 5、套接字&#xff08;Socket&#xff09; 6、信号&…

Finding Global Homophily in Graph Neural Networks When Meeting Heterophily

本文发表于:ICML22 推荐指数: #paper/⭐⭐⭐ 问题背景: 异配图的邻接矩阵难以确定,以及异配图的计算复杂度开销大 可行的解决办法:高通滤波多跳邻居,GPRGNN(pagerank一类&#xff0c;各阶邻居的权重不同,ACM-GCN&#xff08;高低通滤波,H2GCN&#xff08;应该复杂度很大&…

碳课堂|搞清楚碳足迹,只看这篇文章就够了

碳足迹管理是碳达峰碳中和的重要政策工具&#xff0c;2023年12月&#xff0c;国家发展改革委、工信部、国家市场监管总局、住房城乡建设部、交通运输部等部门联合印发《关于加快建立产品碳足迹管理体系的意见》&#xff0c;对产品碳足迹管理各项重点任务作出系统部署。 推动碳…

音乐播放器

目录 一、设计目标二、实现流程1. 数据库操作2. 后端功能实现3. 前端UI界面实现4. 程序入口 三、项目收获 一、设计目标 1. 模拟网易云音乐&#xff0c;实现本地音乐盒。 2. 功能分析&#xff1a; 登录功能窗口显示加载本地音乐建立播放列表播放音乐删除播放列表音乐 3.设计思…

通过Java调用OceanBase云平台API

最近由于工作原因又开始捣鼓OceanBase&#xff0c;OceanBase云平台(OCP)提供了强大的管理和监控功能&#xff0c;而且对外开放API接口&#xff0c;可以将部分监控整合到自己的平台&#xff0c;所以写了个Java调用OCP API的demo做为自己的技术储备&#xff0c;也想分享给大家。也…