apche服務器

Apache服務器

 

 

1www: world  wide  web萬維網

 

http協議超文本傳輸協議

 

HTML語言:超文本標識語言 index.html

 

2URL:統一資源定位:協議+域名:端口+網頁文件名

http://www.baidu.com:80/phpmyadmin/index.php

 

3搭建www的服務器的方法

windows  IIS  +  asp  +  SQLserver

IIS: Internet  Information  server

 

Linuxapache+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針對主機環境的基本配置

 

ServerRootapache主目錄/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的長度。

 

打開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>

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,搭建多個網站,每個網站使用不同域名訪問

 

1. 實驗搭建(準備工作)

a.域名解析:準備兩個域名

www.sohu.com

www.sina.com

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 [email protected]#管理員郵箱

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 [email protected]

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 域名

 

實驗四:rewrite重寫功能

 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    #語言編碼

要使其生效需要在主配置文件中打開,如果中文亂碼不是瀏覽器編碼的原因可能是此配置文件註釋沒打開。

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章