一:安裝
1.開啟終端,輸入“sudo apt-get install apache2”
2.驗證apache2.0安裝是否完成,在瀏覽器中開啟http://localhost/或者http://127.0.0.1。如果出現It works!那證明成功;
3.sudo apt-get install php5
4.sudo apt-get install libapache2-mod-php5(我的機子在裝php5的時候預設裝了這個的,所以提示已經安裝)
5.sudo /etc/init.d/apache2 restart”,斷行符號;(此為重啟APACHE),如果成功,說明php和apache2安裝成功
6.sudo apt-get install mysql-server”,斷行符號;(此為安裝MYSQL)
7.“sudo apt-get install libapache2-mod-auth-mysql”,斷行符號;(此為讓apache、php支援 mysql)
8.在終端輸入“sudo apt-get install php5-mysql”,斷行符號(我的提示如下:
下列軟體包有未滿足的依賴關係: php5-mysql : 依賴: php5-common (= 5.4.6-1ubuntu1) 但是 5.4.6-1ubuntu1.2 正要被安裝E: 無法修正錯誤,因為您要求某些軟體包保持現狀,就是它們破壞了軟體包間的依賴關係
可能原因是我在安裝mysql的時候用的是ubuntu官方的源,但安裝php5時改成了163的源了,因為官網速度太忙了。
但是該過來還是不行。先不管了,有其他事情忙的很。
9.在終端輸入“sudo /etc/init.d/apache2 restart”,斷行符號;
二:配置
1.apache2.conf 是主設定檔,httpd.conf 使用者設定檔
2.虛擬目錄在 httpd.conf 中
[plain] view plaincopy
- <VirtualHost *>
- DocumentRoot "路徑"
- ServerName 名稱
- <Directory "路徑"> allow from all Options +Indexes </Directory>
- </VirtualHost>
-
- <VirtualHost *:80>
- ServerName www.test.com
- DocumentRoot /home/test
- </VirtualHost>
3.根設定(預設主目錄)在 /etc/apache2/sites-available/default
4.重啟命令 sudo /etc/init.d/apache2 restart 或者 cd /etc/init.d sudo apache2 restart
5.記錄檔在 /var/log/apache2/
vi /etc/httpd/conf/httpd.conf
在Windows下,Apache的設定檔通常只有一個,就是httpd.conf。但我在Ubuntu Linux上用apt-getinstall apache2命令安裝了Apache2後,竟然發現它的httpd.conf(位於/etc/apache2目錄)是空的!進而發現Ubuntu的Apache軟體包的設定檔並不像Windows的那樣簡單,它把各個設定項分在了不同的設定檔中。嚴格地說,Ubuntu的Apache(或者應該說Linux下的Apache)的設定檔是/etc/apache2/apache2.conf,Apache在啟動時會自動讀取這個檔案的配置資訊。而其他的一些設定檔,如httpd.conf等,則是通過Include指令包含進來。當然,完全可以把所有的設定放在apache2.conf或者httpd.conf或者任何一個設定檔中。Apache2的這種劃分只是一種比較好的習慣。
安裝完Apache後的最重要的一件事就是要知道Web主目錄在什麼地方,對於Ubuntu而言,預設的是/var/www。怎麼知道的呢?apache2.conf裡並沒有DocumentRoot項,httpd.conf又是空的,因此肯定在其他的檔案中。經過搜尋,發現在/etc/apache2/sites-enabled/000-default中,裡面有這樣的內容:
[plain] view plaincopy
- NameVirtualHost *
- <VirtualHost *>
- ServerAdmin webmaster@localhost
- DocumentRoot /var/www/
- ……
這是設定虛擬機器主機的,虛擬機器主機 (Virtual Host) 是在同一台機器搭建屬於不同網域名稱或者基於不同 IP 的多個網站服務的技術。可以為運行在同一物理機器上的各個網站指配不同的 IP 和連接埠,也可讓多個網站擁有不同的網域名稱。進一步的配置和使用,就可以查閱APACHE的手冊了。
再看看/etc/apache2目錄下的東西。剛才在apache2.conf裡發現了sites-enabled目錄,而在/etc/apache2下還有一個sites-available目錄,這裡面才是真正的設定檔,而sites-enabled目錄存放的只是一些指向這裡的檔案的符號連結,可以用ls -l/etc/apache2/sites-enabled/來證實一下。所以,如果apache上配置了多個虛擬機器主機,每個虛擬機器主機的設定檔都放在sites-availabl,那麼對於虛擬機器主機的停用、啟用就非常方便了:當在sites-enabled下建立一個指向某個虛擬機器主機設定檔的連結時,就啟用了它;如果要關閉某個虛擬機器主機的話,只需刪除相應的連結即可,根本不用去改設定檔。
mods-available、mods-enabled和上面說的sites-available、sites-enabled類似,這兩個目錄是存放apache功能模組的設定檔和連結的。當我用apt-get installphp5安裝了PHP模組後,在這兩個目錄裡就有了php5.load、php5.conf和指向這兩個檔案的連結。這種目錄結果對於啟用、停用某個Apache模組是非常方便的。
最後一個要說的是ports.conf,這裡面設定了Apache使用的連接埠。如果需要調整預設的連接埠設定,建議編輯這個檔案。或者你嫌它實在多餘,也可以先把apache2.conf中的Include/etc/apache2/ports.conf一行去掉,在httpd.conf裡設定Apache連接埠。
ubuntu裡預設安裝的目錄結構很有一點不同。在ubuntu中module和 virtualhost的配置都有兩個目錄,一個是available,一個是enabled,available目錄是存放有效內容,但不起作用,只有用ln連到enabled過去才可以起作用。對調試使用都很方便,但是如果事先不知道,找起來也有點麻煩。
/etc/apache2/sites-available 裡放的是VH的配置,但不起作用,要把檔案link到 sites-enabled 目錄裡才行。
設定檔httpd.conf說明
DocumentRoot "/var/www/html" ---Apache預設伺服器主目錄路徑
DirectoryIndex index.html index.htm index.php index.html.var ---預設文件,多個檔案之間用空格分開
Listen 192.168.1.1:80 設定監聽ip是192.168.1.1的地址和連接埠為80
Listen 192.168.1.2:8080 設定監聽ip是192.168.1.2的地址和連接埠為8080
ServerRoot "/etc/httpd" 設定相對根目錄的路徑 ,通常是指存放設定檔和記錄檔的地方。預設是:/etc/httpd 一般包括conf和logs子目錄
ErrorLog logs/error_log 設定錯誤記錄檔,注意:如果記錄檔存放路徑不是以“/”開頭,意味著該檔案是相對於 ServerRoot目錄
CustomLog logs/access_log combined 訪問日誌(combined指明日誌使用的格式,還有common格式)
ServerAdmin c.z.cz@163.com 設定網路系統管理員的Email,當用戶端伺服器發生錯誤時,伺服器通常會向用戶端返回錯誤提示頁面,為了方便解決錯誤,這個網頁中通常有管理員的Email地址,可以通過使用 ServerAdmin語句來設定管理員的EMail地址
ServerName www.cz.com:80 設定伺服器主機名稱 (如果有網域名稱可以填入網域名稱,沒有網域名稱則可填入伺服器IP地址)
AddDefaultCharset UTF-8 設定預設字元集,定義伺服器返回給客戶機預設字元集(由於西歐UTF-8是Apache預設字元集,因此當訪問有中文的網頁時會出現亂碼,這時只要將字元集改成GB2312,再重啟Apache服務即可)
虛擬目錄的
Alias /down "/software/download" 建立虛擬目錄(建立名為down的虛擬目錄,它對應的實體路徑是:/software/download)
Alias /ftp "/var/ftp" 建立虛擬目錄(建立名為ftp的虛擬目錄,它對應的實體路徑是:/var/ftp)
<Directory "/var/www/html"> 設定目錄許可權(<Directory "目錄路徑">此次寫設定目錄許可權的語句</Directory>)
Options FollowSymLinks page:116
AllowOverride None
</Directory>
虛擬機器主機詳解
Apache的虛擬機器主機是一種允許在同一台機器上,運行超過一個網站的解決方案。虛擬機器主機有兩種,一種叫基於IP的(IP-based),另一種叫基於名字的(name-based)。虛擬機器主機的存在,對使用者來說是透明的。
基於IP的虛擬機器主機
對於基於IP的虛擬機器主機來說,必須為每個虛擬機器主機配備一個單獨的IP。也就是說你的伺服器必須有多個IP地址。對於這種方式,我們在本地就可以做一個實驗來進行配置。配置基於IP的虛擬機器主機,有兩種方法:
一是啟動多個apache伺服程式,每個執行個體使用單獨的設定檔,一般來說,在同一台機器上,架設兩個網站,這兩個網站互相之間不希望對方訪問自己的檔案,就使用這種方式,每個apache執行個體都是用單獨的使用者名稱,組來啟動,並且放到不同的目錄下,這種方式只要在apche的設定檔中,為Listen命令配置不同的ip即可;
在ports.conf 中增加監聽連接埠
[plain] view plaincopy
- NameVirtualHost *:80
- Listen 80
- NameVirtualHost *:12340
- Listen 12340
在sites-available中新加一個檔案(可以拷貝原有的default並改名)使用者定義新的網站
[plain] view plaincopy
- <VirtualHost *:12340>
- ServerAdmin webmaster@localhost
- ServerName wwwtest
- DocumentRoot /var/wwwtest
- ErrorLog /var/wwwtest/log/wwwtest_error.log
- LogLevel warn
- CustomLog /var/wwwtest/log/wwwtest_access.log combined
- </VirtualHost>
在sites-enable中新加一個對sites-available的軟串連
[plain] view plaincopy
- ln -s /etc/apache2/sites-available/test /etc/apache2/sites-enabled/test
重啟apache伺服器即可。
第二種方法是只啟動一個單一的apache進程,使用VirtualHost指令來為不同的網站,配置不同的值,這種配置方式,我們可以在本地做個實驗的,由於127.0.0.*的所有ip都是指向原生,所以,我們可以隨便拿兩個出來做實驗,按照如下方式配置apache,之後,在hosts檔案中,將網域名稱綁定到配置的ip上,就可以實現在本地運行多個wp系統的一個配置:
[plain] view plaincopy
- <VirtualHost 127.0.0.1:80>
- ServerAdmin yourname@domain.com
- DocumentRoot "/usr/mySite/test1"
- ServerName site1.com
- ServerAlias www.site1.com
- ErrorLog "logs/site1.com-error.log"
- CustomLog "logs/site1.com-access.log" combined
- </VirtualHost>
-
- <VirtualHost 127.0.0.2:80>
- ServerAdmin yourname@domain.com
- DocumentRoot "/usr/mySite/test2"
- ServerName site2.com
- ServerAlias www.site2.com
- ErrorLog "logs/site2.com-error.log"
- CustomLog "logs/site2.com-access.log" combined
- </VirtualHost>
基於名字的虛擬機器主機
基於名字的虛擬機器主機比起基於IP的來說,配置要更加簡單,它只要依靠用戶端發送的HTTP頭資訊中的HOST欄位來判斷,伺服器到底要服務哪個虛擬機器主機。一般情況下,還是比價推薦使用這種方式。因為IP資源日漸稀缺,對於一般使用者來說,為一台伺服器購買多個IP也是成本較高的。
使用這種方式配置時,首先是用NameVirtualHost指令,配置次apache執行個體監聽的IP地址和連接埠號碼,然後使用VirtualHost指令來配置不同的虛擬機器主機,上述的例子,用這種方式配置的話,配置方法如下(注意,在這種方式中,ServerName是必要欄位):
[plain] view plaincopy
- NameVirtualHost 127.0.0.1:80
-
- nbsp;<VirtualHost *:80>
- ServerAdmin yourname@domain.com
- DocumentRoot "/usr/mySite/test1"
- ServerName test1.com
- ServerAlias www.test1.com
- ErrorLog "logs/test1.com-error.log"
- CustomLog "logs/test1.com-access.log" combined
- </VirtualHost>
-
- <VirtualHost *:80>
- ServerAdmin yourname@domain.com
- DocumentRoot "/usr/mySite/test2"
- ServerName test2.com
- ServerAlias www.test2.com
- ErrorLog "logs/test2.com-error.log"
- CustomLog "logs/test2.com-access.log" combined
- </VirtualHost>