2018.3.1 10周2次课

十周第二次课(3月1日)

11.14/11.15 Apache和PHP结合
11.16/11.17 Apache默认虚拟主机

11.14/11.15 Apache和PHP结合

配置httpd支持php

  • httpd主配置文件/usr/local/apache2.4/conf/httpd.conf
  • vim /usr/local/apache2.4/conf/httpd.conf   //修改以下4个地方
  1. ServerName

搜索ServerName,把#ServerName www.example.com:80前面的#删除。

重启时报错:/usr/local/apache2.4/bin/apachectl restart

修改vim /usr/local/apache2.4/conf/httpd.conf   //因为有二个php模块,注释掉一个

  1. Require all denied   //更改为Require all granted

在虚拟机上没有打开80端口。所以无法访问虚拟机

临时打开80端口:iptables -I INPUT -p tcp --dport 80 -j ACCEPT

上面Require all granted如果改为Require all denied则我们在访问网页会出现403错误

网页显示正常

  1. AddType application/x-httpd-php .php

搜索AddType application/x-gzip .gz .tgz,在该行下面添加AddType application/x-httpd-php .php  //如果不添加这行,php就无法解析

  1. DirectoryIndex index.html index.php

找到DirectoryIndex index.html修改为DirectoryIndex index.html index.php  //增加一个php索引页

  • 检验httpd配置文件是否正确,只有正确配置才能正确解析PHP文件

/usr/local/apache2.4/bin/apachectl -t      //测试语法

/usr/local/apache2.4/bin/apachectl graceful  //重新加载配置文件

/usr/local/apache2.4/bin/apachectl start   //启动服务

查看httpd是否启动:netstat -lntp

也可以用curl命令进行简单的测试:curl localhost

测试成功

  • 测试是否正确解析PHP

编写一个测试脚本,如下所示:

vim /usr/local/apache2.4/htdocs/1.php   //增加如下内容

<?php

phpinfo()

?>

网页显示正常

如果不能正常解析,会显示的是源代码

如果遇到php不能解析的情况

  1. 要检查apache配置文件

/usr/local/apache2.4/bin/apachectl –M  //是否加载php模块

  1. 如果没有php模块:

ls /usr/local/apache2.4/modules/libphp5.so   //查看有没有libphp5.so文件

  1. 如果有libphp5.so文件单没有显示:

vim /usr/local/apache2.4/conf/httpd.conf   //检查conf配置文件,是否加载了php模块

  1. AddType application/x-httpd-php .php   //检查conf配置文件里,是否添加了这一行

  1. DirectoryIndex index.html index.php  //检查conf配置文件里,这行是否增加一个php索引页

Ctrl+r:  如果命令关键字  //快速查找命令

11.16/11.17 Apache默认虚拟主机

先来解释“虚拟主机",早期的Linux服务器上,一个服务器只能运行一个网站,也就是说只能跑一个域名。但随着技术的发展,一个服务器上可以跑多个域名了 这样可以帮我们节省了成本。其实这里的服务器就叫作主机,早期一个主机对应一个站点。现在不同了,一个主机可以跑多个站点,所以就有了虚拟主机的概念。我们可以把一台服务器虚拟出多个主机出来,这样就实现了一台服务器上跑多个站点。

既然服务器上可以有多个虚拟主机,每个虚拟主机都会定义一个域名(当然也可以定义多个),只要把这个域名解析指向到该台服务器,我们自然就可以访问这个站点了。说到这儿,你可能又有新的问题:什么叫解析指向?如果你会用浏览器去访问一个站点,那下面的解说肯定不难理解。咱们访问一个网站,需要在浏览器里面输人域名,然后就能访问到网站内容。这个过程是需要浏览器和远程服务器通信的,网站内容就是从服务器上读取到的。而这个服务器是由你访问的域名来决定在哪里的,而域名之所以能决定服务器在哪里,就是因为这个域名做了解析指向。域名解析服务器IP地址,这个行为是由DNS服务器来完成的

假如你访问的域名指向了你的服务器,而你又在这台服务器上做了配置标记了这个域名(接下来会讲解如何标记),这样这个域名就能被正常访问。但如果没有在服务器上给这个域名做标记,会发生什么呢?按理说,没有做标记的域名是不合法的,是不能正常返回结果的。

上面讲了那么多关于域名的东西,的目的就是让你更容易理解“默认虚拟主机"的概念。httpd 有一个特点,它首先是支持多个虚拟主机的,也就是说可以在一个服务器上运行多个站点,标记多个域名。但如果没有标记的域名也指向了这台服务器,那总得有一个处理这个域名的虚拟主机吧。而这个虚拟主机就叫作“默认虚拟主机"。通俗点讲,你的服务器上有很多域名,很多站点,很多虚拟主机,这些域名都是在httpd的配置文件中做过标记的,都是“名花有主"的,都是一一对应的,每个域名都能对应着自己的虚拟主机。但是,有一个特殊的域名也指向了服务器,却没有跟它对应的虚拟主机。这时候,httpd就会把这个域名直接丢给一个特殊的虚拟主机来处理那这个特殊的虚拟主机就是 “默认虚拟主机"

最后总结成一句话,任何一个域名指向这台服务器,只要是没有对应的虚拟主机,就会由这个默认虚拟主机来处理。

  • 一台服务器可以访问多个网站,每个网站都是一个虚拟主机
  • 概念:域名(主机名)、DNS、解析域名、hosts
  • 任何一个域名解析到这台机器,都可以访问的虚拟主机就是默认虚拟主机
  • 编辑配置文件httpd-conf(这个是httpd服务的主配置文件):vim /usr/local/apache2.4/conf/httpd.conf    //搜索httpd-vhost,去掉这行行首的#

  • 编辑虚拟主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>

ServerAdmin [email protected]   // ServerAdmin指定管理员邮箱,这个没有什么实质作用

DocumentRoot "/usr/local/apache2.4/docs/dummy-host.example.com"   // DocumentRoot为该虚拟主机站点的根目录,网站的程序就放在这个目录下面

ServerName dummy-host.example.com        // ServerName为网站的域名

ServerAlias www.dummy-host.example.com   // ServerAlias为网站的别名,后面的域名可以写多个,用空格分隔 ,但serverName后面的域名不支持写多个

ErrorLog "logs/dummy-host.example.com-error_log"   // ErrorLog为站点的错误日志

CustomLog "logs/dummy-host.example.com-access_log" common  // CustomLog为站点的访问日志

</VirtualHost>

创建相关的目录和文件:mkdir -p /data/wwwroot/abc.com  /data/wwwroot/111.com

测试虚拟主机:

可以编辑hosts文件:vi /etc/hosts

也可以用curl –x命令

默认虚拟主机:虚拟主机配置文件里的第一个虚拟主机

  • 在httpd.conf主配置文件里使虚拟主机配置文件httpd-vhost.conf生效,那定义的ServerName、DocumentRoot都会失效

原文地址:http://blog.51cto.com/415326/2074410

时间: 2024-08-02 00:55:39

2018.3.1 10周2次课的相关文章

2018.2.28 10周1次课

十周第一次课(2月28日) 11.10/11.11/11.12 安装PHP5 11.13 安装PHP7 11.10/11.11/11.12 安装PHP5 关于PHP版本,目前大多企业都会使用5.4及更高版本,甚至越来越多的企业使用PHP7版本.7和5两个版本还是有很大差异的,据说7版本有很大的性能提升,但7版本还是太新了,很多企业的网站不一定能兼容.新事物取代旧事物是必然趋势,所以在后续的学习和工作中,建议你要与时俱进,敢于尝试.在本实验中,使用的PHP版本为5.6,PHP的官方下载地址为 :

2018.3.5 10周4次课

十周四次课(3月5日) 11.22 访问日志不记录静态文件 11.23 访问日志切割 11.24 静态元素过期时间 11.22 访问日志不记录静态文件 一个网站会有很多元素,尤其是图片.js.css等静态的文件非常多,用户每请求一个页面就会访问诸多的图片.js等静态元素,这些元素的请求都会被记录在日志中.如果一个站点访问量很大,那么访问日志文件增长会非常快,一天就可以达几GB这不仅对于服务器的磁盘空间造成影响,更重要的是会影响磁盘的读写速度.访问日志很重要,我们又不能不记录.还好这些巨量的静态元

2018.4.23 17周4次课

十七周4次课(4月23日) 20.20 告警系统主脚本 20.21 告警系统配置文件 20.22 告警系统监控项目 20.20 告警系统主脚本 创建告警系统的目录: [[email protected] /usr/local/sbin]# mkdir mon [[email protected] /usr/local/sbin]# ls mon  nginx_log_rotate.sh [[email protected] /usr/local/sbin]# cd mon [[email pro

2018.1.9 5周2次课

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 7.6 yum更换国内源 1.恢复之前备份的文件 2. 进入"/etc/yum.repos.d"目录 3.删除"CentOS-Base.repo"文件 4.下载"163.repo"文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo curl -O http://mirrors

2018.1.16 6周2次课

六周第二次课(1月16日) 9.4/9.5 sed 9.4/9.5 sed 其实grep工具的功能还不够强大,它实现的只是查找功能,而不能把查找的内容替换.以前用vim操作文档的时候,可以查找也可以替换, 但只限于在文本内部操作,而不能输出到屏幕上.sed工具以及后面要介绍的awk工具就能把替换的文本输出到屏幕上,而且还有其他更丰富的功能.sed和awk都是流式编辑器,是针对文档的行来操作的. sed  '/x/'p filename:匹配x字符 sed  -n  '/x/'p  filenam

2018.1.12 5周5次课

五周第五次课(1月12日) 8.10 shell特殊符号cut命令 8.11 sort_wc_uniq命令 8.12 tee_tr_split命令 8.13 shell特殊符号下 8.10 shell特殊符号cut命令 1. 特殊符号 * 任意个任意字符 *代表零个或多个任意字符 ? 任意一个字符 ?只代表一个任意的字符 # 注释字符 表示注释说明,即#后面的内容都会被忽略 \ 脱义字符 这个字符会将后面的特殊符号 (如*) 还原为普通字符 | 管道符 这个字符前面曾多次出现过,它的作用是将前面

2018.1.29 8周1次课

八周一次课(1月29日) 10.23 linux任务计划cron 10.24 chkconfig工具 10.25 systemd管理服务 10.26 unit介绍 10.27 target介绍 10.23 linux任务计划cron 其实大部分系统管理工作都是通过定期自动执行某个脚本来完成的, 那么如何定期执行某个脚本呢? 这就要借助Linux的cron功能了 Linux任务计划功能的操作都是通过crontab命令来完成的, 其常用的选项有以下几个. -u:表示指定某个用户,不加- u选项则为当

2018.02.26 9周4次课

九周第四次课(2月26日) 11.1 LAMP架构介绍 11.2 MySQL.MariaDB介绍 11.3/11.4/11.5 MySQL安装 11.1 LAMP架构介绍 MySQL.MariaDB介绍 MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀) MySQL官网https://www.mysql.com  最新版本5.7GA/8.0DMR MySQL5.6变化比较大,5.7性

2018.4.25 18周1次课

十八周一次课(4月25日) 20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.27 分发系统介绍 expect是一种能够按照脚本内容里面设定的方式与交互式程序进行"会话"的程序.根据脚本内容,Expect可以知道程序会提示或反馈什么内容以及什么是正确的应答.它是一种可以提供"分支和嵌套结构"来引导程序流程的解释型脚本语言. 我们熟知的shell编程功能虽然很强大,但是