这里主要描述一下
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