Apache(httpd)的配置文件:/usr/local/apache2.4/conf/httpd.conf。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服務解析本機服務器
[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」,
[root@cham002 ~]# vim /usr/local/apache2.4/htdocs/1.php <?php phpinfo() #該參數的含義是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>
編輯配置文件(調用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用途:反向搜索並調用執行過的命令。(reverse-i-search)。
使用方法:按ctrl+r後命令行會變成「(reverse-i-search)`': 」狀態,而後輸入使用過的參數,此時會直接顯示出相關的命令,回車便可執行該命令。
Windows系統中hosts位置「C:\Windows\System32\drivers\etc\hosts」。
用記事本打開該文件:
說明: 在此能夠自定義匹配本地IP和域名,目的是添加臨時訪問地址(在DNS未生效的時候使用)。
在hosts文件中添加「192.168.230.135 www.adai.com」便可將本地虛擬主機添加到Windows系統,訪問該域名時會自動解析到本地虛擬主機「ServerName www.example.com:80」。
在物理機訪問的域名「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命令測試虛擬主機域名時會訪問到外網。
[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。