在window下,Apache的配置文件是httpd.conf,但在Linux下安装了Apache后发现其配置并不像window下那么简单,Linux下Apache将各个设置项分在了不一样的配置文件中,想一想也是有很大的理由的,这样子可使用户在开发过程当中自由的搭配其不一样的功能模块,更好的提升效率,不过,若是不事先了解Apache,可能在配置时蒙圈。php
Ubuntu中Apache的配置文件是//etc/apache2/apache2.conf。Apache在启动时会找到这个文件并自动读取该文件中的配置信息,而其余配置文件则是经过include指令包含进来的,在apache2.conf 中能够看到这些引入行。固然,也能够将全部的配置全放在apache2.conf或者httpd.conf或者其余文件中,Apache这样划分是一种比较好的习惯。html
在Ubuntu中Web文档的根目录是在/var/www中,怎么知道的呢?在/etc/apache2/sites-enabled/000-default中有这样一段内容node
NameVirtualHost * <VirtualHost *> ServerAdmin webmaster@localhost DocumentRoot /var/www/
这是设置虚拟机的,固然,若是以为没有用的,也能够将apache2.conf里的Include /etc/apache2/sites-enabled/一行注释掉,并在htttpd.conf中的DocumentRoot设置成某个项目的目录,这样能够方便开发。web
在/etc/apache2目录下,发现了sites-enabled目录,然而还有一个sites-available目录,那么这两个目录到底有什么做用呢?其实,sites-available这个目录包含Apache虚拟主机的配置文件。虚拟主机容许Apache配置多个站点并为每一个站点配置不一样的参数。而sites-enabled目录的做用是持有/etc/apache2/sites-available目录下文件的连接。当Apache重启后,该目录中包含的站点将会被激活。若是apache上配置了多个虚拟机,每一个虚拟机的配置文件都放在sites-available下,那么对于虚拟主机的停用,启动就是很是方便了,操做某个虚拟主机就不用动配置文件了apache
-----------------------------------------------------------------------------------------------我是美丽的分割线~~----------------------------------------------------------------------------------------------------ubuntu
在/etc/apache2下还用相似于sites-enabled和sites-available两个目录的mods-available和mods-enabled两个目录,那么这两个目录有何做用呢?其实相似于sites-enabled和sites-available,mods-available这个目录包含模块和模块配置文件,不是全部的模块都有配置文件。好比当apt-get install php5安装了php模块,在这两个目录中就有了php5.load、php5.conf和指向这两个文件的连接。这对于apache开启停用某个模块是很是方便的服务器
在/etc/apache2目录下,还有一个文件ports.conf,这个文件配置Apache监听的端口,若是以为嫌弃它多余,能够先把apache2.conf中的Include /etc/apache2/ports.conf一行去掉,在httpd.conf里设置Apache端口。dom
在Ubuntu缺省安装的目录有与其余相比有一点不一样。在ubuntu中module和 virtual host的配置都有两个目录,一个是available,一个是enabled,available目录是存放有效的内容,但不起做用,只有用ln 连到enabled过去才能够起做用。这样子对于开发以及调试都很方便。ide
----------------------------------------------------------------------------------------------我是美丽的分割线~~~---------------------------------------------------------------------------------------------------oop
什么是虚拟主机(Virtual Hosting)
所谓虚拟主机,就是把一台运行在互联网上的服务器划分红多个“虚拟”的服务器,每个虚拟主机都具备独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能。再简单的说,就是同一台服务器能够同时处理超过一个域名(domain)。假设www.example1.com和www.example2.com两个域名都指向同一个服务器,而web服务器又支持虚拟主机,那么www.example1.com和www.example2.com能够访问到同一服务器上不一样的web空间。
在Apache2中,有效的站点信息都存放在/etc/apache2/sites-available/用户名(文件) 里面。 咱们能够添加格式以下的信息来增长一个有效的虚拟空间,将/etc/apache2/sites-available/000-default.conf里的大部分东西拷贝过来就好了(比较老的ubuntu版本可能叫作default),命名成本身想命的名字,记得改DocumentRoot做为默认目录,在Directory中设置路径,注意端口号不要与其余的虚拟主机重复:
<VirtualHost *自定义端口> # 在ServerName后加上你的网站名称 ServerName www.linyupark.com # 若是你想多个网站名称都取得相同的网站,能够加在ServerAlias后加上其余网站别名。 # 别名间以空格隔开。 ServerAlias ftp.linyupark.com mail.linyupark.com # 在ServerAdmin后加上网站管理员的电邮地址,方便别人有问题是能够联络网站管理员。 ServerAdmin webmaster@linyupark.com # 在DocumentRoot后加上存放网站内容的目录路径(用户的我的目录) DocumentRoot /home/linyupark/public_html <Directory /home/linyupark/public_html> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Allow from all </Directory> ErrorLog /home/linyupark/public_html/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /home/linyupark/public_html/access.log combined ServerSignature On </VirtualHost>
若是你的服务器有多个IP,而不一样的IP又有着不同的虚拟用户的话,能够修改为:
<VirtualHost IP地址[:端口]> ... </VirtualHost>
通常状况下,咱们只须要作两部操做:1,添加“ServerName www.example.com”, 2,修改“DocumentRoot /var/www”为本身定义的目录。
启用配置
1,如今咱们配置的内容只是有效虚拟主机,要是真正的发挥做用得放在/etc/apache2/sites-enabled 文件夹下面,须要经过ln创建关联:
sudo ln -s /etc/apache2/sites-available/example.conf /etc/apache2/sites-enabled/example.conf
2,修改/etc/hosts文件,加入当前主机的IP地址和须要设置的虚拟主机名,如:127.0.0.1 www.jiaoxue.com :
127.0.0.1 localhost 127.0.1.1 shanlei-Lenovo-ideapad-110-15ISK 127.0.0.1 www.jiaoxue.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ~
检查语法没有错误,若是没有错误,重启Apache:
sudo /etc/init.d/apache2 restart //或 service apache2 restart
----------------------------------------------------------------------完结----------------------------------------------------------------------