LAMP架构之PHP模块支持与虚拟主机配置

Wesley13
• 阅读 583

本文索引:

  • Apache和PHP结合
    • 编辑apache主配置文件
    • 验证是否支持PHP
  • apache启动小问题
  • apache默认虚拟主机
    • 开启虚拟主机服务
    • 默认虚拟主机测试

Apache和PHP结合

  1. 编辑apache的主配置文件

    [root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf 编辑一下内容:

    1. ServerName 默认被注释掉了

      ServerName www.example.com:80

    2. 有时会显示403 forbidden

      AllowOverride none Require all denied

    Require all denied 改为 Require all granted

    1. php相关配置(解析PHP) AddType application/x-httpd-php .php
    DirectoryIndex index.html index.php

修改后需要执行

1. 检验配置文件正确性
/usr/local/apache2.4/bin/apachectl -t

2. 并重新加载配置文件(文件错误将不会杀死进程)
/usr/local/apache2.4/bin/apachectl graceful
  1. 验证是否成功启动

    先启动httpd [root@localhost ~]# /usr/local/apache2.4/bin/apachectl start

    临时开放80端口 [root@localhost ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

    打开浏览器,输入服务器ip,显示“It works!”即成功;否则有问题!

    在阿里云虚拟主机内安装lamp架构时,需要关闭防火墙(systemctl stop firewalld),否则浏览器无法访问!

网页打不开的解决思路:服务器ip是否可通 -> 80端口是否通(服务器是否开放该端口iptables)

验证apache是否解析php

1. 在/usr/local/apache2.4/htdocs/目录下新建一个index.php
输入下面的代码
<?php
phpinfo();
?>

2. 在浏览器中输入ip/index.php,看是否显示php的说明界面

当php无法解析,显示的将是源代码

无法解析php时需要检查的内容:

  • apache是否加载php模块

    [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep php php5_module (shared)

  • 检查modules目录下是否存在php模块文件(php是否编译进apache)

    [root@localhost ~]# ls /usr/local/apache2.4/modules/libphp5.so /usr/local/apache2.4/modules/libphp5.so

  • 检查配置文件是否加载模块 LoadModule

    [root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep libphp LoadModule php5_module modules/libphp5.so

  • 检查配置文件是否加解析php代码,有没有写错

    [root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep x-httpd-php AddType application/x-httpd-php .php

  • 检查配置文件是否加index.php代码,在直接输入ip后可以显示默认的index.php网页信息

    [root@localhost ~]# cat /usr/local/apache2.4/conf/httpd.conf | grep -C1 index.php

    DirectoryIndex index.html index.php

对配置文件的操作后最好使用apachectl -t进行检验


apache启动小问题

执行apachectl start启动apache时出现下列错误的原因是安装了2个版本的php,主配置文件内模块都启动了,需要注释掉其中一个,这样才能正常启动!

/usr/local/apache/bin/apachectl: 行 79:  2391 段错误               $HTTPD -k $ARGV

apache默认虚拟主机

一个服务器可以运行多个网站,每个网站都是一个虚拟主机

任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机

在dns还未生效时,通过修改hosts文件,设置ip与域名的映射解析,来配置域名。

开启虚拟主机服务

vim /usr/local/apache2.4/conf/httpd.conf 
搜索httpd-vhost
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf
去掉该行开始的#,保存退出

虚拟主机配置文件,配置虚拟主机

一旦让虚拟主机配置文件生效,之前配置的默认主机将失效,需要apache模块支持:mod_log_config

[root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
...
<VirtualHost *:80>
    # DocumentRoot定义网站的根目录
    DocumentRoot "/data/wwwroot/abc.com"  
    ServerName abc.com
    # ServerAlias定义出ServerName之前其他的域名
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
...
  • 创建对应的目录

    [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

    [root@localhost ~]# vim /data/wwwroot/111.com/index.php [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful

默认虚拟主机测试

访问任意的域名都将访问到默认主机所对应的内容。

# 访问指定ip、端口、域名的内容,返回结果
# 下面代码将获取默认主机内容
[root@localhost ~]# curl -x 192.168.65.133:80 abc.com
abc.com

# 指定特定的域名,该域名匹配了上面的第二个虚拟主机,所以显示内容为第二个虚拟主机所配置的内容
# 通过ServerName访问
[root@localhost ~]# curl -x 192.168.65.133:80 111.com
111.com
# 通过ServerAlias访问
[root@localhost ~]# curl -x 192.168.65.133:80 www.example.com
111.com
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Apache和PHP结合,Apache默认虚拟主机
Apache和PHP结合:!(https://static.oschina.net/uploads/space/2018/0416/214755_09Sf_3769333.png)   虽然我们已经安装了mysqlapachephp但是我们一直没有把这些服务全部整合到一起组成咱们的LAMP。现在我们就开始:
Wesley13 Wesley13
2年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
2年前
Linux基础(day42)
11.14/11.15Apache和PHP结合配置httpd支持php目录概要httpd主配置文件/usr/local/apache2.4/conf/httpd.confvim/usr/local/apache2.4/conf/httpd.con
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
LAMP架构之用户认证、域名跳转及访问日志
本文索引:Apache用户认证针对目录针对单个文件设置域名跳转基本知识介绍如何配置Apache访问日志apache用户认证针对目录先确保主配置文件内开启了虚拟主机服务root@localhost~
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这