1.部署
yum install httpd -y ##下載httpd
yum install httpd-manual -y ##下載httpd的手冊
systemctl stop firewalld ##關閉防火牆
systemctl disable firewalld ##設置開機不啓動防火牆
systemctl start httpd ##啓動httpd
systemctl enable httpd ##設置開機自動啓動httpd
html 超文本標記語言
xml 可擴展標記語言,封裝
測試:
打開firefox
http://172.25.254.116 ##172.25.254.116爲服務端主機ip
http://172.25.254.116/manual ##查看manual
2.apache的基礎信息:
主配置目錄:/etc/httpd/conf
主配置文件:/etc/httpd/conf/httpd.conf
子配置目錄:/etc/httpd/conf.d
子配置文件:/etc/httpd/conf.d/*.conf
默認發佈目錄:/var/www/html
默認發佈文件:index.html
默認端口:80
默認安全上下文:httpd_sys_content_t
程序開啓默認用戶:apache
apache日誌:/etc/httpd/logs/*
3.端口修改:
vim /etc/httpd/conf/httpd.conf
41 #Listen 12.34.56.78:80
42 Listen 80 ##80即爲httpd服務的網絡端口
測試:
4.默認發佈文件
vim /var/www/html/test ##新建默認發佈文件test
<h1>hello world</h1> ##填寫默認發佈文件的內容
vim /etc/httpd/conf/httpd.conf
163 <IfModule dir_module>
164 DirectoryIndex test index.html ##新建的默認發佈文件test放在index.html前面,則優先讀取test.
165 </IfModule>
測試:
##將需要改的文件放在index.html前面則優先被訪問。若不修改默認發佈文件想要訪問/var/www/html/下的file,則應http://172.25.254.116/file進行訪問。修改主配置文件後應systemctl restart httpd.service
ss -antlupe | grep httpd ##端口查詢
curl -I http://www.baidu.com ##百度服務查詢
rpm -qc httpd ##軟件主配置文件查詢
5.修改默認發佈目錄
mkdir /www/html -p ##新建一個默認發佈目錄
vim /www/html/index.html ##添加默認發佈文件,並寫入內容
<h1>/www/html 's page</h1>
vim /etc/httpd/conf/httpd.conf
120 DocumentRoot "/www/html" ##添加新建默認發佈目錄
121 <Directory "/www/html">
122 Require all granted ##允許所有人訪問
123 </Directory>
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?' ##修改/www/的安全上下文
restorecon -RvvF /www/ ##刷新/www/的安全上下文
測試:
6.apache的虛擬主機
server主機:
mkdir -p /var/www/virtual/news/html ##創建虛擬主機的默認發佈目錄
mkdir -p /var/www/virtual/music/html
vim /var/www/html/index.html ##修改虛擬主機的默認發佈文件
<h1>www.westos.com</h1>
vim /var/www/virtual/news/html/index.html ##修改虛擬主機news的默認發佈文件內容
news.westos.com
vim /var/www/virtual/music/html/index.html ##修改虛擬主機nmusic的默認發佈文件內容
music.westos.com
vim /etc/httpd/conf.d/a_default.conf
##位指定域名的訪問都訪問default
<VirttualHost _default_:80> ##虛擬主機開啓的端口
DocumentRoot /var/www/html ##虛擬主機的默認發佈目錄
CustomLog "logs/default.log" combined ##虛擬主機日誌
</VirttualHost>
vim /etc/httpd/conf.d/news.conf ##指定域名news.westos.com的訪問到指定默認發佈目錄中
<VirtualHost *:80>
Servername news.westos.com ##指定站點名稱
DocumentRoot /var/www/virtual/news/html ##站點默認發佈目錄,即網頁文件存放位置
CustomLog "logs/news.log" combined ##站點日誌combined表示四種日誌
</VirtualHost>
<Directory "/var/www/virtual/news/html"> ##默認發佈目錄的訪問授權
Require all granted ##允許所有主機訪問
</Directory>
vim /etc/httpd/conf.d/music.conf ##指定域名music.westos.com的訪問到指定默認發佈目錄中
<VirtualHost *:80>
Servername music.westos.com ##指定站點名稱
DocumentRoot /var/www/virtual/music/html ##指定站點的默認發佈目錄
CustomLog "logs/music.log" combined ##站點日誌
</VirtualHost>
<Directory "/var/www/virtual/music/html"> ##默認發佈目錄的訪問授權
Require all granted
</Directory>
瀏覽器所在主機(客戶端):
vim /etc/hosts
172.25.254.116 www.westos.com news.westos.com music.westos.com##三個主機的ip均爲172.25.254.116
測試:
7.apache內部的訪問機制
(1)IP訪問方式的控制
mkdir /var/www/html/westos ##創建實驗用的westos目錄
vim /var/www/html/westos/index.html ##編輯默認發佈文件
<h1>westos 's page</h1>
vim /etc/httpd/conf.d/a_default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog "logs/default.log" combined
</VirtualHost>
<Directory "/var/www/html/westos">
Order Deny,Allow ##列表讀取順序,後讀取的列表內容會覆蓋先讀取的列表內容。Allow在後面則會覆蓋Deny,只有172.25.254.16可以訪問。反之亦然。
Allow from 172.25.254.16 ##允許172.25.254.16訪問
Deny from All ##拒絕所有主機訪問
</Directory>
(2)用戶訪問方式的控制
mkdir /var/www/html/admin
vim /var/www/html/admin/index.html
<h1>admin 's page</h1>
htpasswd -cm /etc/httpd/userpass admin ##生成用戶admin的密碼文件,cm會覆蓋原文件的內容,m會追加在原文件內容的後面。admin和admin1不是真實存在的用戶。
htpasswd -m /etc/httpd/userpass admin1
cat /etc/httpd/userpass ##查看生成的用戶密碼文件內容
vim /etc/httpd/conf.d/a_default.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog "logs/default.log" combined
</VirtualHost>
<Directory "/var/www/html/westos">
Order Deny,Allow ##訪問順序,Allow在後面則會覆蓋Deny,只有172.25.254.16可以訪問.反之亦然.
Allow from 172.25.254.16 ##允許172.25.254.16訪問
Deny from All ##拒絕所有主機訪問
</Directory>
<Directory "/var/www/html/admin">
AuthUserFile /etc/httpd/userpass ##認證的用戶文件
AuthName "Please input your name and passwd"
AuthType basic ##基礎認證類型
Require user admin ##允許用戶admin訪問
#Require valid-user ##允許所有用戶訪問
</Directory>
8.apache支持的語言
(1)html語言默認支持
(2)php語言
vim /var/www/html/index.php ##新建默認發佈文件index.php並添加內容
<?php
phpinfo();
?>
yum install php -y ##安裝php
vim /etc/httpd/conf/httpd.conf
166 <IfModule dir_module>
167 DirectoryIndex index.php index.html ##在主配置文件中添加新建的默認發佈文件index.php
168 </IfModule>
systemctl restart httpd
測試:
http://172.25.254.116/index.php
(3)cgi語言
mkdir /var/www/html/cgi
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/html/cgi(/.*)?' ##修改/var/www/html/cgi的安全上下文
restorecon -RvvF /var/www/html/cgi ##刷新/var/www/html/cgi的安全上下文
ls -dZ /var/www/html/cgi ##查看/var/www/html/cgi的安全上下文
vim /var/www/html/cgi/index.cgi ##編寫腳本
#!/usr/bin/perl
print "Content-type: text/html\n\n"; ##輸出Content-type: text/html並執行兩次換行
print `date`; ##優先執行反單引號內的內容,並將執行結果作爲外部的輸入信息
chmod +x /var/www/html/cgi/index.cgi ##給腳本添加x權限
/var/www/html/cgi/index.cgi ##執行下腳本確保腳本運行正常
測試腳本/var/www/html/cgi/index.cgi
vim /etc/httpd/conf.d/a_default.conf
alias /cgi /var/www/html/cgi ##設置/var/www/html/cgi的別名(快捷方式)爲/cgi
<Directory "/var/www/html/cgi"> ##執行默認發佈文件內的腳本內容
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
點擊index.cgi
9.網頁加密
yum install mod_ssl -y ##下載ssl模塊
yum install crypto-utils -y ##下載加密軟件
systemctl restart httpd
genkey www.westos.com ##加密網頁www.westos.com
當出現該圖時,需要在同一主機另外打開窗口進行不間斷的輸入
CA指網頁加密授權認證
vim /etc/httpd/conf.d/ssl.conf ##修改模塊ssl的配置文件,下面兩行的內容可在執行genkey www.westos.com後恢復的內容中找到
100 SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
107 SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
systemctl restart httpd
測試:
https://172.25.254.142
10.網頁重寫
mkdir -p /var/www/virtual/login
vim /var/www/virtual/login/index.html
<h1>login.wesstos.com</h1>
vim /etc/httpd/conf.d/login.conf
<VirtualHost *:443>
Servername login.westos.com
DocumentRoot /var/www/virtual/login
CustomLog "logs/default.log" combined
SSLEngine on
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
</VirtualHost>
<VirtualHost *:80>
Servername login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>
^(/.*)$ ##客戶在瀏覽器地址欄輸入的所有字符
https:// ##強制客戶加密訪問
%{HTTP_HOST} ##客戶強求主機
$1 ##表示^(/.*)$ 的值
[redirect=301] ##臨時重寫,302表示永久重寫