Apache和php结合
内容:
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.php• /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 //增加如下内容<?php echo 123; ?>
• curl localhost/test.php
配置httpd支持php
修改4个地方[root@linux-129 ~]# vim /usr/local/apache2.4/conf/httpd.conf
第一:将ServerName 前面的注释取消,这样在启动的时候就不会提示了下列信息了:
[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl startAH00558: 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
再次启动
[root@linux-129 ~]# /usr/local/apache2.4/bin/apachectl starthttpd (pid 2484) already running
查看进程
[root@linux-129 ~]# ps aux |grep httpdroot 2484 0.0 0.4 264288 9056 ? Ss 13:20 0:00 /usr/local/apache2.4/bin/httpd -k startdaemon 2485 0.0 0.4 551116 9076 ? Sl 13:20 0:00 /usr/local/apache2.4/bin/httpd -k startdaemon 2486 0.0 0.4 551116 9072 ? Sl 13:20 0:00 /usr/local/apache2.4/bin/httpd -k startdaemon 2489 0.0 0.4 551116 9076 ? Sl 13:20 0:00 /usr/local/apache2.4/bin/httpd -k startroot 2574 0.0 0.0 112680 972 pts/0 S+ 13:22 0:00 grep --color=auto httpd
查看端口
[root@linux-129 ~]# netstat -lnptActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program nametcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1011/sshdtcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1721/mastertcp6 0 0 :::3306 :::* LISTEN 1319/mysqldtcp6 0 0 :::80 :::* LISTEN 2484/httpdtcp6 0 0 :::22 :::* LISTEN 1011/sshdtcp6 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.conf2.保存主配置文件,然后编辑虚拟虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@linux-129 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.confVirtualHost都是一对上下对应的,一对VirtualHost表示一个虚拟主机,一个网站。
ServerAdmin
定义管理员邮箱,可以不要 DocumentRoot 定义虚拟主机域名的根目录 ServerName 定义域名,servername只能定义一个。 ServerAlias 定义域名别名,只有serveralias可以写多个域名 。 ErrorLog 定义错误日志 CustomLog 定义访问日志常识:一旦这里定义的虚拟主机生效,前面的默认虚拟主机DocumentRoot就不会生效了
使用curl 来测试 : curl -x IP:端口 域名[root@linux-129 ~]# curl -x192.168.88.129:80 www.abc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 abc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 www.123anc.comabc.com[root@linux-129 ~]# curl -x192.168.88.129:80 111.com111.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地址,它都会访问这个默认虚拟主机。