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

Apache和php結合

內容:
httpd主配置文件httpd.conf
• vim /usr/local/apache2.4/conf/httpd.conf //修改如下4個地方
ServerName
Require all denied \將denied 修改爲granted
AddType application/x-httpd-php .php \這一行就是用來讓apache來解析php的。
DirectoryIndex index.html index.phpphp

• /usr/local/apache2.4/bin/apachectl -t //測試語法
• /usr/local/apache2.4/bin/apachectl start //啓動服務
• netstat -lntp
• curl localhost
• vim /usr/local/apache2.4/htodc s/test.php //增長以下內容html

<?php echo 123; ?> mysql

• curl localhost/test.phplinux


配置httpd支持php
修改4個地方web

[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

第一:將ServerName 前面的註釋取消,這樣在啓動的時候就不會提示了下列信息了:sql

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::a690:a058:18a8:eb11. Set the 'ServerName' directive globally to suppress this message

再次啓動apache

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl start
httpd (pid 2484) already running

查看進程vim

[root@linux-129 ~]# ps aux |grep httpd
root      2484  0.0  0.4 264288  9056 ?        Ss   13:20   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    2485  0.0  0.4 551116  9076 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    2486  0.0  0.4 551116  9072 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k start
daemon    2489  0.0  0.4 551116  9076 ?        Sl   13:20   0:00 /usr/local/apache2.4/bin/httpd -k start
root      2574  0.0  0.0 112680   972 pts/0    S+   13:22   0:00 grep --color=auto httpd

查看端口windows

[root@linux-129 ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1011/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1721/master
tcp6       0      0 :::3306                 :::*                    LISTEN      1319/mysqld
tcp6       0      0 :::80                   :::*                    LISTEN      2484/httpd
tcp6       0      0 :::22                   :::*                    LISTEN      1011/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      1721/master
[root@linux-129 ~]#

咱們在window上面測試一下:輸入服務器IP地址
瀏覽器

發現打不開網頁
檢查一下IP是否ping一般,端口是否正常

IP能真正ping通

在windows上用telnet命令,須要在控制面板-程序-打開或者關閉window功能將telnet客戶端打開

這個提示就是端口沒有打開。

多是防火牆的問題,沒有打開80端口
咱們手動添加如下80端口

[root@linux-129 ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT

添加完之後我發如今windows上仍是仍是telnet不一樣服務器的80端口,我將iptables的規則清除之後,從新添加了這條規則後在次測試

再檢查一下:

這種就是成功了。

而後再瀏覽器上測試一下:

有時候咱們在訪問網頁的時候提示403 Forbindden:拒絕訪問
第二:咱們須要將denied修改爲granted,容許全部的請求

第三:找到AddType 增長: AddType application/x-httpd-php .php
這一行就是用來讓apache來解析php的。

第四:增長索引頁,index.php

第五:檢查模塊當中是否添加了libphp5

[root@linux-129 ~]# ls /usr/local/apache2.4/modules/libphp5.so
/usr/local/apache2.4/modules/libphp5.so

第六:檢查配置文件裏面有沒有加載LoadModule php5_module modules/libphp5.so

-t 檢查配置文件是否正確

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

從新加載配置文件 :graceful,從新加載配置,但不會重啓服務

[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl graceful

驗證apache支持解不解析php
咱們在瀏覽器上測試的時候,訪問的網頁的目錄是在/usr/local/apache2.4/htdocs/目錄下的index.php;
咱們在目錄下面建立一個php的文件,看它是否能解析

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

在網頁上測試:
表示解析成功

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

咱們也能夠在使用php7來解析
從新加載配置

phpinfo查看的內容和/usr/local/php/bin/php -i 差很少 。

默認虛擬主機目錄

編輯apache配置文件

[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

訪問的域名;
ServerName www.example.com:80
一臺服務器上面能夠有多個虛擬主機,每個虛擬主機都會對應一個域名(固然也能夠定義多個),只要把這個域名解析指向該臺服務器,咱們就能訪問這個站點了;
域名解決:咱們訪問一個網站,須要在瀏覽器裏面輸入域名,而後就能訪問到網站的內容,這個過程就是須要瀏覽器和遠程服務器通訊,網站內容就是從服務器上讀取的,而這個服務器是由你訪問的域名來決定去哪裏找的,而域名之因此決定服務器在哪裏,就是由於這個域名作了解析指向,域名解析服務器IP地址,這個行爲由DNS服務器來完成的。

服務器上游不少域名,不少站點,不少虛擬主機,這些域名都在httpd配置文件中作過標記,都是一一對應的,每個域名都能對應本身的虛擬主機。可是有一個特殊的域名也指向服務器,卻沒有跟它對應的虛擬主機時,httpd就會把這個域名直接丟給默認虛擬主機來來完成,簡單來講若是一個域名指向一臺服務器,可是沒有她沒有對應的虛擬主機,就會由默認虛擬主機來處理。


那咱們怎麼樣來建立虛擬主機呢?
1.編輯配置文件/usr/local/apache2.4/conf/httpd-conf,搜索httpd-vhosts,將前面#去掉;
[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf

2.保存主配置文件,而後編輯虛擬虛擬主機配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@linux-129 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

VirtualHost都是一對上下對應的,一對VirtualHost表示一個虛擬主機,一個網站。

ServerAdmin webmaster@dummy-host.example.com
定義管理員郵箱,能夠不要
DocumentRoot
定義虛擬主機域名的根目錄
ServerName
定義域名,servername只能定義一個。
ServerAlias
定義域名別名,只有serveralias能夠寫多個域名 。
ErrorLog
定義錯誤日誌
CustomLog
定義訪問日誌

常識:一旦這裏定義的虛擬主機生效,前面的默認虛擬主機DocumentRoot就不會生效了
使用curl 來測試 :
curl -x IP:端口 域名

[root@linux-129 ~]# curl -x192.168.88.129:80 www.abc.com
abc.com[root@linux-129 ~]# curl -x192.168.88.129:80 abc.com
abc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123.com
abc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123anc.com
abc.com[root@linux-129 ~]# curl -x192.168.88.129:80 111.com
111.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.example.com

總結:

第一:只要在apache的主配置文件中打開了了Virtual hosts,那麼主配置文件裏面的DocumentRoot和ServerName就會失效

第二:只要打開了Virtual hosts(虛擬主機),它裏面能夠定義不少virtualhost,每個virtualhost都有一個對應的documentroot和servername,每個virtualhost都表明着一個站點,都是一個虛擬主機;在虛擬主機裏面有一個比較特殊的就是默認虛擬主機,就是裏面的第一個virtualhost;什麼是默認虛擬主機,就是不管哪一個域名解析到這臺服務器的IP地址,它都會訪問這個默認虛擬主機。

相關文章
相關標籤/搜索