LAMP配置篇

配置LAMP就以安裝wordpress爲例


1. 開啓httpd的虛擬主機的功能

[root@web htdocs]# vim /etc/httpd/httpd.conf
#DocumentRoot "/usr/local/apache/htdocs"   #關閉中心主機
# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf   #開啓虛擬主機


2. 編輯虛擬主機(基於主機的訪問控制)

[root@web htdocs]# vim /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost 192.168.2.91:80>
  Servername www.luntan.com
  DocumentRoot "/usr/local/apache/htdocs/xcache-admin/"
  ErrorLog "/var/log/httpd/error.log"
  CustomLog "/var/log/httpd/access.log" combined
</VirtualHost>
<VirtualHost 192.168.2.91:80>
  Servername www.luntan2.com
  DocumentRoot "/usr/local/apache/htdocs/dong/"
  ErrorLog "/var/log/httpd/errord.log"
  CustomLog "/var/log/httpd/accessd.log" combined
   <Directory "/usr/local/apache/htdocs/dong/">
   Options FollowSymlinks
   AllowOverride none
   Order Allow,Deny
   Allow from 192.168.2.0/24
   </Directory>
</VirtualHost>

這個我建立了2個虛擬主機,一個上一篇博客裏的xcache的web管理界面,還有一個是即將要建立的wordpress。


  編輯虛擬主機(基於用戶的訪問控制)

[root@web ~]# vim /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost 192.168.2.91:80>
  Servername www.luntan.com
  DocumentRoot "/usr/local/apache/htdocs/xcache-admin/"
  ErrorLog "/var/log/httpd/error.log"
  CustomLog "/var/log/httpd/access.log" combined
</VirtualHost>
<VirtualHost 192.168.2.91:80>
  Servername www.luntan2.com
  DocumentRoot "/usr/local/apache/htdocs/dong/"
  ErrorLog "/var/log/httpd/errord.log"
  CustomLog "/var/log/httpd/accessd.log" combined
   <Directory "/usr/local/apache/htdocs/dong/">
   Options FollowSymlinks
   AllowOverride none
   AuthName "tom"     #認證的提示信息,可以隨便寫
   AuthType basic
   AuthUserFile /etc/httpd/htpasswd
   Require user tom

  給tom提供密碼文件

[root@web ~]# htpasswd -m -c /etc/httpd/htpasswd tom
New password:
Re-type new password:
Adding password for user tom


3. 解壓wordpress

[root@web ~]# unzip wordpress-3.8-zh_CN.zip
[root@web ~]# mv wordpress /usr/local/apache/htdocs/dong
[root@web ~]# cd  !$


4. 修改配置文件

[root@web dong]# mv wp-config-sample.php wp-config.php
[root@web dong]# vim !$
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress數據庫的名稱 */
define('DB_NAME', 'wordpress');
/** MySQL數據庫用戶名 */
define('DB_USER', 'root');
/** MySQL數據庫密碼 */
define('DB_PASSWORD', '12345');
[root@web dong]# mysql -e "create database wordpress;"


5. 開始安裝

wKiom1MQAnDBmZjKAAIkKA1mO0c530.jpg

wKioL1MQAt2RtIWwAAH1_RCLbdc806.jpg

到xcache上查看緩存的命中狀態

wKioL1MQAzXwwS4iAAKSCMg45V4580.jpg

附:

httpd.conf基本設定
httpd.conf配置文件有3個部分組成,分別是:全局變量、配置主服務器、配置虛擬主機。
下面我們詳解講述下/usr/local/apache2/conf/httpd.conf文件各個指令的含義。
[root@webserver ~]#vi /usr/local/apache2/conf/httpd.conf
全局變量配置部分
ServerRoot "/usr/local/apache2"
ServerRoot用於指定守護進程httpd的運行目錄, httpd在啓動之後自動將進程的當前目錄切換到這個指定的目錄下,可以使用相對路徑和絕對路徑。
PidFile logs/httpd.pid
PidFile指定的文件將記錄httpd守護進程的進程號,由於httpd能自動複製其自身,因此apache啓動後,系統中就有多個httpd進程,但只有一個進程爲最初啓動的進程,它爲其他進程的父進程,對父進程發送信號將影響所有的httpd進程。
Timeout 300
Timeout用來定義客戶端和服務器端程序連接的超時間隔,單位爲秒,超過這個時間間隔,服務器將斷開與客戶端的連接。
KeepAlive On
KeepAlive用來定義是否允許用戶建立永久連接,On爲允許建立永久連接,Off表示拒絕用戶建立永久連接,例如,要打開一個含有很多圖片的頁面,完全可以建立一個tcp連接將所有信息從服務器傳到客戶端即可,而沒有必要對每個圖片都建立一個tcp連接。此選項建議設置爲On。
MaxKeepAliveRequests 100
 MaxKeepAliveRequests用來定義一個tcp連接可以進行HTTP請求的最大次數,設置爲0代表不限制請求次數,這個選項與上面的KeepAlive相互關聯,當KeepAlive設定爲On,這個設置開始起作用。
KeepAliveTimeout 15
 KeepAliveTimeout用來限定一次連接中最後一次請求完成後延時等待的時間,如果超過了這個等待時間,服務器就斷開連接。
<IfModule prefork.c>
ServerLimit  300
StartServers         5
MinSpareServers      5
MaxSpareServers     20
MaxClients         300
MaxRequestsPerChild  2000
</IfModule>

<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>
上面的兩段指令其實是對web服務器的使用資源進行的設置,apache可以運行在prefork和worker兩種模式下,可以通過/usr/local/apache2/bin/httpd –l來確定當前apache運行在哪種模式,在編譯apache時,如果指定“--with-mpm=MPM”參數,那麼apache默認運行在prefork模式下,如果指定的是“--with-mpm=worker”參數,那麼默認運行在worker模式下。如果沒有做任何模式指定,那麼apache默認也運行在prefork模式下。
prefork採用預派生子進程方式,用單獨的子進程來處理不同的請求,進程之間彼此獨立。
 StartServers表示在啓動apache時,就自動啓動的進程數目。
 MinSpareServers設置了最小的空閒進程數,這樣可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。
 MaxSpareServers設置了最大的空閒進程數,如果空閒進程數大於這個值,apache會自動關閉這些多餘進程,如果這個值設置的比小MinSpareServers,則Apache會自動把其調整爲 MinSpareServers+1。
 MaxRequestsPerChild設置了每個子進程可處理的最大請求數,也就是一個進程能夠提供的最大傳輸次數,當一個進程的請求超過此數目時,程序連接自動關閉。0意味着無限,即子進程永不銷燬。這裏我們設置爲2000,已經基本能滿足中小型網站的需要。
 MaxClients設定Apache可以同時處理的請求數目。是對Apache性能影響最大的參數,默認值150對於中小網站基本夠了,但是對於大型網站,是遠遠不夠的,如果請求總數已達到這個值,那麼後面的請求就必須排隊,這就是系統資源充足而網站訪問卻很慢的主要原因。理論上這個值設置的越大,可以處理的請求的越多,但是apache默認限制不能超過256,如果要設置的值大於256,可以直接使用ServerLimit指令加大MaxClients。這裏我們設置的值是300。
相對於prefork,worker是全新的支持多線程和多進程的混合模型,由於是使用線程來處理請求,所以可以處理更多的請求,對系統資源的使用開銷也比較小。
 MinSpareThreads設置了最少的空閒線程數。
 MaxSpareThreads設置了最多的空閒線程數。
 MaxClients設定同時連入客戶端的最大數。如果現有子進程中的線程總數不能滿足請求的負載,控制進程將派生出新的子進程。默認最大子進程數是16,加大時需要通過ServerLimit來進行聲明,ServerLimit最大值爲20000,注意,如果指定了ServerLimit,那麼此值乘以ThreadsPerChild必須大於等於MaxClients,而MaxClients必須是ThreadsPerChild的整數倍,否則 Apache將會自動調節到一個相應值。
 ThreadsPerChild設定每個子進程的工作線程數,此選項在worker模式下與性能密切相關,默認最大值爲64,如果系統負載很大,不能滿足需求的話,需要使用 ThreadLimit指令,此指令默認最大值爲20000,Worker模式下所能同時處理請求總數由子進程數乘以ThreadsPerChild值來確定,保證大於等於MaxClients的設定值。
Listen 80
此指令是設置apache的監聽端口,默認的http服務都是運行在80端口下,當然也可以修改爲其它端口。
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule jk_module modules/mod_jk.so
加載mod_jk模塊,上面我們已經生成了JK模塊,並且放到了modules目錄下,這裏這需指定加載即可。
……以下省略……

配置主服務器
User nobody
Group nobody
這裏是設定執行httpd的用戶和組,默認是nobody用戶啓動apache,這裏將組也設置爲nobody。
ServerAdmin [email protected]
這裏指定的是網站管理員的郵件地址,如果apache出現問題,會發信到這個郵箱。
ServerName www.example.com:80
這裏是指定系統的主機名,如果沒有指定,會以系統的hostname爲依據。特別注意,這裏設定的主機名一定要能找到對應的IP地址(主機名和IP的對應關係可以在/etc/hosts設置)。
UseCanonicalName Off
設定是否使用標準的主機名,如果設置爲On,則以ServerName指定的主機名爲主。如果web主機有多個主機名,請設置爲Off。
DocumentRoot "/usr/local/apache2/htdocs"
此指令非常重要,是用來放置網頁的路徑,apache會默認到這個路徑下尋找網頁,並顯示在瀏覽器上。
<Directory />
#這裏的“/”是相對路徑,表示DocumentRoot指定的目錄。
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/usr/local/apache2/htdocs">
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
上面這段信息是對DocumentRoot指定目錄的權限設定,有3個必須知道的參數:
Options 表示在這個目錄內能夠執行的操作,主要有5個可設定的值:
Indexes:此參數表示,如果在DocumentRoot指定目錄下找不到以index打頭的文件時,就將此目錄下所有文件列出來,很不安全,不建議使用這個參數。
FollowSymLinks:表示在DocumentRoot指定目錄下允許符號鏈接到其它目錄。
ExecCGI:表示允許在DocumentRoot指定的目錄下執行cgi操作。
Includes:准許SSI(Server-side Includes)操作。
MultiViews:不常用,根據語言的不同顯示不通的信息提示。
AllowOverride 通過設定的值決定是否讀取目錄中的.htaccess文件,來改變原來所設置的權限,其實完全可以在httpd.conf中設置所有的權限,但是這樣對apache使用者的其它用戶如果要修改一些權限的話,就比較麻煩了,因此apache預設可以讓用戶以自己目錄下的. htaccess文件複寫權限,常用的選項有兩個:
All:表示可以讀取.htaccess文件的內容,修改原來的訪問權限。
None:表示不讀取.htaccess文件,權限統一控制。
Order 用來控制目錄和文件的訪問授權,常用的組合有2個:
Deny,Allow:表示先檢查禁止的設定,沒有禁止的全部允許。
Allow,Deny:表示先檢查允許的設定,沒有允許的全部禁止。
DirectoryIndex index.html index.htm index.jsp index.html.var
這裏是對apache打開網站默認首頁的設定,apache在打開網站首頁時一般會查找index.*之類的網頁文件,DirectoryIndex指令就是設置apache依次尋找能打開網站首頁的順序,例如我們要打開www.ixdba.net網站,apache會首先在DocumentRoot指定的目錄下尋找index.html,也就是www.ixdba.net/index.html,如果沒有找到index.html網頁,那麼apache會接着查找index.htm,如果找到就執行www.ixdba.net/index.htm打開首頁,以此類推。
UserDir public_html
UserDir用於設定用戶個人主頁存放的目錄,默認爲“public_html”目錄,例如有個用戶爲ixdba,如果他的根目錄爲/home/ixdba,那麼他的默認主頁存放路徑爲/home/ixdba/public_html。
AccessFileName .htaccess
定義每個用戶目錄下的訪問控制文件的文件名,默認爲.htaccess,
TypesConfig conf/mime.types
TypesConfig用來定義在哪裏查詢mime.types文件
HostnameLookups Off
用來指定apache在日誌中記錄訪問端地址是ip還是域名,如果爲Off,則記錄IP地址,如果是On,記錄域名信息,建議設置爲Off。
ErrorLog logs/error_log
指定錯誤日誌文件的位置
CustomLog logs/access_log common
指定apache訪問日誌文件的位置和記錄日誌的模式。
ServerTokens Full
這個指令定義包含在HTTP迴應頭中的信息類型,默認爲“Full”,表示在迴應頭中將包含操作系統類型和編譯信息,可以設爲Full|OS|Minor|Minimal|Major|Prod列各值中的一個,Full包含的信息最多,而Prod最少。
ServerSignature On
此指令有3個選項,On、Off和Email,On選項表示在apache的出錯頁面會顯示apache版本以及加載的模塊信息,Email選項與On相同,但是還會多出一個包含管理員郵件地址的mailto連接。Off表示不顯示任何上面信息。
Alias /icons/ "/usr/local/apache2/icons/"
<Directory "/usr/local/apache2/icons">
   Options Indexes MultiViews
   AllowOverride None
   Order allow,deny
   Allow from all
</Directory>
上面這段信息是apache中對別名的設定,當訪問http://ip或域名/icons時,由於Alias的原因,apache不會去DocumentRoot指定的目錄查找文件,而是直接訪問/usr/local/apache2/icons 目錄下對應的文件信息。而<Directory>標籤就是對這個目錄權限的設定。
ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"
<Directory "/usr/local/apache2/cgi-bin">
   AllowOverride None
   Options None
   Order allow,deny
   Allow from all
</Directory>
這段信息和上面的Alias設定類似,只不過這個是設置cgi腳本的執行權限而已,apache默認在/usr/local/apache2/cgi-bin目錄下具有cgi腳本執行權限。
JkWorkersFile /usr/local/apache2/conf/workers.properties
JkMountFile   /usr/local/apache2/conf/uriworkermap.properties
JkLogFile /usr/local/apache2/logs/mod_jk.log
JkLogLevel info
JkLogStampformat "[%a %b %d %H:%M:%S %Y]"
上面這5行是對JK連接器屬性的設定,第一、二行指定Tomcat workers配置文件以及對網頁的過濾規則,第三行指定JK模塊的日誌輸出文件,第四行指定日誌輸出級別,最後一行指定日誌輸出格式。
虛擬主機的設定
NameVirtualHost *
表示啓用虛擬主機,如果開啓虛擬主機,上面DocumentRoot指令指定的配置將失效,以虛擬主機中指定的DocumentRoot爲主。
<VirtualHost *>
   ServerAdmin [email protected]
   DocumentRoot /webdata/www
   ServerName 192.168.60.198
   ErrorLog logs/error_log
   CustomLog logs/access_log common
JkMountFile  conf/uriworkermap.properties
</VirtualHost>
上面這段是添加一個虛擬主機,其實虛擬主機是通過不同的ServerName 來區分的,這裏爲了演示方便,使用IP代替域名。我們經常看到在一個web服務器上有很多個網站,並且每個站點都不相同,這就是通過虛擬主機技術實現的。
每個虛擬主機用<VirtualHost>標籤設定,各個字段含義如下:
ServerAdmin:表示虛擬主機的管理員郵件地址。
DocumentRoot:指定虛擬主機站點文件路徑。
ServerName:虛擬主機的站點域名
ErrorLog:指定虛擬主機站點錯誤日誌輸出文件。
CustomLog:指定虛擬主機站點訪問日誌輸出文件。
JkMountFile:指定對此虛擬主機的URL映射文件。
例如,我們要在一個服務器上建立3個網站,只需配置下面3個虛擬主機即可:
<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /webdata/html
   ServerName www.ixdba.net
   ErrorLog logs/www.error_log
   CustomLog logs/www.access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /webdata/bbs
   ServerName bbs.ixdba.net
   ErrorLog logs/bbs.error_log
   CustomLog logs/bbs.access_log common
</VirtualHost>
<VirtualHost *:80>
   ServerAdmin [email protected]
   DocumentRoot /webdata/mail
   ServerName mail.ixdba.net
   ErrorLog logs/mail.error_log
   CustomLog logs/mail.access_log common
</VirtualHost>
這樣,就建立了3個虛擬主機,對應的站點域名分別是www.ixdba.net、bbs.ixdba.net、mail.ixdba.net,接下來的工作就是將這3個站點域名對應的IP全部解析到一臺web服務器即可。

附錄轉自:http://ixdba.blog.51cto.com/2895551/564060

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