首先,先看一些Apache服務器的基礎設置,他可以幫你在Ubuntu CentOS 和OSX下安裝和配置一個apache服務器并讓他支持PHP,然后可以創(chuàng)建多個虛擬主機(基于ServerName的)。
安裝
在不同的平臺下安裝Apache的方式大致相同,而且絕大多數(shù)的Linux發(fā)行版本會默認幫你安裝Apache,所以安裝Apache的第一步,應當是檢查你的操作系統(tǒng)里是否已經(jīng)安裝了Apache。檢查apache是否已經(jīng)安裝最簡單的方式一般是在終端輸入apache之類的命令,看是都存在。以分別是osx,ubuntu和CentOS檢查是否已經(jīng)安裝apache的方法:
CentOS & Ubuntu
# service httpd start
# service apache start
# apachectl start
OSX
基本目前主流的幾個osx版本都是默認安裝apache的,當然還有php
如果,你的系統(tǒng)很干凈(一般從網(wǎng)絡上租用或者購買的服務器主機都是很干凈的)那么你就需要自己安裝apache咯。
CentOS通過YUM安裝
# yum install httpd
或者(注意不是繼續(xù)是或者,兩條命令二選一,怎么選就看你的具體需求咯,關于httpd和apache2的關系。。。。此處略去一百字,如有疑問問谷哥)
# yum install apache2
ubuntu通過apt-get安裝
# apt-get get install apache2
那么,這是使用軟件包管理器來安裝apache的方法,Ubuntu通過apt-get獲取的對apache2會對配置文件目錄和管理稍微做一些優(yōu)化和CentOS略有不同。
其次,還有手動編譯安裝apache的辦法,大概就是這樣。
CentOS&Apache手動編譯:
# wget http://blablabla/apache.2.x.x.tar.gz(下載地址) # tar -zxvf apache2.x.x.tar.gz # cd apache2.x.x.x # ./configure --prefix=/path/to/you/want/install/dir # make # make install # /path/to/you/want/install/dir/apachectl start
Apache的配置
不管是在ubuntu還是在CentOS還是OSX下你都可以在/etc/apache(2)
下找到關于apache的配置文件
ubuntu下略微有點不同,Ubuntu下使用apache2.conf作為跟配置目錄,然后在這個文件中include另一些配置文件,其中需要注意的是sites-available
和sites-enabled
,sites-available內可以放置一些站點的配置文件,這些文件需要啟動的時候只需要在sites-enable里建立一個軟連接即可。
ln -s sites-enable/mysite.conf sites-available/mysite.conf
一些mod的開啟
你可以使用軟件包安裝mod-php和mod-python之類的工具,事實上是得到了一個so文件,以便apache鏈接,很多時候僅僅apache的配置文件內默認就已經(jīng)有這些mod文件了,你要做的僅僅是去掉前面的注釋(#)而已。
虛擬主機的配置
我舉一個最常用的栗子:
現(xiàn)在一個二級域名下有如下兩個站點:blog.mysite.comdev.mysite.com
如何讓用戶輸入不同的域名,apache可以給出不同目錄下的站點呢?虛擬主機(VirtualHost)可以很優(yōu)雅的解決這個問題:我們可以在主配置文件內,或者一些可以被主配置文件(http.confor
apache.conf)include的文件(OS X下的others,CentOS下的conf.d內 )。
大概是這么寫的:
<virtualHost *:80> DocumentRoot /Users/scoot/site/admin/www ServerName admin.dev.com <Directory "/Users/scoot/src/admin/www"> Options Indexes FollowSymLinks Multiviews AllowOverride All Order Allow,Deny Allow from all </Directory> </virtualHost> <virtualHost *:80> DocumentRoot /Users/scoot/site/jybweb/www ServerName www.dev.com <Directory "/Users/scoot/src/jybweb/www"> Options Indexes FollowSymLinks Multiviews AllowOverride All Order Allow,Deny Allow from all </Directory> </virtualHost>
上面的配置文件創(chuàng)建了兩個虛擬主機(它來自于我的osx上的apache配置文件),我們現(xiàn)在來解讀這些語句的含義:
<virtualHost :80>
#
指定了虛擬主機監(jiān)聽的ip或者域名為,端口為80端口
DocumentRoot
指定了網(wǎng)站所位于的目錄
ServerName
則為我們的域名
<Directory>
則具體配置了我們某一個目錄的訪問權限
Options
則制定了頁面顯示的一些規(guī)則
Indexs
默認按照apache的Indexs配置來選擇默認打開的文檔,如index.php
index.html
你可以在apache的主配置文件內去增加你想作為默認文檔的名字
FollowSymLinks
是在默認文檔沒有匹配到之后顯示整個文件列表(我建議你在項目上線的時候移除它,除非你的目錄下有.htaccess
文件)
Multiviews
這應該是apache2新特性
了,可以按照apache2的一個隱式的規(guī)則對文件名做匹配,比如可以實現(xiàn)index代替index.php事實上我的配置文件內Multiviews并沒有什么卵用,很多時候Multiviews反而會影響程序的調試,比如php的rewrite
AllowOverride
當設置為All的時候apache是支持此目錄下的rewrite_mod的,也就是說如果你的目錄下包含.htaccess文件,那么你必須設置AllowOverride 為All,否則請設置為None
Order Allow,Deny
是對過濾操作的一個排序,決定優(yōu)先處理Allow(允許)還是優(yōu)先處理Deny(拒絕)
Allow From
說白了就是白名單 all表示全部,當然你也可以制定一個IP地址段,比如Allow From 10.1.0.0/255.255.0.0
ip地址段的表達公式可以自行補課,不屬于本節(jié)課范疇
Deny From
黑名單,用法同Allow From相同,功能相反
通常你還可以添加更多的Directory,分別設置不同的權限
當配置文件被修改后一般需要重啟服務器,在此之前建議使用如下命令檢查配置文件是否包含語法錯誤:
# apachectl -t
確認無誤,也就是返回Syntax OK
后再重啟服務器,重啟服務器有多種命令,即可以使用系統(tǒng)服務Service也可使用直接定位到init.d內的apache2,也可以直接apachectl restart,下面是比較常用的一種:
# service httpd(or apache2) restart
DNS設置
如果你擁有一個上面的二級域名,你可以對其設置DNS綁定,這很簡單就是點點鼠標的事情。但是,如果你還沒有一個域名,也沒有公網(wǎng)服務器,你只是想在本機做配置的話,你可以修改本機的hosts文件,分別綁定幾個域名到127.0.0.1,大概像下面這樣:
9 ::1 localhost 10 127.0.0.1 admin.dev.com 11 127.0.0.1 www.dev.com 12 127.0.0.1 mysite 13 127.0.0.1 conf.dev.com
如果你希望你局域網(wǎng)內的所有用戶都可以通過域名來訪問的話,你可以考慮編寫幾行代碼提供下載,幫助用戶修改hosts文件,如果你的公司網(wǎng)絡為三級網(wǎng)構架,你可以在你的機房自己配置一臺DNS服務器。
文件系統(tǒng)的權限
你以為把Apache配置好了,重啟成功了,DNS也指向過來了,你就可以通過域名訪問不同的站點了?一般情況下,你還需要特別注意文件系統(tǒng)的權限。比如,(Linux中)當你的網(wǎng)站目錄被放在你的用戶目錄下時,你可能會得到403錯誤,這個時候必須更改文件的從屬,你可以把你的用戶添加到apache用戶組內;
在ubuntu下叫做www-data, osx下叫做_www, centos下叫做www,你可以在apache.conf或者httpd.conf內修改Groups的名字。
你可以嘗試使用chown命令:
# chown -R ($whoami):www DocumentRoot
在osx或者ubuntu下,可能組的名稱并不是www,你可以自幾在apache.conf或者httpd.conf中修改。
為了安全起見,最好在設置一下文件系統(tǒng)的權限,比如:
# chmod -R 744 DocumentRoot
至于到底是 777 766 744 或是 644 ,給什么樣的權限,則要看你的需求,如果你的文檔中有文件需要寫入權限或者有文件夾是用來存放動態(tài)生成的文件的,那么比最好是單獨指定該文件或者文件夾的權限屬性。
配置Apache
服務器配置步驟:
1> 打開服務器配置目錄
cd /etc/apache2/
2> 查看當前目錄下內容
ls
3> 修改服務器根路徑
{
sudo vim httpd.conf //進入服務器配置文件
/DocumentRoot 回車 //查找服務器默認根路徑
將默認根路徑 DocumentRoot "/Library/WebServer/Documents" 注釋掉;
在注釋掉的根路徑下面一行增加新的根路徑
DocumentRoot "/Users/likaining/Sites"
將 <Directory "/Library/WebServer/Documents"> 注釋掉;
增加新的 <Directory "/Users/likaining/Sites">
注意: Mac 10.10 的 Apache 增加如下操作!
(看"服務器配置視頻\02-Mac10.10 Apache配置.mp4")
在 httpd.conf 中找到
"Options FollowSymLinks Multiviews"
加一個單詞 Indexes,修改后的結果如下:
"Options Indexes FollowSymLinks Multiviews"
}
4> 保存退出
:wq 回車
"注意":如果感覺修改錯誤了,想重新進入修改,就做不保存退出的操作
不保存退出
:q! 回車
// 切換工作目錄
$cd /etc/apache2
常用命令
- cd 切換目錄/Users/itcast/Sites
- pwd 確認當前目錄
- ls 列表顯示當前目錄的內容
// *** 備份文件,以防不測,只需要執(zhí)行一次就可以了
$sudo cp httpd.conf httpd.conf.bak
格式 cp (copy 的縮寫) httpd.conf (源文件) httpd.conf.bak (目標文件)
// 提示:如果后續(xù)操作出現(xiàn)錯誤!可以使用以下命令,恢復備份過的 httpd.conf 文件
$ sudo cp httpd.conf.bak httpd.conf
// vim里面只能用鍵盤,不能用鼠標
// 用vim編輯httpd.conf
$sudo vim httpd.conf
// 查找DocumentRoot
- /DocumentRoot
"將光標移動到首行"
// 進入編輯模式 - i
"修改引號中的路徑"
// 進入命令模式 - ESC
// 查找DocumentRoot - n
"將光標移動到首行"
// 進入編輯模式 - i
"修改括號中的路徑"
// 進入命令模式 - ESC
// 查找php - /php
"將光標移動到首行"
// 刪除行首注釋# - x
// 保存并退出 - :wq
// 不保存退出!!!!!!!!! - :q!
// 切換工作目錄
$cd /etc
etc 目錄有點類似于 windows/system32,存放配置文件的目錄
// 拷貝php.ini文件
$sudo cp /etc/php.ini.default /etc/php.ini
// 重新啟動apache服務器
$sudo apachectl -k restart
如果提示以下錯誤是正常的:
httpd: Could not reliably determine the server's fully qualified domain name, using teacher.local for ServerName
httpd not running, trying to start
================================================================================
常見問題:
- 如果點擊info.php文件,出現(xiàn)下載,或者只是顯示一小段文字
解決辦法:
在終端中輸入以下兩個命令:
// 關閉 apache 服務器
$sudo apachectl -k stop
// 重新再次啟動 apache
$sudo apachectl -k start
- 每次啟動計算機,Apache服務器默認是不會自動啟動的!
可以啟動計算機之后,打開終端,輸入以下命令:
// 啟動 apache
$sudo apachectl -k start
- 最常見的問題
交換文件已經(jīng)存在,直接按字母 "d",可以刪除交換文件!
- Mac 10.10 的 Apache 配置略微有一些不一樣!
看"服務器配置視頻\02-Mac10.10 Apache配置.mp4"
在 httpd.conf 中找到
"Options FollowSymLinks Multiviews"
加一個單詞 Indexes,修改后的結果如下:
"Options Indexes FollowSymLinks Multiviews"
提示:目前不要花一分鐘去學習vim。
- 執(zhí)行腳本的時候,顯示沒有拒絕訪問!大家用 NTFS 格式的 U 盤拷貝網(wǎng)絡素材!會把文件本身的權限過濾掉!
以下是在終端中修改文件權限的指令!
/**
- 查看當前文件夾中的文件訪問權限
*/
$ ls -la
$ chmod 644 info.php(沒有權限的文件名)
$ chmod 644 .
啟動服務器
sudo apachectl -k start 或者 sudo apachectl start
關閉服務器:
sudo apachectl -k stop 或者 sudo apachectl stop
重新啟動服務器
sudo apachectl -k restart 或者 $sudo apachectl restart