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批量转换文件的一个小例子。
No tags for this post.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
sk*rt
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
If you like this then please subscribe to the
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]