名詞解釋
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.conf2、 額外的參數文件 /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.crtSSLCertificateKeyFile /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
結果: