分類: LINUXphp
安裝方式:
yum install httpd
yum install mysql-server
yum install php
yum install php-mysql
1、WEB服務器與Apache
一、web服務器與網址
二、Apache的歷史
三、補充
http://www.netcraft.com/能夠查看apache服務器的市場佔有率
同時必須注意的是ngnix,正處於強勢增加的上升時期,大有和apache一爭天下的感受,真是後生可畏~~~
2、Apache服務器的管理命令
一、命令啓動:service httpd start/stop/restart/reload/condrestart/status/configtest/graceful/help
二、腳本啓動:/etc/init.d/httpd start/stop/.....
三、設爲開機自動啓動:ntsysv+空格鍵
3、Apache服務器的目錄和文件html
一、WEB站點目錄mysql
/var/www Apache站點文件的目錄linux
/var/www/html 存放WEB站點的WEB文件web
/var/www/cgi-bin CGI程序文件sql
/var/www/html/manual Apache WEB服務器手冊apache
二、配置文件windows
.htaccess 基於目錄的配置文件,.htaccess文件包含對它所在目錄中文件的訪問控制指令瀏覽器
/etc/httpd/conf/httpd.conf Apache WEB服務器配置文件目錄安全
三、啓動腳本
/etc/rc.d/init.d/httpd WEB服務器守護進程的啓動腳本
/etc/rc.d/rc3.d/S85httpd 將運行級目錄(/etc/rc3.d)鏈接到目錄/etc/rc.d/init.d中的啓動腳本
四、應用文件
/usr/sbin 存放Apache WEB服務器程序文件和應用程序的位置
/usr/doc/ 放置Apache WEB服務器文檔
/var/log/http 放置Apache 日誌文件的位置
4、更多命令
一、查看Apache安裝信息:apachectl -C
二、對Apache的配置文件進行語法檢查:apachectl -t
三、查看Apache編譯配置參數:apachectl -V
四、查看Apache的編譯模塊:apachectl -l
5、httpd.conf配置文件
(一)基本配置
httpd.conf文件包含爲下面三個部分:
1. 全局環境設置:控制整個Apache服務器行爲的部分(即全局環境變量)
2. 主服務器配置:定義主要或者默認服務參數的指令,也爲全部虛擬主機提供默認的設置參數
3. 虛擬主機設置:虛擬主機的設置參數
其中,一行寫不下使用「\」表示換行,除了選項的參數值外,全部選項指令不區分大小寫,「#」表示註釋。
如今,咱們來學習httpd.conf中的具體設置項:
1.設置相對根目錄的路徑
相對根目錄一般是Apache存放配置文件和日誌文件的地方,一般狀況下相對根目錄是"/etc/httpd",它通常包含conf和logs子目錄,此時能夠採用"ServerRoot"/etc/httpd""格式進行設置。
2.設置Apache監聽的IP地址和端口號
Apache默認會在本機全部可用IP地址上的TCP 80端口監聽客戶端的請求,可使用Listen語句以便在某個指定地址和端口上監聽請求。例如設置服務器只監聽192.168.0.94的80端口,則能夠在httpd.conf中進行相應的設置:Listen 192.168.0.94:80。若是須要更改端口號爲8080,也能夠採用"Listen 192.168.0.94:8080"之類的設置,可是此時經過網頁瀏覽器訪問網站的時候也必須在域名地址後面添加相應的端口號,例如輸入"http://192.168.0.94:8080"才能夠進行訪問。注:個人虛擬機Linux的IP是192.168.0.94,windows的IP是192.168.0.225
3.設置網絡管理員的電子郵件地址
當客戶端計算機訪問服務器發生錯誤的時候,服務器一般都會向客戶端計算機返回錯誤提示頁面,爲了方便解決錯誤,在這個網頁中一般包含有管理員的電子郵件地址,此時能夠採用ServerAdmin語句來設置管理員的電子郵件地址,例如"ServerAdmin xinyuan365@sohu.com"。
4.設置服務器主機名稱
爲了方便Apache識別服務器自身的信息,可使用ServerName語句來設置服務器的主機名稱。在ServerName語句中,若是服務器有域名則填寫服務器的域名;若是沒有域名,則填入服務器的IP地址。例如"ServerName 192.168.0.94:80"。
5.設置主目錄的路徑
Apache服務器主目錄默認路徑爲"/var/www/html",能夠將須要發佈的網頁放置在這個目錄中,同時也能夠把主目錄的路徑修改成別的目錄便於用戶管理和使用。例如須要將Apache服務器主目錄路徑設置爲"/home/lk/www",則能夠在httpd.conf文件中進行相應修改:DocumentRoot "/home/www"。
6.設置默認文檔
默認文檔是指在網頁瀏覽器中輸入Web站點的IP地址或者域名顯示出來的Web頁面,也就是一般所說的主頁。在缺省狀況下,Apache的默認文檔名爲index.html,默認文檔由DirectoryIndex語句進行定義,例如在httpd.conf中經過"DirectoryIndex index.html index.html.var"進行設置,此時能夠將DirectoryIndex語句的默認文檔名修改成其餘文件。
若是有多個文件名,每一個文件名之間必須用空格進行分隔,Apache會根據文件名的前後順序查找在DirectoryIndex語句中指定的文件名。若是能找到第1個則調用第1個,不然再尋找並調用第2個,依次類推。例如添加index.htm和index.php文件做爲默認文檔,則能夠相應修改httpd.conf文件爲"DirectoryIndex index.html index.htm index.php index.html.var"。
7.設置日誌文件
日誌文件對於用戶查找系統故障或者分析Web服務器運行情況很是重要,此時有兩項重要設置內容。
(1)錯誤日誌。錯誤日誌記錄了Apache在啓動和運行時發生的錯誤,因此當Apache出錯的時候,應該首先檢查這個日誌文件。一般錯誤日誌的文件名爲error_log,錯誤日誌文件存放的位置和文件名能夠經過ErrorLog參數進行設置。例如"ErrorLog logs/erroe_log"。若是日誌文件存放路徑不是以"/"開頭,則表示該路徑是相對於ServerRoot目錄的相對路徑。
(2)訪問日誌。訪問日誌記錄了客戶端計算機全部的訪問信息,經過分析訪問日誌能夠知道客戶機什麼時候訪問了網站的哪些文件等信息。一般訪問日誌的文件名爲access_log,訪問日誌文件的存放位置和文件名能夠經過CustomLog參數進行設置,例如"CustomLog logs/access_log combined"。
在這個訪問日誌設置中,combined指明日誌使用的格式,在這個位置可使用common或者combined。其中common是指使用 Web服務器廣泛採用的普通標準格式,這種格式能夠被許多日誌分析程序所識別;combined是指使用組合記錄格式,和common相比,combined的格式基本相同,只是多了引用頁和瀏覽器識別信息而已。
8.設置默認字符集
AddDefaultCharset選項設置了服務器返回給客戶端計算機的默認字符集,因爲Apache服務器默認字符集爲西歐(UTF-8),所以當客戶端訪問服務器的中文網頁時會出現亂碼現象。解決的辦法是將語句"AddDefaultCharset UTF-8"改成"AddDefaultCharset GB2312",而後從新啓動Apache服務器,中文網頁就能夠正常顯示了。
(二)配置目錄權限
一、定義目錄特性
Apache訪問的每一個目錄可設置相關的服務和特性是容許或(和)不容許。(一樣影響其子目錄)
首先,設置"default"地址只有最基本的權限:
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
注意從如今開始必須制定開啓特殊的權限,這樣就不會產生意想不到的結果。請仔細確認。
例如:
<Directory "D:/www_root">
#
# 此值但是: "None", "All", 或下列的組合: "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", 或 "MultiViews".
# 注意"MultiViews"必須明確指定--- "Options All"不包括此特性。
#
Options Indexes FollowSymLinks MultiViews
#
# 此項控制目錄中哪些.htaccess文件可覆蓋。
# 容許值: "All"或者如下項的組合:"Options", "FileInfo",
# "AuthConfig", "Limit"
#
AllowOverride None
#
# 控制哪些用戶可今後服務器得到資料。
#
Order allow,deny
Allow from all
</Directory>
說明:
allow和deny能夠用於apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用來控制目錄和文件的訪問受權。
因此,最經常使用的是:
Order Deny,Allow
Allow from All
注意「Deny,Allow」中間只有一個逗號,也只能有一個逗號,有空格都會出錯;單詞的大小寫不限。上面設定的含義是先設定「先檢查禁止設定,沒有禁止的所有容許」,而第二句沒有Deny,也就是沒有禁止訪問的設定,直接就是容許全部訪問了。這個主要是用來確保或者覆蓋上級目錄的設置,開放全部內容的訪問權。
按照上面的解釋,下面的設定是無條件禁止訪問:
Order Allow,Deny
Deny from All
若是要禁止部份內容的訪問,其餘的所有開放:
Order Deny,Allow
Deny from ip1 ip2
或者
Order Allow,Deny
Allow from all
Deny from ip1 ip2
apache會按照order決定最後使用哪一條規則,好比上面的第二種方式,雖然第二句allow容許了訪問,但因爲在order中allow不是最後規則,所以還須要看有沒有deny規則,因而到了第三句,符合ip1和ip2的訪問就被禁止了。注意,order決定的「最後」規則很是重要,下面是兩個錯誤的例子和改正方式:
Order Deny,Allow
Allow from all
Deny from domain.org
錯誤:想禁止來自domain.org的訪問,可是deny不是最後規則,apache在處理到第二句allow的時候就已經匹配成功,根本就不會去看第三句。解決方法:Order Allow,Deny,後面兩句不動,便可。
Order Allow,Deny
Allow from ip1
Deny from all
錯誤:想只容許來自ip1的訪問,可是,雖然第二句中設定了allow規則,因爲order中deny在後,因此會以第三句deny爲準,而第三句的範圍中又明顯包含了ip1(all include ip1),因此全部的訪問都被禁止了。解決方法一:直接去掉第三句。解決方法二:
Order Deny,Allow
Deny from all
Allow from ip1
小結:規律就是order deny,allow表示deny優先級低而allow優先級高,order allow,deny表示allow優先級低而deny優先級高。
(三)建立虛擬目錄
若是咱們的網站建在了別的目錄,好比/opt/www/lk下,是否是不在主目錄/var/www/html下就不能訪問了呢?固然不是。
可使用虛擬目錄,讓用戶訪問到別的目錄下的文件。虛擬目錄是位於Apache主目錄外的其餘目錄,通常咱們經過爲虛擬目錄建立別名的方式來讓web訪問。這樣作一是安全;二是訪問簡單,不用輸入那麼長的真是目錄地址,而只用輸入一個簡單的別名就行;三是便於站點目錄的移動,只要虛擬目錄名不變,改變實際存放位置,不會影響web訪問的。
咱們用Alias選項建立虛擬目錄,如
Alias /bbs/ "/opt/www/lk/"
<Directory "/opt/www/lk/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
(四)進行用戶認證
用戶認證是網絡安全中極爲重要的一個部分,讓想訪問指定網站的用戶輸入用戶名和密碼才能進行登陸,起到了自然的安全屏障做用。Apache的安全認證在實際使用中也是很常見的。如今就經過一個例子演示若是在Apache服務器中實現用戶認證的功能。
咱們對上述的虛擬目錄進行操做:
Alias /bbs/ "/opt/www/lk/"
<Directory "/opt/www/lk/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
AuthType:Basic
AuthName "welcome go home:"
AuthUserFile /etc/httpd/authpwd
Require user laoda laoer
</Directory>
說明:
AuthType:定義了對用戶認證的類型,經常使用的是mod_auth提供的Basic;
AuthName:Web瀏覽器顯示在輸入用戶名和密碼框時的提示文字;
AuthUserFile:定義口令文件htpasswd的路徑;
Require user:定義了容許訪問的用戶名單,名字間用空格分隔。
以後,創建authpwd文件用來保存密碼,touch /etc/httpd/authpwd
接着,把用戶名和密碼寫入文件(注意:第一次建立用戶時使用-c參數,第二個用戶被建立就沒必要寫了,不然會覆蓋剛纔的用戶):
[root@localhost http]#htpasswd -c /etc/httpd/authpwd laoda
New password:
Re-type new password:
Add password for user laoda
[root@localhost http]#htpasswd /etc/httpd/authpwd laoer
New password:
Re-type new password:
Add password for user laoer
如今service httpd restart,再用瀏覽器訪問這臺linux的IP地址便可。
(五)配置虛擬主機
爲了節省費用和提升服務器的利用效率,咱們能夠在一臺機器上創建出多臺「主機」。每一個主機都能對外提供WEB服務,在外界看來是些不一樣的網站,但對服務器而言,其實看似不一樣的網站,其實它們都是運行於同一臺主機之上的不一樣的虛擬主機而已。
如何配置虛擬主機呢?Apache的虛擬主機功能是很是強大的,並且配置很簡單。主要分爲基於IP和基於域名的虛擬主機。
咱們先配置基於IP的虛擬主機吧。這其中也有兩種選擇,你如今有多少個可用IP?若是你購買了很多IP,那麼你能夠給每一個虛擬主機分配不一樣的IP,讓他們使用相同的端口,這是其一。若是在這個IP短缺的時代,你沒喲那麼多IP,只買了一個,那麼你就可使用一個IP地址加不一樣端口的方式,讓不一樣的端口訪問不一樣的虛擬主機。
一、IP地址相同,但端口號不一樣:
如今個人CentOS上,只有一個IP:192.168.0.94,我想分別使用8080和8081兩個端口配置兩個網站,編輯httpd.conf:
Listen 8080
Listen 8081
<VirtualHost 192.168.0.94:8080>
DocumentRoot /var/www/web1
DirectoryIndex index.html index.htm
HostNameLookups off
</VirtualHost>
<VirtualHost 192.168.0.94:8081>
DocumentRoot /var/www/web2
DirectoryIndex index.html index.htm
HostNameLookups off
</VirtualHost>
重啓服務,便可。
二、端口號相同,但IP地址不一樣,假如一個是94,一個是95:
<VirtualHost 192.168.0.94>
ServerName 192.168.0.94:80
DocumentRoot /var/www/web1
DirectoryIndex index.html index.htm
</VirtualHost>
<VirtualHost 192.168.0.95>
ServerName 192.168.0.95:80
DocumentRoot /var/www/web2
DirectoryIndex index.html index.htm
</VirtualHost>
若是本機只有一個網卡,那麼就得在這一塊網卡上綁定多IP:
ifconfig eth0:1 192.168.0.95
三、基於域名的虛擬主機
NameVirtualHost 192.168.0.94:
<VirtualHost www.web1.com>
ServerName www.web1.com:80
DocumentRoot /var/www/web1
DirectoryIndex index.html index.htm
</VirtualHost>
<VirtualHost www.web2.com>
ServerName www.web2.com:80
DocumentRoot /var/www/web2
DirectoryIndex index.html index.htm
</VirtualHost>
而後你們在,linux下的/etc/hosts文件或者windows下C:\WINNT\system32\drivers\etc\hosts文件中,加入
192.168.0.94 www.web1.com
192.168.0.94 www.web2.com
請你們注意,虛擬機配置發生改變後,必定要restart。
(六)加入PHP支持
這時,咱們的APACHE只能支持靜態的以HTML或者HTM結尾的文件,想要支持PHP還得進行以下操做:
#rpm -qa | grep php,查詢本機是否已經安裝了PHP程序,若是沒有安裝,則進入光盤中的CENTOS目錄,在目錄的空白處打開終端:
#rpm -ivh php-common-5.1.6-20.el5.i386.rpm
#rpm -ivh php-cli-5.1.6-20.el5.i386.rpm
#rpm -ivh php-5.1.6-20.el5.i386.rpm
這時,在/var/www/html目錄下新建一個ok.php腳本,寫入如下內容:
在瀏覽器中輸入「http://web服務器IP/ok.php」查看是否成功。
處於歷史緣由,有些程序是以.php3或.php4爲結尾的。咱們須要在php的配置文件中進行修改,打開/etc/httpd/conf.d/php.conf
修改「#AddType application/x-httpd-php-source .php」爲「AddType application/x-httpd-php-source .php .php3 .php4」,要去掉#,在.php3/4前是有空格的
練習1:
本身在CentOS上使用服務器創建Web服務器,設置「/opt/本身名字的拼音」爲新建立的虛擬目錄,此虛擬目錄別名是「exam」,在此虛擬目錄下本身新建一個html文檔名爲「index.htm」,<body>中內容是「寫入你本身的名字」。建立apache用戶認證,添加兩個用戶user1(密碼123456)和user2(密碼654321),最後用瀏覽器訪問「ip/exam/:8080」即可以看到顯示你名字的網頁,便可。
練習2:
配置虛擬主機。思考,如何配置一臺虛擬主機,其上跑着四個網站,分別是192.168.0.101跑web1,192.168.0.102跑web2,192.168.0.100上跑www.cba.com和www.nba.com兩個網站。