ubuntu下配置apache2

0x01

课程需要,配置一波apache,记录一波操作流程。上正文~

安装部分:

1
2
3
4
apt-get update 更新软件源
apt-get install apache2 安装apache
service apache2 start|stop|restart|status
/etc/init.d/apache2 apache2 start|stop|restart|status 两种管理方式

0x02

先来看点预备知识吧~

当我们利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里。但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对.htaccess 所在目录进行配置,AllowOverride参数就是指明Apache服务器是否去找.htacess文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件,如果设置为All,那么所有在.htaccess文件里有的指令都将被重写。
我们可以用apache的rewrite模块对 URL 进行重写,重写的规则都写在.htaccess中, 从安全性来考虑,根目录的AllowOverride属性一般都配置成不允许任何Override,即AllowOverride None . 在 AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中.
对于 URL rewrite 来说,至少需要把目录设置为AllowOverride FileInfo,
要支持url rewirte的目录启用 Options FollowSymLinksAllowOverride All 关于这一块的更多内容可以点击这里
下面讲几个实际的应用。。。。

######用户认证
假设你有一个网站,你不想谁都可以访问,只有一部分人可以访问,这时候可以怎么办呢?可以设置一个用户认证,当访问网站的时候,需要输入username跟passwd才能访问,这样就达到了访问控制的目的。

  • 打开配置文件 默认的是在`/etc/apache2.conf
  • 在配置文件中添加这么一段:

    1
    2
    3
    4
    5
    <Directory /var/www/>
    Options Indexes FollowSymLinks #索引 跟踪符号链接(软连接 硬链接 -> ln)
    AllowOverride AuthConfig #允许所有的权限命令
    Require all granted
    </Directory>
  • 使用apache内部的一个工具htpasswd 来添加认证需要的用户
    htpasswd -bc .user admin admin #用户名为admin 密码为admin 默认采用md5加密
    更多地用法点击这里

  • 在要进行访问控制的目录下新建一个.htaccess文件 写入

    1
    2
    3
    4
    AuthName "test" #名称
    AuthType Basic
    AuthUserFile /etc/apache2/user_basic/user #认证用户文件所在目录
    Require valid-user 需要合法用户
  • 配置完成以后重新apache即可

######虚拟主机
假设一台服务器,我有多个域名,我想在一台服务器上放置多个web目录,可以用基于名称的虚拟主机来解决这个问题。
apache目录下有这么两个文件夹,sites-avaliable sites-enabled ,available下有所有的(N个站点)配置,包括临时不启用的站点,enabled下就ln当前启用的站点,方便快速启用,停用。这种结构是某些发行版本的习惯。。。习惯就好。
这里我就添加一个演示一下,多个跟一个是一样的。

  • 进入avaliable这个目录,因为配置文件只有一小部分有差异,所以我们可以备份几份直接修改就行。
    cp 源文件 备份文件
  • 大开备份文件 可以看到这些:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    <VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName www.test.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/test
    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
    </VirtualHost>

配置文件简单分析:
servername 域名名称 这里我写www.test.com
documentroot 根目录
修改这几项为你需要的,去掉servername前面的注释,使配置生效。

  • 添加一个软连接
  • 进入到enadble目录,执行ln -s ../sites-available/001-default.conf,也可以直接拷贝过来也行,因为主配置文件里包含的是enable目录下的配置文件,所以要把文件都放到这个里面。。。
  • 因为是本地搭建的,并没有dns解析,所以要自己再hosts文件中添加解析记录 打开/etc/hosts文件 添加域名以及对应的ip即可。
  • 重启apache
    ######基于ip的虚拟主机
    大体思路跟基于名称的差不多,因为是多个ip对多个web目录,<VirtualHost *:80> 这个地方需要修改为具体的ip 举个例子
    1
    2
    3
    4
    <VirtualHost 192.168.193.121> //虚拟主机1,使用的IP是192.168.193.121
    DocumentRoot “/var/www/test1”
    Options Indexes FollowSymLinks
    </VirtualHost>
禁止列目录

当apache找不到默认文件的时候,会显示所有的文件目录,前面说过Indexes , 若该目录下无index文件,则准许显示该目录下的文件以供选择,这是一种不安全的现象。
可以修改配置文件 将enable目录下对应的配置文件中的Options Indexes FollowSymLinks 中的Indexes删掉。
也可以在web目录下添加一个.htaccess

1
2
3
<Files *>
Options -Indexes
</Files>

在Indexes前,加 + 代表允许目录浏览;加 – 代表禁止目录浏览。这样也可以达到想要的效果。

暂时就先介绍这么多,以后再慢慢补充~~

0x03

附上参考链接
http://blog.csdn.net/u012793120/article/details/51979233
http://blog.csdn.net/alexander_phper/article/details/52242474

本文标题:ubuntu下配置apache2

文章作者:tkcharlotte

发布时间:2017年07月11日 - 21:07

最后更新:2018年02月07日 - 18:02

原始链接:boombao.net/2017/07/11/apache2 配置/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------本文结束感谢您的阅读-------------