阿尔海南粉 发表于 2018-11-18 14:16:15

Linux下搭建Apache服务器(完整版)

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软件及相关软件包
  # 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中软件包是否安装
  # rpm -q gcc
  gcc-4.4.7-4.el6.x86_64
  # rpm -q gcc-c++
  gcc-c++-4.4.7-4.el6.x86_64
  # rpm -q make
  make-3.81-20.el6.x86_64
  # yum install pcre-devel -y
  
  第3步:解压软件包
  # tar zxvf httpd-2.4.25.tar.gz -C /opt/
  # tar -zxvf apr-1.5.2.tar.gz -C /opt/
  # tar -zxvf apr-util-1.5.4.tar.gz -C /opt/
  # cp -r apr-1.5.2/ httpd-2.4.25/srclib/apr
  # cp -r apr-util-1.5.4/ httpd-2.4.25/srclib/apr-util
  注释:解压后复制到httpd的srclib解压目录中(不带版本号)
  
  第4步:源码编译安装Apache
  # cd /opt/httpd-2.4.25/
  # ./configure \ #源码
  --prefix=/usr/local/apache \
  --enable-so \
  --enable-rewrite \
  --enable-mods-shared=most \
  --with-mpm=worker \
  --disable-cgid \
  --disable-cgi
  # echo $?
  0
  # make -j 4 #编译,将编译程序变为可执行程序
  # 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
  # ls /usr/local/apache/bin/apachectl #检查apachectl命令
  /usr/local/apache/bin/apachectl
  # 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下。
  
  # ln -s /usr/local/apache/bin/* /usr/local/bin/
  # 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变量的路径中,命令才可以被使用。
  
  # grep -v "#" /usr/local/apache/bin/apachectl> /etc/init.d/httpd
  # vim /etc/init.d/httpd
  #!/bin/sh
  # chkconfig: 2345 85 15
  # description: Apache is a World Wide Web server.
  # chmod+x/etc/init.d/httpd
  # chkconfig --add httpd
  # chkconfig --list httpd
  httpd          0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭
  注释:使程序可以使用service 管理,"service管理的命令都在/etc/init.d/这个目录下的"。如果是rpm命令安装的软件包就不需要使用service命令管理,可以直接执行service命令,但是手工源码编译的软件包,程序就不可以直接执行service命令。
  
  第6步:将配置文件链接到/etc下
  # ln -s /usr/local/apache/conf/httpd.conf /etc/httpd.conf
  # vim /etc/httpd.conf
  ServerName www.example.com:80
  # service httpd start #启动服务没有效果
  # netstat -anutp | grep http #监听http服务
  tcp      0      0 :::80                     :::*                        LISTEN      32974/httpd
  
  第7步:物理机验证http服务
  # service iptables stop #关闭防火墙
  # cd /usr/local/apache/ #
  # cat htdocs/index.html
  It works!
  注释:在/usr/local/apache/htdocs/下存放着apache服务自带的index。Html网页,用于验证,次服务是否启动成功,在此目录下,可以创建更多的网页文件。

  # vim a.html创建一个新的网页
  
  
  This is my first homepage!!!!------mobanche !
  --------Welcome my homepage----------
  
  
  

第二块:Httpd服务访问控制
  作用:
控制对网站资源的访问
为特定的网站目录添加访问授权
  常用访问控制方式:
客户机地址限制
用户授权限制

  
  第1步:共享虚拟目录
  # vim /etc/httpd.conf
  Include conf.d/*.conf#在主配置文件末尾增加。
  注释:httpd.conf是apache服务器的主配置文件,由于内容过多,不易查看,因此初见一个子主配置文件,当主配置文件读完之后就开始读子主配置文件,所以直接在子配置文件中修改配置文件。
  
  # cd /usr/local/apache/ #切换至服务目录
  # mkdir conf.d #创建子主配置文件目录
  # cd 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时,定义被访问目录的权限
  
  # service httpd restart

  
  第2步:共享目录授权访问
  # 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
  
  
  # htpasswd -c /usr/local/apache/user test #创建用户认证的数据库
  New password: 123456
  Re-type new password:123456
  Adding password for user test
  注意:htpasswd命令指的是创建用户认证的数据库中的用户名称和密码,‘-c’指的是创建用户认证的数据库的路径。第一次创建需要加‘-c’,第二次以后就不需要了。
  
  # htpasswd /usr/local/apache/user jack
  New password: 456789
  Re-type new password:456789
  Adding password for user jack
  # cat /usr/local/apache/user
  test:$apr1$KQuygE7p$H7qBAPM5Z2V0SXrWfTFlo0
  jack:$apr1$spCSLlRw$WYGcMNUbYqXUQZNkoMXcm1
  
  # 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地址修改。
  
  # 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
  
  # mkdir /opt/accp #创建虚拟主机的文件夹目录
  # mkdir /opt/benet
  # echo "welcome accp" > /opt/accp/index.html
  # echo "welcome benet" > /opt/benet/index.html #给定虚拟主机输入一些信息
  # service httpd restart
  # service iptables stop
  
  


  

  第2步:基于端口地址的虚拟主机
  
  # 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
  
  # service httpd restart
  
  


  

  第3步:基于域名的虚拟主机
  
  # 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]
查看完整版本: Linux下搭建Apache服务器(完整版)