rhel5 LAMP配置詳解

LAMP是什麼這裏就不做過多的介紹了,下面將在一臺默認安裝有rhel5.8的系統上安裝配置LAMP平臺以及apache的各種應用,及php的一些經典應用.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
目錄
一.安裝apache,php,mysql
二.配置基於域名的虛擬主機
三.配置用戶認證
四.配置HTTPS
五.配置個人主頁
六.配置別名
七.配置客戶端訪問控制
八.安裝PhpMyAdmin
九.安裝Discuz論壇

 注: 二到七都是apache各種應用場景的配置;
       八是安裝一個基於PHP語言寫的MySQL數據庫網頁管理工具;
       九是安裝一個PHP的經典應用Discuz的論壇;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.安裝apache,php,mysql
1.  使用yum安裝,使用yum默認安裝好不許要做任何配置就是一個基本的LAMP平臺,RHEL5.8的系統上php提供了兩個版本,這裏主要是以5.3的爲例

  1. #yum -y install httpd php53 php53-mysql php53-mbstring mysql-server 

2.啓動httpd服務及mysql服務

  1. #service httpd start 
  2. #service mysqld start 
  3. #chkconfig httpd on 
  4. #chkconfig mysqld on 

二.配置基於域名的虛擬主機
1.  編輯httpd主配置文件

  1. #vim /etc/httpd/conf/httpd.conf 修改內容如下  
  2. #DocumentRoot "/var/www/html"  #註釋此行 一般在文件的280上下  
  3. Include conf/vhost/*.conf  #虛擬主機的配置文件統一存放到/etc/httpd/conf/vhost/*conf 
  4. NameVirtualHost *:80  
  5.  
  6. 創建存放虛擬主機配置文件的目錄 
  7. #mkdir /etc/httpd/conf/vhost 

2.配置虛擬主機,[站點一 www.andy.com 站點二 pma.andy.com 站點三 bbs.andy.com .三個    站點的根目錄在/web/{www,pma,bbs}]

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  #內容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] #管理員的郵箱
  4.         DocumentRoot    /web/www  #網站根目錄
  5.         ServerName      www.andy.com  #域名
  6.         ErrorLog        logs/www.andy.com.err.log  #錯誤日誌
  7.         CustomLog       logs/www.andy.com.access.log common #訪問日誌 
  8. </VirtualHost> 
  9.  
  10. #vim /etc/httpd/conf/vhost/pma.andy.com.conf    #內容如下 
  11. <VirtualHost *:80> 
  12.         ServerAdmin     [email protected] 
  13.         DocumentRoot    /web/pma 
  14.         ServerName      pma.andy.com 
  15.         ErrorLog        logs/pma.andy.com.err.log 
  16.         CustomLog       logs/pma.andy.com.access.log common 
  17. </VirtualHost> 
  18.  
  19. #vim /etc/httpd/conf/vhost/bbs.andy.com.conf 
  20. <VirtualHost *:80> 
  21.         ServerAdmin     [email protected] 
  22.         DocumentRoot    /web/bbs 
  23.         ServerName      bbs.andy.com 
  24.         ErrorLog        logs/bbs.andy.com.err.log 
  25.         CustomLog       logs/bbs.andy.com.access.log common 
  26. </VirtualHost> 

3.建立網站根目錄及建立測試頁面

  1. #mkdir -p /web/{www,pma,bbs} 
  2. #echo "www" > /web/www/index.html 
  3. #echo "pma" > /web/pma/index.html 
  4. #echo "bbs" > /web/bbs/index.html

4.啓動httpd服務及測試三個站點是否能正常訪問,首先要保證三個域名要能解析或者寫    入hosts文件,這裏使用DNS服務器解析的.

  1. #service httpd start  



可以看到訪問正常,虛擬主機的配置是ok的,

 

三.配置用戶認證
     apache默認的情況下,允許客戶端匿名訪問.可能在某些時候我們需要用戶輸入用戶
     名密碼後才能看到網站的內容的時候,就可以配置用戶認證.apche可以實現基本身份
      認證(密碼在傳輸的過程中使用明文傳輸),和摘要認證(使用hash算法傳輸密碼).
      apche 對基本身份認證有良好的支持,下面就配置使用基本身份認證用戶來源於
      htpasswd工具生成的用戶名密碼認證,和mysql數據庫.

1.  使用htpasswd命令生成的用戶名密碼認證方式
1.1 生成用戶名密碼的文件

  1. #htpasswd -cm /etc/httpd/conf/.auth andy 
  2. #htpasswd -m /etc/httpd/conf/.auth test 
  3. 創建兩個用戶andy test  
  4. -c 選項是創建一個新的文件,如果是第一次生成需要-c選項 
  5. -m 選項是使用md5加密存放密碼 
  6. -D 選項是刪除一個用戶 如#htpasswd -D /etc/httpd/conf/.auth name

1.2 配置對網站www.andy.com做身份認證對應網站根目錄爲/web/www

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  內容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin        [email protected] 
  4.         DocumentRoot       /web/www 
  5.         ServerName         www.andy.com 
  6.         ErrorLog           logs/www.andy.con.err.log 
  7.         CustomLog          logs/www.andy.com.access.log common 
  8.         <Directory "/web/www"> 
  9.                 Options  None 
  10.                 AllowOverride        AuthConfig #開啓認證
  11.                 AuthType             Basic #認證類型
  12.                 AuthName             xxxx #自己隨便定義 
  13.                 AuthUserFile         /etc/httpd/conf/.auth  #指定認證文件的位置
  14.                 Require  valid-user #用戶訪問權限,這裏表示允許所有用戶訪問 
  15.         </Directory> 
  16. </VirtualHost>
  17.  
  1. 重新啓動httpd服務 
  2. #service httpd restart 


1.3 測試認證

可以看到輸入用戶名密碼就行了

2.  用戶來源使用mysql數據庫認證
2.1使用mysql數據庫認證需要安裝一個認證模塊mod_auth_mysql 

  1. #yum -y install mod_auth_mysql 

2.2 創建認證的數據庫及表和用戶

  1. #mysql 
  2. CREATE DATABASE auth;  
  3. USE auth 
  4. CREATE TABLE users(name char(16),pwd char(16),PRIMARY KEY(name)); 
  5. INSERT INTO users(name,pwd) VALUES ('andy',ENCRYPT('redhat')); 
  6. INSERT INTO users(name,pwd) VALUES ('test',ENCRYPT('redhat')); 
  7. CRANT SELECT ON auth.* TO auth@localhost IDENTIFIED BY 'passwd'; 
  8. FLUSH PRIVILEGES; 
  9. #上面的sql語句是創建一個auth的數據庫跟users的表和兩個字段name pwd
  10. #然後添加兩個用戶andy test 密碼爲redhat並加密存放

2.3 配置對網站www.andy.com做身份認證對應網站根目錄爲/web/www

  1. <VirtualHost> 
  2.         ServerAdmin        [email protected] 
  3.         DocumentRoot       /web/www 
  4.         ServerName         www.andy.com 
  5.         ErrorLog           logs/www.andy.com.err.log 
  6.         CustomLog          logs/www.andy.com.access.log common 
  7.         <Directory "/web/www"> 
  8.                 Options                   None 
  9.                 AllowOverride             AuthConfig 
  10.                 AuthType                  Basic 
  11.                 AuthName                  andyauth 
  12.                 AuthMySqlEnable           on  #開啓數據庫認證
  13.                 AuthMySqlUser             auth  #訪問mysql數據庫的用戶即上面創建那個用戶
  14.                 AuthMySqlPassword         passwd  #訪問mysql數據庫用戶的密碼
  15.                 AuthMySqlDB               auth  #用戶認證的數據庫
  16.                 AuthMySqlUserTable        users  #用戶認證的表
  17.                 AuthMySqlNameField        name  #用戶名的字段
  18.                 AuthMySqlPasswordField    pwd  #密碼的字段
  19.                 Requidre                  valid-user 
  20.         </Directory> 
  21. </VirtualHost> 
  1. 重啓httpd服務 
  2. #service httpd restart 

注:我們知道http協議在傳輸的過程中是明文傳送的,像我們配置的基於基本用戶認證
的方式,用戶名密碼也是明文傳送的,這樣是很不安全的,下面將配置HTTPS使用ssl加密傳輸數據.


四.配置https,使用自頒發證書實現
把www.andy.com網站配置成https 網站根目錄位於/web/www
1.安裝mod_ssl模塊

  1. #yum -y install mod_ssl 

2.創建網站的私鑰以及網站證書,   {由於自頒發證書是隻https所使用的證書不是由一個權威的CA機構所頒發,這樣的話在客戶端在訪問網站時會提示“該證書不是由您沒有信
 任的公司所頒發“ 或類似警告信息.}

  1. 創建用於存放證書的目錄 
  2. #mkdir /etc/httpd/.sslkey
  3.  
  4. 建立網站私鑰文件 
  5. #cd /etc/httpd/.sslkey 
  6. #openssl genrsa -out https.key 
  7.  
  8. 創建網站證書文件,在這裏需要注意的是,創建證書的過程會提示輸入一些信息可以根據自己的需要去輸入, 
  9. 但“Common Name”這項必須輸入的是客戶端訪問網站時的FQDN 即域名 
  10. #openssl req -new -x509 -key https.key -out https.crt 
  11.  
  12. 處於安全的考慮,可以把證書存放目錄的權限設爲400 
  13. #chmod 400 /etc/httpd/.sslkey 

3.配置www.andy.com爲https

  1. #vim /etc/httpd/conf/vhost/www.andy.com.conf  內容如下 
  2. NameVirtualHost *:443 
  3. <VirtualHost *:443> 
  4.     ServerAdmin     [email protected] 
  5.     DocumentRoot        /web/www 
  6.     ServerName      www.andy.com 
  7.     SSLEngine       on  #開啓ssl
  8.     SSLCertificateFile      /etc/httpd/.sslkey/https.crt  #指定網站證書文件
  9.     SSLCertificateKeyFile   /etc/httpd/.sslkey/https.key  #指定網站私鑰文件
  10. 如果不需要認證的話下面的可以不配置
  11. <Directory "/web/www">  
  12.                 Options                   None  
  13.                 AllowOverride             AuthConfig  
  14.                 AuthType                  Basic  
  15.                 AuthName                  andyauth  
  16.                 AuthMySqlEnable           on         
  17.                 AuthMySqlUser             auth        
  18.                 AuthMySqlPassword         passwd      
  19.                 AuthMySqlDB               auth        
  20.                 AuthMySqlUserTable        users       
  21.                 AuthMySqlNameField        name        
  22.                 AuthMySqlPasswordField    pwd         
  23.                 Requidre                  valid-user  
  24.         </Directory>  
  25. </Directory>
  1. 重啓httpd服務 
  2. #service httpd restart 

4.測試, 需要注意的是訪問url是https://www.andy.com

上圖可以看到由於證書不是信任的CA機構頒發才提示此信息,不過沒關係點擊 “仍然繼續” 出現下圖

可以看到提示輸入用戶名密碼,這個是由於配置了用戶認證,現在用戶名密碼就是經過ssl加密過後在互聯網上傳輸的.

 

五.配置個人主頁
     所謂個人主頁其實就是apache以每個系統用戶家目錄中指定的目錄來做爲一個網站
     實在還不明白的話看下面配置就知道了,配置很簡單只需要在apache的主配置文件裏
     啓用UserDir選項即可.配置如下
1.編輯主配置文件,啓用UserDir

  1. #vim /etc/httpd/conf/httpd.conf   
  2. #UserDir disable   默認是禁用的需要註釋掉 
  3. UserDir  public_html  啓用個人主頁 
  4.  
  5. 上面的選項在rpm包安裝的apache主配置文件355行上下 

ok 配置就結束了,就這麼簡單,下面來創建個系統用戶測試測試
2.創建系統用戶

  1. 創建redhat用戶 
  2. #useradd redhat 
  3.  
  4. 創建用於存放網頁的目錄 
  5. #mkdir /home/redhat/public_html      
  6.  
  7. 修改redhat用戶家目錄權限,因爲我們知道運行httpd的用戶是apache用戶,我們訪問網頁的時候apache用戶要讀取頁面文件, 
  8. 而用戶的家目錄默認只有用戶自己有權限讀寫, 
  9. #chmod 705 -R /home/redhat/  
  10.  
  11. 建立測試頁面 
  12. #echo "<h1>redhat</h1>" /home/redhat/public_html/index.html
  1. 重啓httpd服務 
  2. #service httpd restart 

3.測試.訪問用戶的個人主頁的URL是http://服務器IP地址或域名/~用戶名

可以看到輸入http://www.andy.com/~redhat 訪問到redhat用戶的主頁了,但是這樣的URL顯然不是很友好,我們可以把用戶的網頁目錄鏈接到某個網站的
根目錄下就可以通過http://某網站的域名/用戶  訪問了

 

六.別名配置
     對於有些太長的URL在apache中可以通過別名的配置減少客戶端URL的長度
1.比如我們正常訪問的URL爲http://pma.andy.com/phpmyadmin可以通過別名設置爲http://pam.andy.com/pam 配置如下

  1. #vim /etc/httpd/conf/vhost/pam.andy.com.conf  內容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         Alias   /pma     /web/pma/phpmyadmin 
  9. </VirtualHost> 
  1. 重啓httpd服務 
  2. #service httpd restart 

2.除了URL別名外還可以使用ServerAlias,
   比如我們通過http://pma.andy.com能訪問到/web/pma下面的內容外還可以使用http://phpmyadmin.andy.com訪問問到/web/pma下面的內容 需要注意的是phpmyadmin.andy.com 這個域名客戶端要能通過DNS服務器解析,我試過添加hosts文件貌似不行 ,ServerAlias配置如下

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  內容如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         Alias   /pma    /web/pma/phpmyadmin 
  9.         ServerAlias     phpmyadmin.andy.com 
  10. </VirtualHost> 
  1. 重新啓動httpd服務 
  2. #service httpd restart 

3.除了上面兩種之外還可以使用腳本別名ScriptAlias
   處於安全的考慮apache中的CGI腳本只運行在特定的目錄下運行,那麼我們希望在其他目錄中運行CGI腳本的時候就可以使用ScriptAlias定義腳本別名來實現
比如說我們希望在/web/pam/cgi目錄運行腳本 如下

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  內容如下 
  2. <VirtualHost *:80> 
  3.         Options ExecCGI 
  4.         ServerAdmin     [email protected] 
  5.         DocumentRoot    /web/pma 
  6.         ServerName      pma.andy.com 
  7.         ErrorLog        logs/pma.andy.com.err.log 
  8.         CustomLog       logs/pma.andy.com.access.log common 
  9.         ScriptAlias     /cgi /web/pma/cgi 
  10. </VirtualHost> 
  1. 重新啓動httpd服務 
  2. #service httpd restart 

 

七.客戶端訪問控制
     在默認的情況下apache允許所有客戶端訪問,我們可以通過一系列的訪問權限對客戶端的來源進行訪問控制,
(1) Order  Allow,Deny
      默認拒絕所有,當Allow from 跟Deny from 衝突的時候Deny from 優先
(2) Oreer Deny,Allow
     默認允許所有,當Allow from 跟Deny from 衝突的時候Allow from 優先
                                           
(客戶端的來源定義方法)如下
IP指定單一主機                                           192.168.0.1
指定網段                                                      192.168.0.0/24
指定網段                                                      192.168.0.0/255.255.255.0
域名單一主機                                               test.andy.com
域名指定範圍                                               .andy.com
所有客戶端                                                   all

1.下面給出兩個例子

  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下 
  2. <VirtualHost *:80> 
  3.         ServerAdmin     [email protected] 
  4.         DocumentRoot    /web/pma 
  5.         ServerName      pma.andy.com 
  6.         ErrorLog        logs/pma.andy.com.err.log 
  7.         CustomLog       logs/pma.andy.com.access.log common 
  8.         <Directory "/web/pma"> 
  9.                 Order Allow,deny 
  10.                 Allow From all 
  11.                 Deny  From 192.168.0.0/24 
  12.                 Deny  From .andy.com 
  13.         </Directory>
  14. </VirtualHost> 
  15.  
  16. 默認拒絕所有, 
  17. 除了192.168.0.0/24網段跟andy.com域的所有主機不能訪問外,其他都允許訪問/web/pma目錄裏的內容
  1. #vim /etc/httpd/conf/vhost/pma.andy.com.conf  如下  
  2. <VirtualHost *:80>  
  3.         ServerAdmin     [email protected]  
  4.         DocumentRoot    /web/pma  
  5.         ServerName      pma.andy.com  
  6.         ErrorLog        logs/pma.andy.com.err.log  
  7.         CustomLog       logs/pma.andy.com.access.log common  
  8.         <Directory "/web/pma">  
  9.                 Order Deny,Allow  
  10.                 Deny  From all  
  11.                 Allow  From 192.168.0.1  
  12.                 Allow  From client.andy.com 
  13.         </Directory> 
  14. </VirtualHost>  
  15.  
  16. 默認允許所有, 
  17. 除了192.168.0.1主機跟client.andy.com主機外其他都不能訪問此/web/pma目錄的內容 

備註:Allow From  ,Deny From 可以根據自己的需要隨意調整,

 

八.配置安裝PhpMyAdmin,
    phpmyadmin 是一個由php語言寫的mysql數據庫管理工具,基於網頁的形式,配置和使用都非常簡單,
1.下載,並配置phpmyadmin,安裝完成後我們期望使用http://pma.andy.com訪問到phpmyadmin,  站點根目錄位於/web/pma

  1. 下載頁面 自行選擇相應的版本
  2. http://www.phpmyadmin.net/home_page/downloads.php 
  3.  
  4. 下載完成後配置如下 
  5. #tar xavf phpMyAdmin-3.5.1-all-languages.tar.gz 
  6. #mv phpMyAdmin-3.5.1-all-languages/* /web/pma/ 
  7. #mv /web/pma/config.inc.php /web/pma/config.inc.php 
  8. 處於安全的考慮,需要修改下cookie認證的字符串 
  9. #vim /web/pma/config.inc.php 
  10. $cfg['blowfish_secret'] = 'xxx';   xxx自己隨便定義一個字符串就可以了,這個配置項一般在文件中17行上下
  11. 由於上面安裝mysql的時候沒有設置管理員密碼,phpmyadmin默認不允許空密碼登錄,
  12. #mysqladmin -u root password redhat 

2.測試,在瀏覽器中輸入http://pma.andy.com就可以看到一個登錄界面,輸入mysql的用戶名密碼,就可以享受phpmyamin的旅程了,需要注意的是上面說過http協議在網絡中傳輸數據時是明文的方式,所以用戶名密碼也是明文傳輸的,可以以使用https這樣的話,數據在傳輸的過程中是通過ssl加密的,https的配置方法上面有介紹,這裏就做介紹了.

可以看到,能正常使用了.

 

九.配置安裝php經典應用Discuz論壇
     安裝一個完整的論壇需要裝兩個程序1.用戶管理中心(ucenter) 2.論壇程序(dsicuz),安裝完成後我們期望使用http://bbs.andy.com訪問到論壇  站點根目錄位於/web/bbs  配置如下
1.下載並配置ucenter和dsicuz

  1. #wget http://download.comsenz.com/UCenter/1.5.2/UCenter_1.5.2_SC_UTF8.zip 
  2. #wget http://download.comsenz.com/Discuz/7.2/Discuz_7.2_SC_UTF8.zip 
  3. #unzip UCenter_1.5.2_SC_UTF8.zip -d ucenter 
  4. #unzip unzip Discuz_7.2_SC_UTF8.zip -d discuz 
  5. #mv ucenter/upload /web/bbs/ucenter 
  6. #mv discuz/upload/* /web/bbs/ 
  7. #cd /web/bbs/ucenter 
  8. #touch data/config.inc.php
  9. #chmod a+w data/config.inc.php data/ data/cache/ data/view/ data/avatar/ data/logs/ data/backup/ data/tmp/
  10. #cd /web/bbs/ 
  11. #chmod a+w config.inc.php p_w_uploads/ forumdata/ forumdata/cache/ forumdata/templates/ forumdata/threadcaches/ forumdata/logs/ uc_client/data/cache/
  12. #vim /etc/php.ini 修改php配置文件裏的short_open_tag項
  13. short_open_tag = On 一般在文件中230行上下

2.創建論壇所需數據庫

  1. #mysql -u root -p 
  2. CREATE DATABASE bbs; 
  3. GRANT ALL ON bbs.* TO bbs@localhost IDENTITFIED BY 'passwd'; 
  4. FLUSH PRIVILEGES; 

3.安裝ucenter用戶管理中心,在瀏覽器中輸入http://bbs.andy.com/ucenter/install

3.1 是否同意授權協議>點同意

3.2 安裝前的一系列檢查, >下一步

3.3 配置數據庫信息,這裏輸入的信息就是剛剛創建的數據及用戶名密碼, 創始人密碼那裏是指 ucenter用戶管理中心的密碼 自己定義  >下一步

3.4 安裝數據庫,數據庫安裝完成ucenter基本就安裝好了

3.5 ucenter登錄界面 ,這裏需要注意的是密碼是上面自己定義的創始人密碼, 驗證碼有點不清晰,多點幾下登錄看到清晰的再輸入驗證碼


4. 利用ucenter後臺安裝discuz論壇
4.1 在ucenter用戶管理中心>點擊應用管理>點擊添加新應用(出現下圖) >在應用程序安裝地址中輸入http://bbs.andy.com/install 然後點擊安裝    

4.2 是否同意授權

4.3 檢查一系列配置

4.4 設置運行環境, 這裏需要注意的是域名一定要是客戶端能通過dns服務器解析的,dns服務器的配置見上篇博客

4.5 配置安裝數據庫  這裏輸入的管理員密碼是論壇的管理員密碼

4.6 正在安裝數據庫

4.7 輸入個人信息

4.8 安裝成功,可以看到論壇的頁面了

ok.配置到這裏論壇已經安裝成功了訪問論壇的url是http://bbs.andy.com 訪問用戶管理中心的url是http://bbs.andy.com/ucenter 慢慢享受discuz論壇之旅吧,

配置到這裏整篇博客也算是完工了,上面涉及到的知識點都可以根據自己的需求靈活應用.

感言:有點累,睡一會兒去.

 

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