Linux之Apache服务

Apache概述

'''
      Apache HTTPD Server 简称 Apache,是 Apache 软件基金会的一个开源的网页服务器, 可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,
是最流行的 Web 服务器端软件之一。它快速、可靠并且可通过简单的 API 扩展,将 Perl/Python 等解释器编 译到服务器中!Apache HTTP 服务器是一个模块化的服务器,
各个功能使用模块化进行插拔! 目前支持 Windows, Linux, Unix 等平台!
     Apache 软件基金会(也就是 Apache Software Foundation,简称为 ASF),是专门为运 作一个开源软件项目的 Apache 的团体提供支持的非盈利性组织,
这个开源软件项目就是 Apache 项目!那么我们的 HTTPD 也只是 Apache 的开源项目之一!
      主要的开源项目:HTTP Server,Ant,DB,iBATIS,Jakarta,Logging,Maven,Struts, Tomcat,Tapestry,Hadoop 等等。只是最有名的是 HTTP Server,
所以现在所说的 Apache 已 经就是 HTTPD Server 的代号了! 我们还见的比较多的是 Tomcat, Hadoop 等项目官方网站:
'''

Apache安装使用

安装

[root@server ~]# yum install -y httpd      # 安装Apache服务
[root@server ~]# yum install -y elinks     # 安装字符浏览器
[root@server ~]# yum -y install httpd mysql mysql-server php php-mysql      # 创建LAMP环境

服务启动

[root@server ~]# systemctl start httpd      # 启动
[root@server ~]# netstat -aunpt | grep 80      # 监听端口号

配置文件介绍

ServerRoot "/etc/httpd"      # http的根目录

Listen 80                    # http默认监听的端口号

Include conf.modules.d/*.conf      # conf.modules 当前目录下所有的conf文件都生效

User apache                  # http的属主
Group apache                  # http的属组

ServerAdmin root@localhost      # http管理员邮箱

ServerName www.example.com:80      # 站点的域名 默认被注释 此时启动Apache服务很缓慢

AddDefaultCharset UTF-8      # 网站的编码格式

DocumentRoot "/var/www/html"      # HTTP默认的主目录

LogLevel warn                        # 日志等级

<Directory "/var/www/html">
    Options:配置在特定目录使用哪些特性
	Indexes:当用户访问该目录的时候如果找不到指定文件(例如:index.html)则返回该目录下文件列表
	FollowSymLinks:在该目录下允许文件系统使用符号链接
    AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
	None:当AllowOverride被设置为None时。不搜索该目录下的.htaccess文件(可以减小服务器开销)。
    Require all granted		# 设置用户访问权限
</Directory>

web服务搭建

修改默认首页

'''
1:部门内部搭建一台 WEB 服务器,采用的 IP 地址和端口为 1.1.1.1:80,首页采用 index.html文件。
2:管理员 E-mail 地址为 srcoder@163.com,网页的编码类型采用 UTF-8,所有网站资源都存放
3:在/var/www/html 目录下,并将 Apache 的配置文件根目录设置为/etc/httpd 目录。
'''
[root@server ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak  # 备份配置文件

[root@server html]# vim /var/www/html/index.html   # 配置默认访问首页
      Welcome to Apache index            # 添加首页访问信息

[root@server html]# vim /etc/httpd/conf/httpd.conf
      
      ServerAdmin srcoder@163.com      # 管理员邮箱
      
      ServerName 1.1.1.1:80            # 监听的IP地址与端口

      Timeout 60                        # 请求页面超时时间
      
      <IfModule dir_module>
         DirectoryIndex index.html index.php      # 指定默认首页
      </IfModule>
[root@server conf.d]# vim /etc/httpd/conf.d/welcome.conf
      # 注释如下信息 默认的Apache首页
    # <LocationMatch "^/+$">
        #  Options -Indexes
         #  ErrorDocument 403 /.noindex.html
    # </LocationMatch>

[root@server conf.d]# systemctl restart httpd.service  # 重启服务

更改web网站根目录

[root@server~]# mkdir /var/www/html/bbs    # 创建测试目录
      
[root@server ~]# cp /var/www/html/index.html /var/www/html/bbs/      # 添加测试数据

[root@server ~]# vim /etc/httpd/conf/httpd.conf      # 修改配置文件
      DocumentRoot "/var/www/html/bbs"            # 修改根目录
      <Directory "/var/www/html/bbs">
            Options Indexes FollowSymLinks
            AllowOverride None          
            <RequireALL>
                  Require ip 1.1.1.2	# 仅仅允许访问的IP(客户机地址)
                  Require not ip 1.1.1.188	# 不允许访问的IP地址 (物理机地址 )
            </RequireALL>  
      </Directory>

Require all granted #允许所有
Require all denied #拒绝所有
Require method http-method [http-method] ... #允许,特定的 HTTP 方法
Require user userid [ userid ] ... #允许,特定用户
Require group group-name [group-name] ... #允许,特定用户组
Require valid-user #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定 IP 和网段
Require not ip 10 172.20 192.168.2 #不允许 特定 IP 和网段

虚拟目录

# 1:将/usr/local/phpdata 目录通过虚拟目录功能添加到网站根目录。
# 2:当访问 http://1.1.1.1/phpdata/ 时,就可以访问目录/usr/local/phpdata 中的内容

[root@server ~]# mkdir /usr/local/phpdata      # 创建别名访问的目录
[root@server ~]# echo Welcome to Alisa Phpdata > /usr/local/phpdata/index.html      # 创建访问的内容页面
[root@server ~]# vim /etc/httpd/conf/httpd.conf
      Alias /phpdata/ "/usr/local/phpdata/"

      <Directory "/usr/local/phpdata">

          Options Indexes FollowSymLinks

          AllowOverride None

	  Require all granted

       </Directory>
[root@server ~]# systemctl restart httpd

Apache禁止显示目录

[root@server ~]# rm -fr /var/www/html/index.html      # 删除默认存在的首页

[root@server ~]# vim /etc/httpd/conf/httpd.conf
      <Directory "/var/www/html">

          Options Indexes FollowSymLinks  # 修改之前

          Options  FollowSymLinks  # 删除改行的indexs
	
          AllowOverride None

	  Require all granted

       </Directory>
[root@server ~]# systemctl restart httpd

Apache软链接

[root@server ~]# ln -s /etc/passwd /var/www/html/passwd  # 创建软链接

[root@server ~]# vim /etc/httpd/conf/httpd.conf
      <Directory "/var/www/html">

          Options Indexes FollowSymLinks  # 修改之前

          Options  Indexes # 删除改行的FollowSymLinks  
	
          AllowOverride None

	  Require all granted

       </Directory>
[root@server ~]# systemctl restart httpd

用户认证

# 1:通过用户认证的方式,对网站下/usr/local/phpdata/目录进行保护
# 2:设置/usr/local/phpdata/目录,只能通过用户名密码方式访问

[root@server ~]# touch /etc/httpd/conf/passwd.secret      # 创建保存用户名+密码的文件

[root@server ~]# vim /etc/httpd/conf/httpd.conf
      <Directory "/usr/local/phpdata">

          Options Indexes FollowSymLinks

          AllowOverride None

	  authtype basic      # 认证类型	
	  authname "my web site"      # 指定认证名称 认证名称在需要认证的时候弹出显示给用户的
	  authuserfile /etc/httpd/conf/passwd.secret      # 存储用户名+密码的文件
	  require valid-user      # 指定有效用户才能访问(在authuserfile 都属于有效用户)
       </Directory>
[root@server ~]# systemctl restart httpd

[root@server ~]# htpasswd -cm /etc/httpd/conf/passwd.secret SR      # -c:添加一个文件 -m:使用md5方式使密码密文保存  SR:保存的用户
[root@server ~]# htpasswd /etc/httpd/conf/passwd.secret 木子      # 除第一个用户以为 以后都不需要加-c参数 如果加了后面创建的用户会覆盖前面的
[root@server ~]# cat /etc/httpd/conf/passwd.secret      # 查看保存的文件密码

Apache三种搭建方式

基于不同的IP地址

[root@server ~]# ifconfig ens37:1 1.1.1.66 netmask 255.255.255.0
[root@server html]# echo www.test66.com > /var/www/html/bbs/index.html      # 添加页面内容 test66中的66位IP地址
[root@server ~]# vim /etc/httpd/conf.d/test.conf      # 添加名为test.conf的配置文件
     <VirtualHost 1.1.1.1:80>
	    ServerAdmin srconder@163.com      # 邮箱
	    DocumentRoot /var/www/html/      # 根目录
	    ServerName dummy-host.example.com      # 域名
	    ErrorLog logs/dummy-host.example.com-error_log      
	    CustomLog logs/dummy-host.example.com-access_log common      
      </VirtualHost>
      <VirtualHost 1.1.1.66:80>
	    ServerAdmin srconder@163.com
	    DocumentRoot /var/www/html/bbs/
	    ServerName dummy-host.example.com
	    ErrorLog logs/dummy-host.example.com-error_log
	    CustomLog logs/dummy-host.example.com-access_log common
      </VirtualHost>
[root@server conf.d]# systemctl restart httpd.service
[root@client ~]# curl 1.1.1.1

[root@client ~]# curl 1.1.1.66

基于不同域名

[root@server ~]# vim /etc/httpd/conf.d/test.conf
      
      <VirtualHost *:80>
          ServerAdmin srconder@163.com      # 允许所有IP
          DocumentRoot /var/www/html/
          ServerName www.test1.com
          ErrorLog logs/www.test1.com-error_log
          CustomLog logs/www.test1.com-access_log common
      </VirtualHost>
      <VirtualHost *:80>      
          ServerAdmin srconder@163.com
          DocumentRoot /var/www/html/bbs/
          ServerName www.test66.com
          ErrorLog logs/www.test66.com-error_log
          CustomLog logs/www.test66.com-access_log common
      </VirtualHost>
[root@server ~]# systemctl restart httpd.service

[root@client ~]# vim /etc/hosts
      1.1.1.1     www.test1.com
      1.1.1.66    www.test66.com
[root@client ~]# elinks 1.1.1.1      # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关

[root@client ~]# elinks 1.1.1.66      

基于不同的端口访问

[root@server ~]# vim /etc/httpd/conf/httpd.conf
      Listen 8080      # 配置多个监听端口
[root@server ~]# vim /etc/httpd/conf.d/test.conf
      <VirtualHost *:80>
              ServerAdmin srconder@163.com
              DocumentRoot /var/www/html/
              ServerName www.test1.com
              ErrorLog logs/www.test1.com-error_log
              CustomLog logs/www.test1.com-access_log common
      </VirtualHost>
      <VirtualHost *:8080>
              ServerAdmin srconder@163.com
              DocumentRoot /var/www/html/bbs/
              ServerName www.test1.com
              ErrorLog logs/www.test1.com-error_log
              CustomLog logs/www.test1.com-access_log common
      </VirtualHost>
[root@server ~]# systemctl restart httpd.service
[root@client ~]# elinks 1.1.1.1      # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关

[root@client ~]# elinks 1.1.1.1:8080      # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关

posted @ 2020-07-05 18:41  SR丶  阅读(397)  评论(0编辑  收藏  举报