1. 程式人生 > >linux計算機基礎 DAY06

linux計算機基礎 DAY06

 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
#################################################