1. 说明
本文系我的"Web Server & Web Technology (WSWT)系列博客之一,主要讲解Linux系统的Apache配置和使用,以及如何使用apache搭建自己的个人网站".该系列博客的总目录参见这里http://blog.csdn.net/u014303046/article/details/73694983。
2. 准备工作
当按照上一个教程在ubuntu系统安装好Apache之后,就可以来探索一下Apache的配置了。
如果你使用Docker,那么首先需要从你之前保存的镜像(从源码安装好apache的镜像)运行一个容器:
sudo docker run -ti --name web2 -p 80:80 -p 443:443 apache:v1.0 bash
进入之后启动:
cd /etc/apache2/server_root/bin/
./apachectl start
如果你使用自己购买的服务器或者自己的笔记本电脑,直接启动就好了。
我还是建议大家使用docker学习本教程,因为后面的负载均衡等内容需要至少3个服务器,买3个服务器或者自己有3台电脑都是有点浪费的。
3. container 命令
container命令是用来限制其它apache指令范围的命令。你可以在一个container里添加其他的命令,但是这些命令仅仅在container的范围内生效。
最常用的container命令是Directory和VirtualHost,下面分别展开叙述。
3.1 Directory
设置了服务器如何提供文件。(具体的实战练习将安排在下一个教程)
举例
<Directory "/etc/apache/document_root/test">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
3.2 VirtualHost
(具体的实战联系安排在下一个教程)
当你在同一台服务器托管多个网站的时候VirtualHost很有用。使用VirtualHost你可以根据IP(IP based virtual host)或者主机名(name based virtual host)对不同的网站分别提供各自的服务。
IP based virtual host根据IP的不同来采取决策。name based virtual host根据客户端(比如浏览器)提供的主机名和端口号来决策,使用name based virtual host你可以在一个IP上托管很多服务器地址相同的网站。
举例
<VirtualHost *:80>
# This first-listed virtual host is also
# the default for *:80
ServerName www.example.com
ServerAlias example.com
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName other.example.com
DocumentRoot /www/otherdomain
</VirtualHost>
这个例子是说我们有两个网站分别是“www.example.com”和”other.example.com”,它们都通过80端口提供服务,但是每个网站都有各自的ServerName和DocumentRoot等。
4. UserDir
在一个多用户的系统上,每个用户都可以在自己的用户home目录下建立一个自己的网站,访问者访问
“http://example.com/~username/“就会访问到对应用户的网页。
默认这个功能是没有放在httpd.conf文件里的,你需要首先去掉httpd.conf文件里的这个注释:
同时,你需要去掉httpd.conf文件里mod_userdir前面的注释。
之后修改/etc/apache2/server_root/conf/extr/httpd-userdir.conf文件,在这个文件中常用的命令有:
- UserDir
默认情况下是:
UserDir public_html
这表示直接相对于用户home目录寻址,比如http://example.com/~bob/fiel.html 就会直接得到/home/bob/public_html/file.html文件。如果指定了绝对路径比如”UserDir /var/www/”那么网址”http://example.com/~bob/file.html“就会直接服务/var/www/bob/file.html文件。
5. 小结
本文主要介绍了一给Apache的基本配置。下一个教程中,我们将会跟随一个实际的例子来体会一下实际的用法。