LAMP
LAMP是一个常见的开发平台和运行环境,主要用于支持动态网站和Web应用程序的开发和部署
- L:Linux,指操作系统,通常是Linux操作系统
- A:Apache,指Web服务器软件,常用于托管网站。
- M:MySQL,指关系型数据库管理系统,用于存储和管理数据。
- P:PHP,指编程语言,用于开发动态网页内容。
Apache
起源
- 源于A Patchy Server,著名的开源Web服务软件
- 1995年时,发布Apache服务程序的1.0版本
- 由Apache软件基金会 (ASF) 负责维护
- 最新的名称为“Apache HTTP Server”
主要特点
- 开放源代码、跨平台应用
- 支持多种网页编程语言
- 模块化设计、运行稳定、良好的安全性
软件版本
- 1.X
- 目前最高版本是1.3,运行稳定
- 向下兼容性较好,但缺乏一些较新的功能
- 2.X
- 目前最高版本是2.4
- 具有更多的功能特性
- 与1.X相比,配置管理风格存在较大差异
编译安装httpd服务器
编译安装的优点
具有较大的自由度,功能可定制
可及时获得最新的软件版本
普遍适用于大多数Linux版本,便于移植使用
获取Apache服务器的源码包:http://httpd.apache.org/download.cgi
操作步骤
准备工作
为了方便实验,关闭防火墙 systemctl stop firewalld 并关闭内核安全机制 setenforce 0 使用 rpm -qa httpd 查看系统中是否安装了httpd,如果有的话需要卸载安装源码包所需的开发环境 yum -y install apr-util-devel pcre-devel gcc*
安装源码软件包
将httpd的源码软件包拖到Xshel中
使用 tar zxvf httpd-2.4.25.tar.gz 命令解压,然后cd进入解压的目录
配置安装
进入解压的目录中,使用ls命令可以看到 ./configure 文件,该文件是一个脚本,通过该脚本指定该软件包要安装的功能
通过./configure脚本指定启用的功能
- --prefix:指定安装的路径前缀;在配置文件中引用路径时,可以省去安装路径的前级,而使用相对路径
- --enable-so:启用DSO (dynamic shared object;动态共享对象),允许在运行时动态地加载和卸载模块,而无需重新启动服务。
- --enable-rewrite:开启地址重写功能;URL重写允许你根据规则动态地改变请求的URL,这对于实现搜索引擎友好的URL、重定向、访问控制等非常有用。
- --enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页
- --enable-cgi:启用CGI(通用网关接口)脚本程序支持,允许Web服务器运行外部程序来形成动态Web内容。
编译
使用 make 命令执行编译操作,编译的结果是把源代码软件包的代码编译为二进制文件
安装
使用 make install 命令执行安装操作,到这一步就对源代码软件包安装结束了
优化执行路径
使用 In-s /usr/local/httpd/bin/*/usr/localbin/ 命令创建软链接,使得可以在终端里直接使用命令
而不需要加路径
使用 httpd-v 测试软件包安装是否正常
添加服务
此时可以使用apachectl相关命令控制服务的状态,但是会提示没有设置服务名称
使用 vim /usr/local/httpd/conf/httpd.conf 命令在该文件的第200行将服务器名称取消注释
保存并退出,再使用apachectl命令就不会提示了
守护进程
通过systemd管理httpd,使其变成系统服务和守护进程
cd到服务目录,创建httpd的服务文件并添加内容
使用 httpd-t 命令测试配置文件是否有语法错误
使用 systemctl daemon-reload 命令重载-下systemd
此时就可以使用systemctl命令来管理httpd服务的状态了
配置httpd
httpd默认存放网页的位置:/usr/ocalhttpd/htdocs/
如果修改该路径下默认的index.html文件内测试的文本为中文,再在浏览器中访问就变成中文乱码,就需要修改编码格式
通过添加head头部标签,在头部标签内通过meta标签的charset属性,声明编码格式为utf-8修改index.html文件内容如下
不需要重启服务,直接刷新浏览器即可,此时就显示正常了
查看 Web 站点的访问情况
虚拟主机
单台主机运行多个站点的技术
类型
- 基于ip的虚拟主机 (需要多个ip)
- 基于端口的虚拟主机 (一个ip,绑定多个端口)
- 基于域名的虚拟主机 (最常用)
部署基于域名的虚拟主机
开启第二台虚拟机 ( 192.168.10.102 ) 作为客户端
为虚拟主机提供域名解析(两个域名)
使用 vim /etc/hosts 命令修改hosts文件为一下内容
此时在客户端主机 (102) 使用curl命令访问刚刚写入的两个ip,都能访问到一样的网页内容了
不同ip访问不同的内容
在服务端 (101) 创建两个ip对应的文件夹到指定位置
再使用重定向创建两个ip对应的首页文件
使用 vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 命令修改虚拟主机的配置文件
改为以下内容
再修改httpd的主配置文件:vim/usr/local//httpd/conf/httpd.conf
但是此时httpd服务并没有加载vhosts.conf文件 (虚拟主机配置文件),所以要在httpd的主配置文件中使用Include命令包含到当前文件中,相当于在Include语句中把要包含的代码复制粘贴了过来
通过Include命令也实现了httpd服务的模块化功能管理
在第483行将注释去掉
部署基于IP地址的虚拟主机
部署基于端口的虚拟主机