11.14/11.15 Apache和PHP结合
配置httpd支持php 启动的时候,有警告
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restartAH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
编辑配置,打开ServerName 的配置,打开后,将不再提示
遇到无法访问PHP ,首先检查 IP 是不是通的
然后用telnet 查看 80端口是否打开 因为这个组件并不是默认安装有的,需要手动去安装 安装后,查看,发现是无法联通,因为虚拟机并没有打开80端口 可以使用iptables -nvL
查看是否有80端口
想让Windows机器访问,需要手动添加 80端口 使用iptables -I INPUT -p tcp --dport 80 -j ACCEPT
临时打开 80端口,允许任何人访问
这个时候,再在浏览器上打开 虚拟机 IP 就会提示 “It works !”说明已经能访问了 修改过配置文件,需要执行命令检查是否有语法出错/usr/local/apache2.4/bin/apachectl -t
重新加载服务,并不会重启服务
/usr/local/apache2.4/bin/apachectl graceful
更改配置文件
将denied更改为 granted
更改这个配置的理由是,防止虚拟访问的时候提示403 201行AllowOverride none Require all granted
388行
# probably should define those extensions to indicate media types: # AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php //支持解析PHP
250行
DirectoryIndex index.html index.php //支持PHP索引页
验证一下 Apache 支持不支持 php 解析 访问页面的时候,其实是访问下面这个路径下的文件,所以,如果做测试页面,就可以在这个目录下创建一个php文件
vim /usr/local/apache2.4/htdocs/1.php
增加一个页面,是不需要重启php的
如果httpd 不支持解析php 那么访问页面,看到的只会是源代码如果发现php 解析不了,就检查一下Apache配置文件
第一步 检查一下 是否加载了 php的模块,如果发现没有加载,就查看一下 是否/usr/local/apache2.4/modules/libphp5.so 这个文件 第二步 查看一下配置文件里面是否加了LoadModule php5_module modules/libphp5.so
第三步 检查一下 配置文件是否有支持 php解析的相关
ctrl + r 能快捷的搜索命令历史关键字并使用
11.16/11.17 Apache默认虚拟主机
关于默认虚拟主机
一台服务器可以访问多个网站,每个网站都是一个虚拟主机 概念:域名(主机名)、DNS、解析域名、hosts 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机 因为这里定义的网站的根目录,所以,才能访问到index.htmlDocumentRoot "/usr/local/apache2.4/htdocs"
域名就是 这个域名就是Apache的默认主机
ServerName www.example.com:80
也就是说任何一个域名只要是指向这个IP,他都会访问到这个站点
使用httpd.conf配置文件,就是定义 SeverName 和 DocumentRoot 两个配置 但是这样不好管理,任何一个域名都会默认访问到同一个站点搜索关键字 extra
打开这个配置文件# Virtual hostsInclude conf/extra/httpd-vhosts.conf
打开二级配置文件,在这个二级配置文件里面是可以定义多个虚拟主机配置
[root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.confServerAdmin webmaster@dummy-host.example.com //定义管理员邮箱 DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com" //网站的根目录 ServerName dummy-host.example.com //服务器名字 ServerAlias www.dummy-host.example.com //定义别名 ErrorLog "logs/dummy-host.example.com-error_log" //错误日志 CustomLog "logs/dummy-host.example.com-access_log" common //访问日志
启动了虚拟主机配置以后,默认的httpd.conf 里面的SeverName www.example.com 就会失效 修改了相关的虚拟主机配置后,需要去创建相关的虚拟主机目录和文件
[root@localhost ~]# mkdir /data/wwwrot/abc.com[root@localhost ~]# mkdir /data/wwwrot/[root@localhost ~]# mkdir /data/wwwrot/abc.com[root@localhost ~]# mkdir /data/wwwroot/[root@localhost ~]# mkdir /data/wwwroot/111.com[root@localhost ~]# vim /data/wwwrot/abc.com/index.php[root@localhost ~]# vim /data/wwwroot/111.com/index.php
没有帮点hosts 所以ping 的话是会默认ping到外网 测试命令
curl -x192.168.133.130:80 abc.com
[root@localhost ~]# curl -x192.168.133.130:80 abc.comabc.com[root@localhost ~]#