• 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      # 客户端可以使用的测试方式 下图直接在浏览器测试的 与该命令无关
    

  • 相关阅读:
    python 发邮件乱码
    膳魔师杯使用注意事项
    了解指针,分分钟的事情 C++筆記--指針
    海淘攻略
    【转】Cocos2dx.3x入门三部曲
    在Windows7上搭建Cocos2d-x 3.2alpha0开发环境
    黑苹果 MAC OS X 10.10.2 安装流程
    Linux 下如何查找木马并处理
    js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
    泰*网 Centos 一些命令
  • 原文地址:https://www.cnblogs.com/SR-Program/p/13247141.html
Copyright © 2020-2023  润新知