linux計算機基礎 DAY06
阿新 • • 發佈:2018-11-14
Apache(httpd) Nginx Tomcat
Web通訊基本概念
• 基於 B/S (Browser/Server)架構的網頁服務
– 服務端提供網頁
– 瀏覽器下載並顯示網頁 • Hyper Text Markup Language,超文字標記語言(html)
• Hyper Text Transfer Protocol,超文字傳輸協議(http) 一、搭建基本的Web伺服器
虛擬機器Server0:
1.安裝httpd軟體包
2.重起httpd服務,設定開機自起服務
]# echo '<h1>NSD1810 Web' > /var/www/html/index.html
]# cat /var/www/html/index.html
<h1>NSD1810 Web 虛擬機器Desktop0:
1.利用firefox 172.25.0.11 測試 ##################################################
• 提供的預設配置
– Listen:監聽地址:埠(80)
– ServerName:本站點註冊的DNS名稱(空缺)
– DocumentRoot:網頁根目錄(/var/www/html)
– DirectoryIndex:起始頁/首頁檔名(index.html DNS伺服器:虛擬機器classroom
server0.example.com
www0.example.com
webapp0.example.com 測試DNS解析:
[ [email protected] ~]# nslookup server0.example.com
[[email protected] ~]# nslookup www0.example.com
[[email protected] ~]# nslookup webapp0.example.com #################################################
– DocumentRoot:網頁檔案根目錄(/var/www/html)
虛擬機器Server0:
1.建立新的網頁檔案存放路徑
]# mkdir /var/www/myweb
]# echo '<h1>wo shi myweb' > /var/www/myweb/index.html
]# cat /var/www/myweb/index.html
<h1>wo shi myweb
2.修改配置檔案
# vim /etc/httpd/conf/httpd.conf #修改主配置檔案
DocumentRoot "/var/www/myweb"
3. 重起httpd服務 虛擬機器Desktop0:
[ [email protected] ~]# firefox server0.example.com
##############################################
網路路徑與實際路徑對應關係
網路路徑:在瀏覽器輸入的路徑
實際路徑:伺服器存放網頁檔案的路徑 客戶端: firefox server0.example.com 服務端:/var/www/myweb firefox server0.example.com---》DNS---》172.25.0.11 172.25.0.11:80----->服務端----->httpd-----》DocumentRoot
-----》/var/www/myweb-->網頁檔案根目錄 客戶端: firefox server0.example.com/abc 服務端:/var/www/myweb/abc
客戶端: firefox server0.example.com/var/www/myweb 服務端:/var/www/myweb/var/www/myweb #################################################
虛擬機器Server0:
[ [email protected] ~]# mkdir /var/www/myweb/abc
[[email protected] ~]# echo '<h1>wo shi abc' > /var/www/myweb/abc/index.html
[[email protected] ~]# 虛擬機器Desktop0:
[[email protected] ~]# firefox server0.example.com/abc #################################################
虛擬Web主機
作用:一臺伺服器可以提供多個Web站點 • 區分方式
– 基於域名的虛擬主機
– 基於埠的虛擬主機
– 基於IP地址的虛擬主機
• 為每個虛擬站點新增配置
<VirtualHost IP地址:埠>
ServerName 此站點的DNS名稱
DocumentRoot 此站點的網頁根目錄
</VirtualHost>
• 配置檔案路徑
– /etc/httpd/conf/httpd.conf (主配置檔案)
– /etc/httpd/conf.d/*.conf (呼叫配置檔案) 虛擬機器Server0:
[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
]# mkdir /var/www/qq /var/www/baidu
]# echo '<h1>企鵝' > /var/www/qq/index.html
]# echo '<h1>百度' > /var/www/baidu/index.html
]# systemctl restart httpd ###############################################
一旦使用虛擬web主機功能,所有的站點都必須用虛擬web主機來實現 <VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /var/www/myweb
</VirtualHost> #################################################
配置目錄訪問 httpd 執行身份(使用者/組):apache
客戶機地址限制
• 使用 <Directory> 配置區段
– 每個資料夾自動繼承其父目錄的ACL訪問許可權
– 除非針對子目錄有明確設定
<Directory /opt>
Require all denied
</Directory> /opt/test/index.html 案例3:配置網頁內容訪問
在 Web 網站 http://server0.example.com 的
DocumentRoot 目錄下建立一個名為 private 的子目錄
要求如下: 1.檢視http://server0.example.com 的DocumentRoot 目錄
]# cat /etc/httpd/conf.d/nsd01.conf
2.建立相應的網頁檔案目錄
]# mkdir /var/www/myweb/private
]# echo '<h1>wo shi private' > /var/www/myweb/private/index.html
]# ls /var/www/myweb/private/ 3.在虛擬機器Desktop0上驗證
]# firefox server0.example.com/private 4.從 虛擬機器server0上,任何人都可以瀏覽 private的內容,
但是從其他系統不能訪問這個目錄的內容 [[email protected] ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory /var/www/myweb/private>
Require ip 172.25.0.11
</Directory> [[email protected] ~]# systemctl restart httpd 5.在虛擬機器desktop0訪問測試
Forbidden You don't have permission to access /private/ on this server. #################################################
案例4:使用自定Web根目錄
調整 Web 站點 http://server0.example.com 的網頁
目錄,要求如下:
1)新建目錄 /webroot,作為此站點新的網頁檔案目錄
]# mkdir /webroot
]# echo '<h1>wo shi webroot' > /webroot/index.html
]# ls /webroot/
2)修改配置檔案/etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /webroot
</VirtualHost>
3)訪問控制,修改配置檔案/etc/httpd/conf.d/nsd02.conf
<Directory /webroot>
Require all granted
</Directory>
[[email protected] ~]# systemctl restart httpd 4)SELinux的安全上下文(標籤)
[[email protected] ~]# ls -Zd /var/www/ #檢視安全上下文值
[[email protected] ~]# ls -Zd /webroot • 方式1:參照標準目錄,重設新目錄的屬性
– chcon [-R] --reference=模板目錄 新目錄 ]# chcon -R --reference=/var/www /webroot/
]# ls -Zd /webroot/ ###############################################
客戶端訪問服務端影響的方面:
1.防火牆
2.安全增強SELinux
3.服務本身的訪問控制
4.本地目錄許可權
###############################################
部署動態網站 LAMP:Linux Apache MariaDB/MySQL php/Python LNMP:Linux Nginx MariaDB/MySQL php/Python 靜態網站的執行
• 服務端的原始網頁 = 瀏覽器訪問到的網頁
– 由Web服務軟體處理所有請求
– 文字(txt/html)、圖片(jpg/png)等靜態資源 動態網站的執行
• 服務端的原始網頁 ≠ 瀏覽器訪問到的網頁
– 由Web服務軟體接受請求,動態程式轉後端模組處理
– PHP網頁、Python網頁、JSP網頁...... 為站點 webapp0.example.com 配置提供動態Web內容,要求如下:
1.部署動態網站檔案
]# cat /etc/httpd/conf.d/nsd01.conf
]# cd /var/www/baidu/
]# wget http://classroom.example.com/pub/materials/webinfo.wsgi ]# cat webinfo.wsgi 2.為了方便使用者的訪問,使用者可以直接輸入webapp0.example.com得到相應的python頁面,所以使用頁面跳轉(頁面別名 地址重寫)
Alias 網路路徑 實際路徑 [[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
Alias / /var/www/baidu/webinfo.wsgi
當用戶訪問到網頁檔案根目錄時,進行跳轉到webinfo.wsgi
</VirtualHost> [[email protected] ~]# systemctl restart httpd
[[email protected] ~]# firefox webapp0.example.com 3.安裝mod_wsgi軟體,專用於Python頁面程式碼翻譯
[[email protected] /]# yum -y install mod_wsgi 4.修改配置檔案進行翻譯
[[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
WsgiScriptAlias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
[[email protected] /]# systemctl restart httpd
[[email protected] /]# firefox webapp0.example.com UNIX時間戳:從1970-1-1 0:0:0 到達現在時間經歷的秒數 5.此虛擬主機偵聽在埠8909
[[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
Listen 8909
<VirtualHost *:8909>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
WsgiScriptAlias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
6.SELinux非預設埠的開放
]# semanage port -l | grep http #檢視http允許開放埠
]# semanage port -a -t http_port_t -p tcp 8909
-a:新增 -t:型別 -p:協議
]# systemctl restart httpd
7.驗證
]# firefox webapp0.example.com:8909
#################################################
• 基於 B/S (Browser/Server)架構的網頁服務
– 服務端提供網頁
– 瀏覽器下載並顯示網頁 • Hyper Text Markup Language,超文字標記語言(html)
• Hyper Text Transfer Protocol,超文字傳輸協議(http) 一、搭建基本的Web伺服器
虛擬機器Server0:
1.安裝httpd軟體包
2.重起httpd服務,設定開機自起服務
]# echo '<h1>NSD1810 Web' > /var/www/html/index.html
]# cat /var/www/html/index.html
<h1>NSD1810 Web 虛擬機器Desktop0:
1.利用firefox 172.25.0.11 測試 ##################################################
• 提供的預設配置
– Listen:監聽地址:埠(80)
– ServerName:本站點註冊的DNS名稱(空缺)
– DocumentRoot:網頁根目錄(/var/www/html)
– DirectoryIndex:起始頁/首頁檔名(index.html DNS伺服器:虛擬機器classroom
server0.example.com
www0.example.com
webapp0.example.com 測試DNS解析:
[
[[email protected] ~]# nslookup www0.example.com
[[email protected] ~]# nslookup webapp0.example.com #################################################
– DocumentRoot:網頁檔案根目錄(/var/www/html)
虛擬機器Server0:
1.建立新的網頁檔案存放路徑
]# mkdir /var/www/myweb
]# echo '<h1>wo shi myweb' > /var/www/myweb/index.html
]# cat /var/www/myweb/index.html
<h1>wo shi myweb
2.修改配置檔案
# vim /etc/httpd/conf/httpd.conf #修改主配置檔案
DocumentRoot "/var/www/myweb"
3. 重起httpd服務 虛擬機器Desktop0:
[
##############################################
網路路徑與實際路徑對應關係
網路路徑:在瀏覽器輸入的路徑
實際路徑:伺服器存放網頁檔案的路徑 客戶端: firefox server0.example.com 服務端:/var/www/myweb firefox server0.example.com---》DNS---》172.25.0.11 172.25.0.11:80----->服務端----->httpd-----》DocumentRoot
-----》/var/www/myweb-->網頁檔案根目錄 客戶端: firefox server0.example.com/abc 服務端:/var/www/myweb/abc
客戶端: firefox server0.example.com/var/www/myweb 服務端:/var/www/myweb/var/www/myweb #################################################
虛擬機器Server0:
[
[[email protected] ~]# echo '<h1>wo shi abc' > /var/www/myweb/abc/index.html
[[email protected] ~]# 虛擬機器Desktop0:
[[email protected] ~]# firefox server0.example.com/abc #################################################
虛擬Web主機
作用:一臺伺服器可以提供多個Web站點 • 區分方式
– 基於域名的虛擬主機
– 基於埠的虛擬主機
– 基於IP地址的虛擬主機
• 為每個虛擬站點新增配置
<VirtualHost IP地址:埠>
ServerName 此站點的DNS名稱
DocumentRoot 此站點的網頁根目錄
</VirtualHost>
• 配置檔案路徑
– /etc/httpd/conf/httpd.conf (主配置檔案)
– /etc/httpd/conf.d/*.conf (呼叫配置檔案) 虛擬機器Server0:
[[email protected] ~]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
]# mkdir /var/www/qq /var/www/baidu
]# echo '<h1>企鵝' > /var/www/qq/index.html
]# echo '<h1>百度' > /var/www/baidu/index.html
]# systemctl restart httpd ###############################################
一旦使用虛擬web主機功能,所有的站點都必須用虛擬web主機來實現 <VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
</VirtualHost>
<VirtualHost *:80>
ServerName www0.example.com
DocumentRoot /var/www/qq
</VirtualHost>
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /var/www/myweb
</VirtualHost> #################################################
配置目錄訪問 httpd 執行身份(使用者/組):apache
客戶機地址限制
• 使用 <Directory> 配置區段
– 每個資料夾自動繼承其父目錄的ACL訪問許可權
– 除非針對子目錄有明確設定
<Directory /opt>
Require all denied
</Directory> /opt/test/index.html 案例3:配置網頁內容訪問
在 Web 網站 http://server0.example.com 的
DocumentRoot 目錄下建立一個名為 private 的子目錄
要求如下: 1.檢視http://server0.example.com 的DocumentRoot 目錄
]# cat /etc/httpd/conf.d/nsd01.conf
2.建立相應的網頁檔案目錄
]# mkdir /var/www/myweb/private
]# echo '<h1>wo shi private' > /var/www/myweb/private/index.html
]# ls /var/www/myweb/private/ 3.在虛擬機器Desktop0上驗證
]# firefox server0.example.com/private 4.從 虛擬機器server0上,任何人都可以瀏覽 private的內容,
但是從其他系統不能訪問這個目錄的內容 [[email protected] ~]# vim /etc/httpd/conf.d/nsd02.conf
<Directory /var/www/myweb/private>
Require ip 172.25.0.11
</Directory> [[email protected] ~]# systemctl restart httpd 5.在虛擬機器desktop0訪問測試
Forbidden You don't have permission to access /private/ on this server. #################################################
案例4:使用自定Web根目錄
調整 Web 站點 http://server0.example.com 的網頁
目錄,要求如下:
1)新建目錄 /webroot,作為此站點新的網頁檔案目錄
]# mkdir /webroot
]# echo '<h1>wo shi webroot' > /webroot/index.html
]# ls /webroot/
2)修改配置檔案/etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName server0.example.com
DocumentRoot /webroot
</VirtualHost>
3)訪問控制,修改配置檔案/etc/httpd/conf.d/nsd02.conf
<Directory /webroot>
Require all granted
</Directory>
[[email protected] ~]# systemctl restart httpd 4)SELinux的安全上下文(標籤)
[[email protected] ~]# ls -Zd /var/www/ #檢視安全上下文值
[[email protected] ~]# ls -Zd /webroot • 方式1:參照標準目錄,重設新目錄的屬性
– chcon [-R] --reference=模板目錄 新目錄 ]# chcon -R --reference=/var/www /webroot/
]# ls -Zd /webroot/ ###############################################
客戶端訪問服務端影響的方面:
1.防火牆
2.安全增強SELinux
3.服務本身的訪問控制
4.本地目錄許可權
###############################################
部署動態網站 LAMP:Linux Apache MariaDB/MySQL php/Python LNMP:Linux Nginx MariaDB/MySQL php/Python 靜態網站的執行
• 服務端的原始網頁 = 瀏覽器訪問到的網頁
– 由Web服務軟體處理所有請求
– 文字(txt/html)、圖片(jpg/png)等靜態資源 動態網站的執行
• 服務端的原始網頁 ≠ 瀏覽器訪問到的網頁
– 由Web服務軟體接受請求,動態程式轉後端模組處理
– PHP網頁、Python網頁、JSP網頁...... 為站點 webapp0.example.com 配置提供動態Web內容,要求如下:
1.部署動態網站檔案
]# cat /etc/httpd/conf.d/nsd01.conf
]# cd /var/www/baidu/
]# wget http://classroom.example.com/pub/materials/webinfo.wsgi ]# cat webinfo.wsgi 2.為了方便使用者的訪問,使用者可以直接輸入webapp0.example.com得到相應的python頁面,所以使用頁面跳轉(頁面別名 地址重寫)
Alias 網路路徑 實際路徑 [[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
Alias / /var/www/baidu/webinfo.wsgi
當用戶訪問到網頁檔案根目錄時,進行跳轉到webinfo.wsgi
</VirtualHost> [[email protected] ~]# systemctl restart httpd
[[email protected] ~]# firefox webapp0.example.com 3.安裝mod_wsgi軟體,專用於Python頁面程式碼翻譯
[[email protected] /]# yum -y install mod_wsgi 4.修改配置檔案進行翻譯
[[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
<VirtualHost *:80>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
WsgiScriptAlias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
[[email protected] /]# systemctl restart httpd
[[email protected] /]# firefox webapp0.example.com UNIX時間戳:從1970-1-1 0:0:0 到達現在時間經歷的秒數 5.此虛擬主機偵聽在埠8909
[[email protected] /]# vim /etc/httpd/conf.d/nsd01.conf
Listen 8909
<VirtualHost *:8909>
ServerName webapp0.example.com
DocumentRoot /var/www/baidu
WsgiScriptAlias / /var/www/baidu/webinfo.wsgi
</VirtualHost>
6.SELinux非預設埠的開放
]# semanage port -l | grep http #檢視http允許開放埠
]# semanage port -a -t http_port_t -p tcp 8909
-a:新增 -t:型別 -p:協議
]# systemctl restart httpd
7.驗證
]# firefox webapp0.example.com:8909
#################################################