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

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

  • 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",意思就是在默认状况下一台服务器只能跑一个网站,可是实际状况是一台服务器上面能够跑多个站点,一个站点就是一个虚拟主机。html

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

  • 修改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文件,使用浏览器访问

相关文章
相关标签/搜索