1. 程式人生 > >Linux 基礎 之 Apache 的部署及配置

Linux 基礎 之 Apache 的部署及配置

一、Apache 簡介

         Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。它快速、可靠並且可通過簡單的API擴充,將Perl/Python直譯器編譯到伺服器中。同時Apache音譯為阿帕奇,是北美印第安人的一個部落,叫阿帕奇族,在美國的西南部。也是一個基金會的名稱、一種武裝直升機等等。

         Apache的特點是簡單、速度快、效能穩定,並可做代理伺服器來使用。它可以在大多數計算機作業系統中執行,由於其跨平臺和安全性被廣泛使用。

企業中常用的web服務,用來提供http://(超文字傳輸協議)

二、Apache的安裝部署

1.安裝apache軟體       
yum install httpd -y


2.安裝apache的手冊

yum install httpd-manual -y


3.開啟apache服務並設為開機自啟動

[[email protected] ~]# systemctl start httpd
[[email protected] ~]# systemctl enable httpd

4.設定火牆永久允許http,htpps

[[email protected] ~]# firewall-cmd --permanent --add-service=http
[[email protected] ~]# firewall-cmd --permanent --add-service=https
[[email protected] ~]# firewall-cmd --reload

[[email protected] ~]# firewall-cmd --list-all

5.重啟服務

6.開啟瀏覽器測試(在瀏覽器中輸入測試端ip,看到apache已經開啟)

檢視apache的幫助手冊

7.在預設釋出目錄:/var/www/html下建立釋出檔案

[[email protected] ~]# cd /var/www/html/
[[email protected] html]# vim index.html

寫入:

測試:在瀏覽器中輸入測試端ip,可以看到相應的檔案內容


三、apache的基本資訊修改

apache的基礎資訊

主配置目錄: /etc/httpd/conf
主配置檔案:/etc/httpd/conf/httpd.conf
子配置目錄:/etc/http/conf.d
子配置檔案:/etc/httpd/conf.d/*.conf
預設釋出目錄:/var/www/html
預設釋出檔案:index.html
預設監聽埠:80
預設安全上下文:httpd_sys_content_t
程式開啟預設使用者: apache
錯誤日誌 :/var/httpd/log/error_log

一、修改預設埠
1.檢視預設監聽埠是80

2.編輯主配置檔案

預設埠80

將預設埠改為8080

重新啟動服務

檢視埠修改成功

3.開啟瀏覽器進行訪問(修改的8080埠無法訪問)

4.在火牆中允許8080埠

圖形方式新增

列出火牆資訊,8080埠已經新增成功

5.再次測試:8080埠可以進行訪問

6.再次編輯主配置檔案,修改埠為6666

7.當重新啟動服務時失敗,檢視selinux狀態,如果為強制模式,則重啟服務會失敗

8.當將selinux改為警告模式下則重啟成功

9.這是因為selinux只允許幾個特定的埠

10.給selinux新增6666埠

11.火牆中允許6666埠

12.重新啟動服務測試:6666埠可以訪問檔案:

13.測試:6666埠可以訪問檔案

二、修改預設釋出檔案

在做實驗先把埠修改成預設埠80,方便測試

1.在預設釋出目錄下建立一個新的釋出檔案
[[email protected] html]# vim westos.html

2.重新啟動服務

3.測試 ;(發現預設釋出檔案沒有改變)

只有在ip後新增新發布的檔名才能看到相應內容

4.編輯主配置檔案

[[email protected] html]# vim /etc/httpd/conf/httpd.conf

在164 行將westos.html 寫在前面

5.重新啟動服務

[[email protected] html]# systemctl restart httpd.service

6.測試 (預設釋出檔案修改成功)

7.如果將westo.html刪除掉,則預設釋出檔案又是index.html

三、修改預設釋出目錄

1.新建一個目錄
[[email protected] html]# mkdir /westos/web/html -p


2.新建目錄下編輯一個釋出檔案

[[email protected] html]# vim /westos/web/html/westos.html


3.編輯主配置檔案
[[email protected] html]# vim /etc/httpd/conf/httpd.conf

修改預設釋出檔案

修改預設釋出目錄,給預設釋出目錄提供所有許可權

4.測試:不成功

檢視報錯,是由於selinux的安全上下文的問題

5.修改安全上下文為httpd_sys_content_t

[[email protected] html]# semanage fcontext -a -t httpd_sys_content_t '/westos(/.*)?'
[[email protected] html]# restorecon -RvvF /westos/

重新啟動服務

[[email protected] html]# systemctl restart httpd.service


6.測試成功:

四、apache的虛擬主機

虛擬主機的配置:

1.清空之前的實驗環境
[[email protected] ~]# rm -fr /etc/httpd/conf/httpd.conf
[[email protected] ~]# yum reinstall httpd -y

2.在測試端主機做好本地解析

3測試:此時輸入三個不同的網址,看到的檔案都相同


4.在/var/www目錄下建立指定訪問news和music的訪問目錄
[[email protected] ~]# cd /var/www/
[[email protected] www]# mkdir westos.com/news/html -p
[[email protected] www]# mkdir westos.com/music/html -p

5.在訪問目錄下寫入預設釋出檔案
[[email protected] www]# vim westos.com/news/html/index.html


[[email protected] www]# vim westos.com/music/html/index.html

6.建立編輯子配置檔案

(1)編輯預設站點的子配置檔案
[[email protected] www]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim a_default.conf 編輯


寫入
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>

(2)編輯news.westos.com站點的子配置檔案
[[email protected] conf.d]# vim news.conf 編輯


寫入
<VirtualHost *:80>
        ServerName news.westos.com   訪問域名
        DocumentRoot /var/www/westos.com/news/html    訪問域名時讀取的釋出檔案
        CustomLog  logs/news.log combined     logs相當於 /etc/httpd/logs
</VirtualHost>
<Directory "/var/www/westos.com/news/html">         子配置檔案的預設目錄,給該目錄許可權才可以訪問
        Require all granted
</Directory>


(3)編輯music.westos.com站點的子配置檔案
[[email protected] conf.d]# cp news.conf music.conf


[[email protected] conf.d]# vim music.conf 編輯


寫入
<VirtualHost *:80>
        ServerName music.westos.com
        DocumentRoot /var/www/westos.com/music/html
        CustomLog  logs/music.log combined
</VirtualHost>
<Directory "/var/www/westos.com/music/html">
        Require all granted
</Directory>

7.重新啟動服務

[[email protected] conf.d]# systemctl restart httpd.service

8.測試 在真實主機開啟網頁測試
輸入www.westos.com
hello westos


輸入news.westos.com
news's page


輸入music.westos.com
music's page

五、apache的訪問控制

基於ip的訪問控制

新增禁止訪問的ip
指定ip訪問 不允許ip為172.25.254.3的客戶端訪問,其他使用者可以訪問
[[email protected] conf.d]# vim a_default.conf

寫入
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        Order Allow,Deny
        Allow from all
        Deny from 172.25.254.3
</Directory>


[[email protected] conf.d]# systemctl restart httpd.service 重新啟動服務


測試:主機172.25.254.3 訪問失敗

主機172.25.254.103 訪問成功

新增允許訪問的ip

指定ip為172.25.254.3客戶端可以訪問,其他使用者不能訪問

[[email protected] conf.d]# vim a_default.conf

順序訪問Deny和Allow(Allow會覆蓋掉Deny的設定)只允許ip為172.25.254.3的主機訪問

寫入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        Order Deny,Allow
        Allow from 172.25.254.3
        Deny from all
</Directory>


[[email protected] conf.d]# systemctl restart httpd.service  重新啟動服務

測試: 主機172.25.254.3 訪問成功

主機172.25.254.103 訪問失敗

基於使用者的訪問控制

有使用者身份的可以訪問,沒有的不可以訪問
1.新建使用者admin
[[email protected] conf.d]# htpasswd -cm http_userlist admin

"-cm中的c是覆蓋性建立"

新建一個使用者admin1時,如果用-c引數,則會覆蓋掉admin使用者


所以在已有使用者前提下,建立新使用者不要使用-c引數


2.在配置檔案中新增使用者認證

[[email protected] conf.d]# vim a_default.conf  編輯

寫入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html">
        AuthUserFile /etc/httpd/conf.d/http_userlist      建立使用者的檔案
        AuthName  "Please input username and password !!"
        AuthType basic                        認證方式為最基本認證
        Require valid-user                   對檔案下的所有使用者有效
</Directory>


[[email protected] conf.d]# systemctl restart httpd.service    重新啟動服務


測試:

在瀏覽器中輸入服務端ip,則提示要輸入使用者認證資訊
登陸使用者 admin 密碼ls

認證成功

六、apache支援的語言

1.html 上述為html的例子
2.php

1> 編寫php測試頁
[[email protected] html]# vim index.php

寫入
<?php
        phpinfo( );
?>

2.安裝php
[[email protected] html]# yum install php -y

此時可以看到子配置目錄下有php.conf這個檔案


[[email protected] html]# systemctl restart httpd.service 重新啟動服務

測試:輸入172.25.254.103/index.php

3.cgi

1.在/var/www/cgi-bin/目錄下建立並編輯訪問檔案

2.給檔案新增可執行的許可權

3測試:

1.在其他目錄下新建並編輯訪問檔案

2.測試:測試的時候指令碼不執行

3.編輯配置檔案
[[email protected] html]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# vim a_default.conf

寫入:
<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        CustomLog logs/default.log combined
</VirtualHost>
<Directory "/var/www/html/cgi">
         Options +ExecCGI
         AddHandler cgi-script .cgi
</Directory>


[[email protected] conf.d]# systemctl restart httpd.service


測試:172.25.254.103/cgi/index.cgi

這是因為安全上下問的問題

修改安全上下文和/var/www/cgi-bin/的安全上下文一致

給檔案新增可執行許可權

重新啟動服務

測試:172.25.254.103/cgi/index.cgi

4.python

1.將寫好的python指令碼放在/var/www/cgi-bin/目錄下

2.檢視python指令碼內容

3.給該檔案新增執行許可權

4.安裝mod_wsgi

5.進入子配置目錄,編輯子配置檔案webapp.conf

5.在測試端主機新增相應的解析資訊

6.重新啟動服務

測試:在測試端主機輸入webapp.westos.com,會顯示指令碼執行結果

七、HTTPS

https概念

HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文字傳輸安全協議),是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是 SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象識別符號體系),句法類同http:體系。用於安全的HTTP資料傳輸。

HTTPS和HTTP的區別

一、http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性ssl加密傳輸協議。

二、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

三、http的連線很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

https的實現

1.安裝mod_ssl軟體
[[email protected] html]# yum install mod_ssl -y


此時子配置目錄下會有ssl.conf檔案

3.重啟服務

4.測試:在瀏覽器中輸入的ip前加https://,可以實現.

5.獲得加密key 點Advanced  點選Add Exception

點Get Certificate  結束後  點  Confirm  Security  Exception

此時,再次輸入測試ip,就會自動轉入加密形式

但是,點開這個鎖,會發現這個加密key是由apache提供的,這樣不安全

刪除加密key
點選瀏覽器右上角三橫槓  點開後點擊齒輪

進入改介面點選  View Certificates

選中剛才獲得的加密key,點delete刪除掉

自主提供加密key

1.安裝 crypto-utils

2.進入目錄 /etc/httpd/conf.d下,生成加密檔案

執行genkey命令後,我們需要操作幾步來獲取證書:

生成隨機數時, 需要敲擊我們在虛擬機器敲擊鍵盤,使其進行下去

3.檢視生成的加密key資訊

4.編輯子配置目錄下的ssl.conf檔案

[[email protected] conf.d]# vim ssl.conf

將加密key資訊寫入(將原有的可以先註釋掉)


5.重啟服務[[email protected] conf.d]# systemctl restart httpd.service

6.測試 並新增https://172.25.254.103
重新獲取加密key

此時檢視到獲取的加密key就是我們自己提供的

普通訪問自動轉換加密訪問方式

1.我們發現,在輸入一個網址的時候,必須在網址前新增http://才能轉換到加密訪問的方式

2.實現自動轉化,設定https虛擬主機並設定網頁重寫

1.進入/var/www/westos.com目錄下,建立目錄/login/html
[[email protected] westos.com]# mkdir login
[[email protected] westos.com]# mkdir login/html

2.在新建目錄下新增訪問檔案

編輯[[email protected] westos.com]# vim login/html/index.html


寫入<h1>login's page</h1>

3.編輯主配置檔案

[[email protected] conf.d]# vim login.conf


<VirtualHost *:443>
        SSLEngine on
        ServerName login.westos.com
        DocumentRoot /var/www/westos.com/login/html
        CustomLog  logs/login.log combined
        SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt
        SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key
</VirtualHost>
<Directory "/var/www/westos.com/login/html">
        Require all granted
</Directory>
<VirtualHost *:80>
        ServerName login.westos.com
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
</VirtualHost>

^(/.*)$                              客戶在瀏覽器位址列中輸入的所以字元
https://                           強制客戶加密訪問
%{HTTP_HOST}         客戶請求主機
$1                                    $1表示 ^(/.*)$的值
[redirect=301]               永久重寫 302臨時轉換

重新啟動服務

[[email protected] conf.d]# systemctl restart httpd.service

測試:

在測試端的主機新增相應的解析資訊
編輯[[email protected] ~]# vim /etc/hosts


清空瀏覽器快取
ctrl+shift+delete
輸入 login.westos.com

直接調轉至 https://login.westos.com

八、搭建論壇

1.編寫子配置檔案bbs.conf
[[email protected] conf.d]# cp music.conf  bbs.conf


[[email protected] conf.d]# vim bbs.conf

在命令模式下:%s/music/bbs/g 將全文的music都轉換成bbs

2.建立釋出目錄

[[email protected] conf.d]# mkdir /var/www/westos.com/bbs/html -p


3.將主機上的搭建論壇的安裝包傳送到服務端的釋出目錄下

4.將安裝包解壓


[[email protected] html]# unzip Discuz_X3.2_SC_UTF8.zip

解壓完成之後會出現三個檔案

5.可以進入readme/,檢視readme.txt
[[email protected] html]# cd readme/
[[email protected] readme]# less readme.txt

可以看到安裝的相應操作步驟

接下來提示步驟進行配置:

(1)進入/var/www/westos.com/bbs/html/upload

(2)給config和data目錄新增許可權(注意要加-R引數,表示遞迴)
[[email protected] upload]# chmod -R 777 config
[[email protected] upload]# chmod -R 777 data