Apache网站服务基础
Apache简介
Apache HTTP Server 是开源软件项目的杰出代表,基于标准的HTPP网络协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在Linux、UNIX、Windows等多种操作系统平台中。
Apache的主要特点
Apache服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足Web服务器用户的应用需求。其主要特点包括以下几个方面。
- 开放源代码:Apache服务程序由全世界的众多开发者共同维护,并且任何人都可以自由的使用,这充分体现了开源软件的精神。
- 跨平台应用:这个特性得益于Apache的源代码开放。Apache服务器可以运行在绝大多数软硬件平台上,所欲Unix服务器都可以运行Apache服务器,甚至在大多数windows系统平台也可以良好地运行Apache服务器。Apache服务器的跨平台特性使其具有被广泛应用的条件。
- 支持各种Web编程语言:Apache服务器可支持的网页编程语言包括Perl、PHP、Python、Java等,甚至微软的ASP技术也可以在Apache服务器中使用。
- 模块化设计:Apache并没有将所有功能集中在单一的服务程序内部,而是尽可能地通过标准的模块来实现专有的功能,其他软件开发商可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。
- 运行非常稳定:Apache服务器可用于构建具有极大负载访问量的Web站点,很多知名企业网站都是用Apache作为web服务软件。
- 良好的安全性:Apache服务器具有相对较好的安全性,这是开源软件共同具有的特性。
安装httpd服务器
httpd服务器的安装可以选用RPM安装、源码编译安装两种方式,前者相对简单、快速,但是在功能上存在一定的局限性。
源码安装包的文件名及含义:httpd-2
.2
.17
.tar.gz,标注的字段分别为主版本、次版本、发布次数,发布次数为奇数代表该版本为开发版、偶数为稳定版
1.准备工作
为了避免发生端口冲突、程序冲突等现象,建议先卸载使用RPM安装的httpd。使用–nodeps选项忽略依赖关系可保留无需源码安装的httpd所需的依赖包,为源码编译安装httpd服务提高了不少效率,初次安装也可以先使用yum安装一次httpd服务,再执行以下命令。
rpm -e httpd --nodeps
2.源码编译及安装
(1) 解包
将下载获得的httpd源码包解压并释放到/usr/src目录下,且切换到展开后的源码目录中。
tar -zxf httpd-2.2.17-tar-gz -C /usr/src
cd /usr/src/httpd-2.2.17
(2) 解决依赖关系
源码安装httpd服务器所需的各种依赖软件如下👇
可以使用RPM方式安装,还可以使用yum方式安装
rpm -ivh apr-1.4.8-3.el7_4.1.x86_64.rpm
rpm -ivh apr-devel-1.4.8-3.el7_4.1.x86_64.rpm
rpm -ivh cyrus-sasl-2.1.26-23.el7.x86_64.rpm
rpm -ivh cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
rpm -ivh expat-devel-2.1.0-10.el7_3.x86_64.rpm
rpm -ivh libdb-devel-5.3.21-24.el7.x86_64.rpm
rpm -ivh openldap-devel-2.4.44-13.el7.x86_64.rpm
rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm
rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
rpm -ivh pcre-devel-8.32-17.el7.x86_64.rpm
rpm -ivh pcre-8.32-17.el7.x86_64.rpm
rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm
(3) 配置
根据服务器的实际应用需要,可以灵活设置不同 的定制选项,如制定安装路径、启用字符集支持等。若要获知可用的各种配置选项及其含义,可以执行“./configure --help”命令。
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-chaerset-lite --enable-cgi --enable-deflate --enable-pires --with-mpm=prefork
上述命令中,各选项的含义如下。
- –prefix:指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd
- –enable-so:启用动态加载模块支持,使httpd具备进一步扩展功能的能力
- –enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护
- –ernble-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页
- –enable-cgi:启用CGI脚本程序支持,便于扩展网站的应用访问能力
(4) 编译及安装
完成配置以后,执行“make”命令进行编译,将源代码转换为可执行的程序;然后执行“ make install”命令完成最后的安装过程;将编译完的httpd程序及相关目录、文件复制到预设的安装目录(由配置时的“–prefix”选项指定)。
make
make install
3.确认安装结果
由于指定的安装目录为/usr/local/httpd
,因此httpd服务的各种程序、模块、帮助文件等都将复制到此目录下。
[root@VM-0-12-centos ~]# ls /usr/local/httpd
bin build cgi-bin conf error htdocs icons include logs man manual modules
在安装后的/usr/local/httpd目录下,主要子目录的用途如下👇
- /usr/local/httpd/bin:存放httpd服务的各种执行程序文件,包括主程序httpd、服务控制工具apachectl等。
- /usr/local/httpd/conf:存放httpd服务的各种配置文件,包括主配置文件httpd.conf、增强配置子目录extra等。
- /usr/local/httpd/htdocs:存放网页文档,包括默认首页文件index.html等
- /usr/local/httpd/logs:存放httpd服务的日志文件
- /usr/local/httpd/modules:存放httpd服务的各种模块文件
- /usr/local/httpd/cgi:存放各种CGI程序文件
4.优化执行路径
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接
[root@VM-0-12-centos ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin
[root@VM-0-12-centos ~]# ls -l /usr/local/bin
总用量 0
lrwxrwxrwx 1 root root 23 7月 20 17:00 ab -> /usr/local/httpd/bin/ab
lrwxrwxrwx 1 root root 30 7月 20 17:00 apachectl -> /usr/local/httpd/bin/apachectl
...
这样,再执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd -v”命令(用于查看程序版本)时,即相当于执行了“/usr/local/httpd/bin/httpd-v”命令。
[root@VM-0-12-centos ~]# httpd -v
Server version: Apache/2.4.38 (Unix)
Server built: Jul 20 2020 10:08:23
5.添加httpd系统服务
centos6 方法
通过chkconfig进行管理系统服务
[root@www init.d]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@www init.d]# vi /etc/init.d/httpd
//在文件最开始加入以下三行
#!/bin/bash
# chkconfig:35 85 21 //服务识别参数,在级别3和5中启动,启动关系顺序分别为85、21
# description:Startup script for the Apache HTTP Server //服务描述信息
[root@www init.d]# chkconfig --add httpd //将httpd添加为系统服务
[root@www init.d]# chkconfig --list httpd //查看httpd服务的自启动状态
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
httpd 0:关 1:关 2:关 3:开 4:关 5:开 6:关
成功执行上述操作以后,linux系统每次进入运行级别3、5时,httpd服务也会自动运行
centos7 方法
通过systemctl进行管理系统服务
[root@www init.d]# vi /lib/systemd/system/httpd.service
//编辑如下内容
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart=/usr/local/bin/apachectl $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RetartSec=42s
[Install]
WantedBy=graphical.target
[root@www init.d]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@www init.d]# systemctl is-enabled httpd.service
enabled
上述操作完成后,可以通过systemctl命令控制httpd服务的启停
httpd服务器的基本配置
httpd服务的目录结构
主要目录和文件:
- 服务目录:/usr/local/httpd/
- 主配置文件:/usr/local/httpd/conf/httpd.conf
- 网页目录:/usr/local/httpd/htdocs/
- 服务脚本:/usr/local/httpd/bin/apachectl
- 执行程序:/usr/local/httpd/bin/httpd
- 访问日志: /usr/local/httpd/log/access_log
- 错误日志: /usr/local/httpd/log/error_log
httpd服务器基本配置
1.Web站点部署过程
1)确定网站名字、IP地址
2)配置并启动httpd服务
主配置文件:/usr/local/httpd/conf/httpd.conf
服务脚本:/usr/local/httpd/bin/apachectl
[root@www httpd]# vi /usr/local/httpd/conf/httpd.conf
201 #ServerName www.example.com:80 //将此行(201行附近)取消注释,并修改为自己的网站名称,如ServerName www.qp.com
[root@www httpd]# /usr/local/httpd/bin/httpd -t //测试主配置文件语法
Syntax OK
[root@www httpd]# /usr/local/httpd/bin/apachectl start
[root@www httpd]# netstat -antp | grep http
tcp6 0 0 :::80 :::* LISTEN 9994/httpd
3)部署网页文档
[root@dns htdocs]# vi /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1></body></html>
4)在客户机中访问Web站点
5)查看Web站点访问情况
httpd服务器使用了两种类型的日志,均在/usr/local/httpd/log/
访问日志: /usr/local/httpd/log/access_log
错误日志: /usr/local/httpd/log/error_log
均在/usr/local/httpd/log/
2、httpd.conf配置文件
全局配置项:决定httpd服务器的全局运行参数,使用“关键字 值”的配置格式
常用配置项:
ServerRoot "/usr/local/httpd" 服务目录
Listen 80 监听的IP地址、端口号
User daemon 运行服务的用户身份
Group daemon 运行服务的组身份
ServerAdmin webmaster@kgc.com 管理员邮箱
ServerName www.kgc.com 网站服务器的域名
DocumentRoot "/usr/local/httpd/htdocs" 网页文档的根目录
DirectoryIndex index.html index.php 默认的索引页文件
ErrorLog logs/error_log 设置错误日志文件的路径
LogLevel warn 记录日志的级别,默认为warn
CustomLog logs/access_log common 访问日志文件的位置
PidFile logs/httpd.pid 保存httpd进程PID号的文件
AddDefaultCharset 设置站点中的网页默认使用的字符集编码
Timeout 网络连接超时,默认为300秒
KeepAlive 是否保持连接,可选On或Off
MaxKeepAliveRequests 每次连接最多请求文件数
KeepAliveTimeout 保持连接状态时的超时时间
CharsetDefault UTF-8 设置网页默认使用的字符集编码
Include conf/extra/httpd-default.conf 需要包含进来的其他配置文件
区域配置项:使用一对组合标记,限定了配置项的作用范围
<Directory /> //定义“ / ”目录区域的开始
Options FollowSymLinks //控制选项,允许使用符号链接
AllowOverride none //不允许隐含控制文件中的覆盖配置
Order deny,allow //访问控制策略的应用顺序
Deny from all //禁止任何人访问此区域
Require all denied //拒绝所有访问请求
</Directory> //定义“ / ”目录区域的结束