11.14/11.15 Apache和PHP結合 11.16/11.17 Apache默認虛擬主機

 

11.14-11.15 Apache和PHP結合

Apache(httpd)的配置文件:/usr/local/apache2.4/conf/httpd.conf。php

配置Apache

選擇要調用的PHP

由於本機安裝了兩個版本的PHP,因此須要進行該配置,若是隻裝一個PHP服務則會默認調用存在的PHP服務(在此選用PHP5)。html

若是啓用兩個可能會出現linux

[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start
/usr/local/apache2.4/bin/apachectl: 行 79: 12546 段錯誤               $HTTPD -k $ARGV
[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf

把libphp7.so  用#註釋掉 ,指定Apache調用PHP5apache

把ServerName 的#號去掉,就不會在出現提示了vim

[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::6f15:52d3:ebeb:e193. Set the 'ServerName' directive globally to suppress this message
把servername 打開,上面這個提示就不會在提示了

[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl stop
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl start
[root@cham002 ~]# ps aux |grep httpd
root     12647  0.2  0.8 253584  8808 ?        Ss   14:39   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   12648  0.0  0.6 540412  6932 ?        Sl   14:39   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   12676  0.0  0.6 540412  6928 ?        Sl   14:39   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon   12677  0.0  0.6 540412  6928 ?        Sl   14:39   0:00 /usr/local/apache2.4/bin/httpd -k start
root     12733  0.0  0.0 112684   976 pts/1    S+   14:39   0:00 grep --color=auto httpd

添加監聽80端口的規則:瀏覽器

[root@cham002 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@cham002 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    8  1148 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
25324   53M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    1    60 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
    5   400 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    2   104 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
  722 70838 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 13 packets, 1883 bytes)
 pkts bytes target     prot opt in     out     source               destination

如果linux重啓後須要從新增長80端口規則服務器

進行Apache的配置php7

說明: 將此處的「Require all denied」改成「Require all granted」。app

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf

檢測配置是否存在語法錯誤:
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK


從新加載服務:
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl graceful
注:該命令不會使服務重啓,只是加載配置文件的內容。

說明: 至此,可使用瀏覽器直接訪問本地虛擬機IP。dom

添加PHP服務

受權PHP服務解析本機服務器

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 

    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php
    #


說明: 在此添加「AddType application/x-httpd-php .php」,意思是容許PHP服務解析該服務器。

 

增長索引頁

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

檢測、加載:
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl graceful

說明: 在此添加「index.php」,

 

檢測服務器是否支持PHP解析:

[root@cham002 ~]# vim /usr/local/apache2.4/htdocs/1.php

<?php
phpinfo()      #該參數的含義是PHP的信息
?>             #該命令的含義是:在訪問該地址時,直接打印PHP的相關信息

說明: 建立一個php文件,而後使用瀏覽器訪問該文件(此時不須要重啓服務器):

即,能夠正常訪問,說明該服務器支持PHP解析,若是不支持php解析的話,訪問該文件時會顯示源代碼。

完成PHP解析配置!

 

常見故障:

故障: 服務器沒法進行PHP解析!
解決辦法:

檢查Apache是否已加載PHP模塊

[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -M   
Loaded Modules:
 core_module (static)
 so_module (static)
 http_module (static)
 mpm_event_module (static)
 authn_file_module (shared)
 authn_core_module (shared)
 authz_host_module (shared)
 authz_groupfile_module (shared)
 authz_user_module (shared)
 authz_core_module (shared)
 access_compat_module (shared)
 auth_basic_module (shared)
 reqtimeout_module (shared)
 filter_module (shared)
 mime_module (shared)
 log_config_module (shared)
 env_module (shared)
 headers_module (shared)
 setenvif_module (shared)
 version_module (shared)
 unixd_module (shared)
 status_module (shared)
 autoindex_module (shared)
 dir_module (shared)
 alias_module (shared)
 php5_module (shared)
看有沒有加載PHP5   若是沒有用ls看看有沒有這個模塊文件
[root@cham002 ~]# ls /usr/local/apache2.4/modules/libphp5.so 
/usr/local/apache2.4/modules/libphp5.so
若是有文件,在檢查一下配置文件有沒有加載

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 

#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so
#LoadModule php7_module        modules/libphp7.so
則檢查Apache配置文件中有沒有加載PHP的配置:
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz
    AddType application/x-httpd-php .php   這行是有空格的注意!!!!!!

檢查配置文件是否存在語法錯誤。寫錯了是能夠檢查出來的
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

還有就是檢查是否有索引頁
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>

 

Apache配置PHP7解析

編輯配置文件(調用PHP7):

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 
#LoadModule php5_module        modules/libphp5.so
LoadModule php7_module        modules/libphp7.so

檢測、加載:
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl graceful

說明: 因在進行PHP5解析配置時已完成其餘相關配置,因此在此只需更改要調用的PHP版本便可,若是初次配置,操做同PHP5.

補充:快捷鍵 Ctrl+r

ctrl+r用途:反向搜索並調用執行過的命令。(reverse-i-search)。
使用方法:按ctrl+r後命令行會變成「(reverse-i-search)`': 」狀態,而後輸入使用過的參數,此時會直接顯示出相關的命令,回車便可執行該命令。

 

 

11.16-11.17 Apache默認虛擬主機

Windows系統hosts管理

Windows系統中hosts位置「C:\Windows\System32\drivers\etc\hosts」。
用記事本打開該文件:

說明: 在此能夠自定義匹配本地IP和域名,目的是添加臨時訪問地址(在DNS未生效的時候使用)。

 

添加虛擬主機

在hosts文件中添加「192.168.230.135 www.adai.com」便可將本地虛擬主機添加到Windows系統,訪問該域名時會自動解析到本地虛擬主機「ServerName www.example.com:80」。

LinuxApache虛擬主機管理

在物理機訪問的域名「www.adai.com」並未在虛擬機Apache配置文件中定義,虛擬機中只定義了「ServerName www.example.com:80」一個域名,該域名即爲Apache的默認主機,此時經過任何一個綁定該虛擬機IP的域名進行訪問都會跳轉到該主機。
由於一臺服務器能夠跑多個域名,爲了方便管理,須要對虛擬主機進行配置:

配置虛擬主機

編輯Apache配置文件:

[root@cham002 ~]# vim /usr/local/apache2.4/conf/httpd.conf 

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

把#號去到打開一個二級配置文件

說明: 編輯「Virtual hosts(虛擬主機)」的參數,去掉#,啓用虛擬主機配置文件「httpd-vhosts.conf」。
注: Apache也支持單獨管理每一個虛擬主機,配置參數以下:

該配置文件下每組「< VirtualHost *:80 >」表明一個主機(即:一個網站):

[root@cham002 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"      #指定域名所指向的地址
    ServerName abc.com                         #定義網站名稱
    ServerAlias www.abc.com www.123.com         #設置別名(可設置多個)

    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
    #日誌文件
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

此時即定義了一個網站,定義網站的核心參數即爲:DocumentRoot(網站根目錄)、ServerName(域名)。
注意: 虛擬主機生效後,原Apache配置文件中的默認主機(www.example.com ~ 192.168.8.131)就會失效(在此用www.example.com ~ 111.com進行驗證)。

添加虛擬主機相應目錄

[root@cham002 ~]# mkdir /data/wwwroot/
[root@cham002 ~]# mkdir /data/wwwroot/abc.com
[root@cham002 ~]# mkdir /data/wwwroot/111.com

在相應目錄建立PHP文件:

[root@cham002 ~]# vim /data/wwwroot/abc.com/index.php
<?php
echo "welcome to 111.com";
?>


[root@cham002 ~]# vim /data/wwwroot/111.com/index.php
<?php
echo "welcome to 111.com";
?>

檢測、重載Apache配置文件:

檢測出錯誤了! /usr/local/apache2.4/data/wwwroot/111.com 不存在?
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
AH00112: Warning: DocumentRoot [/usr/local/apache2.4/data/wwwroot/111.com] does not exist
Syntax OK

從新檢查配置文件發現少了個 斜槓  /

再次檢測、重載Apache配置文件:

[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@cham002 ~]# /usr/local/apache2.4/bin/apachectl graceful

虛擬主機測試

在此使用瀏覽器和curl命令分別進行測試。

若是不在虛擬機中進行本地域名配置(hosts),在進行ping命令測試虛擬主機域名時會訪問到外網。

  • curl -x 指定訪問端口
[root@cham002 ~]# curl -x192.168.230.135:80 wwww.abc.com
welcome to abc.com[root@cham002 ~]# 

[root@cham002 ~]# curl -x192.168.230.135:80 wwww.example.com
welcome to abc.com[root@cham002 ~]#

注意: 此時訪問全部未定義的域名都會將訪問地址指向到默認虛擬主機,由於已經自定義添加了虛擬主機,因此此時的默認虛擬主機爲配置文件「httpd-vhosts.conf」中的第一個虛擬主機(在此爲abc.com),效果以下:

[root@cham002 ~]# curl -x192.168.230.135:80 abce.com
welcome to abc.com

使用服務器訪問

注: 使用瀏覽器訪問本地虛擬主機IP時會將IP指向到默認虛擬主機,即 abc.com。

相關文章
相關標籤/搜索