All things are difficult before they are easy. 没有软件的裸机是一具僵尸,没有硬件的软件是一个幽灵。2012,专注于Linux和C语言,关注自动化、性能测试,关注开源社区和开源测试工具、方法,尝试测试团队管理!

Ubuntu安装Apache2所遇到的问题

上一篇 / 下一篇  2010-02-11 23:21:15 / 个人分类:Linux

这里主要描述一下Ubuntu下通过sudo atp-get install apache2来安装Apache并启动的过程中遇到的问题,和说明这样安装Apache后Apache的配置和各个目录。
直接安装后,本来通过apache2 -k start是可以启动的,不过后来我修改一些配置后,就遇到挺多问题了。

在Ubuntu下sudo apt-get install apache2安装完Apache2以后,启动apache2的默认用户名是www-data, 属于www-data用户组
shell中按如下输入
#apache2     会出现错误提示:apache2: bad user name ${APACHE_RUN_USER}
解决办法:
    1. 打开apache2的配置文件
    #sudo vi /etc/apache2/apache2.conf (本来应该改envvars这个文件的,但是不知道为什么修改了不起作用)
    2. 修改默认的用户名和组
    找到 ${APACHE_RUN_USER} 和 ${APACHE_RUN_GROUP} 替换为自己的用户名和组,然后保存退出。
    3.重启apache2
    #apache2 -k graceful
    注意,要让自己的用户对/var/www这个目录有写权限,否则你的脚本可能会出问题的。
    当然,可以打开/etc/apache2/sites-enabled/000-default修改网站文件的根目录。
    
还遇到下面的错误,在/var/logs/apache2/error.log查看:
[Wed Feb 10 23:47:23 2010] [error] (13)Permission denied: Couldn't bind unix domain socket /var/run/apache2/cgisock.3331
[Wed Feb 10 23:47:23 2010] [error] (13)Permission denied: could not create /etc/apache2/${APACHE_PID_FILE}
[Wed Feb 10 23:47:23 2010] [error] apache2: could not log pid to file /etc/apache2/${APACHE_PID_FILE}
只需要用改变这几个目录及其下面的文件的所有者,sudo chown -R yourUser:youGroup /etc/apache2
然后,这几个错误就解决了,通过http://localhost:myPort就能访问了,出现了默认的“It works!”页面。
不过,再看error.log发现,还有一个warning:
error:[Wed Feb 10 23:58:32 2010] [error] [client ::1] File does not exist: /var/www/favicon.ico
这个就是该网站,在浏览器中前面显示的那个小图标没有找到,请Google一下“favicon.ico”就会知道了;不过这个并不影响网站的使用。

ubuntu apache2配置
1.apache2.conf 是主配置文件,httpd.conf 用户配置文件
2.虚拟目录在 httpd.conf 中
<VirtualHost *>
DocumentRoot "路径"
ServerName 名称
<Directory "路径"> allow from all Options +Indexes </Directory>
</VirtualHost>
3.根设置(默认主目录)在 /etc/apache2/sites-available/default
4.重启命令 apache2 -k restart ;   stop 停止;start 启动
5.日志文件在 /var/log/apache2/

Windows下,Apache的配置文件通常只有一个,就是httpd.conf。但我在Ubuntu Linux上用apt-get install apache2命令安装了Apache2后,竟然发现它的httpd.conf(位于/etc/apache2目录)是空的!进而发现Ubuntu的 Apache软件包的配置文件并不像Windows的那样简单,它把各个设置项分在了不同的配置文件中,看起来复杂,但仔细想想设计得确实很合理。
严格地说,Ubuntu apt安装的Apache的配置文件是 /etc/apache2/apache2.conf,Apache在启动时会自动读取这个文件的配置信息。而其他的一些配置文件,如 httpd.conf等,则是通过Include指令包含进来。在apache2.conf中可以找到这些Include行:
# Include module configuration:
Include /etc/apache2/mods-enabled/*.load
Include /etc/apache2/mods-enabled/*.conf

# Include all the user configurations:
Include /etc/apache2/httpd.conf

# Include ports listing
Include /etc/apache2/ports.conf
……
# Include generic snippets of statements
Include /etc/apache2/conf.d/

# Include the virtual host configurations:
Include /etc/apache2/sites-enabled/
结合注释,可以很清楚地看出每个配置文件的大体作用。当然,你完全可以把所有的设置放在apache2.conf或者httpd.conf或者任何一个配置文件中。Apache2的这种划分只是一种比较好的习惯。
/etc/apache2/sites-enabled是激活的site目录,而还有一个sites-available目录,这里面是放什么的呢?其实,这里面才是真正的全部可用的配置文件,而sites- enabled目录存放的只是一些指向这里的文件的符号链接。所以,如果apache上配置了多个虚拟主机,每个虚拟主机的配置文件都放在 sites-available下,那么对于虚拟主机的停用、启用就非常方便了:当在sites-enabled下建立一个指向某个虚拟主机配置文件的链接时,就启用了它;如果要关闭某个虚拟主机的话,只需删除相应的链接即可,根本不用去改配置文件。mods-available、mods-enabled的意义也差不多,就是load的模块。
ports.conf,这里面设置了Apache使用的端口。如果需要调整默认的端口设置,建议编辑这个文件。或者你嫌它实在多余,也可以先把apache2.conf中的Include /etc/apache2/ports.conf一行去掉,在httpd.conf里设置Apache端口。

参考文档:

http://echohi.blog.51cto.com/1064627/237595

http://blog.csdn.net/pureshf/archive/2009/02/27/3942189.aspx



TAG: Apache Ubuntu httpd

 

评分:0

我来说两句

smile665

smile665

Stay hungry, stay foolish. 得意之时谨记,一半命运还掌握在上帝手里;失意之时须知,一半命运还掌握在自己手里。

日历

« 2024-04-14  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 954463
  • 日志数: 220
  • 建立时间: 2008-11-06
  • 更新时间: 2012-10-06

RSS订阅

Open Toolbar