Apache简介
Apache HTTP Server 是开源软件项目的杰出代表,基于标准的HTTP网络协议提供网页浏览服务,在Web服务器领域中长期保持着超过半数的份额。Apache服务器可以运行在linux,UNIX,windows等多种操作系统平台中。
主要特点:
开放源代码、跨平台应用,支持多种网页编程语言 ,模块化设计 、运行稳定、良好的安全性。
软件版本:
1.X 目前最高版本是1.3,运行稳定 向下兼容性较好,但缺乏一些较新的功能 。
2.X 目前最高版本是2.4 具有更多的功能特性 与1.X相比,配置管理风格存在较大差异。
编译安装的优点
具有较大的自由度,功能可定制 可及时获得最新的软件版本 普遍适用于大多数Linux版本,便于移植使用。
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
安装步骤
准备工作:为了避免发生端口冲突,程序冲突等现象,建议卸载使用RPM方式安装的httpd。
[root@www ~]# rpm -e httpd --nodeps
安装源码包
apache的配置及运行需要apr,pcre等软件包的支持,因此需要先安装这些软件及开发包,以便提供相应的库和头文件,确保Apache的安装顺利完成。
注:挂载系统盘进Packages安装。
1. [root@localhost ~]# mount /dev/cdrom /media/ 2. mount: /dev/sr0 写保护,将以只读方式挂载 3. [root@localhost ~]# cd /media/Packages/ 4. [root@localhost Packages]#
1. rpm -ivh apr-1.4.8-3.el7.x86_64.rpm 2. rpm -ivh apr-devel-1.4.8-3.el7.x86_64.rpm 3. rpm -ivh cyrus-sasl-devel-2.1.26-20.el7_2.x86_64.rpm 4. rpm -ivh expat-devel-2.1.0-8.el7.x86_64.rpm 5. rpm -ivh libdb-devel-5.3.21-19.el7.x86_64.rpm 6. rpm -ivh openldap-devel-2.4.40-13.el7.x86_64.rpm 7. rpm -ivh apr-util-devel-1.5.2-6.el7.x86_64.rpm 8. rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm 9. rpm -ivh pcre-devel-8.32-15.el7_2.1.x86_64.rpm 10. rpm -ivh pcre-8.32-15.el7_2.1.x86_64.rpm
源码编译及安装
源码编译安装httpd服务主要的过程主要包含解包,配置,编译及安装。
- 解包
挂载httpd资源包到/media
1. [root@localhost ~]# eject 2. [root@localhost ~]# mount /dev/cdrom /media 3. mount: /dev/sr0 写保护,将以只读方式挂载
进入到挂载点下执行
1. [root@localhost ~]# cd /media/ 2. [root@localhost media]# tar zxf httpd-2.4.25.tar.gz -C /usr/src 3. [root@localhost media]# cd /usr/src/httpd-2.4.25/ 4. [root@localhost httpd-2.4.25]#
- 配置
./configure --help命令可以查看各种配置选项及含义,./代表当前目录。
[root@localhost httpd-2.4.25]#./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
上述配置命令中,各项的含义如下:
--prefix 指定将httpd服务程序安装到哪个目录下,如/usr/local/httpd。
--enable-so 启用动态加载模块支持,使httpd具备进一步扩展功能的能力。
--enable-rewrite 启用网页地址重写功能,用于网站优化及目录迁移维护。
--enable-charset-lite 启动字符集支持,以便支持使用各种字符集编码的网页。
--enable-cgi 启用CGI脚本程序支持,便于扩展网站的应用访问能力。
- 编译及安装
配置完成以后,执行make命令进行编译,将源代码转换成可执行的程序。
然后执行make install完成最后的编译安装。可以用&&连接命令!
1. [root@localhost httpd-2.4.25]# make 2. [root@localhost httpd-2.4.25]# make install
确认安装结果
1. [root@localhost ~]# ls /usr/local/httpd 2. bin build cgi-bin conf error htdocs icons include logs man manual modules 3. [root@localhost ~]# /usr/local/httpd/bin/apachectl start 4. 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 5. [root@localhost ~]# netstat -anpt | grep httpd 6. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 21569/httpd
安装后的/usr/local/httpd 目录下,主要子目录的用途如下:
/usr/local/httpd/bin : 存放httpd服务的各种执行程序文件,包括主程序httpd,服务控制工具apachectl等。
/usr/local/httpd/cgi-bin : 存放各种CGI程序文件。
/usr/local/httpd/logs : 存放httpd服务的日志文件。
/usr/local/httpd/conf : 存放httpd服务的各种配置文件,包括主配置文件httpd.conf,增强配置子目录extra等。
/usr/local/httpd/htdocs : 存放网页文档,包括默认首页文件index.html等。
/usr/local/httpd/modules : 存放httpd服务的各种模块文件。
优化执行路径
通过源码编译安装的httpd服务,程序路径并不在默认的搜索路径中,为了使该服务在使用时更便捷,可以为相关程序添加符号链接(软链接),这样就不用输入冗长的路径了。
1. [root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin 2. [root@localhost ~]# ll /usr/local/bin/httpd /usr/local/bin/apachectl
例如,当执行“httpd -v”命令时,相当于执行“/usr/local/httpd/bin/httpd -v”。
添加httpd系统服务
CentOS7系统下,将编译安装的程序添加为系统服务方式有两种。1.通过chkconfig命令添加为系统服务,然后由systemctl进行管理。2.在/bin/systemd/system/目录下,手动编写.service结尾的单元(unit)配置文件。
- 使用chkconfig添加系统服务
1. [root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd 2. [root@localhost ~]# vim /etc/init.d/httpd
进入文件中修改下列
1. #!/bin/bash 2. # chkconfig: 35 85 21 服务识别参数,在级别3,5中启动;启动和关闭。顺序分别为85,21 3. # description: Apache http server 服务描述信息
将httpd添加为系统服务
[root@localhost ~]# chkconfig --add httpd
- 建立【service】.service配置文件
在/bin/systemd/system/ 目录下,建立一个以.service 结尾的单元(unit)配置文件,用于控制由systemd控制或监控的httpd服务。配置文件主要分为三个部分,控制单元[unit]的定义,服务[service]的定义以及安装部分[install],具体内容如下所示。
[root@localhost ~]# vim /lib/systemd/system/httpd.service
1. [Unit] 2. Description=The apache http server 3. After=network.target 4. 5. [Service] 6. Type=forking 7. PIDFile=/usr/local/httpd/logs/httpd.pid 8. ExecStart=/usr/local/bin/apachectl $OPTIONS 9. ExecReload=/bin/kill -HUP $MAINPID 10. KillMode=process 11. Restart=on-failure 12. RestartSec=42s 13. 14. [Install] 15. WantedBy=graphical.target
httpd.service文件编写完成后,执行如下命令设置httpd服务开机启动。
1. [root@localhost ~]# systemctl enable httpd.service 2. [root@localhost ~]# systemctl is-enabled httpd.service
httpd基本配置
- web站点的部署过程
- 确定网站名称,IP地址
- 配置并启动httpd服务
服务器设置为192.168.1.100,客户机192.168.1.10,用浏览器访问http://192.168.1.100,会出现一个默认网页“ It works”
配置httpd服务
编辑httpd服务的主配置文件httpd.conf,查找配置项“ServerName”,在附近添加一行内容“ServerName www.123.com”,用于设置网站名称。
[root@localhost ~]# vim /usr/local/httpd/conf/httpd.conf
文本下查找ServerName并修改网站名称
#ServerName www.123.com:80
修改httpd.conf文件的配置后,建议进行语法检查。
1. [root@localhost ~]# apachectl -t 2. 或 3. [root@localhost ~]#httpd -t
1. [root@localhost ~]# httpd -t 2. 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 3. Syntax OK
启动httpd服务并查看端口
1. [root@localhost ~]# systemctl start httpd 2. [root@localhost ~]# netstat -anpt | grep httpd
- 部署网页文档
对于新编译安装的httpd服务,网站根目录位于/usr/local/httpd/htdocs下,需要将web站点的网页文档赋值或上传到此目录下。httpd服务器默认提供了一个名为index.html的测试网页(显示“it works!”)。
[root@localhost ~]# vim /usr/local/httpd/htdocs/index.html
- 在客户机中访问web站点
在客户机的网页浏览器中,通过域名或IP地址访问httpd服务器,将可以看到web 站点的网页内容。
- 查看web站点的访问情况
httpd服务器使用了两种类型的日志:访问日志和错误日志。这两种日志的文件名分别为access_log和error_log,均位于/usr/local/httpd/logs目录下。
[root@localhost ~]# cat /usr/local/httpd/logs/access_log
httpd.conf配置文件
- 常用的全局配置参数
ServerRoot:服务目录
Listen:监听的IP地址、端口号
User:运行服务的用户身份
Group:运行服务的组身份
ServerAdmin:管理员邮箱
ServerName:网站服务器的域名
DocumentRoot:网页文档的根目录
DirectoryIndex:默认的索引页文件
ErrorLog:设置错误日志文件的路径
LogLevel:记录日志的级别,默认为warn
CustomLog:访问日志文件的位置
PidFile:保存httpd进程PID号的文件
AddDefaultCharset:设置站点中的网页默认使用的字符集编码
Timeout:网络连接超时,默认为300秒
KeepAlive:是否保持连接,可选On或Off
MaxKeepAliveRequests:每次连接最多请求文件数
KeepAliveTimeout:保持连接状态时的超时时间
Include:需要包含进来的其他配置文件
- 区域配置项
除了全局配置项以外,http.conf文件中的大多数配置是包括在区域中的。区域配置使用一堆组合标记,限定了配置项的作用范围。例如,最常见的目录区域配置的形式如下所示。
1. <Directory/> 定义"/"目录区域的开始 2. Options FollowSymLinks 控制选项,允许使用符号链接 3. AllowOverride none 不允许隐含控制文件中的覆盖配置 4. Require all denied 禁止任何人访问此区域 5. <Directory> 定义"/"目录区域结束