linux學習 Apache

Je_suis_Lulu發表於2017-05-18

Apache的基本安裝

<一>Apache簡介

一、Apache的主要優點:

  支援HTTP/1.1協議:實現了HTTP/1.1與HTTP/1.0相容;

  支援CGI協議:使用mod_cgi模組來支援CGI功能。

  支援HTTP認證:

  Apache支援虛擬主機:即在一臺伺服器上使用不同的主機名來提供多個HTTP服務等等

二、Apache的軟體安裝及基本配置檔案

(1)rpm  -qa |  grep  httpd

  yum install  httpd  -y  ##Apache被重新命名為HTTP

(2)安裝成功後生成的主要檔案及目錄有:

1.apache的預設釋出目錄及檔案:

  /var/www/html    ##預設目錄

  /var/www/html/index.html   ##預設釋出檔案

2.apache的配置檔案:

  /etc/httpd/conf/httpd.conf   ##Apache的主配置檔案

  /etc/httpd/conf.d/*.conf     ##apache的子配置檔案

(3)apache的預設埠:80埠

可以使用命令來檢視Apache是否已經監聽80埠

netstat  -an  |grep  :80

為保證客戶端能夠訪問Apache服務,可以在防火牆中開放對80埠的限制,命令如下:

iptables  -I INPUT  -p  tcp --dport  80  -j ACCEPT

<二>Apache的基本配置

一、修改預設釋出檔案

vim  /etc/httpd/conf/httpd.conf

164行原內容為:DirectoryIndex  index.html  ##預設釋出檔案為/var/www/html/index.html

修改為:DirectoryIndex westos.html  ##預設釋出檔案為westos.html

:wq

二、修改預設釋出目錄

1.先建立目錄

mkdir  /westos/www/test  -p   ##第歸建立目錄/westos/www/test

vim  /westos/www/test/westos.html  ##編輯預設釋出檔案

2.修改預設釋出目錄

vim  /etc/httpd/conf/httpd.conf

編輯:

120DocumentRoot "/westos/www/test"  ##預設釋出目錄為/westos/www/test

<Directory  "/westos/www/test">

       Require all  granted   ##授權

</Directory>

原內容如下:


修改後內容如下:


3.systemctl  restart httpd   ##一定要重啟服務

三、.測試:在客戶端訪問http://172.25.254.109

注意:當訪問時出現下列現象,需檢查selinux是否是enforcing狀態。若是enforcing狀態,則需要更改為disabled狀態或者檢視並更改預設釋出檔案的安全上下文。

 

檢視檔案安全上下文:

cd  /westos/www/test

ls -Z

安全上下文修改:semanage  fcontext  -a -t  http_sys_content_t  '/westos(/.*)?'

restorecon  -RvvF /westos    ##重新整理

或者:檢視selinux狀態,編輯配置檔案使selinux為disabled狀態

vim  /etc/selinux/config

SELINUX=disabled

:wq

reboot

<三>設定IP訪問

一、設定IP訪問許可權vim  /etc/httpd/conf/httpd.conf

1.去掉119行註釋,使預設釋出目錄/var/www/html生效

  164行改回:DirectoryIndex  index.html

2.cd  /var/www/html

  mkdir admin   ##新建目錄

  cd admin

  vim index.html   ##編輯釋出檔案

3.vim  /etc/httpd/conf/httpd.conf

 編輯:

(1)  ##允許所有人訪問admin目錄但是拒絕IP為172.25.254.90的機主

124  <Directory"/var/www/html/admin">

125              order Allow,Deny

126         Allow from All

127         Deny from 172.25.254.90

128</Directory>

:wq

重啟HTTP服務

在172.25.254.90主機測試結果如下:

在其他主機測試結果如下:

(2)#只允許172.25.254.90的機主訪問

124<Directory "/var/www/html/admin">

125         order  Deny,Allow  

126         Allow from 172.25.254.90

127         Deny from All

128</Directory>

:wq

重啟服務

在172.25.254.109主機測試如下:

在其他主機測試如下:


<三>設定使用者的訪問

1.對釋出目錄加密

[root@localhosthtml]# htpasswd -cm /etc/httpd/accessuser admin   ##對該目錄加密

Newpassword:   ##不顯行輸入密碼

Re-typenew password:   ##不顯行確認密碼

Addingpassword for user admin   ##設定成功

可以檢視密碼:cat /etc/httpd/accessuser

2.編輯配置檔案

vim  /etc/httpd/conf/httpd.conf

124<Directory "/var/www/html/admin">

125         AllowOverride  All  ##允許使用目錄中.htaccess檔案

126         AuthUserFile  /etc/httpd/accessuser  ##設定檔案密碼的路徑

127         AuthName  "Please input your name andpassword!"  ##在瀏覽器訪問時顯示的內容

128         AuthType  basic ##使用者認證的型別是由mod_auth提供的basic

129         Require  valid-user ##定義允許訪問的使用者

##Require user  admin   也可以用此命令來定義可以訪問的使用者

130</Directory>

:wq

3.systemctl  restart httpd

4.測試:

若輸入正確的使用者和密碼即可訪問成功:

若輸入密碼或使用者錯誤會顯示“Authorization Required”的錯誤資訊

<四>Apache語言支援

1.php語言

vim /var/www/html/index.php

<?php

       phpinfo();

?>

systemctl restart  httpd

2.cgi語言

(1)mkdir /var/www/html/cgi

  cd /var/www/html/cgi

(2)vim index.cgi

    #!/usr/bin/perl

    print "Content-type: text/html\n\n";

    print `date` ;         ##執行該命令

   :wq

(3)執行指令碼

    perl  index.cgi      ##執行指令碼

   chmod  +x  index.cgi      ##新增執行許可權

  則可以執行該命令來執行指令碼:  ./index.cgi


3.客戶端訪問設定

(1)http服務端

vim /etc/httpd/conf/httpd.conf

編輯內容如下:

   <Directory"/var/www/html/cgi">

       Options+ExecCGI

       AddHandler  cgi-script.cgi

   </Directory>

  :wq


(2)systemctl  restart  httpd      ##重啟服務

(3)在客戶端訪問:172.25.254.109/cgi/index.cgi,即在客戶端執行該檔案內容


<五>Apache的虛擬主機配置

一、定義:可以讓一臺Apache伺服器在被訪問不同域名時,顯示不同的主頁

二、配置過程

(1)先建立不同域名的預設釋出目錄及預設釋出檔案

mkdir /var/www/virtual  -p  

mkdir /var/www/virtual/news.westos.com -p   

mkdir /var/www/virtual/news.westos.com/html -p    ##建立news.westos.com網頁的預設釋出目錄

cd /var/www/

echo "news.westos.com'page" >virtul/news.westos.com/html/index.html  

##建立news.westos.com的預設釋出檔案

(2)配置子配置檔案:指定域名的預設釋出目錄及預設釋出檔案

cd /etc/httpd/conf.d                     ##訪問其他域名時預設執行該檔案內容

vim default.conf    

<Virtualhost _default_:80>                ##訪問預設80埠時看以下檔案內容

       DocumentRoot  "/var/www/html"      ##預設釋出目錄為/var/www/html

       CustomLog  "logs/default.log"combined    ##將Apache的四種日誌檔案均記錄

</Virtualhost>

注:Apache的有四種日誌型別:被訪問時的日誌、拒絕訪問的日誌、警告日誌、Apache出現報錯的日誌


(3)systemctl  restart httpd    ##重啟服務

(4)測試端

1.修改本機解析

vim /etc/hosts

IP news.westos.com  www.westos.com


2.瀏覽器端訪問:news.westos.com

 

(5)vim news.westos.conf                    ##子配置檔案

<Virtualhost *:80>                       

       Servername "news.westos.com"      ##訪問域名news.westos.com

       DocumentRoot "/var/www/virtual/news.westos.com/html"   ##設定預設釋出目錄

       CustomLog "logs/news.log" combined 

</Virtualhost>                            

<Directory"/var/www/virtual/news.westos.com/html">   ##授權,任何使用者訪問時都可以讀該目錄中內容

       Require all granted

</Directory>


(3)systemctl  restart httpd    ##重啟服務

(3)測試端

1.修改本機解析

vim /etc/hosts

IP news.westos.com  www.westos.com

3.瀏覽器端訪問:news.westos.com

(5)vim  money.westos.conf

<Virtualhost *:80>                       

       Servername "money.westos.com"      ##訪問域名money.westos.com

       DocumentRoot "/var/www/virtual/money.westos.com/html"   ##設定預設釋出目錄

       CustomLog "logs/news.log" combined 

</Virtualhost>                            

<Directory "/var/www/virtual/money.westos.com/html">   ##授權,任何使用者訪問時都可以讀該目錄中內容

       Require all granted

</Directory>

:wq

(7)重啟服務

(8)測試端訪問money.westos.com

<六>網頁訪問https

一、下載相關軟體

1.yum install  mod_ssl  -y   ##下載加密認證模組

2.yum install crypto-utils ##下載證照

3.執行命令:genkey  www.westos.com     ##生成該網頁的證照和金鑰

如下:選擇密碼長度

 

 

 

如下生成密碼過程中,需要敲鍵盤或者移動滑鼠

如下:選擇將不給CSR傳送認證申請



二、建立域名預設目錄及檔案

1.cd /var/www/virtual

 mkdir login.westos.com/html -p

 vim /var/www/virtual/login.westos.com/html/index.com

 <h1>login.westos.com</h1>


2.vim /etc/httpd/conf.d/login.conf    ##寫子配置檔案

<Virtualhost *:443>                     ##設定以下內容訪問的埠是443,即https訪問

       Servername "login.westos.com"  ##域名login.westos.com

       DocumentRoot "/var/www/virtual/login.westos.com/html" 

       CustomLog "logs/login.log" combined    ##儲存日誌

       SSLEngine on                    ##開啟網路認證

       SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt   ##證照檔案所在位置

       SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key  ##認證金鑰所在位置

</Virtualhost>

<Directory"/var/www/virtual/login.westos.com/html">    ##授權

       Require all granted

</Directory>

3.systemctl  restart httpd

4.測試端:

vim /etc/hosts

Ip login.westos.com   ##解析

再訪問:https:login.westos.com

會出現以下提示資訊,選擇risk


再選擇獲得證照或認證


檢視證照資訊

(4)網頁重寫

vim /etc/httd/cond.g/login.conf

新增內容如下

<Virtualhost *:80>                  ##當域名訪問埠80時,即http訪問,執行以下內容

       Servername login.westos.com 

       RewriteEngine on             ##域名重寫功能開啟

       RewriteRule ^ (/.*)$ https://%{HTTP_HOST}$1 [redirect=301]   ##將所有字元臨時轉換為https格式的字元

</Virtualhost>

###[redirect=301]:表示臨時轉換

###[redirect=302]:表示永久轉換

:wq

(5)systemctl  restart httpd

(6)測試

在證照所在端進行訪問先作地址解析

vim /etc/login.westos.com

172.25.254.109  login.westos.com

:wq

再訪問:login.westos.com


   

相關文章