httpd(Web服務器)

名詞解釋

1、URL:Uniform Resource Locator,統?資源定位符

2、?址格式:<協議>://<主機或主機名>[:port]/<?錄資源,路徑>

3、主機地址/主機名:主機地址是服務器在因特?所在的IP地址。主機名就需要域名解析來處理

4、主機文件:Linux中一般位于/etc/host,Windows位于C:\Windows\system32\drivers\etc\hosts

5、端?號(port):http為80,https為443

0-1023:永久地分配給固定的應?程序使?,特權端?(只有管理員有權限啟?并讓進程監聽)
1024-41951:注冊端?,但不是特別嚴格,分配給程序注冊為某應?使用(3306/TCP)
41952-60000:客?端程序隨機使?的端?,動態端?,或私有端?

httpd相關文件

安裝httpd:

yum install httpd -y

Apache HTTP服務器是通過簡單的?本?件配置的。這些?件可能位于不同的位置,具體取決于服務器的安裝?式。

這些?件的公共位置如下所示

服務根目錄(ServerRoot)/etc/httpd
主配置文件( Primary Config File
/etc/httpd/conf/httpd.conf
其他配置文件( Other Config Files
/etc/httpd/conf.d/
?于載? Red Hat Enterprise Linux 中打包動 態模塊的配置?件的輔助?錄。在默認配置 中,?先會處理這些配置?件。
/etc/httpd/conf.modules.d/
模塊位置( Module Locations
/usr/lib/httpd/modules
網站根目錄( DocumentRoot
/var/www/html/
錯誤日志( ErrorLog
/var/log/httpd/error_log
訪問日志( AccessLog
/var/log/httpd/access_log
cgi-bin
/var/ w /cgi- bin (empty and disabled by default)
二進制( binary
/usr/sbin/httpd
運行時目錄( runtime directory
/etc/httpd/run
1、 主要的配置文件 /etc/httpd/conf/httpd.conf
2、 額外的參數文件 /etc/httpd/conf.d * .conf
如果你不想要修改原始配置文件 httpd.conf 的話,那么你可以將你自己的額外參數文件獨立出來,例如你想要有自己的額外設置值,可以將它寫入 /etc/httpd/conf.d/zhuji.conf(注意,擴展名一定是.conf ),而啟動 Apache 時,這個文件就會被讀入主要配置文件當中了
3、 默認的首頁所在目錄 /var/ w /html/ ,當輸入網址時所顯示的數據,就是放在這個目錄當中的首頁文件(默認為index.html
4、 默認給一些可執行的CGI (網頁程序)程序放置的目錄 /var/ w /cgi- bin/ ,當輸入網址/cgi- bin/ 時所顯示的數據所在。
5、 默認的Apache 日志文件都放在 /var/log/httpd/ ,對于流量比較大的網站來說,一個星期的日志文件的數據可以達到1GB 左右
如果從源代碼處安裝了httpd,那么配置?件的默認位置是/usr/local/apache2/conf

http模塊解釋

httpd是一個模塊化服務器,即核心服務器中只包含最基本的功能,但是可以通過可加載到httpd中的模塊來提供擴展功能。默認情況下,編譯時服務器中包含一組基本模塊,如果將服務器編譯為使用動態加載的模塊,則可以單獨編譯模塊,并隨時使用LoadModule指令添加模塊,否則必須重新編譯httpd以添加或刪除模塊。通過將指令封裝在塊中,可以在特定模塊存在的條件下包含配置指令,但是塊不是必須的,在某些情況下可能會掩蓋缺少重要模塊的事實

httpd -l:查看當前編譯到服務器中的模塊
httpd -M:查看動態加載的模塊

httpd主配置文件解釋

cat /etc/httpd/conf/httpd.conf

該文件內容如下:

目錄樹的頂部
ServerRoot "/etc/httpd"偵聽特定的IP地址或端口(必需指令,配置文件沒有會導致服務器無法啟動)
Listen 80允許在服務器配置文件中包含其他配置文件(通配符表達式與任何文件不匹配則Include指令將失敗并出錯;如果忽略不匹配的通配符,則可以使用IncludeOptional指令)
Include conf.modules.d/*.conf運行httpd的用戶/組的名稱
User apache
Group apache電子郵件地址
ServerAdmin root@localhost服務器用于標識自身的名稱和端口
ServerName 0.0.0.0:80這里拒絕所有/的訪問
<Directory />AllowOverride noneRequire all denied
</Directory>提供文檔的目錄
DocumentRoot "/var/www/html"允許對該目錄的訪問
<Directory "/var/www">AllowOverride None# Allow open access:Require all granted
</Directory>放寬對默認文檔根目錄的訪問
<Directory "/var/www/html">啟用了基于文件目錄和符號鏈接的訪問Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>如果指定模塊存在,則按照指定的指令執行
<IfModule dir_module>DirectoryIndex index.html
</IfModule>應用于匹配文件名的指令,拒絕了.ht前綴的所有文件
<Files ".ht*">Require all denied
</Files>錯誤日志路徑
ErrorLog "logs/error_log"日志級別
LogLevel warn訪問日志格式化配置模塊
<IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>CustomLog "logs/access_log" combined
</IfModule># alias:將web路徑映射到文件系統路徑,并用于訪問不在DocumentRoot下的內容。
# ScriptAlias:控制哪些目錄包含服務器腳本。腳本別名基本上與別名相同,只是目標目錄中的文檔被視為應用程序,并在請求時由服務器運行,而不是作為發送到客戶端的文檔。關于尾隨“/”的規則適用于ScriptAlias指令和Alias指令。
<IfModule alias_module>ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>對cgi目錄的定義
<Directory "/var/www/cgi-bin">AllowOverride NoneOptions NoneRequire all granted
</Directory>對mime(多用途互聯網郵件擴展)的配置
<IfModule mime_module>AddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType text/html .shtmlAddOutputFilter INCLUDES .shtml
</IfModule>字符集配置
AddDefaultCharset UTF-8對mime的配置
<IfModule mime_magic_module>MIMEMagicFile conf/magic
</IfModule>啟用發送文件
EnableSendfile on包含其他配置文件
IncludeOptional conf.d/*.conf

httpd使用

基本及相關命令

1、啟動httpd服務

systemctl start httpd

2、停止httpd服務

 systemctl stop httpd

3、重啟httpd服務

systemctl restart httpd

4、查看httpd綁定IP和端口

5、查看httpd進程

6、防火墻放行端口

7、重啟防火墻規則

8、修改SELinux模式

9、網卡修改

設置網卡IPV4地址
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24增加網卡IPV4地址
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24刪除網卡IPV4地址
nmcli connection modify ens160 -ipv4.addresses 192.168.182.129/24設置IP地址獲取方式為手動
nmcli connection modify ens160 ipv4.method manual 設置網卡的網關IP地址
nmcli connection modify ens160 ipv4.gateway 192.168.182.2設置網卡的DNS地址
nmcli connection modify ens160 ipv4.dns 114.114.114.114設置自動啟動網卡
nmcli connection modify ens160 connection.autoconnect yes啟動網卡
nmcli connection up ens160 顯示會話
nmcli connection show顯示設備
nmcli device

1、基于IP、端口、域名的虛擬主機

1.1基于IP

1、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

cd /etc/httpd/conf.d
vim vhost.conf

2、編寫文件內容

3、創建對應目錄及index.html

mkdir /testip1 /testip2
echo welcome 192.168.182.128 > /testip1/index.html
echo welcome 192.168.182.129 > /testip2/index.html

4、網卡添加新地址

nmcli connection modify ens160 ipv4.addresses 192.168.1182.128/24
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、啟動httpd

systemctl start httpd

結果:

1.2基于端口

1、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

vim /etc/httpd/conf.d/virport.conf

2、編寫文件內容

3、創建對應目錄及index.html

mkdir /testport1 /testport2
echo welcome 192.168.182.130:80 > /testport1/index.html
echo welcome 192.168.182.130:81 > /testport2/index.html

4、網卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.130/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、啟動httpd

systemctl start httpd

結果:

1.3基于域名

1、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

vim /etc/httpd/conf.d/virname.conf 

2、編寫文件內容

3、創建對應目錄及index.html

mkdir /testname1 /testname2 /testname3
echo welcome www.haha.com > /testname1/index.html
echo welcome www.xixi.com > /testname2/index.html
echo welcome www.hehe.com > /testname3/index.html

4、網卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.131/24
nmcli connection modify ens160 +ipv4.addresses 192.168.182.132/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、修改本地地址解析文件/etc/hosts

6、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

7、修改SELinux

setenforce 0

8、啟動httpd

systemctl start httpd

結果:

2、基于https的虛擬主機

1、安裝ssl模塊

yum install mod_ssl -y

2、進入/etc/pki/tls/certs目錄中生成秘鑰和證書

cd /etc/pki/tls/certs
#生成秘鑰
openssl genrsa > jiami.key 
#生成證書
openssl req -utf8 -new -key jiami.key -x509 -days 100 -out jiami.crt 

3、將秘鑰和證書放置于正確的路徑中

由于在/etc/pki/tls/certs/目錄下生成秘鑰和證書
所以證書文件不用移動
只需移動秘鑰文件
mv /etc/pki/tls/private/jiami.key /etc/pki/tls/certs/jiami.crt

4、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

vim /etc/httpd/conf.d/virhttps.conf

5、編寫文件

6、網卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.133/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、啟動httpd

systemctl start httpd

結果:

?補充:安裝ssl模塊后/etc/httpd/conf.d/下出現一個ssl.conf文件

vim /etc/httpd/conf.d/ssl.conf 

其內容如下:

Listen 443 httpsSSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialogSSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300SSLCryptoDevice builtin<VirtualHost _default_:443>ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warnSSLEngine onSSLHonorCipherOrder onSSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEMSSLCertificateFile /etc/pki/tls/certs/localhost.crtSSLCertificateKeyFile /etc/pki/tls/private/localhost.key<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">SSLOptions +StdEnvVars
</Directory>BrowserMatch "MSIE [2-5]" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0CustomLog logs/ssl_request_log \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</VirtualHost>

其中重要的有三句并且需要寫入conf文件中:

SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

3、基于用戶認證的虛擬主機

1、創建賬號文件并建立用戶信息

第一次使用htpasswd命令建立目錄并添加用戶需加-c
htpasswd -c /etc/httpd/zhanghao zhangsan
htpasswd /etc/httpd/zhanghao lisi

2、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

vim /etc/httpd/conf.d/viruser.conf

3、編寫文件內容

4、網卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.134/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、創建/testuser目錄

mkdir /testuser
echo welcome user > /testuser/index.html

6、創建/mysecret目錄

mkdir /mysecret
echo welcome to mysecret > /mysecret/index.html

7、修改主配置文件(將其注釋取消并把www.example.com修改為0.0.0.0)

?8、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

9、修改SELinux

setenforce 0

10、啟動httpd

systemctl start httpd

結果:

4、基于python的虛擬主機

1、安裝模塊

yum install python3-mod_wsgi -y

2、在/var/www/cgi-bin目錄下編寫python文件

vim /var/www/cgi-bin/haha.wsgi

3、進入副配置文件目錄下并創建一個后綴為.conf的配置文件

vim /etc/httpd/conf.d/virpython.conf

4、編寫文件

5、修改本地解析文件

6、網卡新增IP地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.135/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墻放行端口及重啟

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、啟動httpd

systemctl start httpd

結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162143.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

裝飾器設計模式是什么?什么是 Decorator 裝飾器設計模式?Python 裝飾器設計模式示例代碼

什么是 Decorator 裝飾器設計模式&#xff1f; 裝飾器模式是一種結構型設計模式&#xff0c;它允許向現有對象動態地添加新功能&#xff0c;同時不改變其結構。這種模式實現了對對象的包裝&#xff0c;稱為裝飾器&#xff0c;并且可以在運行時動態地添加、修改或刪除對象的行為…

重磅!這本30w人都在看的Python數據分析暢銷書:更新了!

想學習python進行數據分析&#xff0c;這本《利用python進行數據分析》是繞不開的一本書。目前該書根據Python3.10已經更新到第三版。 Python 語言極具吸引力。自從 1991 年誕生以來&#xff0c;Python 如今已經成為最受歡迎的解釋型編程語言。 pandas 誕生于2008年。它是由韋…

NX二次開發UF_CAM_set_clear_plane_data 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_data Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 De…

快慢指針判斷環形鏈表

我們在前面文章中寫過用快慢指針判斷鏈表是否帶環&#xff1a; leetcode&#xff1a;環形鏈表-CSDN博客 我們用的是slow指針一次走一步&#xff0c;fast指針一次走兩步&#xff0c;當slow入環后開始了追擊&#xff0c;每走一次距離縮短1&#xff0c;最終就會相遇 思考問題 …

【LeetCode】每日一題 2023_11_23 HTML 實體解析器(調庫/打工)

文章目錄 刷題前嘮嗑題目&#xff1a;HTML 實體解析器題目描述代碼與解題思路 結語 刷題前嘮嗑 題目&#xff1a;HTML 實體解析器 題目鏈接&#xff1a;1410. HTML 實體解析器 題目描述 代碼與解題思路 func entityParser(s string) (ans string) {return strings.NewRepla…

redo log 丟失或者損壞-ORA-01194: 文件 1 需要更多的恢復來保持一致性

#故障場景描述&#xff1a; 1、current redo 損壞或者丟失 2、ORA-01194: 文件 1 需要更多的恢復來保持一致性 C:\Users\ZMI>sqlplus / as sysdba SQL*Plus: Release 19.0.0.0.0 - Production on 星期三 11月 22 16:58:07 2023 Version 19.3.0.0.0 Copyright (c) 1982, …

NX二次開發UF_CAM_set_lower_limit_plane_tag 函數介紹

文章作者&#xff1a;里海 來源網站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_lower_limit_plane_tag Defined in: uf_cam_planes.h int UF_CAM_set_lower_limit_plane_tag(tag_t object_tag, tag_t target_tag ) overview 概述 Set the tag of a …

使用 PowerShell 創建共享目錄

在 Windows 中&#xff0c;可以使用共享目錄來將文件和文件夾共享給其他用戶或計算機。共享目錄可以通過網絡訪問&#xff0c;這使得它們非常適合用于文件共享、協作和遠程訪問。 要使用 PowerShell 創建共享目錄&#xff0c;可以使用 New-SmbShare cmdlet。New-SmbShare cmdl…

TypeScript 項目 Airbnb 語法風格 ESLint 配置

TypeScript 項目 Airbnb 語法風格 ESLint 配置 1. 配置 安裝&#xff1a; npm i -D eslint-config-airbnb-typescript typescript-eslint/eslint-plugin^6.0.0 typescript-eslint/parser^6.0.0配置&#xff1a; .eslintrc.js: module.exports {root: true,env: {node: true…

【Antd】antd的Form表單項用Form.Item包裹后,表單校驗不生效的原因及解決辦法

以下代碼是用<Form></Form>包裹的子組件中的render部分的代碼&#xff1a; 可以看到Input.TextArea被<div>包裹住了&#xff0c;這會導致無法被Form表單識別并抓取&#xff0c;因為Form默認只允許放一個子元素。 <div className{styles.textAreaWrap}&g…

算法的奧秘:常見的六種算法(算法導論筆記2)

算法的奧秘&#xff1a;種類、特性及應用詳解&#xff08;算法導論筆記1&#xff09; 上期總結算法的種類和大致介紹&#xff0c;這一期主要講常見的六種算法詳解以及演示。 排序算法&#xff1a; 排序算法是一類用于對一組數據元素進行排序的算法。根據不同的排序方式和時間復…

postman定義公共函數這樣寫,測試組長直呼牛逼!!!

postman定義公共函數 在postman中&#xff0c;如下面的代碼&#xff1a; 1、返回元素是否與預期值一致 var assertEqual(name,actual,expected)>{tests[${name}&#xff1a;實際結果&#xff1a; ${actual} &#xff0c; 期望結果&#xff1a;${expected}]actualexpected…

2023年危險化學品經營單位主要負責人證模擬考試題庫及危險化學品經營單位主要負責人理論考試試題

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2023年危險化學品經營單位主要負責人證模擬考試題庫及危險化學品經營單位主要負責人理論考試試題是由安全生產模擬考試一點通提供&#xff0c;危險化學品經營單位主要負責人證模擬考試題庫是根據危險化學品經營單位主…

Exception:Zero date value prohibited

運行了很久的系統&#xff0c;突然不能訪問&#xff0c;報錯如下&#xff1a; Error attempting to get column updated_time from result set. Cause: java.sql.SQLException: Zero date value prohibited; SQL []; Zero date value prohibited; nested exception is java.…

【追求卓越12】算法--堆排序

引導 前面幾節&#xff0c;我們介紹了有關樹的數據結構&#xff0c;我們繼續來介紹一種樹結構——堆。堆的應用場景有很多&#xff0c;比如從大量數據中找出top n的數據&#xff1b;根據優先級處理網絡請求&#xff1b;這些情景都可以使用堆數據結構來實現。 什么是堆&#xf…

【20年揚大真題】編寫程序,功能是計算1~10之間的偶數之和

【20年揚大真題】 編寫程序&#xff0c;功能是計算1~10之間的偶數之和 #include<stdio.h> int main() {int i 1;int sum 0;for (i 1;i < 10;i){if (i % 2 0){sum i;}}printf("%d", sum); }

Java核心知識點整理大全9-筆記

目錄 null文章瀏覽閱讀9w次&#xff0c;點贊7次&#xff0c;收藏7次。Java核心知識點整理大全https://blog.csdn.net/lzy302810/article/details/132202699?spm1001.2014.3001.5501 Java核心知識點整理大全2-筆記_希斯奎的博客-CSDN博客 Java核心知識點整理大全3-筆記_希斯…

FindMy技術用于充電寶

充電寶是一種便捷的充電器&#xff0c;方便個人隨身攜帶&#xff0c;能夠自行儲備電能&#xff0c;為主流電子設備提供充電服務。它廣泛應用于沒有外部電源供應的場所&#xff0c;例如旅行、戶外活動或緊急情況下&#xff0c;為用戶的手持設備提供持續的電力支持&#xff0c;確…

spring boot加mybatis puls實現,在新增/修改時,對某些字段進行處理,使用的@TableField()或者AOP @Before

1.先說場景&#xff0c;在對mysql數據庫表數據插入或者更新時都得記錄時間和用戶id 傳統實現有點繁瑣&#xff0c;這里還可以封裝一下公共方法。 2.解決方法&#xff1a; 2.1&#xff1a;使用aop切面編程&#xff08;記錄一下&#xff0c;有時間再攻克&#xff09;。 2.1.1&am…

讀書筆記:彼得·德魯克《認識管理》第30章 管理溝通

一、章節內容概述 我們知道&#xff0c;組織中的溝通是感知&#xff0c;也是期望&#xff0c;會產生要求&#xff0c;并且與信息不同&#xff0c;二者是對立的卻相互依賴。 我們知道&#xff0c;下行溝通沒有效果&#xff0c;只有上行溝通才能達到目的&#xff0c;并且 我們還…