Ubuntu下的apache2怪怪的
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/163)的形式标明文章原始出处和作者信息及本声明。以前一直都是在win下使用apache,感觉比较熟悉了,现在突然转到linux或者说是ubuntu下,觉得有了很大的变化,不知道是apache2升级成这样了,还是ubuntu使然。
安装很简单,apt-get install apache2, apt-get install php5就ok啦,默认的localhost主页指向/var/www,下面再有一个目录apache2-default里面存放的才是原先的各种语言的index欢迎页面。
配置文件win下面就是一个httpd.conf搞定,现在复杂了一些:
ubuntu中配置文件在/etc/apache2下,apache2.conf是全局配置或者说是主配置文件,httpd.conf是用户配置文件,感觉和用php编写程序时经常用config.php覆盖config.default.php文件中的设置是一样的,用户设置独立出来,方便管理和备份,毕竟主配置文件很少修改,偶尔修改一两句也可以写到httpd.conf里面,备份方便。
/etc/apache2下面除了两个配置文件以外,还有4个目录以前没见过,并且应该经常用到:
sites-available - 已定义的虚拟主机设置
sites-enabled - 已激活的虚拟主机
mods-available - 已经安装了的模块module
mods-enabled - 已经激活了的模块
一般来说,只要在enabled目录下ln建一个available目录下相应主机设置或者模块的连接,就相当于激活或者说启用了该虚拟主机或模块。乍一看有点麻烦,仔细想想确实对于管理来说方便了很多。
至于ln以后应当如何配置,也有例子可参考,默认安装就会生成一个虚拟主机NameVirtualHost *的设置文件,对应文件是sites-enabled/000-default,其实链接到文件sites-available/default,文件内容的语法和原来的httpd.conf是一样的。至于模块,也类似,比如我安装了php5之后,mods-enabled下就有了一个 php5.load(链接到mods-available/php5.load),文件内容就是一句:LoadModule php5_module /usr/lib/apache2/modules/libphp5.so,同时还有一个链接文件php5.conf,应该就是php5的相关设置了,内容也非常简单:
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
有了这些文件作参考,配置虚拟主机或者加载模块的时候就可以照葫芦画瓢了。并且这个时候如果还按照以前的语法在httpd.conf中加载模块的话(LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so),启动apache时会提示错误并失败:
module dir_module is built-in and can’t be loaded
[fail]
建立链接时好像使用软链接即可。
total 0
lrwxrwxrwx 1 root root 36 2006-05-11 14:07 cgi.load -> /etc/apache2/mods-available/cgi.load
lrwxrwxrwx 1 root root 37 2006-05-11 14:07 php5.conf -> /etc/apache2/mods-available/php5.conf
lrwxrwxrwx 1 root root 37 2006-05-11 14:07 php5.load -> /etc/apache2/mods-available/php5.load
lrwxrwxrwx 1 root root 28 2006-05-11 18:27 proxy.load -> ../mods-available/proxy.load
lrwxrwxrwx 1 root root 30 2006-05-11 18:27 rewrite.load -> ../mods-available/rewrite.load
另外发现一个小问题,我把000-default改名为000-default.disabled以后,却依然生效,但是改成000-default#disabled就无效了,这和apache2.conf中的“Include /etc/apache2/sites-enabled/[^.#]*”有些不一致,但是问题不知出在哪里。不过我的做法更简单一些,也更保留了以前的操作习惯:
…
# Include the virtual host configurations:
#Include /etc/apache2/sites-enabled/[^.#]*
Include /etc/apache2/fwolf.conf
这样所有的配置都在一个文档中了,备份的时候方便,适合于简单配置的网站。
还有,配置虚拟目录的时候如果涉及到了第二块硬盘或者其他挂载设备(非linux格式分区,不含有linux格式权限信息的分区格式),apache2默认使用的用户www-data是无法访问的,虽然配置脚本不会报错,但是无论怎么访问都会产成403 Forbidden错误,解决的方法是把用户www-data添加到相应的用户组里面去:
其他形式的无权限情况也可以根据其owner,按照上述方法进行相应设置。
当然还要注意ubuntu基本上是全unicode的,文件和编辑器都是utf-8编码,所以如果以前的网页文件是gb2312编码的,需要转换成utf8格式才能正确显示:
$ for I in *
> do
> iconv $I -fgb2312 -tutf-8 -o/tmp/iconv_t/$I
> done
$cp /tmp/iconv_t/* .
以上只是使用iconv批量转换文件的一个小例子。
![[Bloglines]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/bloglines.png)
![[co.mments]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/comments.png)
![[del.icio.us]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/digg.png)
![[diigo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/diigo.png)
![[Facebook]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/facebook.png)
![[Furl]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/furl.png)
![[Google]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/google.png)
![[MySpace]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/myspace.png)
![[Reddit]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/reddit.png)
![[Rojo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/rojo.png)
![[Slashdot]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/slashdot.png)
![[StumbleUpon]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/stumbleupon.png)
![[Technorati]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/technorati.png)
![[Windows Live]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/windowslive.png)
![[Yahoo!]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/yahoo.png)
![[Email]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/email.png)
May 14th, 2006 at 18:59:03
Include /etc/apache2/sites-enabled/[^.#]*”
这句是表示包含Include /etc/apache2/sites-enabled下的所有文件
[Reply]
May 15th, 2006 at 0:05:56
可是按照正则的语法来说,应该是文件名中没有.和#的文件才对
并且当我把000-default文件改为含有#的文件名的时候,的确就没有被调用了
[Reply]
July 2nd, 2006 at 17:06:04
windows的apache与linux的apache除了在符号连接,运行用户,组有所区别。其它的一样吧。
[Reply]
July 3rd, 2006 at 19:07:18
没有太大的区别
除了本文中说的一些之外,安装和配置模块的方式和其他linux软件一样,有的需要自己编译等等
[Reply]
November 1st, 2006 at 9:45:51
激活/禁用 sites-available/mods-available 的 site 和 mod 都不用 ln 這麼麻煩的,我們有:)
a2ensite
a2enmod
a2dissite
a2dismod
[Reply]
March 23rd, 2007 at 9:29:11
在a2p中,包含文件直接写Include /etc/apache2/sites-enabled/* 即可的
[Reply]
March 23rd, 2007 at 10:00:13
Include *当然方便,反正那几个目录里面不是link就是配置文件
但无法控制不启用那些模块了
还得直接操作文件或者用a2dismod
[Reply]