[toc]php
[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restart AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::1d7a:ffe8:8235:a2a5. Set the 'ServerName' directive globally to suppress this message httpd not running, trying to start /usr/local/apache2.4/bin/apachectl: 行 79: 2759 段错误 (吐核)$HTTPD -k $ARGV
fg返回上一条命令html
修改它的目的是,容许全部请求,不然咱们访问时回报403错误。web
[root@xavi ~]# fg vim /usr/local/apache2.4/conf/httpd.conf
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restart httpd not running, trying to start /usr/local/apache2.4/bin/apachectl: 行 79: 2827 段错误 (吐核)$HTTPD -k $ARGV
回到vim /usr/local/apache2.4/conf/httpd.conf,找到79行,把句首加上#,可是任然报错,想起文档最后启用了两个PHP,应该禁止一个apache
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl restart httpd not running, trying to start
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop [root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf [root@xavi ~]# /usr/local/apache2.4/bin/apachectl start
如下说明已经启动成功vim
[root@xavi ~]# netstat -lnp |grep httpd tcp6 0 0 :::80 :::* LISTEN 3163/httpd
此处暂停,不成功,有可能和以前课程里的iptables设置有关系。windows
[root@xavi htdocs]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT [root@xavi htdocs]# iptables -nvL Chain INPUT (policy ACCEPT 82 packets, 15752 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED 0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0 0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0 0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT 83 packets, 16131 bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT udp -- * virbr0 0.0.0.0/0 0.0.0.0/0 udp dpt:68
<Directory /> AllowOverride none Require all denied </Directory> <Directory /> AllowOverride none Require all granted </Directory>
AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php
<IfModule dir_module> DirectoryIndex index.html </IfModule> <IfModule dir_module> DirectoryIndex index.html index.php </IfModule>
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
正确的则显示为 “Syntax OK”,不然继续检查修改httpd配置文件。浏览器
编写一个测试脚本,以下:服务器
[root@xavi ~]# vim /usr/local/apache2.4/htdocs/test.php //写入以下内容 <?php phpinfo(); //打印php的全部函数 ?>
[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf [root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful
只能显示源代码了,没法解析 php7
/usr/local/apache2.4/modules/libphp5.so架构
不少php架构的网站其网址后缀都有index.php
[root@xavi ~]# ls /usr/local/apache2.4/htdocs/ index.html test.php
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful
一台服务器能够访问多个网站,每一个网站都是一个虚拟主机 概念:域名(主机名)、DNS、解析域名、hosts 任何一个域名解析到这台机器,均可以访问的虚拟主机就是默认虚拟主机
hosts文件是一个没有扩展名的系统文件,它的主要做用是能加快域名解析,还能够屏蔽网站等。 windows的hosts
注意这个文件必定是在系统盘,若是你的系统在D盘请自行修改前面的盘符。以下图所示
在hosts下增长一下代码
把刚才编辑的ip和网站都用#号注释掉,ping网址时显示的是公网的ip地址,而不是刚才虚拟试验机的ip
这里须要注意的是打开httpd服务:
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start
一样也可访问test.php
[root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf
今天再从新看笔记的时候发现到这里错了:昨天的报错就有httpd-vhosts,原来本身把#去除行选错了,选错httpd-manual.conf文件了
AH00526: Syntax error on line 36 of /usr/local/apache2.4/conf/extra/httpd-manual.conf:
[root@xavi ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
将其内容编辑为:
<VirtualHost *:80> //每一个VirtualHost表明一个主机,一个主机表明一个网站 #ServerAdmin webmaster@dummy-host.example.com //定义管理员的邮箱,做用不大能够删除 DocumentRoot "/data/wwwroot/abc.com" //指定网站的根目录在哪 ServerName abcd.com //定义网站名称,只能写一个 ServerAlias www.abcd.com www.123.com //设置网站别名,支持多个网站 ErrorLog "logs/abcd.com-error_log" //错误日志,保存和虚拟主机网站同样的名字方便读取 CustomLog "logs/abcd.com-error_log" common </VirtualHost>
<VirtualHost *:80> DocumentRoot "/data/wwwroot/abcd.com" ServerName abcd.com ServerAlias www.abcd.com www.123.com ErrorLog "logs/abcd.com-error_log" CustomLog "logs/abcd.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/xavi.com" ServerName xavi.com iServerAlias www.example.com ErrorLog "logs/xavi.com-error_log" CustomLog "logs/xavi.com-access_log" common </VirtualHost>
检查错误:
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
[root@xavi ~]# mkdir /data/wwwroot/ [root@xavi ~]# mkdir /data/wwwroot/abcd.com [root@xavi ~]# mkdir /data/wwwroot/xavi.com
[root@xavi ~]# vim /data/wwwroot/abcd.com/index.php <?php echo "abcd.com"; php?>
也可简单编辑php代码,不加结尾
[root@xavi ~]# vim /data/wwwroot/abcd.com/index.php [root@xavi ~]# vim /data/wwwroot/xavi.com/index.php <?php echo "xavi.com"; [root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful httpd not running, trying to start
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl start httpd (pid 7427) already running [root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@xavi ~]# curl -x192.168.72.130:80 abcd.com <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> <p>You don't have permission to access / on this server.<br /> </p> </body></html>
想了好久,网上也没找打答案,想起403错误在上一章节提起过,查知道本身在httpd配置测试时该了一个地方,以下图:
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop [root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf [root@xavi ~]# /usr/local/apache2.4/bin/apachectl start [root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful [root@xavi ~]# curl -x192.168.72.130:80 abcd.com this is a test[root@xavi ~]#
[root@xavi ~]# /usr/local/apache2.4/bin/apachectl stop [root@xavi ~]# vim /usr/local/apache2.4/conf/httpd.conf [root@xavi ~]# /usr/local/apache2.4/bin/apachectl start [root@xavi ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@xavi ~]# /usr/local/apache2.4/bin/apachectl graceful [root@xavi ~]# curl -x192.168.72.130:80 abcd.com this is a test[root@xavi ~]#
注意: 虚拟主机生效后,即Virtual hosts生效,原Apache配置文件中的默认主机(www.example.com 192.168.72.130)就会失效