Ubuntu下的apache2怪怪的

以前一直都是在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的相关设置了,内容也非常简单:

<IfModule mod_php5.c> 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时会提示错误并失败:

* Starting apache 2.0 web server… Syntax error on line 20 of /etc/apache2/httpd.conf: module dir_module is built-in and can’t be loaded [fail]

建立链接时好像使用软链接即可。

root@wf:/etc/apache2# ll mods-enabled/ 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/[^.#]*”有些不一致,但是问题不知出在哪里。不过我的做法更简单一些,也更保留了以前的操作习惯:

vi apache2.conf … # Include the virtual host configurations: #Include /etc/apache2/sites-enabled/[^.#]* Include /etc/apache2/fwolf.conf

这样所有的配置都在一个文档中了,备份的时候方便,适合于简单配置的网站。

还有,配置虚拟目录的时候如果涉及到了第二块硬盘或者其他挂载设备(非linux格式分区,不含有linux格式权限信息的分区格式),apache2默认使用的用户www-data是无法访问的,虽然配置脚本不会报错,但是无论怎么访问都会产成403 Forbidden错误,解决的方法是把用户www-data添加到相应的用户组里面去:

usermod -a -G plugdev www-data

其他形式的无权限情况也可以根据其owner,按照上述方法进行相应设置。

当然还要注意ubuntu基本上是全unicode的,文件和编辑器都是utf-8编码,所以如果以前的网页文件是gb2312编码的,需要转换成utf8格式才能正确显示:

$ mkdir /tmp/iconv_t $ for I in * > do > iconv $I -fgb2312 -tutf-8 -o/tmp/iconv_t/$I > done $cp /tmp/iconv_t/* .

以上只是使用iconv批量转换文件的一个小例子。

7 thoughts on “Ubuntu下的apache2怪怪的”

  1. 可是按照正则的语法来说,应该是文件名中没有.和#的文件才对 并且当我把000-default文件改为含有#的文件名的时候,的确就没有被调用了

  2. 没有太大的区别 除了本文中说的一些之外,安装和配置模块的方式和其他linux软件一样,有的需要自己编译等等

  3. 激活/禁用 sites-available/mods-available 的 site 和 mod 都不用 ln 這麼麻煩的,我們有:)

    a2ensite a2enmod a2dissite a2dismod

  4. Include *当然方便,反正那几个目录里面不是link就是配置文件 但无法控制不启用那些模块了 还得直接操作文件或者用a2dismod

Leave a Reply

Your email address will not be published. Required fields are marked *