內容:
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地址,它都會訪問這個默認虛擬主機。