Linux下搭建Apache 服务器(完整版)
什么是Apache?
Apache Licence是著名的非盈利开源组织Apache 采用的协议。该协议和BSD 类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布( 作为开源或商业软件) 。需要满足的条件也和BSD 类似
Apache主要特点
1、 开放源代码、跨平台应用
2、 支持多种网页编程语言
3、 模块化设计 、运行稳定、良好的安全性
Apache软件版本
1.X
1、目前最高版本是1.3 ,运行稳定
2、向下兼容性较好,但缺乏一些较新的功能
2.X
1、目前主要包括2.0 和2.2 两个版本
2、具有更多的功能特性
3、与1.X 相比,配置管理风格存在较大差异
Apache编译安装的优点
1、具有较大的自由度,功能可定制
2、可及时获得最新的软件版本
3、普遍适用于大多数Linux 版本,便于移植使用
一:实验要求
1:学会编译安装httpd 服务器
2:熟悉httpd 服务的部署过程及常见配置
3:学会构建AWStats 日志分析系统
4:httpd 服务的访问控制
客户机的地址限制
用户授权限制
5:构建虚拟WEB 主机
基于域名的虚拟主机
基于IP地址、端口的虚拟主机
二:实验环境
1:需要的软件包
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
httpd-2.4.25.tar.gz
2:搭建服务器的环境
RHEL6.5版本
IP地址:192.168.1.63 255.255.255.0
配置好yum仓库
三:实验代码
第一块:搭建apache服务器
主要目录和文件:
服务目录:/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
第1步:卸载httpd 软件及相关软件包
[root@xuegod63 ~]# rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps
注释:--nodeps是强制接触依赖关系
第2步:检查手工编译需要的4 中软件包是否安装
[root@xuegod63 ~]# rpm -q gcc
gcc-4.4.7-4.el6.x86_64
[root@xuegod63 ~]# rpm -q gcc-c++
gcc-c++-4.4.7-4.el6.x86_64
[root@xuegod63 ~]# rpm -q make
make-3.81-20.el6.x86_64
[root@xuegod63 ~]# yum install pcre-devel -y
第3步:解压软件包
[root@xuegod63 ~]# tar zxvf httpd-2.4.25.tar.gz -C /opt/
[root@xuegod63 ~]# tar -zxvf apr-1.5.2.tar.gz -C /opt/
[root@xuegod63 ~]# tar -zxvf apr-util-1.5.4.tar.gz -C /opt/
[root@xuegod63 opt]# cp -r apr-1.5.2/ httpd-2.4.25/srclib/apr
[root@xuegod63 opt]# cp -r apr-util-1.5.4/ httpd-2.4.25/srclib/apr-util
注释:解压后复制到httpd的srclib 解压目录中(不带版本号)
第4步:源码编译安装Apache
[root@xuegod63 ~]# cd /opt/httpd-2.4.25/
[root@xuegod63 httpd-2.4.25]# ./configure \ #源码
--prefix=/usr/local/apache \
--enable-so \
--enable-rewrite \
--enable-mods-shared=most \
--with-mpm=worker \
--disable-cgid \
--disable-cgi
[root@xuegod63 httpd-2.4.25]# echo $?
0
[root@xuegod63 httpd-2.4.25]# make -j 4 #编译,将编译程序变为可执行程序
[root@xuegod63 httpd-2.4.25]# make install #安装
参数解释:
--prefix= //来指定安装路径
--enable-so //该参数表示支持用mod_so 模块提供的功能,用LoadModule 在httpd.conf 文件或包含的conf 文件中动态加载某个模块。让 Apache 可以支持DSO 模式
--enable-rewrite //支持 URL 重写
--enable-mods-shared=most //选项:告诉编译器将所有标准模块都动态编译为DSO 模块。
--with-mpm=worker // 让apache 以worker 方式运行
--with-mpm=worker //该参数是配置apache 将以何种模式编译的。Apache 网站文档指出不同操作系统下的不同的默认模式.
--disable-cgid //禁止用一个外部 CGI 守护进程执行CGI 脚本
--disable-cgi //禁止编译 CGI 版本的 PHP
第5步:命令链接到PATH 变量并且管理service
[root@xuegod63 httpd-2.4.25]# ls /usr/local/apache/bin/apachectl #检查apachectl 命令
/usr/local/apache/bin/apachectl
[root@xuegod63 httpd-2.4.25]# echo $PATH #查看PATH 变量
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin
注释:Linux系统中所有的命令都是放在PATH 变量中的,可以放在/usr/local//sbin 或者/usr/local//bin 下。
[root@xuegod63 httpd-2.4.25]# ln -s /usr/local/apache/bin/* /usr/local/bin/
[root@xuegod63 httpd-2.4.25]# ls -l /usr/local/bin/apachectl /usr/local/bin/httpd
lrwxrwxrwx 1 root root 31 3月 9 17:32 /usr/local/bin/apachectl -> /usr/local/apache/bin/apachectl
lrwxrwxrwx 1 root root 27 3月 9 17:32 /usr/local/bin/httpd -> /usr/local/apache/bin/httpd
注释:优化路径,将/usr/local/apache/bin/下的所有命令内容链接到PATH 变量中的路径下。
只有将命令链接到PATH变量的路径中,命令才可以被使用。
[root@xuegod63 httpd-2.4.25]# grep -v "#" /usr/local/apache/bin/apachectl > /etc/init.d/httpd
[root@xuegod63 httpd-2.4.25]# vim /etc/init.d/httpd
#!/bin/sh
# chkconfig: 2345 85 15
# description: Apache is a World Wide Web server.
[root@xuegod63 httpd-2.4.25]# chmod +x /etc/init.d/httpd
[root@xuegod63 httpd-2.4.25]# chkconfig --add httpd
[root@xuegod63 httpd-2.4.25]# chkconfig --list httpd
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
注释:使程序可以使用service 管理,"service 管理的命令都在/etc/init.d/ 这个目录下的" 。如果是rpm 命令安装的软件包就不需要使用service 命令管理,可以直接执行service 命令,但是手工源码编译的软件包,程序就不可以直接执行service 命令。
第6步:将配置文件链接到/etc 下
[root@xuegod63 httpd-2.4.25]# ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf
[root@xuegod63 httpd-2.4.25]# vim /etc/httpd.conf
ServerName www.example.com:80
[root@xuegod63 httpd-2.4.25]# service httpd start #启动服务没有效果
[root@xuegod63 httpd-2.4.25]# netstat -anutp | grep http #监听http 服务
tcp 0 0 :::80 :::* LISTEN 32974/httpd
第7步:物理机验证http 服务
[root@xuegod63 httpd-2.4.25]# service iptables stop #关闭防火墙
[root@xuegod63 httpd-2.4.25]# cd /usr/local/apache/ #
[root@xuegod63 apache]# cat htdocs/index.html
It works!
注释:在/usr/local/apache/htdocs/下存放着apache 服务自带的index 。Html 网页,用于验证,次服务是否启动成功,在此目录下,可以创建更多的网页文件。
[root@xuegod63 htdocs]# vim a.html 创建一个新的网页
This is my first homepage!!!!------mobanche !
--------Welcome my homepage----------
第二块:Httpd服务访问控制
作用:
控制对网站资源的访问
为特定的网站目录添加访问授权
常用访问控制方式:
客户机地址限制
用户授权限制
第1步:共享虚拟目录
[root@xuegod63 ~]# vim /etc/httpd.conf
Include conf.d/*.conf #在主配置文件末尾增加。
注释:httpd.conf是apache 服务器的主配置文件,由于内容过多,不易查看,因此初见一个子主配置文件,当主配置文件读完之后就开始读子主配置文件,所以直接在子配置文件中修改配置文件。
[root@xuegod63 ~]# cd /usr/local/apache/ #切换至服务目录
[root@xuegod63 apache]# mkdir conf.d #创建子主配置文件目录
[root@xuegod63 apache]# cd conf.d/
[root@xuegod63 conf.d]# vim vdir.conf #创建子主配置文件
Alias /doc/ "/usr/share/doc/" #定义虚拟目录doc ,物理共享路径在/usr/share/doc/
#定义这个目录的权限如下内容
Options Indexes MultiViews FollowSymLinks #固定模式
AllowOverride None #固定的不允许重写
Order allow,deny #先允许,后拒绝
Allow from all #允许从任何客户机访问
Require all granted #对这个目录给予授权,这是6.0 手动编译安装的apache 时,定义被访问目录的权限
[root@xuegod63 conf.d]# service httpd restart
第2步:共享目录授权访问
[root@xuegod63 conf.d]# vim vdir.conf #修改子主配置文件
Alias /man/ "/usr/share/man/ " #共享出去的目录和共享出去的别名
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AuthName "**********welcome*********" #定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
AuthType Basic #设置认证的类型,basic 为基本的认证
AuthUserFile /usr/local/apache/user #设置用于保存用户账号、密码的认证文件
路径(htpasswd)
require valid-user #要求只有认证文件中的合法用户才能访问。valid-user 表示所有合法用 户#Require all granted
[root@xuegod63 conf.d]# htpasswd -c /usr/local/apache/user test #创建用户认证的数据库
New password: 123456
Re-type new password:123456
Adding password for user test
注意:htpasswd命令指的是创建用户认证的数据库中的用户名称和密码,‘-c ’指的是创建用户认证的数据库的路径。第一次创建需要加‘-c ’,第二次以后就不需要了。
[root@xuegod63 conf.d]# htpasswd /usr/local/apache/user jack
New password: 456789
Re-type new password:456789
Adding password for user jack
[root@xuegod63 conf.d]# cat /usr/local/apache/user
test:$apr1$KQuygE7p$H7qBAPM5Z2V0SXrWfTFlo0
jack:$apr1$spCSLlRw$WYGcMNUbYqXUQZNkoMXcm1
[root@xuegod63 conf.d]# service httpd restart
第三块:构建虚拟WEB主机
虚拟Web主机
在同一台服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机
httpd支持的虚拟主机类型
1、基于域名的虚拟主机
2、基于IP 地址的虚拟主机
3、基于端口的虚拟主机
第1步:基于ip 的虚拟主机
需求:
1:构建2 个虚拟Web 站点:
www.benet.com,IP 地址为 192.168.1.36
www.accp.com,IP 地址为 192.168.1.63
2:在浏览器中访问这两个域名时,分别显示不同的内容
分析:在虚拟机中添加网卡,给定网桥模式,修改添加网卡信息,并且将mack地址修改。
[root@xuegod63 conf.d]# vim vhost.conf
#定义虚拟主机,给定IP 地址
ServerAdmin 741215208@qq.com #定义此虚拟主机的IP 地址
DocumentRoot /opt/accp/ #定义虚拟主机的归属目录
ServerName www.accp.com #定义域名
ErrorLog logs/accp.com-error_log #错误日志
CustomLog logs/accp.com-access_log common
#定义虚拟主机的目录权限
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
ServerAdmin admin@benet.com
DocumentRoot /opt/benet/
ServerName www.benet.com
ErrorLog logs/benet.com-error_log
CustomLog logs/benet.com-access_log common
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
[root@xuegod63 conf.d]# mkdir /opt/accp #创建虚拟主机的文件夹目录
[root@xuegod63 conf.d]# mkdir /opt/benet
[root@xuegod63 conf.d]# echo "welcome accp" > /opt/accp/index.html
[root@xuegod63 conf.d]# echo "welcome benet" > /opt/benet/index.html #给定虚拟主机输入一些信息
[root@xuegod63 conf.d]# service httpd restart
[root@xuegod63 conf.d]# service iptables stop
第2步:基于端口地址的虚拟主机
[root@xuegod63 conf.d]# vim vhost.conf
Listen 192.168.1.63:8080
ServerAdmin 741215208@qq.com
DocumentRoot /opt/accp/
ServerName www.accp.com
ErrorLog logs/accp.com-error_log
CustomLog logs/accp.com-access_log common
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
ServerAdmin admin@benet.com
DocumentRoot /opt/benet/
ServerName www.benet.com
ErrorLog logs/benet.com-error_log
CustomLog logs/benet.com-access_log common
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
[root@xuegod63 conf.d]# service httpd restart
第3步:基于域名的虚拟主机
[root@xuegod63 conf.d]# vim vhost.conf
Listen 192.168.1.63:8080
ServerAdmin 741215208@qq.com
DocumentRoot /opt/accp/
ServerName www.accp.com
ErrorLog logs/accp.com-error_log
CustomLog logs/accp.com-access_log common
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
ServerAdmin admin@benet.com
DocumentRoot /opt/benet/
ServerName www.benet.com
ErrorLog logs/benet.com-error_log
CustomLog logs/benet.com-access_log common
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Require all granted
注释:hosts文件在C:\Windows\System32\drivers\etc 下,hosts 文件中添加以下内容,需要将此文件拖出到桌面修改,修改完之后再拖回去。
192.168.1.63 www.benet.com
192.168.1.63 www.accp.com
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com