第十二節課:第10章,Apache網站服務
第十章
10.1、網站服務程式
(讓使用者能夠通過網站訪問伺服器上的資源)
目前提供的網站服務有IIS,Nginx,Apache等,IIS是windows中預設的web服務程式。
Nginx是後起之秀,有多種優勢,但RHEL7中預設的是Apache,市場大部門還是Apache,所以我們學習Apache。
Apache是老牌服務,具有龐大的市場,Nginx則是新興的服務
1、掛載系統映象
mount /dev/cdrom /media/cdrom
2、配置yum倉庫
[rhel] //識別碼
name=rhel //名字
baseurl=file:///media/cdrom //路徑
enabled=1 //開啟
gpgcheck=0 //不校驗
3、安裝Apache,yum install httpd
//Apache的軟體包名稱為httpd
4、啟用httpd服務,並加入到開機啟動項中
systemctl restart httpd
systemctl enable httpd
然後我們開啟瀏覽器輸入本機的地址,會顯示下面介面,證明網站服務成功執行:
當看到上述頁面後,有兩個原因:
1、網站內沒有目錄
2、許可權不足
10.2、配置服務檔案引數
httpd的服務檔案的位置:
服務目錄: /etc/httpd
主配置檔案: /etc/httpd/conf/httpd.conf //最重要的配置引數
網站資料目錄: /var/www/html
訪問日誌: /var/log/httpd/access_log
錯誤日誌: /var/log/httpd/error_log
以下是配置檔案中各欄位的解釋:
ServerRoot //服務目錄
ServerAdmin //管理員郵箱
User //執行服務的使用者
Group //執行服務的使用者組
ServerName //網站伺服器的域名
DocumentRoot // 網站資料目錄
Listen //監聽的IP地址與埠號
DirectoryIndex //預設的索引頁頁面
ErrorLog //錯誤日誌檔案
CustomLog //訪問日誌檔案
Timeout //網頁超時時間,預設為300秒
當上述欄位更改時,我們可能會觸及到安全的限制,就是selinux
10.3、SElinux安全子系統
selinux安全子系統,是保障服務都只進行自己的本質工作,而杜絕做其他的不屬於自己的工作。
selinux:對服務程式的功能進行限制(域限制),對檔案資源的訪問限制(安全上下文)
域:管理服務的功能
安全上下文:讓服務只能訪問該訪問的檔案
selinux有三種配置模式:
enforcing:強制啟用安全策略模式,攔截服務不合法請求。
permissive:遇到服務越權訪問時,只發警告不攔截。
disabled:對越權行為不警告不攔截。
以下是selinux相關的命令:
getenforce和setenforce相當於selinux的總開關,0為關,1為開
getenfoece //查詢selinux的狀態
setenforce //修改selinux的狀態,例如:setenforce 0
針對selinux的安全上下文:
可使用 ls -Z 來查詢檔案的安全上下文
semanage 修改和查詢selinux的安全上下文。semanage 【選項】【檔案】
-l //引數用於查詢 -a //用於新增
-m //用於修改 -d //用於刪除
-t //型別 fcontext 表示修改安全上下文
例: semanage -a -t httpd_sys_content_t /home/wwwroot
restorecon 用於修改的上下文立即生效
-R //遞迴操作,針對目錄 -i //忽略不存在的目錄
-e //排除目錄 -v //顯示詳細過程
-F //強制恢復
針對selinux的域:
getsebool 查詢selinux的布林值
-a //所有的服務
setsebool 修改布林值
-P 引數用於永久且立即生效
10.4、個人主頁功能
需要在配置檔案中啟用功能:vim /etc/httpd/conf.d/userdir.conf
1、把userdir disable 和 userdir public_html 給註釋起來(前面加#號)
2、把網站的目錄設定為755許可權
3、修改selinux的域:setsebool -P httpd_enable_homedirs=on
4、重啟服務
個人主頁的密碼功能:
1、生成密碼資料庫:htpasswd -c /etc/httpd/passwd linuxprobe //-c代表第一次生成
2、編輯配置檔案:vim /etc/httpd/conf.d/userdir.conf
<Directory "/home/*/public_html">
AllowOverride all
authuserfile "/etc/httpd/passwd" //密碼檔案的儲存路徑
authname "My privately website" //網站的提示資訊
authtype basic
require user linuxprobe //密碼登入時需要驗證的賬戶名稱
</Directory>
3、重啟服務
10.5、虛擬主機功能
基於ip地址
1、分別配置三個IP地址
2、在配置檔案中寫入:vim /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.10> //地址變化,其他相同的配置,再寫入其他地址配置資訊,這裡就寫入一個
DocumentRoot /home/wwwroot/10
ServerName www.linuxprobe.com
<Directory /home/wwwroot/10 >
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
3、設定安全上下文:例:semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
4、重啟服務並開啟瀏覽器輸入不同的ip地址觀察
基於主機名
1、在vim /etc/hosts 中定義域名解析:192.168.10.10 www.linuxprobe.com bbs.linuxprobe.com tech.linuxprobe.com
2、設定網站首頁檔案
例:echo "hahaha" > /home/wwwroot/www
3、寫入配置檔案 vim /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.10>
DocumentRoot "/home/wwwroot/www"
ServerName "www.linuxprobe.com" //就域名改變,其他的資訊不變,再寫入另外兩個域名的資訊,這裡之寫入了一個
<Directory "/home/wwwroot/www">
AllowOverride None
Require all granted
</directory>
</VirtualHost>
4、設定安全上下文
5、重啟服務並開啟瀏覽器,輸入不同的域名測試
基本埠號
1、寫入網站的首頁目錄:echo "port:6111" > /home/wwwroot/6111/index.html
2、在 vim /etc/httpd/conf/httpd.conf 中寫入 監聽的埠號:
listen 6111
listen 6222
3、寫入配置檔案:vim /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.10.10:6111> //就埠號不同,其他都相同,再寫入其他埠號的配置資訊,這裡只寫入了一個
DocumentRoot "/home/wwwroot/6111"
ServerName www.linuxprobe.com
<Directory "/home/wwwroot/6111">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
4、設定安全上下文
5、設定selinux,使其允許埠號:semanage port -a -t http_port_t -p tcp 6111
6、重啟服務並瀏覽器訪問實驗
10.6、Apache的訪問控制
Apache通過指令Allow 允許某主機訪問伺服器上的網站資源
通過指令 deny 禁止某主機訪問伺服器上的網站資源
order指令用於定義allow和deny指令起作用的順序,例如:order allow deny :先匹配允許,若允許則成功訪問,反之則拒絕。
複習:基於埠號虛擬機器
12.7:第十一章,第十二章
12.8:第十三章
12.9:第十四章,第十五章