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
(