參考文章來源:http://www.cnblogs.com/zhy113/archive/2013/03/26/2983659.html 作者:zhaohongyu113
web代碼素材來源:開源中國http://www.oschina.net/news/39477/charisma
筆者按照下面的步驟在ubuntu下部署了apache httpsever ,並上傳了從開源中國下載的web代碼,web代碼放在/var/www下、效果如下:
其實還可以做成文件服務器,把文件放在/var/www即可,效果如下圖:
參考部署步驟:
一:安裝
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 中
- <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中,裏面有這樣的內容:
- 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 中增加監聽端口
- NameVirtualHost *:80
- Listen 80
- NameVirtualHost *:12340
- Listen 12340
在sites-available中新加一個文件(可以拷貝原有的default並改名)用戶定義新的站點
- <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的軟連接
- ln -s /etc/apache2/sites-available/test /etc/apache2/sites-enabled/test
重啓apache服務器即可。
第二種方法是隻啓動一個單一的apache進程,使用VirtualHost指令來爲不同的站點,配置不同的值,這種配置方式,我們可以在本地做個試驗的,由於127.0.0.*的所有ip都是指向本機的,所以,我們可以隨便拿兩個出來做實驗,按照如下方式配置apache,之後,在hosts文件中,將域名綁定到配置的ip上,就可以實現在本地運行多個wp系統的一個配置:
- <VirtualHost 127.0.0.1:80>
- ServerAdmin [email protected]
- 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 [email protected]
- 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是必填字段):
- NameVirtualHost 127.0.0.1:80
- nbsp;<VirtualHost *:80>
- ServerAdmin [email protected]
- 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 [email protected]
- 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>