LAMP折腾记录

Author Avatar
呃哦 4月 06, 2017

环境

Linux Ubuntu 16.04.1
Linux下CentOS和Ubuntu的配置文件略有不同
CentOS的配置文件为httpd.conf
Ubuntu为apache2.conf

安装

sudo apt install mysql-server apache2 php

配置

  • 配置虚拟主机
    在/etc/apache2/sites-enabled/000-default.conf添加如下配置:
    ```bash
      <VirtualHost *:8080> #监听的端口号
    
      ServerAdmin webmaster@localhost #服务器返回给客户端的错误信息中包含的管理员邮件地址 可忽略
      DocumentRoot /home/feng/workspace/php/MsgBoard# 网站的根目录文件夹,注意这个文件夹的权限必须是755,并且这个文件夹的上层文件夹的权限也是755,不然会出现403错误。

      ErrorLog ${APACHE_LOG_DIR}/error_8080.log # 错误日志位置
      CustomLog ${APACHE_LOG_DIR}/access_8080.log combined #记录着访问日志
    </VirtualHost>
```
  • 目录树及文件说明
    • apache2.conf apache配置文件
    • envvars apache环境变量配置文件
    • ports.conf 监听端口配置文件
    • magic 可以设置不同MIME类型文件的一些特殊标识
    • mods-enabled 已经启用的模块
    • mods-available 已经安装的模块
    • sites-enabled 已启用站点配置
    • sites-available 可用站点配置
    • conf-enabled 已启用的Apache配置
    • conf-available 所有Apache配置
  • 相关命令
    • a2disconf a2enconf 禁止/启用相关配置文件
    • a2dismod a2enmod 禁止/启用相关模块
    • a2dissite a2ensite 禁止/启用相关虚拟主机
    • apache2ctl apache http 服务控制接口
  • 相关知识
    • 标签定义了用户访问控制,后面的路径指定要控制的目标路径
    • Options 选项
      • Indexes: 是否允许索引页面文件(不安全,建议关闭);
      • FollowSynLinks: 是否跟随软链接文件(不安全,建议关闭);
      • SymLinksifOwnerMatch:相对安全的跟随软链接指令(如果软链接文件的属主与网页访问用户匹配则允许)
      • ExecCGI:是否允许执行CGI脚本;
      • All
      • None
    • AllowOverride 指允许使用与认证授权相关的指令
    • directive-type可以是下列各组指令之一:
    • AuthConfig:允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
    • AuthName “Realm”:认证名称是什么,描述信息,可以任意给,告诉客户端这里为什么要认证
    • AuthType:认证类型,一般有两种:Basic:基本认证;digest:摘要认证(不是所有浏览器都支持);通常都是基本认证;
    • AuthUserFile:用户认证文件所存放的位置(可以是文本文件、数据库、ldap等,通过动态加载相应的模块实现,默认是保存在文本文件中)
    • AuthGroupFile:组文件所存放的位置(基于组用户的认证与用户类似)
    • Require:指明认证的用户是哪些,可以是多个用户,用户名之间用空格隔开;如果是所有合法用户,则为“valid-user”;
  • 访问控制:
    • 在Apache2.4以前版本,通过以下命令控制:
         Order:定义allow和deny哪个为默认法则;写在后面的为默认法则:写在前面的指令没有显式定义的即受后面的指令控制;
         Order allow,deny
         Deny from 192.168.1.2       #拒绝所有的iP访问
         allow from 192.168.1.0/24   #仅允许192.168.1.0网段的IP访问(但拒绝192.168.1.2:最小范围优先匹配原则)
      
    • 在Apache2.4及以后版本,通过Require控制:
         Require all granted # 允许所有请求
         Require all denied  # 允许所有请求
         Require ip 127.0.0.1 # 允许ip127.0.0.1的请求
         Require host localhost # 允许主机名localhost的请求
      

      优化

  • 目前水平那是不可能的╮(╯▽╰)╭

  • AuthConfig

    AuthConfig 允许使用与认证授权相关的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。FileInfo 允许使用控制文档类型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add 和 Remove 指令等等)、控制文档元数据的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。Indexes 允许使用控制目录索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。Limit 允许使用控制主机访问的指令(Allow, Deny, Order)。Options[=Option,…] 允许使用控制指定目录功能的指令(Options和XBitHack)。可以在等号后面附加一个逗号分隔的(无空格的)Options选项列表,用来控制允许Options指令使用哪些选项。

  • htaccess

    .htaccess文件(或者”分布式配置文件”),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。

  • 参考文章