Apache和PHP结合 、Apache默认虚拟主机

Apache和PHP结合

  • 当使用/usr/local/apache/bin/apachectl restart重启Apache时 ,会出现
[root@localhost ~]# /usr/local/apache/bin/apachectl restart
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
httpd not running, trying to start

这样的提示,这不是报错,而是一个警告信息,提示没有设置servername

  • vim /usr/local/apache/conf/httpd.conf文件,搜索ServerName ,将这行行首的“#”去掉。
ServerAdmin you@example.com

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80            删掉该行行首的“#”
  • 在修改了httpd.conf之后可以使用/usr/local/apache/bin/apachectl -t来检测配置文件的语法是否有错。
[root@localhost ~]# /usr/local/apache/bin/apachectl -t
Syntax OK
  • 重新加载一下Apache的配置文件/usr/local/apache/bin/apachectl graceful,再重启Apache就不会显示上面的警告了。
  • 在修改完配置文件,重启Apache服务时,如果出现报错,有可能是因为我们同时启用了PHP5和PHP7,在配置文件中注释掉一行就行了。
  • 在配置文件httpd.conf中,将Require all denied 改为Require all granted 否则在浏览器访问时会提示403
  • 检查80端口是否开启,可以在Windows运行telnet 192.168.254.131 80 发现端口没开
  • iptables -I INPUT -p tcp --dport 80 -j ACCEPT 配置防火墙,将80端口打开,再使用浏览器访问该ip,成功访问。

让Apache支持PHP解析

  • 在httpd.conf中搜索AddType,然后增加一行AddType application/x-httpd-php .php才能解析PHP
  • 增加索引页,在httpd.conf中搜索Index ,在index.html后面加上index.php
  • 检测语法是否有错。/usr/local/apache/bin/apachectl -t
  • 重新加载配置文件 /usr/local/apache/bin/apachectl graceful
  • 编辑一个页面,网页默认路径为/usr/local/apache/htdocs。 vim /usr/local/apache/htdocs/index.php
  • 使用浏览器访问 192.168.254.131/index.php,成功访问,该页面表示Apache解析PHP成功。如果不能成功解析PHP的话,访问该页面只会显示源代码。

排错思路 Apache不能解析PHP排错思路

  • 检查Apache配置文件httpd.conf ,有没有加载PHP模块 /usr/local/apache/bin/apachectl -M
  • 若未加载PHP模块,则需要看看modules目录下是否有PHP模块文件 ls /usr/local/apache/modules/libphp
  • 若有模块文件,再去httpd.conf中 检查是否有LoadModule php5_module modules/libphp5.so这一行配置
  • 然后在查看是否在配置文件 中添加过AddType application/x-httpd-php .php这行内容。

默认虚拟主机

Apache 默认存放网页根目录DocumentRoot "/usr/local/apache/htdocs",意思就是在默认情况下一台服务器只能跑一个网站,但是实际情况是一台服务器上面可以跑多个站点,一个站点就是一个虚拟主机。

如何让一台机器跑多个站点?

  • 修改httpd.conf 搜索extra,找到virtual hosts 将下面一行#Include conf/extra/httpd-vhosts.conf的#删掉,保存退出。
  • vim /usr/local/apache/conf/extra/httpd-vhosts.conf 编辑虚拟主机配置文件
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/local/apache/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
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/local/apache/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
  • 两段<VirtualHost *:80>开头的代码代表两个主机
  • 编辑 ServerAdmin webmaster@dummy-host.example.com 这一行没意义,可以删掉
  • DocumentRoot "/tmp/abc.com" 这一行指定网页的根目录
  • ServerName abc.com指定域名
  • ServerAlias www.abc.com www.2323.com 指定域名别名,可以指定多个
  • ErrorLog "abc.com_log" 指定错误日志名
  • CustomLog "abc.com" common 指定访问日志名
<VirtualHost *:80>
    DocumentRoot "/tmp/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.2323.com
    ErrorLog "abc.com_log"
    CustomLog "abc.com_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/tmp/ccc.com"
    ServerName ccc.com
    ServerAlias www.ccc.com
    ErrorLog "ccc.com_log"
    CustomLog "ccc.com_log" common
</VirtualHost>
  • 要测试需要根据DocumentRoot "/tmp/abc.com"chuan创建相应的目录,编辑相应的网页
  • 改一下Windows的hosts文件,使用浏览器访问

转载于:https://my.oschina.net/u/3731306/blog/1924204

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值