Linux20180528 apache結合php 虛擬主機
11.14/11.15 Apache和PHP結合
11.16/11.17 Apache默認虛擬主機
1. 首先看一下:
這是個警告,雖然並非錯誤但是可以取消掉。辦法就是去定義好 servername
vim /usr/local/apache2/conf/httpd.conf,將servername前面的#去掉即可
2. 增加一行配置
Require all denied 改成 allowed 這樣就可以被訪問到了!telnet訪問肯定不行,因為80端口尚未打開。看下圖,無法用telnet訪問
需要修改配置文件 vim /usr/local/apache2/conf/httpd.conf require all granted
/usr/local/apache2/bin/apachectl -t 用來檢查配置文件的語法是否正確
/usr/local/apache2/bin/apachectl graceful 重新加載配置文件 不會影響進程
3. 增加一行與php相關的配置。 搜AddType 然後增加一行可以讓php解析的語句
AddType application/x-httpd-php .php
4. 在/htodcs下放一個文件,php 文件 看是否加載php。
但是失敗了。
原因是防火墻的設置忘記設置了,所以沒有打開80端口。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT 臨時打開80端口就好了。
註意,同樣將php5換成7也可以成立。
Apache默認虛擬主機
可以理解成在一個httpd服務下運行了多個網站,域名。每個域名對應的是一個虛擬主機。
有一個httpd配置文件的位置,DocumentRoot定義了網站的根目錄的位置。ServerName定義的就是域名。
首先從windows下來進行理解。
windows下hosts的地址是 C:\Windows\System32\drivers\etc\hosts
# Copyright (c) 1993-2009 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows. # # This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # # 102.54.94.97 rhino.acme.com # source server # 38.25.63.10 x.acme.com # x client host # localhost name resolution is handled within DNS itself. # 127.0.0.1 localhost # ::1 localhost
可以在這裏面定義一個ip 域名,讓域名指向ip
然後訪問www.163.com就變成了訪問192.168.202.123
這樣就臨時改變了一個域名對應的ip, 這是在DNS未生效的情況下使用
Linux下的虛擬主機 apache配置文件中 virtual hosts
將這個註釋取消後,就可以去到一個二級文件目錄對虛擬主機進行定義。
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
每一對成對出現的 VirtualHost標簽就代表一個主機的定義。第一個是默認的虛擬主機。
如果虛擬目錄生效的話,apache的配置文件裏的servername就失效了。
然後在對應的位置創建目錄以及index測試文件。
測試虛擬主機
curl 命令來實現訪問虛擬主機
curl -x192.168.202.123:80 www.goau.com.au
Linux20180528 apache結合php 虛擬主機