您的位置:首页 > 运维架构 > Apache

2018-3-1 10周2次课 Apache和PHP结合、Apache默认虚拟主机

2018-03-02 00:35 836 查看

11.14/11.15 Apache和PHP结合



1,修改ServerName
在启动apache时,会有类似错误提示
[root@localhost ~]# /usr/local/apache2.4/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
如果不想出现这种错误提示,那么进到 /usr/local/apache2.4/conf/httpd.conf 中找到ServerName,并去掉#注释,保存退出。





重启apache,出现下图错误



进到 /usr/local/apache2.4/conf/httpd.conf 中,将php7注释掉,只让apache只加载php5





保存退出后,重启apache,一切正常
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl restart
httpd not running, trying to start
[root@localhost ~]# ps aux | grep httpd
root      45504  0.2  0.8 253576  8892 ?        Ss   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45505  0.0  0.6 540404  6936 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45506  0.0  0.8 540404  8972 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
daemon    45507  0.0  0.8 540404  8976 ?        Sl   21:48   0:00 /usr/local/apache2.4/bin/httpd -k restart
root      45590  0.0  0.0 112676   984 pts/2    S+   21:49   0:00 grep --color=auto httpd


2,修改Require all denied
[root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
访问192.168.65.128,从无法访问变为 It works!





在windows中,打开telnet,用telnet 192.168.65.128 80,来查看联通情况





联通之后会跳到次界面
如果不通,则显示正在连接











改完之后,无法访问192.168.65.128
因此,需要把配置文件 Require all denied 改为 Require all granted

·检查配置文件语法:
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK


·重新加载配置:
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
(优点是不会重启服务器,最多加载不成功,不会把进城杀掉)

3,增加一行 AddType application/x-httpd-php .php ,否则php无法解析





4,把 DirectoryIndex index.html 改为 DirectoryIndex index.html index.php









验证apache支不支持php解析
测试的php脚本:
vim /usr/local/apache2.4/htodcs/1.php





[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
访问http://192.168.65.128/1.php





如果访问192.168.65.128/1.php时,出现





则需要检查Apache配置文件
首先,查看有没有加载php5模块
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M





看看有没有 /usr/local/apache2.4/modules/libphp5.so 文件
如果有libphp5.so文件,则要查看apache配置文件中有没有加载libphp5.so





然后,检查配置文件有没有 AddType application/x-httpd-php .php 行





再检查 DirectoryIndex index.html index.php 这一行,但这一行不影响
index.php ,默认能跳转到index.php下面去

快捷键:ctrl + r 输入关键字,可以搜索到命令历史中有关关键字的命令

把php5禁掉,只用php7
再配置文件中把libphp5.so注释掉,用libphp7.so
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
访问http://192.168.65.128/1.php时,版本出现了变化





/usr/local/php7/bin/php -i | less 的结果时上图的文本形式显示。

11.16/11.17 Apache默认虚拟主机

·httpd一个服务下运行了多个网站,多个域名
DNS未生效情况下,可以定义windows中的hosts文件
格式为:ip 域名 域名 。。。

/usr/local/apache2.4/conf/httpd.conf只能定义一个ServerName
[root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
搜索httpd-vhost,去掉#





编辑虚拟主机配置文件(可以定义多个ServerName):
[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


ServerAdmin 管理员邮箱,可删掉
DocumentRoot 网站根目录
ServerName 域名
ServerAlias 别名(可取多个)
ErrorLog 错误日志
CustomLog 访问日志





创建目录
[root@localhost ~]# mkdir /data/wwwroot/
[root@localhost ~]# mkdir /data/wwwroot/abc.com
[root@localhost ~]# mkdir /data/wwwroot/111.com
[root@localhost ~]# vim /data/wwwroot/abc.com/index.php
定义一个index.php





可不带结尾
111.com中也定义一个php
[root@localhost ~]# vim /data/wwwroot/111.com/index.php





[root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful





如果找不到域名配置,就会去找默认虚拟主机配置文件,例如www.111.com在配置文件中就没有这个域名或别名,因此直接找默认配置,也就是第一段,所以是abc.com

如有错误,欢迎指正,互相学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Apache PHP 虚拟主机