1. 程式人生 > >Apache超文字傳輸協議(http)

Apache超文字傳輸協議(http)

Apache的基本配置

首先使用yum命令安裝httpd服務

 yum install httpd -y

這裡寫圖片描述
然後關閉防火牆,開啟httpd服務

systemctl stop firewalld.service
systemctl start httpd

httpd的基本配置檔案為/etc/httpd/conf/httpd.conf
我們可以使用vim進入檢視或者修改其中的一些引數
預設的釋出目錄為/var/www/html
預設的釋出檔案為index.html
這裡寫圖片描述
這裡寫圖片描述
我們可以編輯/var/www/html下的index.html檔案如下

vim /var/www/html/index
.html

這裡寫圖片描述
然後在瀏覽器中輸入本機ip,有如下的效果
這裡寫圖片描述
如果需要修改預設釋出目錄,需要將SELinux設定為disabled然後,進入主配置檔案中修改

vim /etc/httpd/conf/httpd.conf 

假設我要將預設釋出目錄設定為我新建的一個目錄

 mkdir /test/www -p

然後進入配置檔案中修改如下(先註釋119行原先的目錄)
這裡寫圖片描述
然後重啟服務即可

systemctl restart httpd

tips:
如果在SElinux是enforcing的狀態下,我們可以進行以下操作來解決上下文不匹配的問題

semanage fcontext -a
-t httpd_sys_content_t '/test(/.*)?' restorecon -RvvF /test/

apache虛擬主機

如果是同一個站點的不同網頁,好比騰訊,www.qq.com與news.qq.com都是同一個IP,在這時就需要用到虛擬主機,虛擬主機配置的方法與流程大致如下
首先我們先將測試頁建立好

cd /var/www/
mkdir virtual/news.test.com/html -p
echo "<h1>news.test.com's page</h1>" > virtual/news.test.com/html/index.html

配置預設的配置檔案

這裡寫圖片描述

這裡寫圖片描述

vim /etc/httpd/conf.d/default.conf
<Virtualhost  _default_:80>
        DocumentRoot "/var/www/html"
        CustomLog    "logs/default.log" combined
</Virtualhost>
vim /etv/httpd/conf.d/news.conf #配置子配置檔案
<Virtualhost *80>   #虛擬主機的開啟埠
        ServerName "news.test.com" #主機名
        DocumentRoot "/var/www/virtual/news.test.com/html"#預設釋出目錄
        CustomLog "logs/new.log" combined #目錄
</Virtualhost>
<Directory "/var/www/virtual/news.test.com/html">
        Require all granted#預設釋出目錄授權
</Directory>

重啟服務

 systemctl restart network

然後修改/etc/hosts下檔案進行測試

IP地址 www.test.com news.test.com

最後測試效果為
這裡寫圖片描述

這裡寫圖片描述

apache使用者登入訪問釋出目錄的設定

首先我們建立使用者的目錄

cd /var/www/html/
mkdir admin
vim index.html

這裡寫圖片描述
接下來,開始設定使用者的訪問

htpasswd -m -c /etc/httpd/accessuser admin

設定使用者名稱為admin,然後密碼為redhat
這裡寫圖片描述
然後進入主配置檔案中進行修改

158<Directory "/var/www/html/admin"> 
159         AuthUserFile /etc/httpd/accessuser #使用者認證檔案
160         AuthName "please input your name and password!"#使用者認證提示資訊
161         AuthType basic #認證型別
162         Require valid-user#認證使用者,認證檔案使用者中所有可以訪問
163 </Directory>

這裡寫圖片描述
重啟服務

systemctl restart httpd

最後的測試效果如下
這裡寫圖片描述
輸入使用者和密碼之後,頁面如下
這裡寫圖片描述

自定義證書

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
首先我們安裝ssl和加密的軟體

yum install mod_ssl -y
yum intall crypto-utils -y

然後執行genkey命令加密 www.test.com網頁
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
然後copy下證書檔案的絕對地址和金鑰的絕對地址

/etc/pki/tls/cert/www.westos.com.crt
/etc/pki/tls/private/www.test.com.key

然後進入ssl配置檔案中進行以下修改

vim /etc/httpd/conf.d/ssl_conf

這裡寫圖片描述
然後進入子配置檔案中修改如下

 vim /etc/httpd/conf.d/login.conf

這裡寫圖片描述

     <Virtualhost *:443>
        ServerName "login.test.com"
        DocumentRoot "/var/www/virtual/login.test.com/html"
        CustomLog "logs/login.log" combined
        SSlEngine on #開啟https的功能
        SSLCertificateFile /etc/pki/tls/cert/www.westos.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.test.com.key##證書檔案與金鑰檔案
</Virtualhost>
<Directory "/var/www/virtual/login.test.com/html">
        Require all granted
</Directory>
<Virtualhost *:80>##網路重寫自動訪問https
        ServerName login.test.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</Virtualhost>

tips:
在RULE中
^(/.*)https://1
^(/.*)https://1 就代表^(/.*)$ 輸入的字元
301代表臨時重定向,302代表永久重定向
然後重啟httpd服務即可

systemctl restart httpd

apache的語言支援

http預設支援的有三種指令碼語言
1.html
2.php
3.cgi
html之前已經演示過了,主要是php和cgi的使用
php語言只需要安裝一個php支援的庫

yum install php -y

cgi指令碼