apache版本:
[root@iZ25eby2utyZ web]# rpm -qa | grep httpd httpd-tools-2.2.15-47.el6.centos.3.x86_64 httpd-2.2.15-47.el6.centos.3.x86_64
先說最終解決辦法吧:
1.將/etc/httpd/conf/目錄下的httpd.conf文件里面的ServerName改成你的服務器公網IP,但是阿里雲的不同,需要用內網IP。本文所講的的公網IP實際上就是阿里雲的內網IP。因為這哥們用的就是阿里雲的主機。
2.將/etc/httpd/conf.d/目錄下的virtual.conf文件里面的具體服務器IP改為*號
解決過程:
1、apache啟動時發現報錯:
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using [服務器公網IP] for ServerName
意思是給配置文件/etc/httpd/conf/httpd.conf里的ServerName指定具體的IP,於是指定了IP,如下:
ServerName [服務器公網IP]:80
2、這個時候啟動成功,訪問站點,出來的是apache的測試頁面,titile為:Apache HTTP Server Test Page powered by CentOS。而且報的是403錯誤,於是在網上找資料,有篇文章說是虛擬機配置錯誤,於是在httpd.conf文件里面添加了虛擬機的配置(我的哥們是單獨放在一個virtual.conf文件里面的,第四點會有說明),如下:
<VirtualHost *:80> # ServerAdmin webmaster@dummy-host.example.com DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common </VirtualHost>
將DocumentRoot和ServerName改為具體的站點目錄和域名,然后重新啟動,在瀏覽器中訪問,OK。可以正常訪問了。
參考網址:https://www.cnblogs.com/wajika/p/6481167.html,里面的第三點。
注意:<VirsualHost>里面要寫成*號,不能使用具體的IP。
3、但是這哥們一台服務器上放了好幾個站點啊,於是我依樣畫葫蘆,先拷貝了一份<VirtualHost>,抱着試試看的心態看是否OK,然后重啟apache,結果新的問題又產生了:
Starting httpd: [Sat Jul 07 23:19:47 2018] [warn] _default_ VirtualHost overlap on port 80, the first has precedence.
這句話的意思是80端口重疊,第一個虛擬機優先,訪問第二個虛擬機的時候,實際上就指向了第一個虛擬機。說白了,兩個域名都指向第一個虛擬機配置的站點。於是在網上找資料,這篇文章有講到解決辦法:https://www.cnblogs.com/xyh592/p/5762729.html
需要將#NameVirtualHost *:80取消注釋,如下:
NameVirtualHost *:80
apache重啟后兩個站點都可以訪問了。
4、這哥們單獨將虛擬機配置放在了一個文件里面,在httpd.conf文件里面可以看到:Include conf.d/*.conf。它的作用是apache啟動時會自動掃描conf.d目錄下的所有后綴名為.conf的文件,然后加載。於是找到這個文件/etc/httpd/conf.d/virtual.conf。此時此刻,我突然間想到第二步和第三步不用做,只保留第一點的改動(即將ServerName改成公網IP),同時將virtual.conf文件里的IP換成*號應該是可以的。於是試了一把,並重啟apache,所有站點都可以訪問了。
最終完美解決問題。