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.pswp.cn/diannao/41467.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41467.shtml
英文地址,請注明出處:http://en.pswp.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;也想分享給大家。也…