学习Linux课程第十二天
已經無力吐槽了,先回顧一下所學知識
一、Apache服務部署靜態網站
1、安裝httpd服務
主要是配置yum倉庫? vim? /etc/yum.repos.d/rhel.repo
[rhel]
name=rhel
baseurl=file:///media/cdrom
enable=1
gpgcheck=0
安裝服務 yum install httpd
2、配置服務文件參數
主配置文件路徑 : /etc/sshd/conf/sshd.conf
3、配置完后進行重啟服務并且加入開機啟動項
systemctl? restart? httpd
systemctl? enable httpd
二、SELinux 安全子系統
SELinux服務有三種配置模式,具體如下。
enforcing:強制啟用安全策略模式,將攔截服務的不合法請求。
permissive:遇到服務越權訪問時,只發出警告而不強制攔截。
disabled:對于越權的行為不警告也不攔截。
命令:? 查看模式:getenforce
? ? ? ? ? ? ?設置模式:setenforce 0? 關閉? ? setenforce 1 開啟
三、SELinux安全上下文
查看數據目錄上安全下文值? ls -Zd? 目錄
1、semanage命令
用于管理SELinux的策略? ?格式為“semanage [選項] [文件]”
-l參數用于查詢;-a參數用于添加;-m參數用于修改;-d參數用于刪除。
添加一條安全上下文? semanage? -a -t httpd_sys_content_t? 目錄(目錄路徑,目錄后面不加/)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?semanage -a -t httpd_sys_content_t? ? 目錄/*
使安全上下文生效? ? restorecon? -Rv 目錄/
四、個人主頁功能
1、開啟個人主頁
第1步:在httpd服務程序中,默認沒有開啟個人用戶主頁功能。為此,我們需要編輯下面的配置文件,然后在第17行的UserDir disabled參數前面加上井號(#),表示讓httpd服務程序開啟個人用戶主頁功能;同時再把第24行的UserDir public_html參數前面的井號(#)去掉(UserDir參數表示網站數據在用戶家目錄中的保存目錄名稱,即public_html目錄)。最后,在修改完畢后記得保存。
vim /etc/httpd/conf.d/userdir.conf第2步:在用戶家目錄中建立用于保存網站數據的目錄及首頁面文件。另外,還需要把家目錄的權限修改為755,保證其他人也有權限讀取里面的內容。
[root@doopli home]# su - doopli Last login: Fri May 22 13:17:37 CST 2017 on :0 [doopli@doopli ~]$ mkdir public_html [doopli@doopli ~]$ echo "This is doopli's website" > public_html/index.html [doopli@doopli ~]$ chmod -Rf 755 /home/doopli第3步:重新啟動httpd服務程序
第4步:開啟個人用戶上的httpd服務,在瀏覽器的地址欄中輸入網址,其格式為“網址/~用戶名”
查看該服務是否開啟? ?getsebool -a | grep http
開啟服務??setsebool -P httpd_enable_homedirs=on
2、添加用戶身份驗證
第1步:先使用htpasswd命令生成密碼數據庫。-c參數表示第一次生成;后面再分別添加密碼數據庫的存放文件,以及驗證要用到的用戶名稱(該用戶不必是系統中已有的本地賬戶)。
htpasswd -c /etc/httpd/passwd doopli
第2步:編輯個人用戶主頁功能的配置文件。把第31~35行的參數信息修改成下列內容,其中井號(#)開頭的內容為劉遄老師添加的注釋信息,可將其忽略。隨后保存并退出配置文件,重啟httpd服務程序即可生效。然后登陸
[root@doopli ~]# vim /etc/httpd/conf.d/userdir.conf 27 # 28 # Control access to UserDir directories. The following is an example 29 # for a site where these directories are restricted to read-only. 30 # 31 <Directory "/home/*/public_html"> 32 AllowOverride all #剛剛生成出來的密碼驗證文件保存路徑 33 authuserfile "/etc/httpd/passwd" #當用戶嘗試訪問個人用戶網站時的提示信息 34 authname "My privately website" 35 authtype basic #用戶進行賬戶密碼登錄時需要驗證的用戶名稱 36 require user doopli 37 </Directory> [root@doopli ~]# systemctl restart httpd五、虛擬主機功能
1、基于IP地址
第1步:給網卡配置三個IP地址,檢查是否正常ping通;分別在/home/wwwroot中創建用于保存不同網站數據的3個目錄,并向其中分別寫入網站的首頁文件。
(1)vim /etc/sysconfig/network-scripts/ifcfg-eno16777728?
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777728"
UUID="c9bb8fc7-9b62-4227-97b4-34489bde20b2"
ONBOOT="yes"
IPADDR0=192.168.10.10
IPADDR1=192.168.10.20
IPADDR2=192.168.10.30
PREFIX0=24
GATEWAY0=192.168.10.1
HWADDR=00:0C:29:5B:BC:2A
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
(2)創建數據目錄
[root@doopli ~]# mkdir -p /home/wwwroot/10 [root@doopli ~]# mkdir -p /home/wwwroot/20 [root@doopli ~]# mkdir -p /home/wwwroot/30 [root@doopli ~]# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html [root@doopli ~]# echo "IP:192.168.10.20" > /home/wwwroot/20/index.html [root@doopli ~]# echo "IP:192.168.10.30" > /home/wwwroot/30/index.html第2步:在httpd服務的配置文件中大約113行處開始,分別追加寫入三個基于IP地址的虛擬主機網站參數,然后保存并退出。記得需要重啟httpd服務,這些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分輸出信息……………… 113 <VirtualHost 192.168.10.10> 114 DocumentRoot /home/wwwroot/10 115 ServerName www.doopli.com 116 <Directory /home/wwwroot/10 > 117 AllowOverride None 118 Require all granted 119 </Directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.20> 122 DocumentRoot /home/wwwroot/20 123 ServerName bbs.doopli.com 124 <Directory /home/wwwroot/20 > 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost> 129 <VirtualHost 192.168.10.30> 130 DocumentRoot /home/wwwroot/30 131 ServerName tech.doopli.com 132 <Directory /home/wwwroot/30 > 133 AllowOverride None 134 Require all granted 135 </Directory> 136 </VirtualHost>第3步:此時訪問網站,則會看到httpd服務程序的默認首頁面。大家現在應該立刻就反應過來—這是SELinux在搗鬼。由于當前的/home/wwwroot目錄及里面的網站數據目錄的SELinux安全上下文與網站服務不吻合,因此httpd服務程序無法獲取到這些網站數據目錄。我們需要手動把新的網站數據目錄的SELinux安全上下文設置正確(見前文的實驗),并使用restorecon命令讓新設置的SELinux安全上下文立即生效,這樣就可以立即看到網站的訪問效果了,
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/* [root@doopli ~]# restorecon -Rv /home/wwwroot restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/10 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/10/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/20 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/20/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/30 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/30/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t2、基于主機域名
第1步:手工定義IP地址與域名之間對應關系的配置文件,保存并退出后會立即生效。可以通過分別ping這些域名來驗證域名是否已經成功解析為IP地址。
[root@doopli ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.10.10 www.doopli.com bbs.doopli.com tech.doopli.com第2步:分別在/home/wwwroot中創建用于保存不同網站數據的三個目錄,并向其中分別寫入網站的首頁文件。
[root@doopli ~]# mkdir -p /home/wwwroot/www [root@doopli ~]# mkdir -p /home/wwwroot/bbs [root@doopli ~]# mkdir -p /home/wwwroot/tech [root@doopli ~]# echo "WWW.doopli.com" > /home/wwwroot/www/index.html [root@doopli ~]# echo "BBS.doopli.com" > /home/wwwroot/bbs/index.html [root@doopli ~]# echo "TECH.doopli.com" > /home/wwwroot/tech/index.html第3步:在httpd服務的配置文件中大約113行處開始,分別追加寫入三個基于主機名的虛擬主機網站參數,然后保存并退出。記得需要重啟httpd服務,這些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分輸出信息……………… 113 <VirtualHost 192.168.10.10> 114 DocumentRoot "/home/wwwroot/www" 115 ServerName "www.doopli.com" 116 <Directory "/home/wwwroot/www"> 117 AllowOverride None 118 Require all granted 119 </directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.10> 122 DocumentRoot "/home/wwwroot/bbs" 123 ServerName "bbs.doopli.com" 124 <Directory "/home/wwwroot/bbs"> 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost> 129 <VirtualHost 192.168.10.10> 130 DocumentRoot "/home/wwwroot/tech" 131 ServerName "tech.doopli.com" 132 <Directory "/home/wwwroot/tech"> 133 AllowOverride None 134 Require all granted 135 </directory> 136 </VirtualHost>第4步:因為當前的網站數據目錄還是在/home/wwwroot目錄中,因此還是必須要正確設置網站數據目錄文件的SELinux安全上下文,使其與網站服務功能相吻合。最后記得用restorecon命令讓新配置的SELinux安全上下文立即生效,這樣就可以立即訪問到虛擬主機網站了,
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/www/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/bbs/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/tech/* [root@doopli ~]# restorecon -Rv /home/wwwroot reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/www context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/www/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/bbs context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/bbs/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/tech context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/tech/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s03、基于端口號
第1步:分別在/home/wwwroot中創建用于保存不同網站數據的兩個目錄,并向其中分別寫入網站的首頁文件。每個首頁文件中應有明確區分不同網站內容的信息,方便我們稍后能更直觀地檢查效果。
[root@doopli ~]# mkdir -p /home/wwwroot/6111 [root@doopli ~]# mkdir -p /home/wwwroot/6222 [root@doopli ~]# echo "port:6111" > /home/wwwroot/6111/index.html [root@doopli ~]# echo "port:6222" > /home/wwwroot/6222/index.html第2步:在httpd服務配置文件的第43行和第44行分別添加用于監聽6111和6222端口的參數。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf? ………………省略部分輸出信息……………… 33 #34 # Listen: Allows you to bind Apache to specific IP addresses and/or35 # ports, instead of the default. See also the <VirtualHost>36 # directive.37 #38 # Change this to Listen on specific IP addresses as shown below to 39 # prevent Apache from glomming onto all bound IP addresses.40 #41 #Listen 12.34.56.78:8042 Listen 80 43 Listen 6111 44 Listen 6222第3步:在httpd服務的配置文件中大約113行處開始,分別追加寫入兩個基于端口號的虛擬主機網站參數,然后保存并退出。記得需要重啟httpd服務,這些配置才生效。
[root@doopli ~]# vim /etc/httpd/conf/httpd.conf ………………省略部分輸出信息……………… 113 <VirtualHost 192.168.10.10:6111> 114 DocumentRoot "/home/wwwroot/6111" 115 ServerName www.doopli.com 116 <Directory "/home/wwwroot/6111"> 117 AllowOverride None 118 Require all granted 119 </Directory> 120 </VirtualHost> 121 <VirtualHost 192.168.10.10:6222> 122 DocumentRoot "/home/wwwroot/6222" 123 ServerName bbs.doopli.com 124 <Directory "/home/wwwroot/6222"> 125 AllowOverride None 126 Require all granted 127 </Directory> 128 </VirtualHost>第4步:因為我們把網站數據目錄存放在/home/wwwroot目錄中,因此還是必須要正確設置網站數據目錄文件的SELinux安全上下文,使其與網站服務功能相吻合。最后記得用restorecon命令讓新配置的SELinux安全上下文立即生效。
[root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/* [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222 [root@doopli ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/* [root@doopli ~]# restorecon -Rv /home/wwwroot/ restorecon reset /home/wwwroot context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6111 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6111/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6222 context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 restorecon reset /home/wwwroot/6222/index.html context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0 [root@doopli ~]# systemctl restart httpd Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.第5步:SELinux允許的與HTTP協議相關的端口號中默認沒有包含6111和6222,因此需要將這兩個端口號手動添加進去。該操作會立即生效,而且在系統重啟過后依然有效。設置好后再重啟httpd服務程序,然后就可以看到網頁內容了,
[root@doopli ~]# semanage port -a -t http_port_t -p tcp?6111 [root@doopli ~]# semanage port -a -t http_port_t -p tcp?6222 [root@doopli ~]# semanage port -l| grep http http_cache_port_t tcp 8080, 8118, 8123, 10001-10010 http_cache_port_t udp 3130 http_port_t tcp ?6222, 6111, 80, 81, 443, 488, 8008, 8009, 8443, 9000 pegasus_http_port_t tcp 5988 pegasus_https_port_t tcp 5989 [root@doopli ~]# systemctl restart httpd?
轉載于:https://www.cnblogs.com/doopli/p/10055859.html
總結
以上是生活随笔為你收集整理的学习Linux课程第十二天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《从0到1学习Flink》—— Apac
- 下一篇: 题解 T28305 【yizimi的旅游