Apache服務器php
1: www: world wide web 萬維網html
http 協議: 超文本傳輸協議mysql
HTML語言: 超文本標識語言 index.htmlnginx
2: URL:統一資源定位: 協議+域名:端口+網頁文件名web
http://www.baidu.com:80/phpmyadmin/index.phpsql
3:搭建www的服務器的方法apache
windows: IIS + asp + SQLserverwindows
IIS: Internet Information server瀏覽器
Linux apache+mysql+php安全
nginx
apache配置文件
源碼包安裝:/usr/lcoal/apache2/etc/httpd.conf(主配置文件)
/usr/local/apache/etc/extra/*.conf(子配置文件)
rpm包安裝:/etc/httpd/conf/httpd.conf
網頁保存位置:
源碼包: /usr/local/apache2/htdocs/
rpm包安裝: /var/www/html/
日誌保存位置
源碼包:/usr/local/apache2/logs/
rpm包: /var/log/httpd/
注意:apache配置文件嚴格區分大小寫
1:針對主機環境的基本配置
ServerRoot apache主目錄 /usr/local/apache2
Listen 監聽端口 :80
LoadModule 加載的相關模塊 php5
User
Group 用戶和組
ServerAdmin 管理員郵箱
ServerName 服務器名(沒有域名解析時,使用臨時解析。默認不開啓)
ErrorLog "logs/error_log 錯誤日誌
CustomLog "logs/access_log" common 正確訪問日誌
DirectoryIndex index.html index.php 默認網頁文件名,優先級順序
Include etc/extra/httpd-vhosts.conf 子配置文件中內容也會加載生效
2 :主頁目錄及權限
DocumentRoot "/usr/local/apache2//htdocs"
#網頁文件存放目錄(默認)
<Directory "/usr/local/apache2//htdocs">
#定義指定目錄的權限
Options Indexes FollowSymLinks
#options
None: 沒有任何額外權限
All: 全部權限
Indexes: 瀏覽權限(當此目錄下沒有默認網頁文件時,顯示目錄內容)
FollowSymLinks:准許軟鏈接到其餘目錄
AllowOverride None
#定義是否容許目錄下.htaccess文件中的權限生效
None:.htaccess中權限不生效
All:文件中全部權限都生效
AuthConfig:文件中,只有網頁認證的權限生效。
Require all granted 訪問控制列表
#定義此目錄的容許訪問權限
例1:僅容許IP爲192.168.1.1的主機訪問
<RequireAll>
Require all granted
Require ip 192.168.1.1
</RequireAll>
例2:僅容許192.168.0.0/24網絡的主機訪問
<RequireAll>
Require all granted
Require ip 192.168.1.0/24
</RequireAll>
例3:禁止192.168.1.2的主機訪問,其餘的都容許訪問,
<RequireAll>
Require all granted
Require not ip 192.168.1.2
</RequireAll>
例4:容許全部訪問,
Require all granted(受權)
例5:拒絕全部訪問,
Require all denied
實驗環境:
使用lamp環境安裝好的apache進行試驗
安裝完成後,先啓動apache進行服務驗證,是否安裝成功,而且主頁是否能夠訪問。
注:發現啓動服務報錯:AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
解決辦法:打開主配置文件httpd.conf
搜索ServerName (約在200行左右)
修改成 ServerName localhost:80(而且去掉前面的#註釋)
實驗一:目錄別名:
可使特定的網站程序不出如今網站根目錄下面,而這樣的話,就能夠避免和原來的程序自己發生混淆和衝突;縮短網頁目錄的縱深,減小URL的長度。
實驗一:目錄別名
可使特定的網站程序不出如今網站根目錄下面,而這樣的話,就能夠避免和原來的程序自己發生混淆和衝突;縮短網頁目錄的縱深,減小URL的長度。
打開apache主配置文件
#Include etc//extra/httpd-autoindex.conf (將#號去掉)
進到子配置文件目錄extra下,打開httpd-autoindex.conf
仿照例子寫一個別名:
Alias /a/ "/www/a/" #實際目錄結束要有/
<Directory "/www/a/">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
在/www/a/目錄下手動建立index.html文件
將apache服務重啓:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
注:重啓源碼包安裝的apache須要先關閉,再啓動。
驗證試驗結果:
打開瀏覽器輸入 服務器IP/a/
打開Apache主配置文件
#Include etc//extra/httpd-autoindex.conf (將#號去掉)
進到子配置文件目錄extra下,打開httpd-autoindex.conf
仿照例子寫一個別名:
Alias /a/ "/www/a/" #實際目錄結束要有/
<Directory "/www/a/">
Options Indexes MultiViews
AllowOverride None
Require all granted
</Directory>
在/www/a/目錄下手動建立index.html文件
將apache服務重啓:
/usr/local/apache2/bin/apachectl stop
/usr/local/apache2/bin/apachectl start
注:重啓源碼包安裝的apache須要先關閉,再啓動。
驗證試驗結果:
打開瀏覽器輸入 服務器IP/a/
實驗二:用戶認證
提升網站安全性,保護個別頁面的信息,限制特定目錄,只有指定用戶能夠訪問。
實驗二:用戶驗證:
提升網站安全性,保護個別頁面的信息,限制特定目錄,只有指定用戶能夠訪問。
1. 打開主配置文件在最下面添加:
<Directory "/usr/local/apache2/htdocs/baohu"> #被保護目錄
Options Indexes
AllowOverride All #(開啓權限認證文件.htaccess)
Require all granted
</Directory>
修改配置文件:
高版本中Apache權限設置:(httpd-2.4.7) (用這個)
2. 在指定目錄下建立權限文件:
cd /usr/local/apache2/htdocs/baohu
Vi .htaccess #添加下面的內容
AuthName "50 docs"
#提示信息
AuthType basic
#加密類型
AuthUserFile /usr/local/apache2/htdocs/baohu/apache.passwd
#密碼文件,文件名自定義。(可是路徑要對,使用絕對路徑)
require valid-user
#容許密碼文件中全部用戶訪問
3. 創建密碼文件,加入容許訪問的用戶。(此用戶和系統用戶無關)
htpasswd -c /usr/local/apache2/htdocs/baohu/apache.passwd test1
-c 創建密碼文件,只有添加第一個用戶時,才能-c
htpasswd -m /usr/local/apache2/htdocs/baohu/apache.passwd test2
-m 再添加更多用戶時,使用-m 參數
4. 驗證訪問:(本身手動去目錄下建立index.html文件)
瀏覽器輸入 服務器IP/baohu/index.html
瀏覽器驗證:
實驗三:***虛擬主機***
虛擬主機的分類:
基於IP的虛擬主機:一臺服務器,多個ip,搭建多個網站
Ifconfig eth0:0 IP #創建網卡子端口
基於端口的虛擬主機:一臺服務器,一個ip,搭建多個網站,每一個網絡使用不一樣端口訪問
基於名字的虛擬主機:一臺服務器,一個ip,搭建多個網站,每一個網站使用不一樣域名訪問
實驗搭建(準備工做)
a. 域名解析:準備兩個域名
b. 沒搭建DNS,只能手動添加到本地hosts文件內進行解析
Windows系統中:
C:\WINDOWS\system32\drivers\etc\hosts
Linux系統中:
/etc/hosts
c. 網站主頁目錄規劃
在//htdocs/目錄下分別建立sohu 和 sina 兩個目錄
而且在分別在新建目錄內建立index.html文件(分別寫不同的內容)
2. 實驗流程(修改配置文件)
A. vi /usr/local/apache2/etc/httpd.conf #修改主配置文件開啓文件關聯
Include etc//extra/httpd-vhosts.conf #此行取消註釋
B. vi /usr/local/apache2/etc/extra/ httpd-vhosts.conf
#添加下方內容(添加以前先把原先存在的示例刪除掉)
<Directory "/usr/local/apache2/htdocs/sina">
Options Indexes
AllowOverride None
Require all granted
</Directory>
<Directory "/usr/local/apache2/htdocs/sohu">
Options Indexes
AllowOverride None
Require all granted
</Directory>
<VirtualHost 192.168.150.253>
ServerAdmin webmaster@sina.com
DocumentRoot "/usr/local/apache2/htdocs/sina"
ServerName www.sina.com
ErrorLog "logs/sina-error_log"
CustomLog "logs/sina-access_log" common
</VirtualHost>
<VirtualHost 192.168.150.253>
ServerAdmin webmaster@sohu.com
DocumentRoot "/usr/local/apache2/htdocs/sohu"
ServerName www.sohu.com
ErrorLog "logs/sohu.com-error_log"
CustomLog "logs/sohu.com-access_log" common
</VirtualHost>
C. 重啓服務,驗證結果
Windows 下:瀏覽器下輸入兩個不一樣的域名驗證網頁內容
Linux下:經過elinks命令驗證:elinks 域名
實驗三:虛擬主機:
基於名字的虛擬主機:
a. 域名解析:準備兩個域名
b. 沒搭建DNS,只能手動添加到本地hosts文件內進行解析
Windows系統中:
C:\WINDOWS\system32\drivers\etc\hosts
Linux系統中:
/etc/hosts
c. 網站主頁目錄規劃
在//htdocs/目錄下分別建立sohu 和 sina 兩個目錄
而且在分別在新建目錄內建立index.html文件(分別寫不同的內容)
搭建DNS服務器,可以解析到sohu、sina的域名:
將客戶端DNS設置成DNS服務器IP
修改Apache虛擬主機配置文件:
取消虛擬機主機關聯註釋:
客戶端訪問(將客戶端DNS設置成DNS服務器IP)
拓展:低版本的Apache配置(2.2.9)
帶用戶驗證模式:
這裏的地址解析是用的Hosts文件:實際應使用DNS
實驗四:地址重寫
在URL中輸入一個地址,會自動跳轉爲另外一個,多用於網站更換或者添加新域名。
實驗要求:
A 虛擬主機能正常訪問
B 打開主配置文件開啓重寫模塊
LoadModule rewrite_module modules/mod_rewrite.so #取消註釋
域名跳轉實驗:
1. 修改虛擬主機配置文件
vi */extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/sina">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
2. 建立規則匹配文件
vi */.htaccess #在指定的網站網頁目錄下建立
RewriteEngine on
#開啓rewrite功能
RewriteCond %{HTTP_HOST} www.sina.com
#把以www.sina.com 開頭的內容賦值給HTTP_HOST變量
RewriteRule .* http://www.sohu.com
#.* 輸入任何地址,都跳轉到http://www.sohu.com
3. 重啓服務器,進行訪問驗證
靜態向動態跳轉:
1. 修改虛擬主機配置文件
vi */extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/sohu">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
2. 建立規則文件
vi */.htaccess
RewriteEngine on
RewriteRule index(\d+).html index.php?id=$1
#輸入index(數值).html時,跳轉到index.php文件
3. 重啓服務,進行訪問驗證
驗證方式:在*/htdocs/sohu/目錄下新建index.php文件
訪問www.sohu.com/index(數值).html 看訪問的是不是你的index.php的網頁
注:靜態網頁向動態網頁跳轉這個實驗,只有完整的lamp環境下才能訪問。
六 經常使用子配置文件
httpd-default.conf #apache線程控制,必須開啓
Timeout 300 #超時時間
KeepAlive On
#開啓線程控制(不開啓的話用戶訪問頁面會產生一個進程,訪問其餘頁面會產生另外一個進程,這樣的話一個用戶會產生好多個進程,會下降apache性能。開啓此項,當用戶訪問網站時會產生一個進程,打開其餘頁面時會產生線程,保證了一個用戶只產生一個進程。網站此項功能必須開啓。)
MaxKeepAliveRequests 100 #最大線程鏈接數
httpd-info.conf #apache狀態統計
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from .example.com
</Location>
#經過訪問www.domain.com/server-status能夠查看apache狀態。若是頁面顯示not found 則須要修改目錄權限,在Deny from all下加上allow from ip(容許的ip)。
httpd-manual.conf #apache幫助文檔
經過訪問www.domain.com/manual 查看apache幫助文檔,通常爲英文,沒用,能夠到apache官網下載幫助文檔。
httpd-languages.conf #語言編碼
要使其生效須要在主配置文件中打開,若是中文亂碼不是瀏覽器編碼的緣由多是此配置文件註釋沒打開。