11.14~11.15 Apache和PHP结合
配置httpd支持PHP:
- httpd的主配置文件:/usr/local/apache2.4/conf/httpd.conf
- vim /usr/local/apache2.4/conf/httpd.conf #编辑httpd的配置文件,修改/增加以下4个地方,如果报错(比如79行有错),注意不要加载两个PHP模块(PHP5和PHP7),需要注释掉一个PHP模块(如PHP7)
ServerName #将对应字段前的注释符号去掉
Require all denied #将几处“denied”改成“granted”。在Linux虚拟机上打开80端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT,此时在Windows机器网页输入虚拟机IP可显示“It Works”,如果是“Require all denied”,那么网页会显示“403 Forbidden”,在Windows机器的控制面板--程序和功能--启用或关闭Windows功能--勾选Telnet客户端,然后在cmd下运行命令:telnet 虚拟机IP 80,可在Windows机器上telnet到Linux机器上,输入“Ctrl+]”,再输“quit”退出telnet登录。
AddType application/x-httpd-php .php #增加这一行内容可解析PHP,配置文件里搜索关键词“AddType”
DirectoryIndex index.html index.php #增加PHP索引页
- /usr/local/apache2.4/bin/apachectl -t #检查配置文件的语法,结果显示“Syntax OK‘表示正常
- /usr/local/apache2.4/bin/apachectl graceful #重新加载配置文件,并不会重启服务
- /usr/local/apache2.4/bin/apachectl start #启动apache服务
- netstat -lntp
- curl localhost
- vim /usr/local/apache2.4/htodcs/test.php #增加测试文件test.php,添加如下测试内容,并进行网页测试
<?php
echo 123; #
或者 "phpinfo();", PHP解析成功则网页上可把PHP的相关信息打印出来
?>
- curl localhost/test.php #命令行测试
注:在Windows机器上只输入Linux虚拟机上的IP能显示“It Works”,实际上访问的是/usr/local/apache2.4/htodcs/目录下的“index html”文件
如果遇到PHP解析不了的问题,通常要检查Apache的配置文件,主要检查以下几项:
- /usr/local/apache2.4/bin/apachectl -M #查看Apache是否加载了PHP模块
- 若没有加载PHP模块,通过如下命令查看是否有该PHP模块文件: ls /usr/local/apache2.4/modules/libphp5.so
- 如果有PHP模块文件,要检查Apache配置文件里是否有加载PHP文件的配置:“LoadModule php5_module modules/libphp5.so”
- 继续检查Apache配置文件里是否添加了"AddType application/x-httpd-php .php"这一行内容,注意“.php”前有一个空格,可通过语法检查命令检查出来
- 一台服务器可以访问多个网站,每个网站都是一个虚拟主机
- 任何一个域名解析(指向)到一台Linux机器,都可以访问的虚拟主机就是默认虚拟主机
- vim /usr/local/apache2/conf/httpd.conf #搜索httpd-vhost,去掉注释符号"#"
- vim /usr/local/apache2/conf/extra/httpd-vhosts.conf #编辑虚拟主机配置文件,配置两个网站,原内容改为如下。虚拟主机配置文件一旦启用生效,那么httpd的配置文件里定义的DocumentRoot和ServerName就失效
<VirtualHost *:80> #一个VirtualHost代表一个站点
ServerAdmin admin@aminglinux.com
DocumentRoot "/data/wwwroot/aming.com" #该参数定义了访问网站的根目录
ServerName aming.com #网站的域名,可以定义多个
ServerAlias www.aming.com #网站域名的别名
ErrorLog "logs/aming.com-error_log" #指定错误日志的路径
CustomLog "logs/aming.com-access_log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
</VirtualHost>
- mkdir /data/wwwroot/aming.com
- mkdir /data/wwwroot/www.123.com #创建网站对应的根目录
- vim /data/wwwroot/aming.com/index.php #在网站对应的根目录下创建php测试文件
- vim /data/wwwroot/www.123.com/index.php #需要先编辑下index.php配置文件
- /usr/local/apache2/bin/apachectl –t
- /usr/local/apache2/bin/apachectl graceful
- curl -x127.0.0.1:80 aming.com #会去访问aming.com/index.php
- curl -x127.0.0.1:80 www.123.com #会去访问www.123.com/index.php